From e64c49fca18dd9e3b6661ea6080ed2b05ab1112b Mon Sep 17 00:00:00 2001 From: frodehansen2 Date: Thu, 12 Dec 2024 10:48:32 +0100 Subject: [PATCH 1/7] hente barn --- apps/ungdomsytelse-deltaker/api-mock/mock-server.cjs | 7 +++++++ apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/ungdomsytelse-deltaker/api-mock/mock-server.cjs b/apps/ungdomsytelse-deltaker/api-mock/mock-server.cjs index ab8c3658ce..31fcf687be 100644 --- a/apps/ungdomsytelse-deltaker/api-mock/mock-server.cjs +++ b/apps/ungdomsytelse-deltaker/api-mock/mock-server.cjs @@ -57,6 +57,7 @@ const mockPath = `${__dirname}/data`; const soker = 'søker1'; const søkerFileName = `søker-mock.json`; +const barnFileName = `barn-mock.json`; const innvilgetVedtakFileName = `innvilget-vedtak-mock.json`; const ikkeInnvilgetVedtakFileName = `ikke-innvilget-vedtak-mock.json`; @@ -79,6 +80,12 @@ const startExpressServer = () => { }, 250); }); + server.get('/oppslag/barn', (req, res) => { + setTimeout(() => { + readMockFile(barnFileName, res); + }, 250); + }); + server.get('/deltakelse/register/hent/alle', (req, res) => { const response = [ { diff --git a/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts b/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts index 489dece94f..fc477d1b07 100644 --- a/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts +++ b/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts @@ -1,5 +1,5 @@ import { useState } from 'react'; -import { fetchSøker } from '@navikt/sif-common-api'; +import { fetchBarn, fetchSøker } from '@navikt/sif-common-api'; import { useEffectOnce } from '@navikt/sif-common-hooks'; import { deltakerService } from '../api/services/deltakerService'; import { SøknadContextData } from '../søknad/context/SøknadContext'; @@ -17,6 +17,9 @@ export const useInitialData = () => { try { const søker = await fetchSøker(); const alleDeltakelser = await deltakerService.getDeltakelser(); + const barn = await fetchBarn(); + console.log('barn', barn); + const deltakelserSøktFor = alleDeltakelser.filter((d) => d.harSøkt); const deltakelserIkkeSøktFor = alleDeltakelser.filter((d) => !d.harSøkt); const deltakelserÅpenForRapportering = deltakelserSøktFor.filter(deltakelseErÅpenForRapportering); From fe0b95df957fe504ff9a5fae1f313231a9ac4ece Mon Sep 17 00:00:00 2001 From: frodehansen2 Date: Thu, 12 Dec 2024 11:48:36 +0100 Subject: [PATCH 2/7] Vise barn --- .../api-mock/mock-server.cjs | 2 +- .../src/hooks/useInitialData.ts | 2 +- .../context/S\303\270knadContext.tsx" | 3 ++- .../src/s\303\270knad/form/Forside.tsx" | 25 +++++++++++++++++-- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/apps/ungdomsytelse-deltaker/api-mock/mock-server.cjs b/apps/ungdomsytelse-deltaker/api-mock/mock-server.cjs index 31fcf687be..cdcd12d18e 100644 --- a/apps/ungdomsytelse-deltaker/api-mock/mock-server.cjs +++ b/apps/ungdomsytelse-deltaker/api-mock/mock-server.cjs @@ -92,7 +92,7 @@ const startExpressServer = () => { id: '123', programperiodeFraOgMed: '2024-07-01', programperiodeTilOgMed: '2025-06-30', - harSøkt: true, + harSøkt: false, rapporteringsPerioder: [ { fraOgMed: '2024-07-01', diff --git a/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts b/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts index fc477d1b07..9fb88d4446 100644 --- a/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts +++ b/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts @@ -18,13 +18,13 @@ export const useInitialData = () => { const søker = await fetchSøker(); const alleDeltakelser = await deltakerService.getDeltakelser(); const barn = await fetchBarn(); - console.log('barn', barn); const deltakelserSøktFor = alleDeltakelser.filter((d) => d.harSøkt); const deltakelserIkkeSøktFor = alleDeltakelser.filter((d) => !d.harSøkt); const deltakelserÅpenForRapportering = deltakelserSøktFor.filter(deltakelseErÅpenForRapportering); setInitialData({ + barn, søker, alleDeltakelser, deltakelserSøktFor, diff --git "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/context/S\303\270knadContext.tsx" "b/apps/ungdomsytelse-deltaker/src/s\303\270knad/context/S\303\270knadContext.tsx" index 5b311c22d4..d7c1f6fb67 100644 --- "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/context/S\303\270knadContext.tsx" +++ "b/apps/ungdomsytelse-deltaker/src/s\303\270knad/context/S\303\270knadContext.tsx" @@ -1,5 +1,5 @@ import { createContext, ReactNode, useContext, useState } from 'react'; -import { Søker } from '@navikt/sif-common-api'; +import { RegistrertBarn, Søker } from '@navikt/sif-common-api'; import { Deltakelse } from '../../api/types'; import { deltakelseErÅpenForRapportering } from '../../utils/deltakelserUtils'; @@ -10,6 +10,7 @@ interface SøknadContextType { export interface SøknadContextData { søker: Søker; + barn: RegistrertBarn[]; alleDeltakelser: Deltakelse[]; deltakelserSøktFor: Deltakelse[]; deltakelserIkkeSøktFor: Deltakelse[]; diff --git "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/form/Forside.tsx" "b/apps/ungdomsytelse-deltaker/src/s\303\270knad/form/Forside.tsx" index d931c93b81..b093b85aa4 100644 --- "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/form/Forside.tsx" +++ "b/apps/ungdomsytelse-deltaker/src/s\303\270knad/form/Forside.tsx" @@ -1,4 +1,4 @@ -import { Alert, Box, Heading, VStack } from '@navikt/ds-react'; +import { Alert, Box, Heading, List, VStack } from '@navikt/ds-react'; import { useState } from 'react'; import Page from '@navikt/sif-common-core-ds/src/components/page/Page'; import { SoknadVelkommenGuide } from '@navikt/sif-common-soknad-ds/src'; @@ -12,7 +12,14 @@ import Inntektsrapportering from '../../components/inntektsrapportering/Inntekts const Forside = () => { const { - data: { søker, deltakelserIkkeSøktFor, deltakelserSøktFor, alleDeltakelser, deltakelserÅpenForRapportering }, + data: { + søker, + barn, + deltakelserIkkeSøktFor, + deltakelserSøktFor, + alleDeltakelser, + deltakelserÅpenForRapportering, + }, updateDeltakelse, } = useSøknadContext(); @@ -53,6 +60,20 @@ const Forside = () => { {deltakelserIkkeSøktFor.length > 0 && ( + {barn.length > 0 && ( + + + Barn vi har registrert på deg: + + + {barn.map((b) => ( + + {b.fornavn} {b.etternavn} + + ))} + + + )} {deltakelserIkkeSøktFor.map((deltakelse) => { return ( From 845fa94eb4a77a30537149dac96b01059f2ebcfb Mon Sep 17 00:00:00 2001 From: frodehansen2 Date: Fri, 13 Dec 2024 08:35:14 +0100 Subject: [PATCH 3/7] Oppdatert veilederapp --- apps/ungdomsytelse-veileder/api-mock/mock-server.cjs | 4 ++-- .../components/aktiv-deltakelse/AktivDeltakelse.tsx | 11 ----------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/apps/ungdomsytelse-veileder/api-mock/mock-server.cjs b/apps/ungdomsytelse-veileder/api-mock/mock-server.cjs index 9ff0e8e0c9..540eea8164 100644 --- a/apps/ungdomsytelse-veileder/api-mock/mock-server.cjs +++ b/apps/ungdomsytelse-veileder/api-mock/mock-server.cjs @@ -57,7 +57,7 @@ const deltakelse1 = { deltakerIdent: '03867198392', }, fraOgMed: '2025-09-01', - harSøkt: false, + harSøkt: true, }; const deltakelser = [deltakelse1]; @@ -136,7 +136,7 @@ const startExpressServer = () => { id: 'd-n', deltakerIdent: req.body.deltakerIdent, }, - harSøkt: false, + harSøkt: true, fraOgMed: req.body.fraOgMed, }; setTimeout(() => { diff --git a/apps/ungdomsytelse-veileder/src/components/aktiv-deltakelse/AktivDeltakelse.tsx b/apps/ungdomsytelse-veileder/src/components/aktiv-deltakelse/AktivDeltakelse.tsx index f97b4faf46..a141731f63 100644 --- a/apps/ungdomsytelse-veileder/src/components/aktiv-deltakelse/AktivDeltakelse.tsx +++ b/apps/ungdomsytelse-veileder/src/components/aktiv-deltakelse/AktivDeltakelse.tsx @@ -1,7 +1,6 @@ import { Box, Heading, HStack, Tabs, Tag, VStack } from '@navikt/ds-react'; import { dateFormatter } from '@navikt/sif-common-utils'; import { Deltakelse, Deltaker } from '../../api/types'; -import AvsluttDeltakelseForm from '../../forms/avslutt-deltakelse-form/AvsluttDeltakelseForm'; import DeltakelseStatusContent from '../deltakelse-status-content/DeltakelseStatusContent'; import EndreDeltakelseForm from '../../forms/endre-deltakelse-form/EndreDeltakelseForm'; import SlettDeltakelseForm from '../../forms/slett-deltakelse-form/SlettDeltakelseForm'; @@ -44,7 +43,6 @@ const AktivDeltakelse = ({ deltaker, deltakelse, alleDeltakelser, onChange }: Pr - {deltakelse.harSøkt === false ? : null} @@ -61,15 +59,6 @@ const AktivDeltakelse = ({ deltaker, deltakelse, alleDeltakelser, onChange }: Pr /> - - - console.log('avbryt')} - /> - - From 09dd499843142321eaf4841c2617ec022edfe51f Mon Sep 17 00:00:00 2001 From: frodehansen2 Date: Fri, 13 Dec 2024 08:41:47 +0100 Subject: [PATCH 4/7] Vise alle deltakerperioder --- .../api-mock/mock-server.cjs | 17 +++++++++++++--- .../src/components/DeltakerPageContent.tsx | 20 ++++++++++++++++--- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/apps/ungdomsytelse-veileder/api-mock/mock-server.cjs b/apps/ungdomsytelse-veileder/api-mock/mock-server.cjs index 540eea8164..6ee0dfd82c 100644 --- a/apps/ungdomsytelse-veileder/api-mock/mock-server.cjs +++ b/apps/ungdomsytelse-veileder/api-mock/mock-server.cjs @@ -50,16 +50,27 @@ const registrertDeltaker = { }; const deltakelse1 = { - id: '3ebb8cb3-a2eb-45a5-aeee-22a2766aaab0', + id: '3ebb8cb3-a2eb-45a5-aeee-22a2766aaab0-1', deltakerIdent: '03867198392', deltaker: { id: 'd-r', deltakerIdent: '03867198392', }, - fraOgMed: '2025-09-01', + fraOgMed: '2025-01-01', + tilOgMed: '2025-05-01', harSøkt: true, }; -const deltakelser = [deltakelse1]; +const deltakelse2 = { + id: '3ebb8cb3-a2eb-45a5-aeee-22a2766aaab0-2', + deltakerIdent: '03867198392', + deltaker: { + id: 'd-r', + deltakerIdent: '03867198392', + }, + fraOgMed: '2025-09-01', + harSøkt: false, +}; +const deltakelser = [deltakelse1, deltakelse2]; const getDeltaker = ({ deltakerIdent, deltakerId }) => { if (deltakerIdent) { diff --git a/apps/ungdomsytelse-veileder/src/components/DeltakerPageContent.tsx b/apps/ungdomsytelse-veileder/src/components/DeltakerPageContent.tsx index 084a29e2a3..a42c7c6ea5 100644 --- a/apps/ungdomsytelse-veileder/src/components/DeltakerPageContent.tsx +++ b/apps/ungdomsytelse-veileder/src/components/DeltakerPageContent.tsx @@ -5,7 +5,6 @@ import AktivDeltakelse from './aktiv-deltakelse/AktivDeltakelse'; const DeltakerPageContent = () => { const { deltaker, deltakelser = [], refetchDeltakelser } = useDeltaker(); - const aktivDeltakelse = deltakelser?.find((d) => d.erAktiv); const aktiveDeltakelser = deltakelser?.filter((d) => d.erAktiv); const handleOnDeltakelseChange = () => { @@ -31,11 +30,11 @@ const DeltakerPageContent = () => { return Ingen deltakelser funnet; } - if (aktivDeltakelse || deltakelser.length === 1) { + if (deltakelser.length === 1) { return ( { ); } + return ( + + + {deltakelser.map((deltakelse) => ( + + ))} + + + ); return Flere deltakelser er registrert; }; From 68605529e7df56ef7b117ce9874964ffb56d522d Mon Sep 17 00:00:00 2001 From: frodehansen2 Date: Thu, 19 Dec 2024 08:24:02 +0100 Subject: [PATCH 5/7] =?UTF-8?q?Grovoppsett=20av=20s=C3=B8knad?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mock/msw/browser.ts | 4 + .../mock/msw/handlers/index.ts | 45 +++ .../mock/msw/mocks/soker1/arbeidsgiverMock.ts | 10 + .../mock/msw/mocks/soker1/barnMock.ts | 11 + .../mock/msw/mocks/soker1/hentAlle.ts | 82 +++++ .../mock/msw/mocks/soker1/index.ts | 9 + .../msw/mocks/soker1/s\303\270kerMock.ts" | 8 + .../mockServiceWorker.js | 307 ++++++++++++++++++ apps/ungdomsytelse-deltaker/package.json | 9 + apps/ungdomsytelse-deltaker/src/App.tsx | 10 +- .../src/api/apiClient.ts | 2 +- .../src/api/schemas/deltakelseSchema.ts | 6 +- .../src/api/services/deltakerService.ts | 4 +- .../src/api/services/mellomlagringService.ts | 62 ++++ .../api/services/sendS\303\270knadService.ts" | 2 +- apps/ungdomsytelse-deltaker/src/app.css | 12 + .../deltakelse-table/DeltakelseTable.tsx | 2 +- .../InnteksrapporteringForm.tsx | 2 +- .../InntektEnM\303\245nedForm.tsx" | 4 +- .../Inntektsrapportering.tsx | 2 +- .../src/context/DeltakerContext.tsx | 27 +- .../src/hooks/useInitialData.ts | 10 +- .../src/hooks/useRapporterInntekt.ts | 2 +- .../src/i18n/appMessages.ts | 15 +- apps/ungdomsytelse-deltaker/src/lenker.ts | 29 ++ apps/ungdomsytelse-deltaker/src/main.tsx | 19 +- .../src/sites/InitialDataLoader.tsx | 21 +- .../src/sites/innsyn/InnsynRouter.tsx | 11 + .../sites/s\303\270knad/S\303\270knad.tsx" | 79 +++++ .../s\303\270knad/S\303\270knadRouter.tsx" | 70 ++++ .../s\303\270knad/S\303\270knadStep.tsx" | 46 +++ ...BehandlingAvPersonopplysningerContent.tsx" | 56 ++++ .../components/KortOmUngdomsytelsen.tsx" | 17 + .../components/OmS\303\270knaden.tsx" | 39 +++ .../components/VelkommenGuideContent.tsx" | 11 + .../InvalidStepS\303\270knadsdataInfo.tsx" | 51 +++ .../context/StepFormValuesContext.tsx" | 41 +++ .../context/S\303\270knadContext.tsx" | 27 ++ .../context/S\303\270knadContextState.ts" | 14 + .../context/action/actionCreator.ts" | 145 +++++++++ .../context/hooks/useS\303\270knadContext.ts" | 2 +- .../context/reducer/s\303\270knadReducer.ts" | 115 +++++++ .../hooks/useAvbrytS\303\270knad.ts" | 31 ++ .../s\303\270knad/hooks/useOnValidSubmit.ts" | 66 ++++ .../hooks/usePersistS\303\270knadState.ts" | 21 ++ .../hooks/useResetS\303\270knad.ts" | 26 ++ .../hooks/useSendS\303\270knad.ts" | 26 +- .../s\303\270knad/hooks/useStepNavigation.ts" | 41 +++ .../hooks/useS\303\270knadsdataStatus.ts" | 77 +++++ .../src/sites/s\303\270knad/i18n/index.ts" | 8 + .../s\303\270knad/pages/intro/IntroPage.tsx" | 65 ++++ .../pages/kvittering/KvitteringPage.tsx" | 57 ++++ .../pages/kvittering/kvitteringMesssages.ts" | 14 + .../pages/velkommen/VelkommenPage.tsx" | 39 +++ .../pages/velkommen/velkommenPageMessages.ts" | 27 ++ .../steps/arbeidstid-step/ArbeidstidStep.tsx" | 83 +++++ .../arbeidstid-step/arbeidstidStepUtils.ts" | 9 + .../steps/barn-step/BarnStep.tsx" | 97 ++++++ .../steps/barn-step/barnStepUtils.tsx" | 17 + .../oppsummering-step/OppsummeringStep.tsx" | 140 ++++++++ .../components/BarnSummaryList.tsx" | 21 ++ .../components/DeltakelseOppsummering.tsx" | 32 ++ .../OmS\303\270kerOppsummering.tsx" | 38 +++ .../oppsummeringMessages.ts" | 34 ++ .../oppsummeringStepUtils.ts" | 8 + .../s\303\270knad/s\303\270knadStepConfig.ts" | 26 ++ .../s\303\270knad/types/RequestStatus.ts" | 6 + .../s\303\270knad/types/StepFormValues.ts" | 13 + .../src/sites/s\303\270knad/types/StepId.ts" | 3 +- .../types/S\303\270knadContextState.ts" | 5 + .../types/S\303\270knadRoutes.ts" | 19 ++ .../ArbeidstidS\303\270knadsdata.ts" | 4 + .../BarnS\303\270knadsdata.ts" | 1 + .../s\303\270knadsdata/S\303\270knadsdata.ts" | 15 + .../utils/lagreS\303\270knadState.ts" | 6 + .../s\303\270knad/utils/navigationUtils.ts" | 24 ++ .../utils/s\303\270knadRoutesUtils.ts" | 24 ++ .../utils/s\303\270knadUtils.ts" | 14 + .../getApiDataFromS\303\270knadsdata.ts" | 19 ++ .../validateApiData.ts" | 39 +++ .../s\303\270knad/S\303\270knadRouter.tsx" | 12 - .../s\303\270knad/form/DeltakelseForm.tsx" | 122 ------- .../src/s\303\270knad/form/Forside.tsx" | 110 ------- .../src/types/S\303\270knadContextState.ts" | 5 - .../src/types/S\303\270knadRoutes.ts" | 3 - .../src/types/appEnv.ts | 8 - .../s\303\270knadsdata/S\303\270knadsdata.ts" | 3 - .../src/utils/deltakelserUtils.ts | 2 +- .../components/AlertStoryWrapper.tsx | 2 +- .../Sp\303\270rsm\303\245lWrapper.tsx" | 4 +- .../decorators/withFormikWrapper.tsx | 2 +- .../decorators/withS\303\270knadContext.tsx" | 12 +- apps/ungdomsytelse-deltaker/tsconfig.json | 14 +- apps/ungdomsytelse-deltaker/vite.config.ts | 12 +- packages/sif-app-register/src/index.ts | 12 + yarn.lock | 41 ++- 96 files changed, 2656 insertions(+), 343 deletions(-) create mode 100644 apps/ungdomsytelse-deltaker/mock/msw/browser.ts create mode 100644 apps/ungdomsytelse-deltaker/mock/msw/handlers/index.ts create mode 100644 apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/arbeidsgiverMock.ts create mode 100644 apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/barnMock.ts create mode 100644 apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/hentAlle.ts create mode 100644 apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/index.ts create mode 100644 "apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/s\303\270kerMock.ts" create mode 100644 apps/ungdomsytelse-deltaker/mockServiceWorker.js create mode 100644 apps/ungdomsytelse-deltaker/src/api/services/mellomlagringService.ts create mode 100644 apps/ungdomsytelse-deltaker/src/app.css rename "apps/ungdomsytelse-deltaker/src/s\303\270knad/context/S\303\270knadContext.tsx" => apps/ungdomsytelse-deltaker/src/context/DeltakerContext.tsx (52%) create mode 100644 apps/ungdomsytelse-deltaker/src/lenker.ts rename "apps/ungdomsytelse-deltaker/src/s\303\270knad/S\303\270knad.tsx" => apps/ungdomsytelse-deltaker/src/sites/InitialDataLoader.tsx (75%) create mode 100644 apps/ungdomsytelse-deltaker/src/sites/innsyn/InnsynRouter.tsx create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/S\303\270knad.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/S\303\270knadRouter.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/S\303\270knadStep.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/BehandlingAvPersonopplysningerContent.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/KortOmUngdomsytelsen.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/OmS\303\270knaden.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/VelkommenGuideContent.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/invalid-step-s\303\270knadsdata-info/InvalidStepS\303\270knadsdataInfo.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/StepFormValuesContext.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/S\303\270knadContext.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/S\303\270knadContextState.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/action/actionCreator.ts" rename "apps/ungdomsytelse-deltaker/src/s\303\270knad/hooks/useS\303\270knadContext.ts" => "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/hooks/useS\303\270knadContext.ts" (63%) create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/reducer/s\303\270knadReducer.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useAvbrytS\303\270knad.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useOnValidSubmit.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/usePersistS\303\270knadState.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useResetS\303\270knad.ts" rename "apps/ungdomsytelse-deltaker/src/s\303\270knad/hooks/useSendS\303\270knad.ts" => "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useSendS\303\270knad.ts" (51%) create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useStepNavigation.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useS\303\270knadsdataStatus.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/i18n/index.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/intro/IntroPage.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/KvitteringPage.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/kvitteringMesssages.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/velkommen/VelkommenPage.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/velkommen/velkommenPageMessages.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/arbeidstid-step/ArbeidstidStep.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/arbeidstid-step/arbeidstidStepUtils.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/barn-step/BarnStep.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/barn-step/barnStepUtils.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/OppsummeringStep.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/components/BarnSummaryList.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/components/DeltakelseOppsummering.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/components/OmS\303\270kerOppsummering.tsx" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/oppsummeringMessages.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/oppsummeringStepUtils.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/s\303\270knadStepConfig.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/RequestStatus.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/StepFormValues.ts" rename apps/ungdomsytelse-deltaker/src/types/StepId.ts => "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/StepId.ts" (70%) create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/S\303\270knadContextState.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/S\303\270knadRoutes.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/s\303\270knadsdata/ArbeidstidS\303\270knadsdata.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/s\303\270knadsdata/BarnS\303\270knadsdata.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/s\303\270knadsdata/S\303\270knadsdata.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/lagreS\303\270knadState.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/navigationUtils.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadRoutesUtils.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadUtils.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadsdataToApiData/getApiDataFromS\303\270knadsdata.ts" create mode 100644 "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadsdataToApiData/validateApiData.ts" delete mode 100644 "apps/ungdomsytelse-deltaker/src/s\303\270knad/S\303\270knadRouter.tsx" delete mode 100644 "apps/ungdomsytelse-deltaker/src/s\303\270knad/form/DeltakelseForm.tsx" delete mode 100644 "apps/ungdomsytelse-deltaker/src/s\303\270knad/form/Forside.tsx" delete mode 100644 "apps/ungdomsytelse-deltaker/src/types/S\303\270knadContextState.ts" delete mode 100644 "apps/ungdomsytelse-deltaker/src/types/S\303\270knadRoutes.ts" delete mode 100644 apps/ungdomsytelse-deltaker/src/types/appEnv.ts delete mode 100644 "apps/ungdomsytelse-deltaker/src/types/s\303\270knadsdata/S\303\270knadsdata.ts" diff --git a/apps/ungdomsytelse-deltaker/mock/msw/browser.ts b/apps/ungdomsytelse-deltaker/mock/msw/browser.ts new file mode 100644 index 0000000000..0a56427880 --- /dev/null +++ b/apps/ungdomsytelse-deltaker/mock/msw/browser.ts @@ -0,0 +1,4 @@ +import { setupWorker } from 'msw/browser'; +import { handlers } from './handlers'; + +export const worker = setupWorker(...handlers); diff --git a/apps/ungdomsytelse-deltaker/mock/msw/handlers/index.ts b/apps/ungdomsytelse-deltaker/mock/msw/handlers/index.ts new file mode 100644 index 0000000000..12bcfcfafa --- /dev/null +++ b/apps/ungdomsytelse-deltaker/mock/msw/handlers/index.ts @@ -0,0 +1,45 @@ +import { delay, http, HttpResponse } from 'msw'; +import { søker1Mock } from '../mocks/soker1'; +import { hentAlleResponse } from '../mocks/soker1/hentAlle'; + +const MellomlagringStorageKey = 'mellomlagring-ungdomsytelse-deltaker-soknad'; + +export const handlers = [ + http.post('*amplitude*', () => new HttpResponse(null, { status: 200 })), + http.post('*hotjar*', () => new HttpResponse(null, { status: 200 })), + http.get('**/oppslag/soker', () => { + return HttpResponse.json(søker1Mock.søker); + }), + http.get('**/oppslag/barn', () => { + return HttpResponse.json(søker1Mock.barn); + }), + http.get('**/oppslag/arbeidsgiver', () => { + return HttpResponse.json(søker1Mock.arbeidsgiver); + }), + http.post('**/soknad/innsending', () => { + return HttpResponse.json({}); + }), + http.get('**/deltakelse/register/hent/alle', () => { + return HttpResponse.json(hentAlleResponse); + }), + http.get(`**/mellomlagring/UNGDOMSYTELSE_DELTAKER_SOKNAD`, async () => { + const data = localStorage.getItem(MellomlagringStorageKey); + const jsonData = JSON.parse(JSON.stringify(data) || '{}'); + await delay(350); + return new HttpResponse(jsonData, { status: 200 }); + }), + http.post(`**/mellomlagring/UNGDOMSYTELSE_DELTAKER_SOKNAD`, async ({ request }) => { + const data = await request.text(); + localStorage.setItem(MellomlagringStorageKey, data); + return new HttpResponse(null, { status: 200 }); + }), + http.put(`**/mellomlagring/UNGDOMSYTELSE_DELTAKER_SOKNAD`, async ({ request }) => { + const data = await request.text(); + localStorage.setItem(MellomlagringStorageKey, data); + return new HttpResponse(null, { status: 200 }); + }), + http.delete(`**/mellomlagring/UNGDOMSYTELSE_DELTAKER_SOKNAD`, () => { + localStorage.setItem(MellomlagringStorageKey, ''); + return new HttpResponse(null, { status: 200 }); + }), +]; diff --git a/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/arbeidsgiverMock.ts b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/arbeidsgiverMock.ts new file mode 100644 index 0000000000..1279cf6680 --- /dev/null +++ b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/arbeidsgiverMock.ts @@ -0,0 +1,10 @@ +export const arbeidsgiverMock = { + organisasjoner: [ + { + navn: 'HAUGEN AS', + organisasjonsnummer: '123451234', + ansattFom: '2019-09-25', + ansattTom: null, + }, + ], +}; diff --git a/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/barnMock.ts b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/barnMock.ts new file mode 100644 index 0000000000..59ed845cfa --- /dev/null +++ b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/barnMock.ts @@ -0,0 +1,11 @@ +export const barnMock = { + barn: [ + { + fornavn: 'ALFABETISK', + etternavn: 'TURLØYPE', + aktørId: '2811762539343', + fødselsdato: '2019-06-08', + fødselsnummer: '08861999573', + }, + ], +}; diff --git a/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/hentAlle.ts b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/hentAlle.ts new file mode 100644 index 0000000000..75d746d795 --- /dev/null +++ b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/hentAlle.ts @@ -0,0 +1,82 @@ +export const hentAlleResponse = [ + { + id: '123', + programperiodeFraOgMed: '2024-07-01', + programperiodeTilOgMed: '2025-06-30', + harSøkt: false, + rapporteringsPerioder: [ + { + fraOgMed: '2024-07-01', + tilOgMed: '2024-07-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-08-01', + tilOgMed: '2024-08-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-09-01', + tilOgMed: '2024-09-30', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-10-01', + tilOgMed: '2024-10-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-11-01', + tilOgMed: '2024-11-30', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-12-01', + tilOgMed: '2024-12-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-01-01', + tilOgMed: '2025-01-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-02-01', + tilOgMed: '2025-02-28', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-03-01', + tilOgMed: '2025-03-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-04-01', + tilOgMed: '2025-04-30', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-05-01', + tilOgMed: '2025-05-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-06-01', + tilOgMed: '2025-06-30', + harRapportert: false, + inntekt: null, + }, + ], + }, +]; diff --git a/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/index.ts b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/index.ts new file mode 100644 index 0000000000..47f50d01ed --- /dev/null +++ b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/index.ts @@ -0,0 +1,9 @@ +import { arbeidsgiverMock } from './arbeidsgiverMock'; +import { barnMock } from './barnMock'; +import { søkerMock } from './søkerMock'; + +export const søker1Mock = { + barn: barnMock, + søker: søkerMock, + arbeidsgiver: arbeidsgiverMock, +}; diff --git "a/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/s\303\270kerMock.ts" "b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/s\303\270kerMock.ts" new file mode 100644 index 0000000000..a4ac2abade --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/s\303\270kerMock.ts" @@ -0,0 +1,8 @@ +export const søkerMock = { + aktørId: '2320509955297', + fødselsdato: '1995-06-02', + fødselsnummer: '02869599258', + fornavn: 'Test', + mellomnavn: null, + etternavn: 'Brukeresen', +}; diff --git a/apps/ungdomsytelse-deltaker/mockServiceWorker.js b/apps/ungdomsytelse-deltaker/mockServiceWorker.js new file mode 100644 index 0000000000..ec47a9a50a --- /dev/null +++ b/apps/ungdomsytelse-deltaker/mockServiceWorker.js @@ -0,0 +1,307 @@ +/* eslint-disable */ +/* tslint:disable */ + +/** + * Mock Service Worker. + * @see https://github.com/mswjs/msw + * - Please do NOT modify this file. + * - Please do NOT serve this file on production. + */ + +const PACKAGE_VERSION = '2.7.0' +const INTEGRITY_CHECKSUM = '00729d72e3b82faf54ca8b9621dbb96f' +const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') +const activeClientIds = new Set() + +self.addEventListener('install', function () { + self.skipWaiting() +}) + +self.addEventListener('activate', function (event) { + event.waitUntil(self.clients.claim()) +}) + +self.addEventListener('message', async function (event) { + const clientId = event.source.id + + if (!clientId || !self.clients) { + return + } + + const client = await self.clients.get(clientId) + + if (!client) { + return + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + switch (event.data) { + case 'KEEPALIVE_REQUEST': { + sendToClient(client, { + type: 'KEEPALIVE_RESPONSE', + }) + break + } + + case 'INTEGRITY_CHECK_REQUEST': { + sendToClient(client, { + type: 'INTEGRITY_CHECK_RESPONSE', + payload: { + packageVersion: PACKAGE_VERSION, + checksum: INTEGRITY_CHECKSUM, + }, + }) + break + } + + case 'MOCK_ACTIVATE': { + activeClientIds.add(clientId) + + sendToClient(client, { + type: 'MOCKING_ENABLED', + payload: { + client: { + id: client.id, + frameType: client.frameType, + }, + }, + }) + break + } + + case 'MOCK_DEACTIVATE': { + activeClientIds.delete(clientId) + break + } + + case 'CLIENT_CLOSED': { + activeClientIds.delete(clientId) + + const remainingClients = allClients.filter((client) => { + return client.id !== clientId + }) + + // Unregister itself when there are no more clients + if (remainingClients.length === 0) { + self.registration.unregister() + } + + break + } + } +}) + +self.addEventListener('fetch', function (event) { + const { request } = event + + // Bypass navigation requests. + if (request.mode === 'navigate') { + return + } + + // Opening the DevTools triggers the "only-if-cached" request + // that cannot be handled by the worker. Bypass such requests. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + return + } + + // Bypass all requests when there are no active clients. + // Prevents the self-unregistered worked from handling requests + // after it's been deleted (still remains active until the next reload). + if (activeClientIds.size === 0) { + return + } + + // Generate unique request ID. + const requestId = crypto.randomUUID() + event.respondWith(handleRequest(event, requestId)) +}) + +async function handleRequest(event, requestId) { + const client = await resolveMainClient(event) + const response = await getResponse(event, client, requestId) + + // Send back the response clone for the "response:*" life-cycle events. + // Ensure MSW is active and ready to handle the message, otherwise + // this message will pend indefinitely. + if (client && activeClientIds.has(client.id)) { + ;(async function () { + const responseClone = response.clone() + + sendToClient( + client, + { + type: 'RESPONSE', + payload: { + requestId, + isMockedResponse: IS_MOCKED_RESPONSE in response, + type: responseClone.type, + status: responseClone.status, + statusText: responseClone.statusText, + body: responseClone.body, + headers: Object.fromEntries(responseClone.headers.entries()), + }, + }, + [responseClone.body], + ) + })() + } + + return response +} + +// Resolve the main client for the given event. +// Client that issues a request doesn't necessarily equal the client +// that registered the worker. It's with the latter the worker should +// communicate with during the response resolving phase. +async function resolveMainClient(event) { + const client = await self.clients.get(event.clientId) + + if (activeClientIds.has(event.clientId)) { + return client + } + + if (client?.frameType === 'top-level') { + return client + } + + const allClients = await self.clients.matchAll({ + type: 'window', + }) + + return allClients + .filter((client) => { + // Get only those clients that are currently visible. + return client.visibilityState === 'visible' + }) + .find((client) => { + // Find the client ID that's recorded in the + // set of clients that have registered the worker. + return activeClientIds.has(client.id) + }) +} + +async function getResponse(event, client, requestId) { + const { request } = event + + // Clone the request because it might've been already used + // (i.e. its body has been read and sent to the client). + const requestClone = request.clone() + + function passthrough() { + // Cast the request headers to a new Headers instance + // so the headers can be manipulated with. + const headers = new Headers(requestClone.headers) + + // Remove the "accept" header value that marked this request as passthrough. + // This prevents request alteration and also keeps it compliant with the + // user-defined CORS policies. + const acceptHeader = headers.get('accept') + if (acceptHeader) { + const values = acceptHeader.split(',').map((value) => value.trim()) + const filteredValues = values.filter( + (value) => value !== 'msw/passthrough', + ) + + if (filteredValues.length > 0) { + headers.set('accept', filteredValues.join(', ')) + } else { + headers.delete('accept') + } + } + + return fetch(requestClone, { headers }) + } + + // Bypass mocking when the client is not active. + if (!client) { + return passthrough() + } + + // Bypass initial page load requests (i.e. static assets). + // The absence of the immediate/parent client in the map of the active clients + // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet + // and is not ready to handle requests. + if (!activeClientIds.has(client.id)) { + return passthrough() + } + + // Notify the client that a request has been intercepted. + const requestBuffer = await request.arrayBuffer() + const clientMessage = await sendToClient( + client, + { + type: 'REQUEST', + payload: { + id: requestId, + url: request.url, + mode: request.mode, + method: request.method, + headers: Object.fromEntries(request.headers.entries()), + cache: request.cache, + credentials: request.credentials, + destination: request.destination, + integrity: request.integrity, + redirect: request.redirect, + referrer: request.referrer, + referrerPolicy: request.referrerPolicy, + body: requestBuffer, + keepalive: request.keepalive, + }, + }, + [requestBuffer], + ) + + switch (clientMessage.type) { + case 'MOCK_RESPONSE': { + return respondWithMock(clientMessage.data) + } + + case 'PASSTHROUGH': { + return passthrough() + } + } + + return passthrough() +} + +function sendToClient(client, message, transferrables = []) { + return new Promise((resolve, reject) => { + const channel = new MessageChannel() + + channel.port1.onmessage = (event) => { + if (event.data && event.data.error) { + return reject(event.data.error) + } + + resolve(event.data) + } + + client.postMessage( + message, + [channel.port2].concat(transferrables.filter(Boolean)), + ) + }) +} + +async function respondWithMock(response) { + // Setting response status code to 0 is a no-op. + // However, when responding with a "Response.error()", the produced Response + // instance will have status code set to 0. Since it's not possible to create + // a Response instance with status code 0, handle that use-case separately. + if (response.status === 0) { + return Response.error() + } + + const mockedResponse = new Response(response.body, response) + + Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, { + value: true, + enumerable: true, + }) + + return mockedResponse +} diff --git a/apps/ungdomsytelse-deltaker/package.json b/apps/ungdomsytelse-deltaker/package.json index 97c82cbfc5..85a6f58d4b 100644 --- a/apps/ungdomsytelse-deltaker/package.json +++ b/apps/ungdomsytelse-deltaker/package.json @@ -34,12 +34,14 @@ "dayjs": "1.11.13", "html-react-parser": "5.2.1", "jsdom": "25.0.1", + "object-hash": "^3.0.0", "postcss": "8.4.49", "react": "19.0.0", "react-dom": "19.0.0", "react-hook-form": "7.54.1", "react-intl": "7.0.4", "react-router-dom": "7.0.2", + "swr": "^2.2.5", "uuid": "11.0.3", "zod": "3.24.1" }, @@ -56,6 +58,7 @@ "@storybook/react-vite": "8.4.7", "@storybook/test": "8.4.7", "@types/node": "22.10.2", + "@types/object-hash": "^3", "@types/react": "19.0.1", "@types/react-dom": "19.0.2", "@typescript-eslint/parser": "8.18.0", @@ -70,6 +73,7 @@ "eslint-plugin-unicorn": "56.0.1", "express": "4.21.2", "http-proxy-middleware": "3.0.3", + "msw": "^2.7.0", "mustache-express": "1.3.2", "postcss-import": "16.1.0", "postcss-styled-syntax": "0.7.0", @@ -82,5 +86,10 @@ "vite": "6.0.3", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8" + }, + "msw": { + "workerDirectory": [ + "" + ] } } diff --git a/apps/ungdomsytelse-deltaker/src/App.tsx b/apps/ungdomsytelse-deltaker/src/App.tsx index 9f83fc2fdd..698f5312b8 100644 --- a/apps/ungdomsytelse-deltaker/src/App.tsx +++ b/apps/ungdomsytelse-deltaker/src/App.tsx @@ -1,9 +1,9 @@ +import { applicationIntlMessages } from '@i18n/index'; import { isProd } from '@navikt/sif-common-env'; import { ensureBaseNameForReactRouter, SoknadApplication } from '@navikt/sif-common-soknad-ds/src'; -import { applicationIntlMessages } from './i18n'; -import Søknad from './søknad/Søknad'; -import { appEnv } from './types/appEnv'; -import '@navikt/ds-css'; +import { appEnv } from '@utils/appEnv'; +import InitialDataLoader from './sites/InitialDataLoader'; +import './app.css'; const { PUBLIC_PATH, @@ -33,7 +33,7 @@ const App = () => { }} useAmplitude={SIF_PUBLIC_USE_AMPLITUDE ? SIF_PUBLIC_USE_AMPLITUDE === 'true' : isProd()} amplitudeApiKey={SIF_PUBLIC_AMPLITUDE_API_KEY}> - + ); }; diff --git a/apps/ungdomsytelse-deltaker/src/api/apiClient.ts b/apps/ungdomsytelse-deltaker/src/api/apiClient.ts index 2ae84de318..77292e7c5c 100644 --- a/apps/ungdomsytelse-deltaker/src/api/apiClient.ts +++ b/apps/ungdomsytelse-deltaker/src/api/apiClient.ts @@ -1,5 +1,5 @@ +import { appEnv } from '@utils/appEnv'; import axios, { AxiosRequestConfig } from 'axios'; -import { appEnv } from '../types/appEnv'; const axiosConfig: AxiosRequestConfig = { withCredentials: false, diff --git a/apps/ungdomsytelse-deltaker/src/api/schemas/deltakelseSchema.ts b/apps/ungdomsytelse-deltaker/src/api/schemas/deltakelseSchema.ts index 84e4190247..63475d4545 100644 --- a/apps/ungdomsytelse-deltaker/src/api/schemas/deltakelseSchema.ts +++ b/apps/ungdomsytelse-deltaker/src/api/schemas/deltakelseSchema.ts @@ -1,8 +1,8 @@ -import { z } from 'zod'; +import { Rapporteringsperiode } from '@api/types'; import { parseMaybeDateStringToDate } from '@navikt/sif-common-api/src/utils/jsonParseUtils'; -import { DateRange } from '@navikt/sif-common-utils'; import { OpenDateRange } from '@navikt/sif-common-formik-ds'; -import { Rapporteringsperiode } from '../types'; +import { DateRange } from '@navikt/sif-common-utils'; +import { z } from 'zod'; const rapporteringsperiodeDTOSchema = z.object({ fraOgMed: z.preprocess((val) => parseMaybeDateStringToDate(val), z.date()), diff --git a/apps/ungdomsytelse-deltaker/src/api/services/deltakerService.ts b/apps/ungdomsytelse-deltaker/src/api/services/deltakerService.ts index 2ff8fc5074..4df71854f9 100644 --- a/apps/ungdomsytelse-deltaker/src/api/services/deltakerService.ts +++ b/apps/ungdomsytelse-deltaker/src/api/services/deltakerService.ts @@ -1,7 +1,7 @@ +import { ungDeltakelseOpplyserApiClient } from '@api/apiClient'; +import { Deltakelse, PeriodeMedInntekt } from '@api/types'; import getSentryLoggerForApp from '@navikt/sif-common-sentry'; -import { ungDeltakelseOpplyserApiClient } from '../apiClient'; import { deltakelserSchema } from '../schemas/deltakelserSchema'; -import { Deltakelse, PeriodeMedInntekt } from '../types'; const getDeltakelser = async (): Promise => { const response = await ungDeltakelseOpplyserApiClient.get(`/deltakelse/register/hent/alle`); diff --git a/apps/ungdomsytelse-deltaker/src/api/services/mellomlagringService.ts b/apps/ungdomsytelse-deltaker/src/api/services/mellomlagringService.ts new file mode 100644 index 0000000000..19591752a4 --- /dev/null +++ b/apps/ungdomsytelse-deltaker/src/api/services/mellomlagringService.ts @@ -0,0 +1,62 @@ +import { Søker } from '@navikt/sif-common-api'; +import { k9BrukerdialogApiClient } from '@navikt/sif-common-api/src/api/apiClient'; +import { jsonSort } from '@navikt/sif-common-utils'; +import hash from 'object-hash'; +import { SøknadContextState } from '../../sites/søknad/context/SøknadContextState'; +import { SOKNAD_VERSJON } from '../../sites/søknad/utils/søknadUtils'; +import { Deltakelse } from '../types'; + +export const mellomlagringEndpointUrl = `/mellomlagring/UNGDOMSYTELSE_DELTAKER_SOKNAD`; + +export type MellomlagringData = Omit & { + søknadHashString: string; +}; + +interface SøknadStateHashInfo { + søkerKey: string; + deltakelseKey: string; +} + +const createSøknadHashString = (søker: Søker, deltakelse: Deltakelse) => { + const hashData: SøknadStateHashInfo = { + søkerKey: søker.aktørId, + deltakelseKey: deltakelse.id, + }; + return hash(JSON.stringify(jsonSort(hashData))); +}; + +export const mellomlagringIsValid = ( + mellomlagring: MellomlagringData, + søker: Søker, + deltakelse: Deltakelse, +): boolean => { + return ( + mellomlagring.søknadHashString === createSøknadHashString(søker, deltakelse) && + mellomlagring.versjon === SOKNAD_VERSJON + ); +}; + +export const mellomlagringService = { + create: async (data: MellomlagringData) => { + return k9BrukerdialogApiClient.post(mellomlagringEndpointUrl, data); + }, + update: ({ søker, søknadsdata, søknadRoute, søknadSendt, registrerteBarn }: SøknadContextState) => { + const data: MellomlagringData = { + søknadHashString: createSøknadHashString(søker, søknadsdata.deltakelse), + søknadsdata, + søknadRoute, + søknadSendt, + registrerteBarn, + versjon: SOKNAD_VERSJON, + }; + return k9BrukerdialogApiClient.put(mellomlagringEndpointUrl, data); + }, + purge: () => { + return k9BrukerdialogApiClient.delete(mellomlagringEndpointUrl); + }, + fetch: async (): Promise => { + const result = await k9BrukerdialogApiClient.get(mellomlagringEndpointUrl); + return result.data; + }, + fetcher: (url: string) => k9BrukerdialogApiClient.get(url).then((res) => res.data), +}; diff --git "a/apps/ungdomsytelse-deltaker/src/api/services/sendS\303\270knadService.ts" "b/apps/ungdomsytelse-deltaker/src/api/services/sendS\303\270knadService.ts" index 27de3831ae..93e37e6f92 100644 --- "a/apps/ungdomsytelse-deltaker/src/api/services/sendS\303\270knadService.ts" +++ "b/apps/ungdomsytelse-deltaker/src/api/services/sendS\303\270knadService.ts" @@ -1,5 +1,5 @@ +import { SøknadApiData } from '@api/types'; import { k9BrukerdialogApiClient } from '@navikt/sif-common-api/src/api/apiClient'; -import { SøknadApiData } from '../types'; import { søknadApiDataSchema } from '../schemas/søknadApiDataSchema'; export const sendSøknadService = { diff --git a/apps/ungdomsytelse-deltaker/src/app.css b/apps/ungdomsytelse-deltaker/src/app.css new file mode 100644 index 0000000000..0d54b5965b --- /dev/null +++ b/apps/ungdomsytelse-deltaker/src/app.css @@ -0,0 +1,12 @@ +@import 'tailwindcss/base'; +@import '@navikt/ds-css'; +@import 'tailwindcss/components'; +@import 'tailwindcss/utilities'; +@import '@navikt/sif-common-core-ds/src/styles/sif-ds-theme.css'; + +.navds-guide-panel__content > .navds-body-long p:first-child { + margin-top: 0; +} +.navds-guide-panel__content > .navds-body-long p:last-child { + margin-bottom: 0; +} diff --git a/apps/ungdomsytelse-deltaker/src/components/deltakelse-table/DeltakelseTable.tsx b/apps/ungdomsytelse-deltaker/src/components/deltakelse-table/DeltakelseTable.tsx index 9b6b7ca75b..ae57acdad1 100644 --- a/apps/ungdomsytelse-deltaker/src/components/deltakelse-table/DeltakelseTable.tsx +++ b/apps/ungdomsytelse-deltaker/src/components/deltakelse-table/DeltakelseTable.tsx @@ -1,6 +1,6 @@ import { Table } from '@navikt/ds-react'; import { dateFormatter } from '@navikt/sif-common-utils'; -import { Deltakelse } from '../../api/types'; +import { Deltakelse } from '@api/types'; import Inntektsrapportering from '../inntektsrapportering/Inntektsrapportering'; interface Props { diff --git a/apps/ungdomsytelse-deltaker/src/components/inntektsrapportering/InnteksrapporteringForm.tsx b/apps/ungdomsytelse-deltaker/src/components/inntektsrapportering/InnteksrapporteringForm.tsx index 5f4f2f4b71..93a71cb80a 100644 --- a/apps/ungdomsytelse-deltaker/src/components/inntektsrapportering/InnteksrapporteringForm.tsx +++ b/apps/ungdomsytelse-deltaker/src/components/inntektsrapportering/InnteksrapporteringForm.tsx @@ -2,7 +2,7 @@ import { Box, Heading, VStack } from '@navikt/ds-react'; import { getMånederForInnteksrapportering } from '../../utils/deltakelserUtils'; import InntektEnMånedForm from './InntektEnMånedForm'; import { FormLayout } from '@navikt/sif-common-ui'; -import { Deltakelse } from '../../api/types'; +import { Deltakelse } from '@api/types'; interface Props { deltakelse: Deltakelse; diff --git "a/apps/ungdomsytelse-deltaker/src/components/inntektsrapportering/InntektEnM\303\245nedForm.tsx" "b/apps/ungdomsytelse-deltaker/src/components/inntektsrapportering/InntektEnM\303\245nedForm.tsx" index 2fdc1a43f0..a615956aec 100644 --- "a/apps/ungdomsytelse-deltaker/src/components/inntektsrapportering/InntektEnM\303\245nedForm.tsx" +++ "b/apps/ungdomsytelse-deltaker/src/components/inntektsrapportering/InntektEnM\303\245nedForm.tsx" @@ -1,4 +1,4 @@ -import { Deltakelse } from '../../api/types'; +import { Deltakelse } from '@api/types'; import { DateRange, dateToISOString, getTypedFormComponents, ValidationError } from '@navikt/sif-common-formik-ds'; import { capsFirstCharacter, dateFormatter } from '@navikt/sif-common-utils'; @@ -6,7 +6,7 @@ import { Alert, Box, Button, Heading, HStack } from '@navikt/ds-react'; import getIntlFormErrorHandler from '@navikt/sif-common-formik-ds/src/validation/intlFormErrorHandler'; import { useAppIntl } from '../../i18n'; import { getNumberValidator } from '@navikt/sif-common-formik-ds/src/validation'; -import { useRapporterInntekt } from '../../hooks/useRapporterInntekt'; +import { useRapporterInntekt } from '@hooks/useRapporterInntekt'; import TimedContent from '../timed-content/TimedContent'; interface Props { diff --git a/apps/ungdomsytelse-deltaker/src/components/inntektsrapportering/Inntektsrapportering.tsx b/apps/ungdomsytelse-deltaker/src/components/inntektsrapportering/Inntektsrapportering.tsx index 5d98a92f4b..48e682ca0d 100644 --- a/apps/ungdomsytelse-deltaker/src/components/inntektsrapportering/Inntektsrapportering.tsx +++ b/apps/ungdomsytelse-deltaker/src/components/inntektsrapportering/Inntektsrapportering.tsx @@ -1,6 +1,6 @@ import { Alert, BodyShort, Box, Heading, VStack } from '@navikt/ds-react'; import { dateFormatter, dateRangeFormatter } from '@navikt/sif-common-utils'; -import { Deltakelse } from '../../api/types'; +import { Deltakelse } from '@api/types'; import { useAppIntl } from '../../i18n'; import { getMånederForInnteksrapportering } from '../../utils/deltakelserUtils'; import InntektsrapporteringForm from './InnteksrapporteringForm'; diff --git "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/context/S\303\270knadContext.tsx" b/apps/ungdomsytelse-deltaker/src/context/DeltakerContext.tsx similarity index 52% rename from "apps/ungdomsytelse-deltaker/src/s\303\270knad/context/S\303\270knadContext.tsx" rename to apps/ungdomsytelse-deltaker/src/context/DeltakerContext.tsx index d7c1f6fb67..53b5715b7b 100644 --- "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/context/S\303\270knadContext.tsx" +++ b/apps/ungdomsytelse-deltaker/src/context/DeltakerContext.tsx @@ -1,38 +1,39 @@ import { createContext, ReactNode, useContext, useState } from 'react'; import { RegistrertBarn, Søker } from '@navikt/sif-common-api'; -import { Deltakelse } from '../../api/types'; -import { deltakelseErÅpenForRapportering } from '../../utils/deltakelserUtils'; +import { Deltakelse } from '@api/types'; +import { deltakelseErÅpenForRapportering } from '@utils/deltakelserUtils'; -interface SøknadContextType { - data: SøknadContextData; +interface DeltakerContextType { + data: DeltakerContextData; updateDeltakelse: (deltakelser: Deltakelse[]) => void; } -export interface SøknadContextData { +export interface DeltakerContextData { søker: Søker; barn: RegistrertBarn[]; alleDeltakelser: Deltakelse[]; deltakelserSøktFor: Deltakelse[]; deltakelserIkkeSøktFor: Deltakelse[]; deltakelserÅpenForRapportering: Deltakelse[]; + site: 'soknad' | 'innsyn'; } -export const SøknadContext = createContext(null!); +export const DeltakerContext = createContext(null!); -export const useSøknadContext = (): SøknadContextType => { - const context = useContext(SøknadContext); +export const useDeltakerContext = (): DeltakerContextType => { + const context = useContext(DeltakerContext); if (!context) { - throw new Error('useSøknadContext must be used within a SøknadContextProvider'); + throw new Error('useDeltakerContext must be used within a DeltakerContextProvider'); } return context; }; interface Props { children: ReactNode; - initialData: SøknadContextData; + initialData: DeltakerContextData; } -export const SøknadContextProvider = ({ children, initialData }: Props) => { - const [data, setData] = useState(initialData); +export const DeltakerContextProvider = ({ children, initialData }: Props) => { + const [data, setData] = useState(initialData); const updateDeltakelse = (deltakelser: Deltakelse[]) => { setData({ @@ -44,5 +45,5 @@ export const SøknadContextProvider = ({ children, initialData }: Props) => { }); }; - return {children}; + return {children}; }; diff --git a/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts b/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts index 9fb88d4446..aa9f964ed2 100644 --- a/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts +++ b/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts @@ -1,11 +1,11 @@ import { useState } from 'react'; +import { deltakerService } from '@api/services/deltakerService'; +import { DeltakerContextData } from '@context/DeltakerContext'; import { fetchBarn, fetchSøker } from '@navikt/sif-common-api'; import { useEffectOnce } from '@navikt/sif-common-hooks'; -import { deltakerService } from '../api/services/deltakerService'; -import { SøknadContextData } from '../søknad/context/SøknadContext'; -import { deltakelseErÅpenForRapportering } from '../utils/deltakelserUtils'; +import { deltakelseErÅpenForRapportering } from '@utils/deltakelserUtils'; -export type InitialData = SøknadContextData; +export type InitialData = DeltakerContextData; export const useInitialData = () => { const [initialData, setInitialData] = useState(); @@ -22,6 +22,7 @@ export const useInitialData = () => { const deltakelserSøktFor = alleDeltakelser.filter((d) => d.harSøkt); const deltakelserIkkeSøktFor = alleDeltakelser.filter((d) => !d.harSøkt); const deltakelserÅpenForRapportering = deltakelserSøktFor.filter(deltakelseErÅpenForRapportering); + const site = deltakelserIkkeSøktFor.length > 0 ? 'soknad' : 'innsyn'; setInitialData({ barn, @@ -30,6 +31,7 @@ export const useInitialData = () => { deltakelserSøktFor, deltakelserIkkeSøktFor, deltakelserÅpenForRapportering, + site, }); setIsLoading(false); } catch (e) { diff --git a/apps/ungdomsytelse-deltaker/src/hooks/useRapporterInntekt.ts b/apps/ungdomsytelse-deltaker/src/hooks/useRapporterInntekt.ts index 675f33234a..2e0a91c19f 100644 --- a/apps/ungdomsytelse-deltaker/src/hooks/useRapporterInntekt.ts +++ b/apps/ungdomsytelse-deltaker/src/hooks/useRapporterInntekt.ts @@ -1,6 +1,6 @@ import { DateRange } from '@navikt/sif-common-formik-ds'; import { useState } from 'react'; -import { deltakerService } from '../api/services/deltakerService'; +import { deltakerService } from '@api/services/deltakerService'; import { dateToISODate } from '@navikt/sif-common-utils'; import { isAxiosError } from 'axios'; diff --git a/apps/ungdomsytelse-deltaker/src/i18n/appMessages.ts b/apps/ungdomsytelse-deltaker/src/i18n/appMessages.ts index 0d7c32a329..846d27f0b4 100644 --- a/apps/ungdomsytelse-deltaker/src/i18n/appMessages.ts +++ b/apps/ungdomsytelse-deltaker/src/i18n/appMessages.ts @@ -1,6 +1,17 @@ +import { velkommenPageMessages } from '../sites/søknad/pages/velkommen/velkommenPageMessages'; +import { oppsummeringMessages } from '../sites/søknad/steps/oppsummering-step/oppsummeringMessages'; +import { validateApiDataMessages } from '../sites/søknad/utils/søknadsdataToApiData/validateApiData'; +import { søknadMessages } from '../sites/søknad/i18n'; +import { kvitteringMessages } from '../sites/søknad/pages/kvittering/kvitteringMesssages'; + const nb = { - 'application.title': 'Søknad om ungdomsytelse', - 'søknad.harBekreftetOpplysninger.noValue': 'Du må bekrefte at du vil være med i programmet for perioden.', + ...velkommenPageMessages.nb, + ...oppsummeringMessages.nb, + ...validateApiDataMessages.nb, + ...søknadMessages.nb, + ...kvitteringMessages.nb, + 'application.title': 'Søknad om deltakelse i ungdomsprogrammet', + 'søknad.harBekreftetOpplysninger.noValue': 'Du må bekrefte at du vil være med i ungdomsprogrammet for perioden.', }; export const appMessages = { diff --git a/apps/ungdomsytelse-deltaker/src/lenker.ts b/apps/ungdomsytelse-deltaker/src/lenker.ts new file mode 100644 index 0000000000..8aaac13977 --- /dev/null +++ b/apps/ungdomsytelse-deltaker/src/lenker.ts @@ -0,0 +1,29 @@ +interface Lenker { + navno: string; + personvern: string; + rettOgPlikt: string; + saksbehandlingstider: string; + skrivTilOss: string; +} + +const LenkerBokmål: Lenker = { + navno: 'https://www.nav.no/', + personvern: + 'https://www.nav.no/no/NAV+og+samfunn/Om+NAV/personvern-i-arbeids-og-velferdsetaten/personvernerkl%C3%A6ring-for-arbeids-og-velferdsetaten', + rettOgPlikt: 'https://nav.no/rettOgPlikt', + saksbehandlingstider: 'https://www.nav.no/saksbehandlingstider', + skrivTilOss: 'https://www.nav.no/person/kontakt-oss/nb/skriv-til-oss', +}; + +const getLenker = (locale?: string): Lenker => { + switch (locale) { + case 'nn': + return { + ...LenkerBokmål, + }; + default: + return LenkerBokmål; + } +}; + +export default getLenker; diff --git a/apps/ungdomsytelse-deltaker/src/main.tsx b/apps/ungdomsytelse-deltaker/src/main.tsx index 7517b40b9e..202ac60c62 100644 --- a/apps/ungdomsytelse-deltaker/src/main.tsx +++ b/apps/ungdomsytelse-deltaker/src/main.tsx @@ -1,9 +1,20 @@ import { StrictMode } from 'react'; import { createRoot } from 'react-dom/client'; +import { getMaybeEnv } from '@navikt/sif-common-env'; import App from './App'; -createRoot(document.getElementById('root')!).render( - - - , +async function enableMocking() { + const ENV = getMaybeEnv('ENV'); + if (ENV !== 'development') { + return; + } + const { worker } = await import('../mock/msw/browser'); + return worker.start(); +} +enableMocking().then(() => + createRoot(document.getElementById('root')!).render( + + + , + ), ); diff --git "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/S\303\270knad.tsx" b/apps/ungdomsytelse-deltaker/src/sites/InitialDataLoader.tsx similarity index 75% rename from "apps/ungdomsytelse-deltaker/src/s\303\270knad/S\303\270knad.tsx" rename to apps/ungdomsytelse-deltaker/src/sites/InitialDataLoader.tsx index 9e4b4ce9ab..905380c8eb 100644 --- "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/S\303\270knad.tsx" +++ b/apps/ungdomsytelse-deltaker/src/sites/InitialDataLoader.tsx @@ -1,13 +1,14 @@ -import { useInitialData } from '../hooks/useInitialData'; +import { Heading } from '@navikt/ds-react'; +import { DeltakerContextProvider } from '@context/DeltakerContext'; +import { useInitialData } from '@hooks/useInitialData'; import LoadingSpinner from '@navikt/sif-common-core-ds/src/atoms/loading-spinner/LoadingSpinner'; -import { SøknadContextProvider } from './context/SøknadContext'; -import SøknadRouter from './SøknadRouter'; import Page from '@navikt/sif-common-core-ds/src/components/page/Page'; -import { ErrorPage } from '@navikt/sif-common-soknad-ds/src'; import SifGuidePanel from '@navikt/sif-common-core-ds/src/components/sif-guide-panel/SifGuidePanel'; -import { Heading } from '@navikt/ds-react'; +import { ErrorPage } from '@navikt/sif-common-soknad-ds/src'; +import InnsynRouter from './innsyn/InnsynRouter'; +import Søknad from './søknad/Søknad'; -const Søknad = () => { +const InitialDataLoader = () => { const { initialData, isLoading, error } = useInitialData(); if (error) { @@ -41,10 +42,10 @@ const Søknad = () => { } return ( - - - + + {initialData.deltakelserIkkeSøktFor.length === 1 ? : } + ); }; -export default Søknad; +export default InitialDataLoader; diff --git a/apps/ungdomsytelse-deltaker/src/sites/innsyn/InnsynRouter.tsx b/apps/ungdomsytelse-deltaker/src/sites/innsyn/InnsynRouter.tsx new file mode 100644 index 0000000000..31d20a582b --- /dev/null +++ b/apps/ungdomsytelse-deltaker/src/sites/innsyn/InnsynRouter.tsx @@ -0,0 +1,11 @@ +import { Route, Routes } from 'react-router-dom'; + +const InnsynRouter = () => { + return ( + + sdf} /> + + ); +}; + +export default InnsynRouter; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/S\303\270knad.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/S\303\270knad.tsx" new file mode 100644 index 0000000000..5520e8cb21 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/S\303\270knad.tsx" @@ -0,0 +1,79 @@ +import { Alert } from '@navikt/ds-react'; +import { RegistrertBarn, Søker } from '@navikt/sif-common-api'; +import { guid } from '@navikt/sif-common-utils'; +import useSWR from 'swr'; +import { + MellomlagringData, + mellomlagringEndpointUrl, + mellomlagringIsValid, + mellomlagringService, +} from '../../api/services/mellomlagringService'; +import { Deltakelse } from '../../api/types'; +import { useDeltakerContext } from '../../context/DeltakerContext'; +import { StepFormValuesContextProvider } from './context/StepFormValuesContext'; +import { SøknadContextProvider } from './context/SøknadContext'; +import { SøknadContextState } from './context/SøknadContextState'; +import SøknadRouter from './SøknadRouter'; +import LoadingSpinner from '@navikt/sif-common-core-ds/src/atoms/loading-spinner/LoadingSpinner'; +import Page from '@navikt/sif-common-core-ds/src/components/page/Page'; +import { SOKNAD_VERSJON } from './utils/søknadUtils'; +import { Søknadsdata } from './types/søknadsdata/Søknadsdata'; + +const getInitialSøknadsdata = ( + søker: Søker, + registrerteBarn: RegistrertBarn[], + deltakelse: Deltakelse, + mellomlagring?: MellomlagringData, +): SøknadContextState => { + const søknadsdata: Søknadsdata = + mellomlagring && mellomlagringIsValid(mellomlagring, søker, deltakelse) + ? mellomlagring.søknadsdata + : { id: guid(), deltakelse }; + return { + søker, + registrerteBarn, + versjon: SOKNAD_VERSJON, + søknadsdata, + }; +}; + +const Søknad = () => { + const { + data: { barn, deltakelserIkkeSøktFor, søker }, + } = useDeltakerContext(); + + const { + data: mellomlagring, + error, + isLoading, + } = useSWR(mellomlagringEndpointUrl, mellomlagringService.fetcher); + + if (isLoading) { + return ( + +
+ +
+
+ ); + } + + if (error) { + return ( + + Feil: {JSON.stringify(error)} + + ); + } + + return ( + + + + + + ); +}; + +export default Søknad; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/S\303\270knadRouter.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/S\303\270knadRouter.tsx" new file mode 100644 index 0000000000..edcf819a0d --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/S\303\270knadRouter.tsx" @@ -0,0 +1,70 @@ +import { Navigate, Route, Routes, useLocation, useNavigate } from 'react-router-dom'; +import IntroPage from './pages/intro/IntroPage'; +import VelkommenPage from './pages/velkommen/VelkommenPage'; +import BarnStep from './steps/barn-step/BarnStep'; +import ArbeidstidStep from './steps/arbeidstid-step/ArbeidstidStep'; +import OppsummeringStep from './steps/oppsummering-step/OppsummeringStep'; +import { SøknadRoutes } from './types/SøknadRoutes'; +import KvitteringPage from './pages/kvittering/KvitteringPage'; +import { useSøknadContext } from './context/hooks/useSøknadContext'; +import { useEffect, useState } from 'react'; +import { usePersistSøknadState } from './hooks/usePersistSøknadState'; +import { relocateToRootPage, relocateToWelcomePage } from './utils/navigationUtils'; + +const SøknadRouter = () => { + const { + state: { søknadRoute, søknadsdata, søknadSendt }, + } = useSøknadContext(); + + const [isFirstTimeLoadingApp, setIsFirstTimeLoadingApp] = useState(true); + const { pathname } = useLocation(); + const navigateTo = useNavigate(); + usePersistSøknadState(); + + useEffect(() => { + if (søknadRoute && isFirstTimeLoadingApp) { + setIsFirstTimeLoadingApp(false); + navigateTo(søknadRoute); + } + if (pathname === SøknadRoutes.VELKOMMEN && søknadRoute === SøknadRoutes.SØKNAD_SENDT && søknadSendt) { + relocateToWelcomePage(); + } + if ( + pathname === SøknadRoutes.VELKOMMEN && + søknadRoute && + søknadRoute !== SøknadRoutes.SØKNAD_SENDT && + !søknadSendt + ) { + navigateTo(søknadRoute); // Send til sider dersom bruker kommer til velkommen via annen navigasjon + } + }, [navigateTo, pathname, søknadRoute, isFirstTimeLoadingApp]); + + if (søknadSendt && søknadRoute && søknadRoute !== SøknadRoutes.SØKNAD_SENDT) { + relocateToRootPage(); + } + + if (søknadsdata.velkommen?.harForståttRettigheterOgPlikter !== true) { + return ( + + } /> + } /> + } /> + } /> + + ); + } + + return ( + + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + ); +}; + +export default SøknadRouter; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/S\303\270knadStep.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/S\303\270knadStep.tsx" new file mode 100644 index 0000000000..8f16b81eec --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/S\303\270knadStep.tsx" @@ -0,0 +1,46 @@ +import React from 'react'; +import { useIntl } from 'react-intl'; +import { soknadStepUtils, Step } from '@navikt/sif-common-soknad-ds'; +import { useAppIntl } from '../../i18n'; +import InvalidStepSøknadsdataInfo from './components/invalid-step-søknadsdata-info/InvalidStepSøknadsdataInfo'; +import useAvbrytEllerFortsettSenere from './hooks/useAvbrytSøknad'; +import { getSøknadStepConfig } from './søknadStepConfig'; +import { StepId } from './types/StepId'; +import { useSøknadContext } from './context/hooks/useSøknadContext'; + +interface Props { + stepId: StepId; + children: React.ReactNode; +} + +const SøknadStep: React.FunctionComponent = ({ stepId, children }) => { + const intl = useIntl(); + const { text } = useAppIntl(); + const { + state: { + søknadsdata: { deltakelse }, + }, + } = useSøknadContext(); + + const stepConfig = getSøknadStepConfig(deltakelse); + + const { avbrytSøknad, fortsettSøknadSenere } = useAvbrytEllerFortsettSenere(); + + const { index } = stepConfig[stepId]; + + const steps = soknadStepUtils.getProgressStepsFromConfig(stepConfig, index, intl); + + return ( + + + {children} + + ); +}; + +export default SøknadStep; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/BehandlingAvPersonopplysningerContent.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/BehandlingAvPersonopplysningerContent.tsx" new file mode 100644 index 0000000000..404a6c7df8 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/BehandlingAvPersonopplysningerContent.tsx" @@ -0,0 +1,56 @@ +import { Heading, Link, List, VStack } from '@navikt/ds-react'; +import { AppText } from '@i18n/index'; +import getLenker from '../../../lenker'; + +const BehandlingAvPersonopplysningerContent = () => { + return ( + +
+ + + +

+ +

+
+
+ + + +

+ +

+ + + + + + + + + + + + + + +
+
+

+ ( + + {children} + + ), + }} + /> +

+
+
+ ); +}; + +export default BehandlingAvPersonopplysningerContent; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/KortOmUngdomsytelsen.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/KortOmUngdomsytelsen.tsx" new file mode 100644 index 0000000000..78206697a2 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/KortOmUngdomsytelsen.tsx" @@ -0,0 +1,17 @@ +import { Heading, ReadMore, VStack } from '@navikt/ds-react'; + +const KortOmUngdomsytelsen = () => { + return ( + + + Kort om ungdomsytelsen + + Lorem + Lorem + Lorem + Lorem + + ); +}; + +export default KortOmUngdomsytelsen; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/OmS\303\270knaden.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/OmS\303\270knaden.tsx" new file mode 100644 index 0000000000..9c905bf4d4 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/OmS\303\270knaden.tsx" @@ -0,0 +1,39 @@ +import { AppText, useAppIntl } from '@i18n/index'; +import { Accordion, Box, Heading, List, VStack } from '@navikt/ds-react'; +import BehandlingAvPersonopplysningerContent from './BehandlingAvPersonopplysningerContent'; + +const OmSøknaden = () => { + const { text } = useAppIntl(); + return ( + <> + + + + + + + + + + + + + + + + + + + + {text('omSøknaden.4')} + + + + + + + + ); +}; + +export default OmSøknaden; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/VelkommenGuideContent.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/VelkommenGuideContent.tsx" new file mode 100644 index 0000000000..457c7ee5da --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/VelkommenGuideContent.tsx" @@ -0,0 +1,11 @@ +import { BodyLong } from '@navikt/ds-react'; + +const VelkommenGuideContent = () => ( + <> + + Introtekst? + + +); + +export default VelkommenGuideContent; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/invalid-step-s\303\270knadsdata-info/InvalidStepS\303\270knadsdataInfo.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/invalid-step-s\303\270knadsdata-info/InvalidStepS\303\270knadsdataInfo.tsx" new file mode 100644 index 0000000000..91e9d8dacd --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/invalid-step-s\303\270knadsdata-info/InvalidStepS\303\270knadsdataInfo.tsx" @@ -0,0 +1,51 @@ +import React from 'react'; +import { Alert, Heading, Link } from '@navikt/ds-react'; +import { useNavigate } from 'react-router-dom'; +import FormBlock from '@navikt/sif-common-core-ds/src/atoms/form-block/FormBlock'; +import { SoknadStepsConfig } from '@navikt/sif-common-soknad-ds'; +import { StepId } from '../../types/StepId'; +import { getSøknadStepRoute } from '../../utils/søknadRoutesUtils'; +import { useAppIntl } from '../../../../i18n'; +import { useSøknadsdataStatus } from '../../hooks/useSøknadsdataStatus'; + +interface Props { + stepId: StepId; + stepConfig: SoknadStepsConfig; +} + +const InvalidStepSøknadsdataInfo: React.FunctionComponent = ({ stepId, stepConfig }) => { + const { text } = useAppIntl(); + const navigate = useNavigate(); + const { invalidSteps } = useSøknadsdataStatus(stepId, stepConfig); + + if (invalidSteps.length > 0) { + const step = invalidSteps[0]; + const stepTitle = text(stepConfig[step].stepTitleIntlKey as any); + const stepRoute = getSøknadStepRoute(step); + const getStepLink = () => ( + { + evt.stopPropagation(); + evt.preventDefault(); + navigate(stepRoute); + }}> + {stepTitle} + + ); + return ( + + + + Oops, dette stemmer ikke helt + + Vennligst gå tilbake til steget "{getStepLink()}", og bruk knappene nederst i skjemaet for + å gå videre. Ikke bruk frem og tilbake-funksjonaliteten i nettleseren. + + + ); + } + return null; +}; + +export default InvalidStepSøknadsdataInfo; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/StepFormValuesContext.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/StepFormValuesContext.tsx" new file mode 100644 index 0000000000..78b17b3210 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/StepFormValuesContext.tsx" @@ -0,0 +1,41 @@ +import React, { createContext, FunctionComponent, useContext, useState } from 'react'; +import { StepFormValues } from '../types/StepFormValues'; +import { StepId } from '../types/StepId'; + +interface StepFormValuesContextInterface { + stepFormValues: StepFormValues; + clearAllSteps: () => void; + clearStepFormValues: (stepId: StepId) => void; + setStepFormValues: (stepId: StepId, formValues: StepFormValues) => void; +} + +// eslint-disable-next-line @typescript-eslint/no-non-null-assertion +export const StepFormValuesContext = createContext(null!); + +export const useStepFormValuesContext = () => useContext(StepFormValuesContext); + +interface Props { + children: React.ReactNode; + initialValues?: StepFormValues; +} + +export const StepFormValuesContextProvider: FunctionComponent = ({ children, initialValues }) => { + const [values, setValues] = useState(initialValues || {}); + return ( + { + setValues({ ...values, [stepId]: undefined }); + }, + clearAllSteps: () => { + setValues({}); + }, + setStepFormValues: (stepId: StepId, formValues: StepFormValues) => { + setValues({ ...values, [stepId]: formValues[stepId] }); + }, + }}> + {children} + + ); +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/S\303\270knadContext.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/S\303\270knadContext.tsx" new file mode 100644 index 0000000000..312f7aef0e --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/S\303\270knadContext.tsx" @@ -0,0 +1,27 @@ +import { createContext, Dispatch, FunctionComponent, ReactNode, useMemo, useReducer } from 'react'; +import { SøknadContextAction } from './action/actionCreator'; +import { søknadReducer } from './reducer/søknadReducer'; +import { SøknadContextState } from './SøknadContextState'; + +interface SøknadContextData { + state: SøknadContextState; + dispatch: Dispatch; +} + +// eslint-disable-next-line @typescript-eslint/no-non-null-assertion +export const SøknadContext = createContext(null!); + +interface Props { + initialData: SøknadContextState; + children: ReactNode; +} + +export const SøknadContextProvider: FunctionComponent = ({ children, initialData }) => { + const [state, dispatch] = useReducer(søknadReducer, initialData); + + const contextValue = useMemo(() => { + return { state, dispatch }; + }, [state, dispatch]); + + return {children}; +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/S\303\270knadContextState.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/S\303\270knadContextState.ts" new file mode 100644 index 0000000000..798954e90a --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/S\303\270knadContextState.ts" @@ -0,0 +1,14 @@ +import { RegistrertBarn, Søker } from '@navikt/sif-common-api'; +import { Søknadsdata } from '../types/søknadsdata/Søknadsdata'; +import { SøknadRoutes } from '../types/SøknadRoutes'; + +export interface SøknadContextState { + versjon: string; + søker: Søker; + registrerteBarn: RegistrertBarn[]; + søknadsdata: Søknadsdata; + søknadRoute?: SøknadRoutes; + søknadSendt?: boolean; + børMellomlagres?: boolean; + isReloadingApp?: boolean; +} diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/action/actionCreator.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/action/actionCreator.ts" new file mode 100644 index 0000000000..5aa6a5bd1a --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/action/actionCreator.ts" @@ -0,0 +1,145 @@ +import { OppsummeringFormValues } from '../../steps/oppsummering-step/OppsummeringStep'; +import { SøknadRoutes } from '../../types/SøknadRoutes'; +import { ArbeidstidSøknadsdata } from '../../types/søknadsdata/ArbeidstidSøknadsdata'; +import { BarnSøknadsdata } from '../../types/søknadsdata/BarnSøknadsdata'; + +export enum SøknadContextActionKeys { + RESET_SØKNAD = 'resetSøknad', + SET_IS_RELOADING_APP = 'setIsReloadingApp', + START_SØKNAD = 'startSøknad', + AVBRYT_SØKNAD = 'avbrytSøknad', + FORTSETT_SØKNAD_SENERE = 'fortsettSøknadSenere', + SET_SØKNAD_ROUTE = 'setSøknadRoute', + SET_SØKNAD_BARN = 'setSøknadBarn', + SET_SØKNAD_ARBEIDSTID = 'setSøknadArbeidstid', + SET_SØKNAD_HAR_BEKREFTET_OPPLYSNINGER = 'setSøknadHarBekreftetOpplysninger', + REQUEST_LAGRE_SØKNAD = 'requestLargeSøknad', + SET_SØKNAD_LAGRET = 'setSøknadLagret', + SET_SØKNAD_SENDT = 'setSøknadSendt', + SET_UNSUBMITTED_STEP_FORM_VALUES = 'setUnsubmittedStepFormValues', +} + +interface ResetSøknad { + type: SøknadContextActionKeys.RESET_SØKNAD; +} +interface SetIsReloadingApp { + type: SøknadContextActionKeys.SET_IS_RELOADING_APP; +} +interface StartSøknad { + type: SøknadContextActionKeys.START_SØKNAD; +} +interface AvbrytSøknad { + type: SøknadContextActionKeys.AVBRYT_SØKNAD; +} +interface FortsettSøknadSenere { + type: SøknadContextActionKeys.FORTSETT_SØKNAD_SENERE; +} +interface RequestLagreSøknad { + type: SøknadContextActionKeys.REQUEST_LAGRE_SØKNAD; +} +interface SetSøknadLagret { + type: SøknadContextActionKeys.SET_SØKNAD_LAGRET; +} +interface SetSøknadSendt { + type: SøknadContextActionKeys.SET_SØKNAD_SENDT; +} +interface SetSøknadRoute { + type: SøknadContextActionKeys.SET_SØKNAD_ROUTE; + payload: SøknadRoutes; +} + +interface SetSøknadBarn { + type: SøknadContextActionKeys.SET_SØKNAD_BARN; + payload: BarnSøknadsdata; +} + +interface SetSøknadArbeidstid { + type: SøknadContextActionKeys.SET_SØKNAD_ARBEIDSTID; + payload: ArbeidstidSøknadsdata; +} + +interface SetSøknadHarBekreftetOpplysninger { + type: SøknadContextActionKeys.SET_SØKNAD_HAR_BEKREFTET_OPPLYSNINGER; + payload: OppsummeringFormValues; +} + +const resetSøknad = (): ResetSøknad => ({ + type: SøknadContextActionKeys.RESET_SØKNAD, +}); + +const setIsReloadingApp = (): SetIsReloadingApp => ({ + type: SøknadContextActionKeys.SET_IS_RELOADING_APP, +}); + +const startSøknad = (): StartSøknad => ({ + type: SøknadContextActionKeys.START_SØKNAD, +}); + +const avbrytSøknad = (): AvbrytSøknad => ({ + type: SøknadContextActionKeys.AVBRYT_SØKNAD, +}); + +const fortsettSøknadSenere = (): FortsettSøknadSenere => ({ + type: SøknadContextActionKeys.FORTSETT_SØKNAD_SENERE, +}); + +const requestLagreSøknad = (): RequestLagreSøknad => ({ + type: SøknadContextActionKeys.REQUEST_LAGRE_SØKNAD, +}); + +const setSøknadLagret = (): SetSøknadLagret => ({ + type: SøknadContextActionKeys.SET_SØKNAD_LAGRET, +}); +const setSøknadSendt = (): SetSøknadSendt => ({ + type: SøknadContextActionKeys.SET_SØKNAD_SENDT, +}); + +const setSøknadBarn = (payload: BarnSøknadsdata): SetSøknadBarn => ({ + type: SøknadContextActionKeys.SET_SØKNAD_BARN, + payload, +}); + +const setSøknadArbeidstid = (payload: ArbeidstidSøknadsdata): SetSøknadArbeidstid => ({ + type: SøknadContextActionKeys.SET_SØKNAD_ARBEIDSTID, + payload, +}); + +const setSøknadHarBekreftetOpplysninger = (payload: OppsummeringFormValues): SetSøknadHarBekreftetOpplysninger => ({ + type: SøknadContextActionKeys.SET_SØKNAD_HAR_BEKREFTET_OPPLYSNINGER, + payload, +}); +const setSøknadRoute = (payload: SøknadRoutes): SetSøknadRoute => ({ + type: SøknadContextActionKeys.SET_SØKNAD_ROUTE, + payload, +}); + +export type SøknadContextAction = + | StartSøknad + | AvbrytSøknad + | ResetSøknad + | SetIsReloadingApp + | FortsettSøknadSenere + | RequestLagreSøknad + | SetSøknadLagret + | SetSøknadSendt + | SetSøknadBarn + | SetSøknadArbeidstid + | SetSøknadHarBekreftetOpplysninger + | SetSøknadRoute; + +const actionsCreator = { + resetSøknad, + startSøknad, + avbrytSøknad, + fortsettSøknadSenere, + requestLagreSøknad, + setIsReloadingApp, + setSøknadRoute, + setSøknadBarn, + setSøknadArbeidstid, + setSøknadHarBekreftetOpplysninger, + setSøknadLagret, + setSøknadSendt, +}; + +export default actionsCreator; diff --git "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/hooks/useS\303\270knadContext.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/hooks/useS\303\270knadContext.ts" similarity index 63% rename from "apps/ungdomsytelse-deltaker/src/s\303\270knad/hooks/useS\303\270knadContext.ts" rename to "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/hooks/useS\303\270knadContext.ts" index e6777b2372..94b89a6cb4 100644 --- "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/hooks/useS\303\270knadContext.ts" +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/hooks/useS\303\270knadContext.ts" @@ -1,4 +1,4 @@ import { useContext } from 'react'; -import { SøknadContext } from '../context/SøknadContext'; +import { SøknadContext } from '../SøknadContext'; export const useSøknadContext = () => useContext(SøknadContext); diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/reducer/s\303\270knadReducer.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/reducer/s\303\270knadReducer.ts" new file mode 100644 index 0000000000..8a949ee487 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/context/reducer/s\303\270knadReducer.ts" @@ -0,0 +1,115 @@ +import { guid } from '@navikt/sif-common-utils'; +import { SøknadRoutes } from '../../types/SøknadRoutes'; +import { Søknadsdata } from '../../types/søknadsdata/Søknadsdata'; +import { SøknadContextAction, SøknadContextActionKeys } from '../action/actionCreator'; +import { SøknadContextState } from '../SøknadContextState'; + +export const initialSøknadsdata: Søknadsdata = { + id: undefined, +} as any; + +export const søknadReducer = (state: SøknadContextState, action: SøknadContextAction): SøknadContextState => { + switch (action.type) { + case SøknadContextActionKeys.START_SØKNAD: + return { + ...state, + søknadsdata: { + id: guid(), + deltakelse: state.søknadsdata.deltakelse, + velkommen: { + harForståttRettigheterOgPlikter: true, + }, + }, + søknadRoute: SøknadRoutes.BARN, + børMellomlagres: true, + }; + case SøknadContextActionKeys.AVBRYT_SØKNAD: + return { + ...state, + søknadsdata: initialSøknadsdata, + søknadRoute: SøknadRoutes.VELKOMMEN, + }; + } + + if (state.søknadsdata) { + switch (action.type) { + case SøknadContextActionKeys.SET_SØKNAD_ROUTE: + return { + ...state, + søknadRoute: action.payload, + }; + case SøknadContextActionKeys.REQUEST_LAGRE_SØKNAD: + return { + ...state, + børMellomlagres: true, + }; + case SøknadContextActionKeys.SET_SØKNAD_LAGRET: + return { + ...state, + børMellomlagres: false, + }; + case SøknadContextActionKeys.SET_SØKNAD_BARN: { + const søknadsdata: Søknadsdata = { + ...state.søknadsdata, + barn: { + ...action.payload, + }, + }; + + return { + ...state, + søknadsdata, + }; + } + + case SøknadContextActionKeys.SET_SØKNAD_ARBEIDSTID: + return { + ...state, + søknadsdata: { + ...state.søknadsdata, + arbeidstid: { + ...action.payload, + }, + }, + }; + + case SøknadContextActionKeys.SET_SØKNAD_HAR_BEKREFTET_OPPLYSNINGER: + return { + ...state, + søknadsdata: { + ...state.søknadsdata, + oppsummering: { + harBekreftetOpplysninger: action.payload.harBekreftetOpplysninger, + }, + }, + }; + case SøknadContextActionKeys.SET_SØKNAD_SENDT: + return { + ...state, + børMellomlagres: false, + søknadsdata: initialSøknadsdata, + søknadRoute: SøknadRoutes.SØKNAD_SENDT, + søknadSendt: true, + }; + case SøknadContextActionKeys.RESET_SØKNAD: + return { + ...state, + børMellomlagres: false, + søknadsdata: initialSøknadsdata, + søknadSendt: false, + søknadRoute: SøknadRoutes.VELKOMMEN, + }; + case SøknadContextActionKeys.FORTSETT_SØKNAD_SENERE: + return { + ...state, + børMellomlagres: true, + }; + case SøknadContextActionKeys.SET_IS_RELOADING_APP: + return { + ...state, + isReloadingApp: true, + }; + } + } + return state; +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useAvbrytS\303\270knad.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useAvbrytS\303\270knad.ts" new file mode 100644 index 0000000000..497ac06825 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useAvbrytS\303\270knad.ts" @@ -0,0 +1,31 @@ +import { useCallback } from 'react'; +import { useNavigate } from 'react-router-dom'; +import actionsCreator from '../context/action/actionCreator'; +import { useSøknadContext } from '../context/hooks/useSøknadContext'; +import { useStepFormValuesContext } from '../context/StepFormValuesContext'; +import { SøknadRoutes } from '../types/SøknadRoutes'; +import { relocateToRootPage } from '../utils/navigationUtils'; +import { mellomlagringService } from '../../../api/services/mellomlagringService'; + +const useAvbrytEllerFortsettSenere = () => { + const navigate = useNavigate(); + const { dispatch } = useSøknadContext(); + const { clearAllSteps } = useStepFormValuesContext(); + + const avbrytSøknad = useCallback(async () => { + await mellomlagringService.purge(); + clearAllSteps(); + dispatch(actionsCreator.avbrytSøknad()); + navigate(SøknadRoutes.VELKOMMEN); + }, [navigate, clearAllSteps, dispatch]); + + const fortsettSøknadSenere = useCallback(() => { + clearAllSteps(); + dispatch(actionsCreator.fortsettSøknadSenere()); + relocateToRootPage(); + }, [clearAllSteps, dispatch]); + + return { avbrytSøknad, fortsettSøknadSenere }; +}; + +export default useAvbrytEllerFortsettSenere; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useOnValidSubmit.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useOnValidSubmit.ts" new file mode 100644 index 0000000000..e1aac37a9b --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useOnValidSubmit.ts" @@ -0,0 +1,66 @@ +import { useEffect, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import actionsCreator, { SøknadContextAction } from '../context/action/actionCreator'; +import { SøknadContextState } from '../context/SøknadContextState'; +import { useSøknadContext } from '../context/hooks/useSøknadContext'; +import { getSøknadStepConfig } from '../søknadStepConfig'; +import { getSøknadStepRoute } from '../utils/søknadRoutesUtils'; +import { relocateToLoginPage } from '../utils/navigationUtils'; +import { StepId } from '../types/StepId'; + +export const useOnValidSubmit = ( + submitHandler: (values: T) => SøknadContextAction[], + stepId: StepId, + postSubmit?: (state: SøknadContextState) => Promise, +) => { + const { dispatch, state } = useSøknadContext(); + const navigate = useNavigate(); + const [hasSubmitted, setSubmitted] = useState(false); + const [isSubmitting, setIsSubmitting] = useState(false); + const [submitError, setSubmitError] = useState(undefined); + + const { nextStep } = getSøknadStepConfig(state.søknadsdata.deltakelse)[stepId]; + + useEffect(() => { + if (hasSubmitted && postSubmit) { + postSubmit(state) + .then(() => { + if (nextStep) { + navigate(getSøknadStepRoute(nextStep)); + } + }) + .catch((error) => { + if (error.response && (error.response.status === 401 || error.response.status === 403)) { + relocateToLoginPage(); + } else { + setSubmitError(error); + } + }); + } + }, [hasSubmitted, navigate, nextStep, state, postSubmit]); + + useEffect(() => { + if (submitError) { + throw new Error(submitError); + } + }, [submitError]); + + const dispatchAction = (action: SøknadContextAction | undefined): void => { + if (action) { + dispatch(action); + } + }; + + const handleSubmit = (values: T) => { + setIsSubmitting(true); + const actions = [ + nextStep === undefined || nextStep === StepId.KVITTERING + ? undefined + : dispatch(actionsCreator.setSøknadRoute(getSøknadStepRoute(nextStep))), + ...submitHandler(values), + ]; + Promise.all([...actions.map(dispatchAction)]).then(() => setSubmitted(true)); + }; + + return { handleSubmit, isSubmitting }; +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/usePersistS\303\270knadState.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/usePersistS\303\270knadState.ts" new file mode 100644 index 0000000000..64676b08ac --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/usePersistS\303\270knadState.ts" @@ -0,0 +1,21 @@ +import { useEffect, useState } from 'react'; +import { useSøknadContext } from '../context/hooks/useSøknadContext'; +import { lagreSøknadState } from '../utils/lagreSøknadState'; +import actionsCreator from '../context/action/actionCreator'; + +export const usePersistSøknadState = () => { + const { dispatch, state } = useSøknadContext(); + const [pending, setPending] = useState(false); + + useEffect(() => { + if (state.børMellomlagres) { + setPending(true); + lagreSøknadState(state).then(() => { + dispatch(actionsCreator.setSøknadLagret()); + setPending(false); + }); + } + }, [state, dispatch]); + + return { pending }; +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useResetS\303\270knad.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useResetS\303\270knad.ts" new file mode 100644 index 0000000000..284ad315c7 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useResetS\303\270knad.ts" @@ -0,0 +1,26 @@ +import { useEffect, useState } from 'react'; +import actionsCreator from '../context/action/actionCreator'; +import { useSøknadContext } from '../context/hooks/useSøknadContext'; +import { relocateToWelcomePage } from '../utils/navigationUtils'; + +/** + * Nullstiller søknad etter at søker har sendt inn melding + * og navigerer bort fra kvitteringssiden. + */ + +export const useResetSøknad = () => { + const [shouldResetSøknad, setShouldResetSøknad] = useState(false); + const { dispatch } = useSøknadContext(); + + useEffect(() => { + if (shouldResetSøknad) { + dispatch(actionsCreator.resetSøknad()); + dispatch(actionsCreator.setIsReloadingApp()); + setTimeout(() => { + relocateToWelcomePage(); + }); + } + }, [shouldResetSøknad, dispatch]); + + return { setShouldResetSøknad, shouldResetSøknad }; +}; diff --git "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/hooks/useSendS\303\270knad.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useSendS\303\270knad.ts" similarity index 51% rename from "apps/ungdomsytelse-deltaker/src/s\303\270knad/hooks/useSendS\303\270knad.ts" rename to "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useSendS\303\270knad.ts" index 5c758a7288..89e5b35fcb 100644 --- "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/hooks/useSendS\303\270knad.ts" +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useSendS\303\270knad.ts" @@ -1,34 +1,39 @@ import { useState } from 'react'; +import { OmsorgsdagerAleneomsorgApp } from '@navikt/sif-app-register'; +import { useAmplitudeInstance } from '@navikt/sif-common-amplitude'; import { AxiosError } from 'axios'; -import { sendSøknadService } from '../../api/services/sendSøknadService'; -import { SøknadApiData } from '../../api/types'; -import { deltakerService } from '../../api/services/deltakerService'; +import { sendSøknadService } from '../../../api/services/sendSøknadService'; +import { SøknadApiData } from '../../../api/types'; +import { useAppIntl } from '../../../i18n'; +import { mellomlagringService } from '../../../api/services/mellomlagringService'; +import { relocateToKvittering } from '../utils/navigationUtils'; export const useSendSøknad = () => { const [isSubmitting, setIsSubmitting] = useState(false); const [sendSøknadError, setSendSøknadError] = useState(); - const [søknadSendt, setSøknadSendt] = useState(false); + const { locale } = useAppIntl(); - const sendSøknad = async (apiData: SøknadApiData) => { + const { logSoknadSent } = useAmplitudeInstance(); + + const sendSøknad = (apiData: SøknadApiData) => { setIsSubmitting(true); - await sendSøknadService + sendSøknadService .sendSøknad(apiData) .then(onSøknadSendSuccess) .catch((error) => { - setSøknadSendt(false); setSendSøknadError(error); setIsSubmitting(false); }); - await deltakerService.putMarkerHarSøkt(apiData.id); }; const onSøknadSendSuccess = async () => { - setSøknadSendt(true); + await logSoknadSent(OmsorgsdagerAleneomsorgApp.key, locale); + await mellomlagringService.purge(); setIsSubmitting(false); + relocateToKvittering(); }; const resetSendSøknad = () => { - setSøknadSendt(false); setIsSubmitting(false); setSendSøknadError(undefined); }; @@ -37,7 +42,6 @@ export const useSendSøknad = () => { resetSendSøknad, sendSøknad, isSubmitting, - søknadSendt, sendSøknadError, }; }; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useStepNavigation.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useStepNavigation.ts" new file mode 100644 index 0000000000..e5a1d03c3d --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useStepNavigation.ts" @@ -0,0 +1,41 @@ +import { useNavigate } from 'react-router-dom'; +import { StepConfig } from '@navikt/sif-common-soknad-ds'; +import { StepId } from '../types/StepId'; +import { getSøknadStepRoute } from '../utils/søknadRoutesUtils'; +import { useSøknadContext } from '../context/hooks/useSøknadContext'; +import actionsCreator from '../context/action/actionCreator'; + +/** Bør nok brukes med måte, i og med en denne ikke vil submitte skjema og oppdatere søknadsdata */ + +export const useStepNavigation = (step?: StepConfig) => { + const { dispatch } = useSøknadContext(); + const navigate = useNavigate(); + + const gotoStep = (stepId: StepId) => { + const route = getSøknadStepRoute(stepId); + dispatch(actionsCreator.setSøknadRoute(route)); + dispatch(actionsCreator.requestLagreSøknad()); + setTimeout(() => { + navigate(route); + }); + }; + + const goToPreviousStep = () => { + if (step?.previousStep) { + gotoStep(step?.previousStep); + } + }; + + const goToNextStep = () => { + if (step?.nextStep) { + if (step?.previousStep) { + gotoStep(step?.nextStep); + } + } + }; + + return { + goBack: step?.previousStep ? goToPreviousStep : undefined, + goNext: step?.nextStep ? goToNextStep : undefined, + }; +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useS\303\270knadsdataStatus.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useS\303\270knadsdataStatus.ts" new file mode 100644 index 0000000000..0e7f1f76ad --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/hooks/useS\303\270knadsdataStatus.ts" @@ -0,0 +1,77 @@ +import { useState } from 'react'; +import isEqual from 'react-fast-compare'; +import { RegistrertBarn } from '@navikt/sif-common-api'; +import { useEffectOnce } from '@navikt/sif-common-hooks'; +import { SoknadStepsConfig } from '@navikt/sif-common-soknad-ds'; +import { useSøknadContext } from '../context/hooks/useSøknadContext'; +import { useStepFormValuesContext } from '../context/StepFormValuesContext'; +import { ArbeidstidFormValues } from '../steps/arbeidstid-step/ArbeidstidStep'; +import { getArbeidstidSøknadsdataFromFormValues } from '../steps/arbeidstid-step/arbeidstidStepUtils'; +import { getBarnSøknadsdataFromFormValues } from '../steps/barn-step/barnStepUtils'; +import { StepFormValues } from '../types/StepFormValues'; +import { StepId } from '../types/StepId'; +import { Søknadsdata } from '../types/søknadsdata/Søknadsdata'; + +const getPrecedingSteps = (currentStepIndex: number, stepConfig: SoknadStepsConfig): StepId[] => { + return Object.keys(stepConfig).filter((_key, idx) => idx < currentStepIndex) as StepId[]; +}; + +const getStepSøknadsdataFromStepFormValues = ( + step: StepId, + stepFormValues: StepFormValues, + registrertBarn: RegistrertBarn[], +) => { + const formValues = stepFormValues[step]; + if (!formValues) { + return undefined; + } + switch (step) { + case StepId.BARN: + return getBarnSøknadsdataFromFormValues(registrertBarn); + case StepId.ARBEIDSTID: + return getArbeidstidSøknadsdataFromFormValues(formValues as ArbeidstidFormValues); + } + return undefined; +}; + +export const isStepFormValuesAndStepSøknadsdataValid = ( + step: StepId, + stepFormValues: StepFormValues, + søknadsdata: Søknadsdata, + registrertBarn: RegistrertBarn[], +): boolean => { + if (stepFormValues[step]) { + const stepSøknadsdata = søknadsdata[step]; + const tempSøknadsdata = getStepSøknadsdataFromStepFormValues(step, stepFormValues, registrertBarn); + if (!stepSøknadsdata || !isEqual(tempSøknadsdata, stepSøknadsdata)) { + return false; + } + } + return true; +}; + +export const useSøknadsdataStatus = (stepId: StepId, stepConfig: SoknadStepsConfig) => { + const [invalidSteps, setInvalidSteps] = useState([]); + + const { + state: { søknadsdata, registrerteBarn: registrertBarn }, + } = useSøknadContext(); + + const { stepFormValues } = useStepFormValuesContext(); + + useEffectOnce(() => { + const currentStep = stepConfig[stepId]; + const ip = []; + const precedingSteps = getPrecedingSteps(currentStep.index, stepConfig); + + precedingSteps.forEach((step) => { + if (isStepFormValuesAndStepSøknadsdataValid(step, stepFormValues, søknadsdata, registrertBarn) === false) { + ip.push(step); + } + }); + + setInvalidSteps(ip); + }); + + return { invalidSteps, hasInvalidSteps: invalidSteps.length > 0 }; +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/i18n/index.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/i18n/index.ts" new file mode 100644 index 0000000000..1c52f21921 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/i18n/index.ts" @@ -0,0 +1,8 @@ +const nb = { + 'step.barn.stepTitle': 'Barn', + 'step.arbeidstid.stepTitle': 'Arbeidstid', + 'step.oppsummering.stepTitle': 'Oppsummering', +}; +export const søknadMessages = { + nb, +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/intro/IntroPage.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/intro/IntroPage.tsx" new file mode 100644 index 0000000000..6a0256133b --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/intro/IntroPage.tsx" @@ -0,0 +1,65 @@ +import { Alert, BodyLong, Box, Button, Heading, VStack } from '@navikt/ds-react'; +import { useNavigate } from 'react-router-dom'; +import VelkommenPageHeader from '@components/velkommen-page-header/VelkommenPageHeader'; +import { useDeltakerContext } from '@context/DeltakerContext'; +import Page from '@navikt/sif-common-core-ds/src/components/page/Page'; +import { dateFormatter } from '@navikt/sif-common-utils'; +import KortOmUngdomsytelsen from '../../components/KortOmUngdomsytelsen'; +import { SøknadRoutes } from '../../types/SøknadRoutes'; + +const IntroPage = () => { + const { + data: { søker, deltakelserIkkeSøktFor }, + } = useDeltakerContext(); + const navigate = useNavigate(); + + if (deltakelserIkkeSøktFor.length !== 1) { + return ( + + + + + + Scenario som ikke støttes + + {deltakelserIkkeSøktFor.length === 0 + ? 'Ingen deltakelse som det ikke er søkt for' + : 'Det finnes flere deltakelser som ikke er søkt for'} + + + + ); + } + + const { programPeriode } = deltakelserIkkeSøktFor[0]; + + const handleStartSøknad = () => { + navigate(SøknadRoutes.VELKOMMEN); + }; + + return ( + + + + + + Hei {søker.fornavn} + + + Du er meldt på av din veileder til å være med i ungdomsytelse-programmet fra og med{' '} + {dateFormatter.dateShortMonthYear(programPeriode.from)}. For å starte + programmet, må du sende inn en kort søknad. + + + + + + + + + ); +}; + +export default IntroPage; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/KvitteringPage.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/KvitteringPage.tsx" new file mode 100644 index 0000000000..de0fe70dd8 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/KvitteringPage.tsx" @@ -0,0 +1,57 @@ +import { Alert, BodyLong, Heading, Link, VStack } from '@navikt/ds-react'; +import React from 'react'; +import { Infolist } from '@navikt/sif-common-core-ds'; +import Page from '@navikt/sif-common-core-ds/src/components/page/Page'; +import { useEffectOnce } from '@navikt/sif-common-hooks'; +import actionsCreator from '../../context/action/actionCreator'; +import { AppText, useAppIntl } from '../../../../i18n'; +import { useSøknadContext } from '../../context/hooks/useSøknadContext'; +import { appEnv } from '../../../../utils/appEnv'; +import { EnvKey } from '@navikt/sif-common-env'; + +const KvitteringPage = () => { + const { text } = useAppIntl(); + const { dispatch } = useSøknadContext(); + + useEffectOnce(() => { + dispatch(actionsCreator.setSøknadSendt()); + }); + return ( + + + + + Vi har mottat din søknad + + + Vivero eos et accusamus et iusto odio dignis simos ducimus qui blanditiis praesentium + voluptatum. + + + + +
  • + +
  • +
  • + +
  • +
  • + ( + + {children} + + ), + }} + /> +
  • +
    +
    +
    + ); +}; + +export default KvitteringPage; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/kvitteringMesssages.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/kvitteringMesssages.ts" new file mode 100644 index 0000000000..f6233322f3 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/kvitteringMesssages.ts" @@ -0,0 +1,14 @@ +const nb = { + 'kvittering.tittel': 'Vi har mottatt søknad om å være med i ungdomsprogrammet', + 'kvittering.info.tittel': '[TODO] Hva skjer videre nå?', + 'kvittering.info.1': 'Hva skal vi ha med her? Hva skjer egentlig', + 'kvittering.info.2': 'Vi kontakter deg hvis vi trenger flere opplysninger.', + 'kvittering.info.3': 'Du kan følge saken din på Din ungdomsytelse.', +}; + +const nn: Record = { ...nb }; + +export const kvitteringMessages = { + nb, + nn, +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/velkommen/VelkommenPage.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/velkommen/VelkommenPage.tsx" new file mode 100644 index 0000000000..8a815f08a7 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/velkommen/VelkommenPage.tsx" @@ -0,0 +1,39 @@ +import { useDeltakerContext } from '@context/DeltakerContext'; +import { UngdomsytelseDeltakerApp } from '@navikt/sif-app-register'; +import { useAmplitudeInstance } from '@navikt/sif-common-amplitude'; +import { SoknadVelkommenPage } from '@navikt/sif-common-soknad-ds/src'; +import OmSøknaden from '../../components/OmSøknaden'; +import VelkommenGuideContent from '../../components/VelkommenGuideContent'; +import actionsCreator from '../../context/action/actionCreator'; +import { useSøknadContext } from '../../context/hooks/useSøknadContext'; +import { SøknadRoutes } from '../../types/SøknadRoutes'; + +const VelkommenPage = () => { + const { + data: { søker }, + } = useDeltakerContext(); + + const { dispatch } = useSøknadContext(); + + const { logSoknadStartet } = useAmplitudeInstance(); + + const startSøknad = async () => { + await logSoknadStartet(UngdomsytelseDeltakerApp.key); + dispatch(actionsCreator.startSøknad()); + dispatch(actionsCreator.setSøknadRoute(SøknadRoutes.BARN)); + }; + + return ( + , + }} + title="Søknad om deltakelse i ungdoms­programmet"> + + + ); +}; + +export default VelkommenPage; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/velkommen/velkommenPageMessages.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/velkommen/velkommenPageMessages.ts" new file mode 100644 index 0000000000..df435ee93d --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/velkommen/velkommenPageMessages.ts" @@ -0,0 +1,27 @@ +const nb = { + 'omSøknaden.tittel': 'Om søknaden', + 'omSøknaden.1': 'Du får veiledning underveis i søknaden om hva du skal fylle ut, og hvordan.', + 'omSøknaden.2': + 'Vi tar vare på svarene dine i 72 timer. Hvis du innenfor den tiden for eksempel vil ta en pause eller blir automatisk logget ut, fortsetter du der du var når du kommer tilbake.', + 'omSøknaden.3': + 'Du må svare på alle spørsmålene for å kunne gå videre. Hvis du mangler etterspurt dokumentasjon, kan du ettersende det så snart du kan.', + 'omSøknaden.4': 'Om hvordan vi innhenter opplysninger om deg', + 'harForståttRettigheterOgPlikter.notChecked': 'Du må velge at du har forstått ditt ansvar som søker', + + 'personopplysninger.dialogtittel': 'Om behandling av personopplysninger', + 'personopplysninger.1': 'Slik behandler Nav personopplysningene dine', + 'personopplysninger.2': + 'Vi innhenter og mottar opplysninger om deg når vi skal behandle saken din. Det er nødvendig for at du skal få riktig tjeneste. Saken din kan behandles automatisk.', + 'personopplysninger.3': 'Hvilke opplysninger innhenter vi?', + 'personopplysninger.4': 'Opplysningene vi innhenter kommer enten fra deg eller fra offentlige registre:', + 'personopplysninger.4.1': 'hvilke barn du er registrert som forelder til.', + 'personopplysninger.4.2': 'hvem den andre forelderen er, og om dere er bosatt på samme folkeregistrerte adresse.', + 'personopplysninger.4.3': 'tilknytningen din til Norge.', + 'personopplysninger.4.4': + 'trygdeordninger du kan ha rett til i andre land. Vi kan også sende opplysninger om deg til trygdemyndigheter i andre land.', + + 'personopplysninger.5': + 'Du har rett til innsyn i saken din. Vil du vite mer om hvordan Nav behandler personopplysninger? Se nav.no/personvern.', +}; + +export const velkommenPageMessages = { nb }; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/arbeidstid-step/ArbeidstidStep.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/arbeidstid-step/ArbeidstidStep.tsx" new file mode 100644 index 0000000000..cee131c46b --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/arbeidstid-step/ArbeidstidStep.tsx" @@ -0,0 +1,83 @@ +import { useIntl } from 'react-intl'; +import Block from '@navikt/sif-common-core-ds/src/atoms/block/Block'; +import { getTypedFormComponents, ValidationError, YesOrNo } from '@navikt/sif-common-formik-ds'; +import getIntlFormErrorHandler from '@navikt/sif-common-formik-ds/src/validation/intlFormErrorHandler'; +import actionsCreator from '../../context/action/actionCreator'; +import { useSøknadContext } from '../../context/hooks/useSøknadContext'; +import { useStepFormValuesContext } from '../../context/StepFormValuesContext'; +import { SøknadContextState } from '../../context/SøknadContextState'; +import { useOnValidSubmit } from '../../hooks/useOnValidSubmit'; +import { useStepNavigation } from '../../hooks/useStepNavigation'; +import SøknadStep from '../../SøknadStep'; +import { getSøknadStepConfigForStep } from '../../søknadStepConfig'; +import { StepId } from '../../types/StepId'; +import { lagreSøknadState } from '../../utils/lagreSøknadState'; +import { getArbeidstidSøknadsdataFromFormValues } from './arbeidstidStepUtils'; + +export enum ArbeidstidFormFields { + 'harArbeidetIPerioden' = 'harArbeidetIPerioden', +} + +export interface ArbeidstidFormValues { + [ArbeidstidFormFields.harArbeidetIPerioden]?: YesOrNo; +} + +const { FormikWrapper, Form } = getTypedFormComponents(); + +const ArbeidstidStep = () => { + const intl = useIntl(); + + const { + state: { søknadsdata }, + } = useSøknadContext(); + + const stepId = StepId.ARBEIDSTID; + const step = getSøknadStepConfigForStep(søknadsdata, stepId); + + const { goBack } = useStepNavigation(step); + + const { clearStepFormValues } = useStepFormValuesContext(); + + const onValidSubmitHandler = (values) => { + const ArbeidstidSøknadsdata = getArbeidstidSøknadsdataFromFormValues(values); + if (ArbeidstidSøknadsdata) { + clearStepFormValues(stepId); + return [actionsCreator.setSøknadArbeidstid(ArbeidstidSøknadsdata)]; + } + return []; + }; + + const { handleSubmit, isSubmitting } = useOnValidSubmit( + onValidSubmitHandler, + stepId, + (state: SøknadContextState) => { + return lagreSøknadState(state); + }, + ); + + return ( + + { + return ( + <> +
    + Arbeidstid +
    + + ); + }} + /> +
    + ); +}; + +export default ArbeidstidStep; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/arbeidstid-step/arbeidstidStepUtils.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/arbeidstid-step/arbeidstidStepUtils.ts" new file mode 100644 index 0000000000..1eeef1f5a4 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/arbeidstid-step/arbeidstidStepUtils.ts" @@ -0,0 +1,9 @@ +import { YesOrNo } from '@navikt/sif-common-formik-ds'; +import { ArbeidstidSøknadsdata } from '../../types/søknadsdata/ArbeidstidSøknadsdata'; +import { ArbeidstidFormValues } from './ArbeidstidStep'; + +export const getArbeidstidSøknadsdataFromFormValues = (formValues: ArbeidstidFormValues): ArbeidstidSøknadsdata => { + return { + harArbeidetIPerioden: formValues.harArbeidetIPerioden === YesOrNo.YES, + }; +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/barn-step/BarnStep.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/barn-step/BarnStep.tsx" new file mode 100644 index 0000000000..097a6afb16 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/barn-step/BarnStep.tsx" @@ -0,0 +1,97 @@ +import { useIntl } from 'react-intl'; +import { RegistrertBarn } from '@navikt/sif-common-api'; +import Block from '@navikt/sif-common-core-ds/src/atoms/block/Block'; +import ItemList from '@navikt/sif-common-core-ds/src/components/lists/item-list/ItemList'; +import { getTypedFormComponents, ValidationError } from '@navikt/sif-common-formik-ds'; +import getIntlFormErrorHandler from '@navikt/sif-common-formik-ds/src/validation/intlFormErrorHandler'; +import RegistrerteBarnListeHeading from '@navikt/sif-common-ui/src/components/registrerte-barn-liste/RegistrerteBarnListeHeading'; +import actionsCreator from '../../context/action/actionCreator'; +import { useSøknadContext } from '../../context/hooks/useSøknadContext'; +import { useStepFormValuesContext } from '../../context/StepFormValuesContext'; +import { SøknadContextState } from '../../context/SøknadContextState'; +import { useOnValidSubmit } from '../../hooks/useOnValidSubmit'; +import { useStepNavigation } from '../../hooks/useStepNavigation'; +import SøknadStep from '../../SøknadStep'; +import { getSøknadStepConfigForStep } from '../../søknadStepConfig'; +import { StepId } from '../../types/StepId'; +import { lagreSøknadState } from '../../utils/lagreSøknadState'; +import { barnItemLabelRenderer, getBarnSøknadsdataFromFormValues } from './barnStepUtils'; + +export enum BarnFormFields {} + +export interface BarnFormValues {} + +const { FormikWrapper, Form } = getTypedFormComponents(); + +const BarnStep = () => { + const intl = useIntl(); + + const { + state: { søknadsdata, registrerteBarn: registrertBarn }, + } = useSøknadContext(); + + const stepId = StepId.BARN; + const step = getSøknadStepConfigForStep(søknadsdata, stepId); + + const { goBack } = useStepNavigation(step); + + const { clearStepFormValues } = useStepFormValuesContext(); + + const onValidSubmitHandler = () => { + const BarnSøknadsdata = getBarnSøknadsdataFromFormValues(registrertBarn); + if (BarnSøknadsdata) { + clearStepFormValues(stepId); + return [actionsCreator.setSøknadBarn(BarnSøknadsdata)]; + } + return []; + }; + + const { handleSubmit, isSubmitting } = useOnValidSubmit( + onValidSubmitHandler, + stepId, + (state: SøknadContextState) => { + return lagreSøknadState(state); + }, + ); + + return ( + + { + return ( + <> +
    + + + Barn registrert på deg + + + {registrertBarn.length > 0 && ( + + + getItemId={(barn): string => barn.aktørId} + getItemTitle={(barn): string => barn.etternavn} + labelRenderer={(barn): React.ReactNode => barnItemLabelRenderer(barn)} + items={registrertBarn} + /> + + )} + +
    + + ); + }} + /> +
    + ); +}; + +export default BarnStep; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/barn-step/barnStepUtils.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/barn-step/barnStepUtils.tsx" new file mode 100644 index 0000000000..b425b35900 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/barn-step/barnStepUtils.tsx" @@ -0,0 +1,17 @@ +import { RegistrertBarn } from '@navikt/sif-common-api'; +import { dateFormatter } from '@navikt/sif-common-utils'; +import { formatName } from '@navikt/sif-common-core-ds/src/utils/personUtils'; +import { Box, HGrid } from '@navikt/ds-react'; + +export const getBarnSøknadsdataFromFormValues = (registrertBarn: RegistrertBarn[]) => { + return registrertBarn; +}; + +export const barnItemLabelRenderer = (registrertBarn: RegistrertBarn): React.ReactNode => { + return ( + + Født: {dateFormatter.compact(registrertBarn.fødselsdato)} + {formatName(registrertBarn.fornavn, registrertBarn.etternavn, registrertBarn.mellomnavn)} + + ); +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/OppsummeringStep.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/OppsummeringStep.tsx" new file mode 100644 index 0000000000..e5bb46ab0f --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/OppsummeringStep.tsx" @@ -0,0 +1,140 @@ +import { ErrorSummary, FormSummary, VStack } from '@navikt/ds-react'; +import { ErrorSummaryItem } from '@navikt/ds-react/ErrorSummary'; +import { useEffect, useRef } from 'react'; +import { useIntl } from 'react-intl'; +import FormBlock from '@navikt/sif-common-core-ds/src/atoms/form-block/FormBlock'; +import { getTypedFormComponents } from '@navikt/sif-common-formik-ds'; +import { getCheckedValidator } from '@navikt/sif-common-formik-ds/src/validation'; +import getIntlFormErrorHandler from '@navikt/sif-common-formik-ds/src/validation/intlFormErrorHandler'; +import { usePrevious } from '@navikt/sif-common-hooks'; +import { ErrorPage } from '@navikt/sif-common-soknad-ds'; +import { AppText } from '../../../../i18n'; +import { useSøknadContext } from '../../../søknad/context/hooks/useSøknadContext'; +import SøknadStep from '../../../søknad/SøknadStep'; +import { getSøknadStepConfig, getSøknadStepConfigForStep } from '../../../søknad/søknadStepConfig'; +import { useSendSøknad } from '../../hooks/useSendSøknad'; +import { useStepNavigation } from '../../hooks/useStepNavigation'; +import { useSøknadsdataStatus } from '../../hooks/useSøknadsdataStatus'; +import { StepId } from '../../types/StepId'; +import { getApiDataFromSøknadsdata } from '../../utils/søknadsdataToApiData/getApiDataFromSøknadsdata'; +import BarnSummaryList from './components/BarnSummaryList'; +import OmSøkerOppsummering from './components/OmSøkerOppsummering'; +import { getOppsummeringStepInitialValues } from './oppsummeringStepUtils'; +import DeltakelseOppsummering from './components/DeltakelseOppsummering'; +import { relocateToRootPage } from '../../utils/navigationUtils'; + +enum OppsummeringFormFields { + harBekreftetOpplysninger = 'harBekreftetOpplysninger', +} + +export interface OppsummeringFormValues { + [OppsummeringFormFields.harBekreftetOpplysninger]: boolean; +} + +const { FormikWrapper, Form, ConfirmationCheckbox } = getTypedFormComponents< + OppsummeringFormFields, + OppsummeringFormValues +>(); + +const OppsummeringStep = () => { + const intl = useIntl(); + + const { + state: { søknadsdata, søker, registrerteBarn: registrertBarn }, + } = useSøknadContext(); + + if (!søknadsdata.deltakelse) { + relocateToRootPage(); + } + const stepId = StepId.OPPSUMMERING; + const step = getSøknadStepConfigForStep(søknadsdata, stepId); + + const { invalidSteps } = useSøknadsdataStatus(stepId, getSøknadStepConfig(søknadsdata.deltakelse)); + const hasInvalidSteps = invalidSteps.length > 0; + + const { goBack } = useStepNavigation(step); + + const { sendSøknad, isSubmitting, sendSøknadError } = useSendSøknad(); + const previousSøknadError = usePrevious(sendSøknadError); + const sendSøknadErrorSummary = useRef(null); + + useEffect(() => { + if (previousSøknadError === undefined && sendSøknadError !== undefined) { + sendSøknadErrorSummary.current?.focus(); + } + }, [previousSøknadError, sendSøknadError]); + + const apiData = getApiDataFromSøknadsdata(søker.fødselsnummer, søknadsdata); + + if (!apiData) { + return ( + { + return <>Manglende API data; + }} + /> + ); + } + + return ( + + { + if (apiData) { + sendSøknad({ + ...apiData, + harBekreftetOpplysninger: values[OppsummeringFormFields.harBekreftetOpplysninger] === true, + }); + } + }} + renderForm={() => { + return ( + <> +
    + + + + + + Dine barn + + + + + + + + + + } + validate={getCheckedValidator()} + name={OppsummeringFormFields.harBekreftetOpplysninger} + /> + +
    + {sendSøknadError && ( + + + {sendSøknadError.message} + + + )} + + ); + }}>
    +
    + ); +}; + +export default OppsummeringStep; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/components/BarnSummaryList.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/components/BarnSummaryList.tsx" new file mode 100644 index 0000000000..2365a93386 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/components/BarnSummaryList.tsx" @@ -0,0 +1,21 @@ +import { RegistrertBarn } from '@navikt/sif-common-api'; +import { formatName } from '@navikt/sif-common-core-ds/src/utils/personUtils'; +import { SummaryList } from '@navikt/sif-common-ui'; + +interface Props { + barn: RegistrertBarn[]; +} + +const BarnSummaryList = ({ barn }: Props) => { + return ( + { + return formatName(fornavn, etternavn, mellomnavn); + }} + /> + ); +}; + +export default BarnSummaryList; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/components/DeltakelseOppsummering.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/components/DeltakelseOppsummering.tsx" new file mode 100644 index 0000000000..ea45479fed --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/components/DeltakelseOppsummering.tsx" @@ -0,0 +1,32 @@ +import { FormSummary } from '@navikt/ds-react'; +import { dateFormatter } from '@navikt/sif-common-utils'; +import { Deltakelse } from '../../../../../api/types'; +import { AppText } from '../../../../../i18n'; + +interface Props { + deltakelse: Deltakelse; +} + +const DeltakelseOppsummering = ({ deltakelse }: Props) => { + return ( + + + + + + + + + + + + + {dateFormatter.dateShortMonthYear(deltakelse.programPeriode.from)} + + + + + ); +}; + +export default DeltakelseOppsummering; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/components/OmS\303\270kerOppsummering.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/components/OmS\303\270kerOppsummering.tsx" new file mode 100644 index 0000000000..192c9ea7ae --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/components/OmS\303\270kerOppsummering.tsx" @@ -0,0 +1,38 @@ +import { FormSummary } from '@navikt/ds-react'; +import React from 'react'; +import { formatName } from '@navikt/sif-common-core-ds/src/utils/personUtils'; +import { AppText } from '../../../../../i18n'; +import { Søker } from '@navikt/sif-common-api'; + +interface Props { + søker: Søker; +} +const OmSøkerOppsummering: React.FC = ({ søker }) => { + return ( + + + + + + + + + + + + + {formatName(søker.fornavn, søker.etternavn, søker.mellomnavn)} + + + + + + + {søker.fødselsnummer} + + + + ); +}; + +export default OmSøkerOppsummering; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/oppsummeringMessages.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/oppsummeringMessages.ts" new file mode 100644 index 0000000000..66671ac05f --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/oppsummeringMessages.ts" @@ -0,0 +1,34 @@ +const nb = { + 'step.oppsummering.søker.header': 'Om deg', + 'step.oppsummering.søker.navn': 'Navn', + 'step.oppsummering.søker.fnr': 'Fødselsnummer', + 'step.oppsummering.dineBarn.listItem.FOSTERBARN': '(Barnet er mitt fosterbarn).', + + 'step.oppsummering.deltakelse.header': 'Om deltakelsen', + 'step.oppsummering.deltakelse.startdato': 'Startdato', + + 'step.oppsummering.omOmsorgenForBarn.barnList.title': 'Barn du er alene om omsorgen for', + 'step.oppsummering.omOmsorgenForBarn.harOmsorgFor.tidspunktForAleneomsorg': 'Tidspunkt for aleneomsorg: {dato}', + 'step.oppsummering.omOmsorgenForBarn.harOmsorgFor.tidspunktForAleneomsorg.tidligere': + 'Du ble alene om omsorgen for over 2 år siden.', + + 'step.oppsummering.bekrefterOpplysninger': + 'Jeg bekrefter at opplysningene jeg har gitt er riktige, og at jeg ikke har holdt tilbake opplysninger som har betydning for min rett til omsorgsdager.', + + 'step.oppsummering.sendMelding.feilmelding.førsteGang': + 'Det oppstod en feil under innsending. Vennligst prøv på nytt.', + 'step.oppsummering.sendMelding.feilmelding.andreGang': + 'Det oppstod fortsatt en feil under innsending. Vennligst vent litt og prøv på nytt.', + 'step.oppsummering.sendSøknad': 'Send søknad', + + 'validation.harBekreftetOpplysninger.notChecked': 'Du må bekrefte at opplysningene du har gitt er riktige.', +}; + +const nn: Record = { + ...nb, +}; + +export const oppsummeringMessages = { + nb, + nn, +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/oppsummeringStepUtils.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/oppsummeringStepUtils.ts" new file mode 100644 index 0000000000..ea8141f2bf --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/steps/oppsummering-step/oppsummeringStepUtils.ts" @@ -0,0 +1,8 @@ +import { Søknadsdata } from '../../types/søknadsdata/Søknadsdata'; +import { OppsummeringFormValues } from './OppsummeringStep'; + +export const getOppsummeringStepInitialValues = (søknadsdata: Søknadsdata): OppsummeringFormValues => { + return { + harBekreftetOpplysninger: søknadsdata.oppsummering?.harBekreftetOpplysninger || false, + }; +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/s\303\270knadStepConfig.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/s\303\270knadStepConfig.ts" new file mode 100644 index 0000000000..9e9edb20f7 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/s\303\270knadStepConfig.ts" @@ -0,0 +1,26 @@ +import { SoknadApplicationType, SoknadStepsConfig, soknadStepUtils, StepConfig } from '@navikt/sif-common-soknad-ds'; +import { Deltakelse } from '../../api/types'; +import { StepId } from './types/StepId'; +import { Søknadsdata } from './types/søknadsdata/Søknadsdata'; +import { getSøknadStepRoute } from './utils/søknadRoutesUtils'; +import { søkerMåRapportereArbeidstidISøknaden } from './utils/søknadUtils'; + +const getSøknadSteps = (deltakelse: Deltakelse): StepId[] => { + if (søkerMåRapportereArbeidstidISøknaden(deltakelse)) { + return [StepId.BARN, StepId.ARBEIDSTID, StepId.OPPSUMMERING]; + } + return [StepId.BARN, StepId.OPPSUMMERING]; +}; + +export const getSøknadStepConfig = (deltakelse: Deltakelse): SoknadStepsConfig => + soknadStepUtils.getStepsConfig(getSøknadSteps(deltakelse), SoknadApplicationType.SOKNAD, (step) => { + return getSøknadStepRoute(step); + }); + +export const getSøknadStepConfigForStep = (_søknadsdata: Søknadsdata, stepId: StepId): StepConfig => { + const config = getSøknadStepConfig(_søknadsdata.deltakelse)[stepId]; + if (!config) { + throw `Missing step config ${stepId}`; + } + return config; +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/RequestStatus.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/RequestStatus.ts" new file mode 100644 index 0000000000..8161c02db0 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/RequestStatus.ts" @@ -0,0 +1,6 @@ +export enum RequestStatus { + 'loading' = 'loading', + 'success' = 'success', + 'error' = 'error', + 'redirectingToLogin' = 'redirectingToLogin', +} diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/StepFormValues.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/StepFormValues.ts" new file mode 100644 index 0000000000..ec30bd7b38 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/StepFormValues.ts" @@ -0,0 +1,13 @@ +import { SamtykkeFormValues } from '@navikt/sif-common-soknad-ds'; +import { ArbeidstidFormValues } from '../steps/arbeidstid-step/ArbeidstidStep'; +import { BarnFormValues } from '../steps/barn-step/BarnStep'; +import { OppsummeringFormValues } from '../steps/oppsummering-step/OppsummeringStep'; +import { StepId } from './StepId'; + +export interface StepFormValues { + [StepId.VELKOMMEN]?: SamtykkeFormValues; + [StepId.BARN]?: BarnFormValues; + [StepId.ARBEIDSTID]?: ArbeidstidFormValues; + [StepId.OPPSUMMERING]?: OppsummeringFormValues; + [StepId.KVITTERING]?: undefined; +} diff --git a/apps/ungdomsytelse-deltaker/src/types/StepId.ts "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/StepId.ts" similarity index 70% rename from apps/ungdomsytelse-deltaker/src/types/StepId.ts rename to "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/StepId.ts" index 989b14fcf0..4a36991662 100644 --- a/apps/ungdomsytelse-deltaker/src/types/StepId.ts +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/StepId.ts" @@ -1,6 +1,7 @@ export enum StepId { 'VELKOMMEN' = 'velkommen', - 'INFO' = 'info', + 'BARN' = 'barn', + 'ARBEIDSTID' = 'arbeidstid', 'OPPSUMMERING' = 'oppsummering', 'KVITTERING' = 'soknad_sendt', } diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/S\303\270knadContextState.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/S\303\270knadContextState.ts" new file mode 100644 index 0000000000..6c9bd5a431 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/S\303\270knadContextState.ts" @@ -0,0 +1,5 @@ +import { InitialData } from '@hooks/useInitialData'; + +export interface DeltakerContextState extends InitialData { + versjon: string; +} diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/S\303\270knadRoutes.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/S\303\270knadRoutes.ts" new file mode 100644 index 0000000000..251c928e8e --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/S\303\270knadRoutes.ts" @@ -0,0 +1,19 @@ +import { StepId } from './StepId'; + +export const SøknadStepRoutePath = { + [StepId.VELKOMMEN]: 'velkommen', + [StepId.BARN]: 'barn', + [StepId.ARBEIDSTID]: 'arbeidstid', + [StepId.OPPSUMMERING]: 'oppsummering', + [StepId.KVITTERING]: 'soknad_sendt', +}; + +export enum SøknadRoutes { + VELKOMMEN = '/soknad/velkommen', + BARN = '/soknad/barn', + ARBEIDSTID = '/soknad/arbeidstid', + OPPSUMMERING = '/soknad/oppsummering', + SØKNAD_SENDT = '/soknad/soknad_sendt', + UKJENT_STEG = '/soknad/ukjent-steg', + IKKE_TILGANG = '/ikke-tilgang', +} diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/s\303\270knadsdata/ArbeidstidS\303\270knadsdata.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/s\303\270knadsdata/ArbeidstidS\303\270knadsdata.ts" new file mode 100644 index 0000000000..1a23700258 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/s\303\270knadsdata/ArbeidstidS\303\270knadsdata.ts" @@ -0,0 +1,4 @@ +export type ArbeidstidSøknadsdata = { + harArbeidetIPerioden: boolean; + arbeidstid?: any; +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/s\303\270knadsdata/BarnS\303\270knadsdata.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/s\303\270knadsdata/BarnS\303\270knadsdata.ts" new file mode 100644 index 0000000000..a4b8f53846 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/s\303\270knadsdata/BarnS\303\270knadsdata.ts" @@ -0,0 +1 @@ +export type BarnSøknadsdata = {}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/s\303\270knadsdata/S\303\270knadsdata.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/s\303\270knadsdata/S\303\270knadsdata.ts" new file mode 100644 index 0000000000..7ebe70a567 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/types/s\303\270knadsdata/S\303\270knadsdata.ts" @@ -0,0 +1,15 @@ +import { Deltakelse } from '../../../../api/types'; +import { StepId } from '../StepId'; + +export type Søknadsdata = { + id: string; + deltakelse: Deltakelse; + [StepId.VELKOMMEN]?: { + harForståttRettigheterOgPlikter?: boolean; + }; + [StepId.BARN]?: {}; + [StepId.ARBEIDSTID]?: {}; + [StepId.OPPSUMMERING]?: { + harBekreftetOpplysninger?: boolean; + }; +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/lagreS\303\270knadState.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/lagreS\303\270knadState.ts" new file mode 100644 index 0000000000..e5db18579f --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/lagreS\303\270knadState.ts" @@ -0,0 +1,6 @@ +import { mellomlagringService } from '../../../api/services/mellomlagringService'; +import { SøknadContextState } from '../context/SøknadContextState'; + +export const lagreSøknadState = (state: SøknadContextState) => { + return mellomlagringService.update(state); +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/navigationUtils.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/navigationUtils.ts" new file mode 100644 index 0000000000..73b544e3e1 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/navigationUtils.ts" @@ -0,0 +1,24 @@ +import { appEnv } from '../../../utils/appEnv'; +import { SøknadRoutes } from '../types/SøknadRoutes'; + +const { PUBLIC_PATH, SIF_PUBLIC_LOGIN_URL, SIF_PUBLIC_MINSIDE_URL } = appEnv; + +const relocateTo = (url: string): void => { + /** Hard redirect enforcing page reload */ + window.location.assign(url); +}; + +const getSøknadRouteURL = (route: SøknadRoutes) => { + return `${PUBLIC_PATH}${route}`; +}; + +export const relocateToWelcomePage = () => { + relocateTo(getSøknadRouteURL(SøknadRoutes.VELKOMMEN)); +}; +export const relocateToKvittering = () => { + relocateTo(getSøknadRouteURL(SøknadRoutes.SØKNAD_SENDT)); +}; +export const relocateToNoAccessPage = (): void => relocateTo(getSøknadRouteURL(SøknadRoutes.IKKE_TILGANG)); +export const relocateToLoginPage = () => relocateTo(SIF_PUBLIC_LOGIN_URL); +export const relocateToMinSide = () => relocateTo(SIF_PUBLIC_MINSIDE_URL); +export const relocateToRootPage = () => relocateTo(PUBLIC_PATH); diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadRoutesUtils.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadRoutesUtils.ts" new file mode 100644 index 0000000000..47af7cb8ee --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadRoutesUtils.ts" @@ -0,0 +1,24 @@ +import { StepId } from '../types/StepId'; +import { SøknadRoutes } from '../types/SøknadRoutes'; + +export const getSøknadStepRoute = (stepId: StepId): SøknadRoutes => { + switch (stepId) { + case StepId.VELKOMMEN: + return SøknadRoutes.VELKOMMEN; + case StepId.BARN: + return SøknadRoutes.BARN; + case StepId.ARBEIDSTID: + return SøknadRoutes.ARBEIDSTID; + case StepId.OPPSUMMERING: + return SøknadRoutes.OPPSUMMERING; + case StepId.KVITTERING: + return SøknadRoutes.SØKNAD_SENDT; + } +}; + +export const isValidSøknadRoute = (route?: SøknadRoutes): boolean => { + if (!route) { + return false; + } + return Object.values(SøknadRoutes).includes(route); +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadUtils.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadUtils.ts" new file mode 100644 index 0000000000..7f997b177a --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadUtils.ts" @@ -0,0 +1,14 @@ +import dayjs from 'dayjs'; +import { Deltakelse } from '../../../api/types'; +import { getDateToday } from '@navikt/sif-common-utils'; + +export const SOKNAD_VERSJON = '0.0.1'; + +/** Dato bruker vil måtte svare på om en har jobbet i perioden før en søker */ +export const getDatoForArbeidstidRegistrering = (): Date => { + return dayjs().startOf('month').subtract(1, 'month').toDate(); +}; + +export const søkerMåRapportereArbeidstidISøknaden = (deltakelse?: Deltakelse): boolean => { + return dayjs(getDateToday()).isBefore(dayjs(deltakelse?.programPeriode.from)); +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadsdataToApiData/getApiDataFromS\303\270knadsdata.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadsdataToApiData/getApiDataFromS\303\270knadsdata.ts" new file mode 100644 index 0000000000..7e16f563ad --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadsdataToApiData/getApiDataFromS\303\270knadsdata.ts" @@ -0,0 +1,19 @@ +import { dateToISODate } from '@navikt/sif-common-utils'; +import { SøknadApiData } from '../../../../api/types'; +import { Søknadsdata } from '../../types/søknadsdata/Søknadsdata'; + +export const getApiDataFromSøknadsdata = ( + søkerNorskIdent: string, + søknadsdata: Søknadsdata, +): SøknadApiData | undefined => { + const { id } = søknadsdata; + + return { + søkerNorskIdent, + id, + språk: 'nb', + fraOgMed: dateToISODate(søknadsdata.deltakelse.programPeriode.from), + harForståttRettigheterOgPlikter: søknadsdata.velkommen?.harForståttRettigheterOgPlikter === true, + harBekreftetOpplysninger: søknadsdata.oppsummering?.harBekreftetOpplysninger === true, + }; +}; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadsdataToApiData/validateApiData.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadsdataToApiData/validateApiData.ts" new file mode 100644 index 0000000000..713f880af5 --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/utils/s\303\270knadsdataToApiData/validateApiData.ts" @@ -0,0 +1,39 @@ +import { SøknadApiData } from '../../../../api/types'; +import { AppIntlShape } from '../../../../i18n'; +import { StepId } from '../../types/StepId'; +import { Søknadsdata } from '../../types/søknadsdata/Søknadsdata'; + +export enum API_DATA_VALIDATION_ERROR { + 'undefined' = 'undefined', +} + +export const validateApiDataMessages = { + nb: { + 'apiDataValidation.undefined': 'Det oppstod en feil ved visningen av siden.', + }, + nn: { + 'apiDataValidation.undefined': 'Det oppstod ein feil ved visning av sida.', + }, +}; + +interface ApiDataValidationError { + error: API_DATA_VALIDATION_ERROR; + step?: StepId; + message: React.ReactNode; +} + +/** Ikke tatt i bruk enda */ +export const validateApiData = ( + apiData: SøknadApiData | undefined, + _søknadsdata: Søknadsdata, + { text }: AppIntlShape, +): undefined | ApiDataValidationError => { + if (!apiData) { + return { + error: API_DATA_VALIDATION_ERROR.undefined, + message: text('apiDataValidation.undefined'), + }; + } + + return undefined; +}; diff --git "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/S\303\270knadRouter.tsx" "b/apps/ungdomsytelse-deltaker/src/s\303\270knad/S\303\270knadRouter.tsx" deleted file mode 100644 index c1ea832a12..0000000000 --- "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/S\303\270knadRouter.tsx" +++ /dev/null @@ -1,12 +0,0 @@ -import { Route, Routes } from 'react-router-dom'; -import Forside from './form/Forside'; - -const SøknadRouter = () => { - return ( - - } /> - - ); -}; - -export default SøknadRouter; diff --git "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/form/DeltakelseForm.tsx" "b/apps/ungdomsytelse-deltaker/src/s\303\270knad/form/DeltakelseForm.tsx" deleted file mode 100644 index f12b988106..0000000000 --- "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/form/DeltakelseForm.tsx" +++ /dev/null @@ -1,122 +0,0 @@ -import { Alert, BodyShort, Box, Button, HStack, VStack } from '@navikt/ds-react'; -import { FormikConfirmationCheckbox, TypedFormikForm, TypedFormikWrapper } from '@navikt/sif-common-formik-ds'; -import { getCheckedValidator } from '@navikt/sif-common-formik-ds/src/validation'; -import getIntlFormErrorHandler from '@navikt/sif-common-formik-ds/src/validation/intlFormErrorHandler'; -import { FormLayout } from '@navikt/sif-common-ui'; -import { dateFormatter, dateRangeFormatter, dateToISODate } from '@navikt/sif-common-utils'; -import { Deltakelse, SøknadApiData } from '../../api/types'; -import { useAppIntl } from '../../i18n'; -import { useSendSøknad } from '../hooks/useSendSøknad'; -import { Søker } from '@navikt/sif-common-api'; -import { Kvittering } from '@navikt/sif-common-soknad-ds/src'; -import ShadowBox from '../../components/shadow-box/ShadowBox'; -import dayjs from 'dayjs'; - -export interface FormValues { - fom: string; - tom: string; - harBekreftetOpplysninger: boolean; -} - -interface Props { - søker: Søker; - deltakelse: Deltakelse; - onSøknadSendt: (deltakelse: Deltakelse) => void; - onClose: (deltakelse: Deltakelse) => void; -} - -const initialValues: Partial = {}; - -const DeltakelseForm = ({ deltakelse, søker, onClose, onSøknadSendt }: Props) => { - const { intl } = useAppIntl(); - const { programPeriode } = deltakelse; - const { isSubmitting, sendSøknad, sendSøknadError, søknadSendt } = useSendSøknad(); - - return søknadSendt ? ( - <> - - - - - Lorem ipsum dolor sit amet consectetur adipisicing elit. Placeat eum assumenda tempore - pariatur quaerat aut nihil maiores recusandae similique. Et quisquam similique doloremque - optio odit impedit temporibus ullam hic officiis. - - - - - - - - - ) : ( - { - const data: SøknadApiData = { - id: deltakelse.id, - fraOgMed: dateToISODate(deltakelse.programPeriode.from), - tilOgMed: dateToISODate( - deltakelse.programPeriode.to || dayjs(deltakelse.programPeriode.from).add(1, 'month').toDate(), - ), - harBekreftetOpplysninger: values.harBekreftetOpplysninger, - harForståttRettigheterOgPlikter: true, - språk: 'nb', - søkerNorskIdent: søker.fødselsnummer, - }; - await sendSøknad(data); - onSøknadSendt(deltakelse); - }} - renderForm={() => { - return ( - <> - - - - - {programPeriode.to - ? `Delta i perioden ${dateRangeFormatter.getDateRangeText({ from: programPeriode.from, to: programPeriode.to }, 'nb')}` - : `Delta fra ${dateFormatter.compact(programPeriode.from)}`} - - - - Lorem ipsum dolor sit amet consectetur adipisicing elit. Eveniet asperiores - corrupti optio, aliquam praesentium harum reprehenderit. Cumque maxime quia - tenetur esse placeat reprehenderit, soluta amet adipisci qui officia, nesciunt - culpa. - - - - Du må bekrefte at du ønsker å være med i programmet i denne perioden - - - - - - - - - {sendSøknadError && ( - - Det skjedde en feil ved sending av søknad: -
    - {JSON.stringify(sendSøknadError.message)} -
    -
    - )} - - ); - }} - /> - ); -}; - -export default DeltakelseForm; diff --git "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/form/Forside.tsx" "b/apps/ungdomsytelse-deltaker/src/s\303\270knad/form/Forside.tsx" deleted file mode 100644 index 26795003f5..0000000000 --- "a/apps/ungdomsytelse-deltaker/src/s\303\270knad/form/Forside.tsx" +++ /dev/null @@ -1,110 +0,0 @@ -import { Alert, Box, Heading, List, VStack } from '@navikt/ds-react'; -import { useState } from 'react'; -import Page from '@navikt/sif-common-core-ds/src/components/page/Page'; -import { SoknadVelkommenGuide } from '@navikt/sif-common-soknad-ds/src'; -import { deltakerService } from '../../api/services/deltakerService'; -import { Deltakelse } from '../../api/types'; -import DeltakelseTable from '../../components/deltakelse-table/DeltakelseTable'; -import VelkommenPageHeader from '../../components/velkommen-page-header/VelkommenPageHeader'; -import { useSøknadContext } from '../hooks/useSøknadContext'; -import DeltakelseForm from './DeltakelseForm'; -import Inntektsrapportering from '../../components/inntektsrapportering/Inntektsrapportering'; - -const Forside = () => { - const { - data: { - søker, - barn, - deltakelserIkkeSøktFor, - deltakelserSøktFor, - alleDeltakelser, - deltakelserÅpenForRapportering, - }, - updateDeltakelse, - } = useSøknadContext(); - - const [søktFor, setSøktFor] = useState(deltakelserSøktFor.map((d) => d.id)); - - const handleSøknadSendt = async (deltakelse: Deltakelse) => { - setSøktFor([...søktFor, deltakelse.id]); - }; - - const erSøktFor = (deltakelse: Deltakelse): boolean => { - return søktFor.includes(deltakelse.id); - }; - - const handleOnClose = async () => { - const data = await deltakerService.getDeltakelser(); - const deltakelser = data.map((d) => ({ ...d, søktFor: erSøktFor(d) })); - updateDeltakelse(deltakelser); - }; - - return ( - - - <> - - - - - {alleDeltakelser.length === 0 ? ( - - Vi kan ikke se at du er registrert for å kunne delta i dette programmet. Hvis du - mener dette ikke stemmer, ta kontakt med din Nav veileder. - - ) : ( - <>Dette er en MVP-app for innsending av data til søknad om ny ungdomsytelse. - )} - - - - {deltakelserIkkeSøktFor.length > 0 && ( - - {barn.length > 0 && ( - - - Barn vi har registrert på deg: - - - {barn.map((b) => ( - - {b.fornavn} {b.etternavn} - - ))} - - - )} - {deltakelserIkkeSøktFor.map((deltakelse) => { - return ( - - - - ); - })} - - )} - {deltakelserÅpenForRapportering.length === 1 && ( - <> - - - )} - {alleDeltakelser.length > 1 && ( - <> - - Alle deltakelser - - - - )} - - - - ); -}; - -export default Forside; diff --git "a/apps/ungdomsytelse-deltaker/src/types/S\303\270knadContextState.ts" "b/apps/ungdomsytelse-deltaker/src/types/S\303\270knadContextState.ts" deleted file mode 100644 index 451c5230e4..0000000000 --- "a/apps/ungdomsytelse-deltaker/src/types/S\303\270knadContextState.ts" +++ /dev/null @@ -1,5 +0,0 @@ -import { InitialData } from '../hooks/useInitialData'; - -export interface SøknadContextState extends InitialData { - versjon: string; -} diff --git "a/apps/ungdomsytelse-deltaker/src/types/S\303\270knadRoutes.ts" "b/apps/ungdomsytelse-deltaker/src/types/S\303\270knadRoutes.ts" deleted file mode 100644 index d93491d7e6..0000000000 --- "a/apps/ungdomsytelse-deltaker/src/types/S\303\270knadRoutes.ts" +++ /dev/null @@ -1,3 +0,0 @@ -export enum SøknadRoutes { - SOKNAD_ROOT = '', -} diff --git a/apps/ungdomsytelse-deltaker/src/types/appEnv.ts b/apps/ungdomsytelse-deltaker/src/types/appEnv.ts deleted file mode 100644 index 0070d6e0da..0000000000 --- a/apps/ungdomsytelse-deltaker/src/types/appEnv.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { getCommonEnv, getRequiredEnv } from '@navikt/sif-common-env'; - -const getAppEnv = () => ({ - ...getCommonEnv(), - UNG_DELTAKELSE_OPPLYSER_FRONTEND_PATH: getRequiredEnv('UNG_DELTAKELSE_OPPLYSER_FRONTEND_PATH'), -}); - -export const appEnv = getAppEnv(); diff --git "a/apps/ungdomsytelse-deltaker/src/types/s\303\270knadsdata/S\303\270knadsdata.ts" "b/apps/ungdomsytelse-deltaker/src/types/s\303\270knadsdata/S\303\270knadsdata.ts" deleted file mode 100644 index 8041b254c1..0000000000 --- "a/apps/ungdomsytelse-deltaker/src/types/s\303\270knadsdata/S\303\270knadsdata.ts" +++ /dev/null @@ -1,3 +0,0 @@ -export type Søknadsdata = { - todo?: string; -}; diff --git a/apps/ungdomsytelse-deltaker/src/utils/deltakelserUtils.ts b/apps/ungdomsytelse-deltaker/src/utils/deltakelserUtils.ts index bd8c63ab0c..d75dcec34d 100644 --- a/apps/ungdomsytelse-deltaker/src/utils/deltakelserUtils.ts +++ b/apps/ungdomsytelse-deltaker/src/utils/deltakelserUtils.ts @@ -1,7 +1,7 @@ +import { Deltakelse } from '@api/types'; import { DateRange } from '@navikt/sif-common-formik-ds'; import { getDateToday } from '@navikt/sif-common-utils'; import dayjs from 'dayjs'; -import { Deltakelse } from '../api/types'; export const periodeKanRapporteresFor = (periode: DateRange): boolean => { return dayjs(periode.from).isBefore(getDateToday()); diff --git a/apps/ungdomsytelse-deltaker/storybook/components/AlertStoryWrapper.tsx b/apps/ungdomsytelse-deltaker/storybook/components/AlertStoryWrapper.tsx index dc131cda8c..b56cf389cb 100644 --- a/apps/ungdomsytelse-deltaker/storybook/components/AlertStoryWrapper.tsx +++ b/apps/ungdomsytelse-deltaker/storybook/components/AlertStoryWrapper.tsx @@ -1,7 +1,7 @@ import { Heading, VStack } from '@navikt/ds-react'; import { ReactNode } from 'react'; import MessagesList from '@navikt/sif-common-core-ds/src/dev-utils/intl/messages-preview/MessagesList'; -import { storybookIntlUtils } from '../utils/intlUtils'; +import { storybookIntlUtils } from '@utils/intlUtils'; import ShadowBox from './ShadowBox'; const AlertStoryWrapper = ({ diff --git "a/apps/ungdomsytelse-deltaker/storybook/components/Sp\303\270rsm\303\245lWrapper.tsx" "b/apps/ungdomsytelse-deltaker/storybook/components/Sp\303\270rsm\303\245lWrapper.tsx" index 8e27205129..edaeec5117 100644 --- "a/apps/ungdomsytelse-deltaker/storybook/components/Sp\303\270rsm\303\245lWrapper.tsx" +++ "b/apps/ungdomsytelse-deltaker/storybook/components/Sp\303\270rsm\303\245lWrapper.tsx" @@ -1,8 +1,8 @@ import { Box, Button, Tabs, VStack } from '@navikt/ds-react'; import * as React from 'react'; import { MessagesTable } from '@navikt/sif-common-core-ds/src/dev-utils/intl/messages-preview/MessagesList'; -import ShadowBox from '../components/ShadowBox'; -import { storybookIntlUtils } from '../utils/intlUtils'; +import ShadowBox from '@components/ShadowBox'; +import { storybookIntlUtils } from '@utils/intlUtils'; import { StoryFormikWrapper } from './StoryFormikWrapper'; import '@navikt/ds-css'; diff --git a/apps/ungdomsytelse-deltaker/storybook/decorators/withFormikWrapper.tsx b/apps/ungdomsytelse-deltaker/storybook/decorators/withFormikWrapper.tsx index 4dbdb6f16c..0a36371433 100644 --- a/apps/ungdomsytelse-deltaker/storybook/decorators/withFormikWrapper.tsx +++ b/apps/ungdomsytelse-deltaker/storybook/decorators/withFormikWrapper.tsx @@ -1,4 +1,4 @@ -import { StoryFormikWrapper } from '../components/StoryFormikWrapper'; +import { StoryFormikWrapper } from '@components/StoryFormikWrapper'; export const withFormikWrapper = (Story, args) => ( diff --git "a/apps/ungdomsytelse-deltaker/storybook/decorators/withS\303\270knadContext.tsx" "b/apps/ungdomsytelse-deltaker/storybook/decorators/withS\303\270knadContext.tsx" index 920f9cabcb..3ef8d634c0 100644 --- "a/apps/ungdomsytelse-deltaker/storybook/decorators/withS\303\270knadContext.tsx" +++ "b/apps/ungdomsytelse-deltaker/storybook/decorators/withS\303\270knadContext.tsx" @@ -1,8 +1,8 @@ -import { SøknadContextProvider } from '../../app/søknad/context/SøknadContext'; -import { SøknadContextState } from '../../app/types/SøknadContextState'; +import { DeltakerContextProvider } from '../../app/søknad/context/DeltakerContext'; +import { DeltakerContextState } from '../../app/types/DeltakerContextState'; import { RegistrerteBarnMock, SøkerMock } from '../mock-data'; -export const mockInitialSøknadContextState: SøknadContextState = { +export const mockInitialDeltakerContextState: DeltakerContextState = { versjon: '1.0.0', søker: SøkerMock, registrerteBarn: RegistrerteBarnMock, @@ -12,8 +12,8 @@ export const mockInitialSøknadContextState: SøknadContextState = { børMellomlagres: false, }; -export const withSøknadContextProvider = (Story: any, state: Partial = {}) => ( - +export const withDeltakerContextProvider = (Story: any, state: Partial = {}) => ( + - + ); diff --git a/apps/ungdomsytelse-deltaker/tsconfig.json b/apps/ungdomsytelse-deltaker/tsconfig.json index 23378630cd..20ead20675 100644 --- a/apps/ungdomsytelse-deltaker/tsconfig.json +++ b/apps/ungdomsytelse-deltaker/tsconfig.json @@ -2,8 +2,18 @@ "extends": "../../packages/config/tsconfig-apps.json", "compilerOptions": { "outDir": "build/dist", - "typeRoots": ["../../node_modules/@types", "./node_modules/@types"] + "typeRoots": ["../../node_modules/@types", "./node_modules/@types"], + "baseUrl": "./", + "paths": { + "@api/*": ["./src/api/*"], + "@components/*": ["./src/components/*"], + "@context/*": ["./src/context/*"], + "@hooks/*": ["./src/hooks/*"], + "@i18n/*": ["./src/i18n/*"], + "@types/*": ["./src/types/*"], + "@utils/*": ["./src/utils/*"] + } }, "exclude": ["node_modules", "src/build", "**.js", "dist"], - "include": ["./src/**/*"] + "include": ["./src/**/*", "./mock/msw/**/*"] } diff --git a/apps/ungdomsytelse-deltaker/vite.config.ts b/apps/ungdomsytelse-deltaker/vite.config.ts index 50b56c058e..8585b54f2d 100644 --- a/apps/ungdomsytelse-deltaker/vite.config.ts +++ b/apps/ungdomsytelse-deltaker/vite.config.ts @@ -14,7 +14,17 @@ export default defineConfig({ server: { port: 8080, }, - resolve: {}, + resolve: { + alias: { + '@api': '/src/api', + '@components': '/src/components', + '@context': '/src/context', + '@hooks': '/src/hooks', + '@i18n': '/src/i18n', + '@types': '/src/types', + '@utils': '/src/utils', + }, + }, build: { sourcemap: true, }, diff --git a/packages/sif-app-register/src/index.ts b/packages/sif-app-register/src/index.ts index 8ce94b9898..d2070a2c26 100644 --- a/packages/sif-app-register/src/index.ts +++ b/packages/sif-app-register/src/index.ts @@ -191,3 +191,15 @@ export const OpplæringspengerApp: AppInfo = { prod: 'https://www.nav.no/familie/sykdom-i-familien/soknad/opplaringspenger', }, }; + +export const UngdomsytelseDeltakerApp: AppInfo = { + key: 'ungdomsytelse-deltaker', + navn: 'Søknad om deltakelse i ungdomprogrammer', + tittel: { + nb: 'Søknad om deltakelse i ungdomprogrammer', + }, + lenker: { + q: 'https://ungdomsytelse-deltaker.intern.dev.nav.no', + prod: 'https://www.nav.no/familie/sykdom-i-familien/ungdomsytelse-deltaker', + }, +}; diff --git a/yarn.lock b/yarn.lock index e7563883bb..07c65e0951 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5317,6 +5317,7 @@ __metadata: "@storybook/react-vite": "npm:8.4.7" "@storybook/test": "npm:8.4.7" "@types/node": "npm:22.10.2" + "@types/object-hash": "npm:^3" "@types/react": "npm:19.0.1" "@types/react-dom": "npm:19.0.2" "@typescript-eslint/parser": "npm:8.18.0" @@ -5337,7 +5338,9 @@ __metadata: html-react-parser: "npm:5.2.1" http-proxy-middleware: "npm:3.0.3" jsdom: "npm:25.0.1" + msw: "npm:^2.7.0" mustache-express: "npm:1.3.2" + object-hash: "npm:^3.0.0" postcss: "npm:8.4.49" postcss-import: "npm:16.1.0" postcss-styled-syntax: "npm:0.7.0" @@ -5349,6 +5352,7 @@ __metadata: react-router-dom: "npm:7.0.2" storybook: "npm:8.4.7" stylelint: "npm:16.12.0" + swr: "npm:^2.2.5" tailwindcss: "npm:3.4.16" typescript: "npm:5.7.2" typescript-eslint: "npm:8.18.0" @@ -9468,7 +9472,7 @@ __metadata: languageName: node linkType: hard -"@types/object-hash@npm:3.0.6": +"@types/object-hash@npm:3.0.6, @types/object-hash@npm:^3": version: 3.0.6 resolution: "@types/object-hash@npm:3.0.6" checksum: 10/2c7979d4e540af817b99c09fb4c2fed1c0b0e14342df474d8dcde4165a82c440b038341fd66fe998d9f86acdd5cccc65ba8092315e39e7c2114f945fa70aaa56 @@ -20213,6 +20217,39 @@ __metadata: languageName: node linkType: hard +"msw@npm:^2.7.0": + version: 2.7.0 + resolution: "msw@npm:2.7.0" + dependencies: + "@bundled-es-modules/cookie": "npm:^2.0.1" + "@bundled-es-modules/statuses": "npm:^1.0.1" + "@bundled-es-modules/tough-cookie": "npm:^0.1.6" + "@inquirer/confirm": "npm:^5.0.0" + "@mswjs/interceptors": "npm:^0.37.0" + "@open-draft/deferred-promise": "npm:^2.2.0" + "@open-draft/until": "npm:^2.1.0" + "@types/cookie": "npm:^0.6.0" + "@types/statuses": "npm:^2.0.4" + graphql: "npm:^16.8.1" + headers-polyfill: "npm:^4.0.2" + is-node-process: "npm:^1.2.0" + outvariant: "npm:^1.4.3" + path-to-regexp: "npm:^6.3.0" + picocolors: "npm:^1.1.1" + strict-event-emitter: "npm:^0.5.1" + type-fest: "npm:^4.26.1" + yargs: "npm:^17.7.2" + peerDependencies: + typescript: ">= 4.8.x" + peerDependenciesMeta: + typescript: + optional: true + bin: + msw: cli/index.js + checksum: 10/165ccf37d90da0d5271fdb8e01f89f48f7a60fb810038ff73d18c0e5e5ddfdb1266002d19cde61b9ae689ef37c39499b10d9d07e0d16662a31630ce9adce1d77 + languageName: node + linkType: hard + "mustache-express@npm:1.3.2": version: 1.3.2 resolution: "mustache-express@npm:1.3.2" @@ -25160,7 +25197,7 @@ __metadata: languageName: node linkType: hard -"swr@npm:2.2.5": +"swr@npm:2.2.5, swr@npm:^2.2.5": version: 2.2.5 resolution: "swr@npm:2.2.5" dependencies: From b26bde034b7b3c5f60064315b5934f83ac5d2523 Mon Sep 17 00:00:00 2001 From: frodehansen2 Date: Thu, 19 Dec 2024 10:38:08 +0100 Subject: [PATCH 6/7] Basic innsyn --- .../mock/msw/browser.ts | 2 +- .../msw/handlers/{index.ts => handlers.ts} | 9 +- .../soker1/deltakelser/harS\303\270kt.ts" | 82 +++++++++++++++++++ .../soker1/deltakelser/ikkeS\303\270kt.ts" | 82 +++++++++++++++++++ .../mock/msw/mocks/soker1/index.ts | 2 + .../mock/msw/mocks/soker1/personaliaMock.ts | 9 ++ .../msw/mocks/soker1/s\303\270kerMock.ts" | 2 +- .../src/api/schemas/personaliaSchema.ts | 11 +++ .../src/api/services/personaliaService.ts | 18 ++++ .../src/api/types/index.ts | 3 + .../src/context/DeltakerContext.tsx | 3 +- .../src/hooks/useInitialData.ts | 3 + .../src/sites/innsyn/Innsyn.tsx | 30 +++++++ .../src/sites/innsyn/InnsynRouter.tsx | 3 +- .../innsyn/components/DeltakelseInfo.tsx | 34 ++++++++ .../components/KontonummerStatusTekst.tsx | 28 +++++++ .../components/ManglendeKontonummer.tsx | 45 ++++++++++ .../sites/innsyn/context/InnsynContext.tsx | 21 +++++ .../sites/innsyn/hooks/useInnsynContext.ts | 4 + .../src/sites/innsyn/pages/InnsynForside.tsx | 52 ++++++++++++ .../components/KortOmUngdomsprogrammet.tsx" | 8 +- .../s\303\270knad/pages/intro/IntroPage.tsx" | 14 ++-- .../pages/kvittering/KvitteringPage.tsx" | 23 ++++-- .../pages/kvittering/kvitteringMesssages.ts" | 2 +- 24 files changed, 463 insertions(+), 27 deletions(-) rename apps/ungdomsytelse-deltaker/mock/msw/handlers/{index.ts => handlers.ts} (81%) create mode 100644 "apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/deltakelser/harS\303\270kt.ts" create mode 100644 "apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/deltakelser/ikkeS\303\270kt.ts" create mode 100644 apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/personaliaMock.ts create mode 100644 apps/ungdomsytelse-deltaker/src/api/schemas/personaliaSchema.ts create mode 100644 apps/ungdomsytelse-deltaker/src/api/services/personaliaService.ts create mode 100644 apps/ungdomsytelse-deltaker/src/sites/innsyn/Innsyn.tsx create mode 100644 apps/ungdomsytelse-deltaker/src/sites/innsyn/components/DeltakelseInfo.tsx create mode 100644 apps/ungdomsytelse-deltaker/src/sites/innsyn/components/KontonummerStatusTekst.tsx create mode 100644 apps/ungdomsytelse-deltaker/src/sites/innsyn/components/ManglendeKontonummer.tsx create mode 100644 apps/ungdomsytelse-deltaker/src/sites/innsyn/context/InnsynContext.tsx create mode 100644 apps/ungdomsytelse-deltaker/src/sites/innsyn/hooks/useInnsynContext.ts create mode 100644 apps/ungdomsytelse-deltaker/src/sites/innsyn/pages/InnsynForside.tsx rename "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/KortOmUngdomsytelsen.tsx" => "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/KortOmUngdomsprogrammet.tsx" (69%) diff --git a/apps/ungdomsytelse-deltaker/mock/msw/browser.ts b/apps/ungdomsytelse-deltaker/mock/msw/browser.ts index 0a56427880..a8721ac9dc 100644 --- a/apps/ungdomsytelse-deltaker/mock/msw/browser.ts +++ b/apps/ungdomsytelse-deltaker/mock/msw/browser.ts @@ -1,4 +1,4 @@ import { setupWorker } from 'msw/browser'; -import { handlers } from './handlers'; +import { handlers } from './handlers/handlers'; export const worker = setupWorker(...handlers); diff --git a/apps/ungdomsytelse-deltaker/mock/msw/handlers/index.ts b/apps/ungdomsytelse-deltaker/mock/msw/handlers/handlers.ts similarity index 81% rename from apps/ungdomsytelse-deltaker/mock/msw/handlers/index.ts rename to apps/ungdomsytelse-deltaker/mock/msw/handlers/handlers.ts index 12bcfcfafa..4d8a362038 100644 --- a/apps/ungdomsytelse-deltaker/mock/msw/handlers/index.ts +++ b/apps/ungdomsytelse-deltaker/mock/msw/handlers/handlers.ts @@ -1,6 +1,7 @@ import { delay, http, HttpResponse } from 'msw'; import { søker1Mock } from '../mocks/soker1'; -import { hentAlleResponse } from '../mocks/soker1/hentAlle'; +import { deltakelserIkkeSøkt } from '../mocks/soker1/deltakelser/ikkeSøkt'; +import { deltakelserHarSøkt } from '../mocks/soker1/deltakelser/harSøkt'; const MellomlagringStorageKey = 'mellomlagring-ungdomsytelse-deltaker-soknad'; @@ -20,7 +21,11 @@ export const handlers = [ return HttpResponse.json({}); }), http.get('**/deltakelse/register/hent/alle', () => { - return HttpResponse.json(hentAlleResponse); + const harSøkt = false; + return HttpResponse.json(harSøkt ? deltakelserHarSøkt : deltakelserIkkeSøkt); + }), + http.get('**/person/personopplysninger-api/personalia', () => { + return HttpResponse.json(søker1Mock.personalia); }), http.get(`**/mellomlagring/UNGDOMSYTELSE_DELTAKER_SOKNAD`, async () => { const data = localStorage.getItem(MellomlagringStorageKey); diff --git "a/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/deltakelser/harS\303\270kt.ts" "b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/deltakelser/harS\303\270kt.ts" new file mode 100644 index 0000000000..a689a08a3a --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/deltakelser/harS\303\270kt.ts" @@ -0,0 +1,82 @@ +export const deltakelserHarSøkt = [ + { + id: '123', + programperiodeFraOgMed: '2024-07-01', + programperiodeTilOgMed: '2025-06-30', + harSøkt: true, + rapporteringsPerioder: [ + { + fraOgMed: '2024-07-01', + tilOgMed: '2024-07-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-08-01', + tilOgMed: '2024-08-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-09-01', + tilOgMed: '2024-09-30', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-10-01', + tilOgMed: '2024-10-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-11-01', + tilOgMed: '2024-11-30', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-12-01', + tilOgMed: '2024-12-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-01-01', + tilOgMed: '2025-01-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-02-01', + tilOgMed: '2025-02-28', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-03-01', + tilOgMed: '2025-03-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-04-01', + tilOgMed: '2025-04-30', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-05-01', + tilOgMed: '2025-05-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-06-01', + tilOgMed: '2025-06-30', + harRapportert: false, + inntekt: null, + }, + ], + }, +]; diff --git "a/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/deltakelser/ikkeS\303\270kt.ts" "b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/deltakelser/ikkeS\303\270kt.ts" new file mode 100644 index 0000000000..b1e1f3835b --- /dev/null +++ "b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/deltakelser/ikkeS\303\270kt.ts" @@ -0,0 +1,82 @@ +export const deltakelserIkkeSøkt = [ + { + id: '123', + programperiodeFraOgMed: '2024-07-01', + programperiodeTilOgMed: '2025-06-30', + harSøkt: false, + rapporteringsPerioder: [ + { + fraOgMed: '2024-07-01', + tilOgMed: '2024-07-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-08-01', + tilOgMed: '2024-08-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-09-01', + tilOgMed: '2024-09-30', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-10-01', + tilOgMed: '2024-10-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-11-01', + tilOgMed: '2024-11-30', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2024-12-01', + tilOgMed: '2024-12-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-01-01', + tilOgMed: '2025-01-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-02-01', + tilOgMed: '2025-02-28', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-03-01', + tilOgMed: '2025-03-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-04-01', + tilOgMed: '2025-04-30', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-05-01', + tilOgMed: '2025-05-31', + harRapportert: false, + inntekt: null, + }, + { + fraOgMed: '2025-06-01', + tilOgMed: '2025-06-30', + harRapportert: false, + inntekt: null, + }, + ], + }, +]; diff --git a/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/index.ts b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/index.ts index 47f50d01ed..f71129fc7f 100644 --- a/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/index.ts +++ b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/index.ts @@ -1,9 +1,11 @@ import { arbeidsgiverMock } from './arbeidsgiverMock'; import { barnMock } from './barnMock'; +import { personaliaMock } from './personaliaMock'; import { søkerMock } from './søkerMock'; export const søker1Mock = { barn: barnMock, søker: søkerMock, arbeidsgiver: arbeidsgiverMock, + personalia: personaliaMock, }; diff --git a/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/personaliaMock.ts b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/personaliaMock.ts new file mode 100644 index 0000000000..85ef5dc442 --- /dev/null +++ b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/personaliaMock.ts @@ -0,0 +1,9 @@ +import { PersonaliaApiData } from '../../../../src/api/types'; + +export const personaliaMock: PersonaliaApiData = { + personalia: { + kontoregisterStatus: 'FAILURE', + kontonr: '97105351740', + utenlandskbank: null, + }, +}; diff --git "a/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/s\303\270kerMock.ts" "b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/s\303\270kerMock.ts" index a4ac2abade..3b50e0b393 100644 --- "a/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/s\303\270kerMock.ts" +++ "b/apps/ungdomsytelse-deltaker/mock/msw/mocks/soker1/s\303\270kerMock.ts" @@ -1,6 +1,6 @@ export const søkerMock = { aktørId: '2320509955297', - fødselsdato: '1995-06-02', + fødselsdato: '2005-06-02', fødselsnummer: '02869599258', fornavn: 'Test', mellomnavn: null, diff --git a/apps/ungdomsytelse-deltaker/src/api/schemas/personaliaSchema.ts b/apps/ungdomsytelse-deltaker/src/api/schemas/personaliaSchema.ts new file mode 100644 index 0000000000..66120c78dc --- /dev/null +++ b/apps/ungdomsytelse-deltaker/src/api/schemas/personaliaSchema.ts @@ -0,0 +1,11 @@ +import { z } from 'zod'; + +export const kontonummerSchema = z.object({ + kontoregisterStatus: z.enum(['SUCCESS', 'FAILURE']), + kontonr: z.string().nullable(), + utenlandskbank: z.boolean().nullable(), +}); + +export const personaliaApiDataSchema = z.object({ + personalia: kontonummerSchema, +}); diff --git a/apps/ungdomsytelse-deltaker/src/api/services/personaliaService.ts b/apps/ungdomsytelse-deltaker/src/api/services/personaliaService.ts new file mode 100644 index 0000000000..ff61a6dfbe --- /dev/null +++ b/apps/ungdomsytelse-deltaker/src/api/services/personaliaService.ts @@ -0,0 +1,18 @@ +import { personaliaApiDataSchema } from '../schemas/personaliaSchema'; +import { PersonaliaApiData } from '../types'; + +export const personaliaService = { + fetch: async (): Promise => { + try { + const response = await fetch(`person/personopplysninger-api/personalia`); + if (!response.ok) { + throw new Error(`Failed to fetch personalia: ${response.status}`); + } + const json = await response.json(); + return await personaliaApiDataSchema.parse(json); + } catch (e) { + console.log(e); + return undefined; + } + }, +}; diff --git a/apps/ungdomsytelse-deltaker/src/api/types/index.ts b/apps/ungdomsytelse-deltaker/src/api/types/index.ts index e7fd803d80..d0c73e635d 100644 --- a/apps/ungdomsytelse-deltaker/src/api/types/index.ts +++ b/apps/ungdomsytelse-deltaker/src/api/types/index.ts @@ -2,6 +2,7 @@ import { z } from 'zod'; import { deltakelserSchema } from '../schemas/deltakelserSchema'; import { deltakelseSchema, rapporteringsperiodeSchema } from '../schemas/deltakelseSchema'; import { periodeMedInntektSchema } from '../schemas/periodeMedInntektSchema'; +import { kontonummerSchema, personaliaApiDataSchema } from '../schemas/personaliaSchema'; import { søknadApiDataSchema } from '../schemas/søknadApiDataSchema'; export type Deltakelse = z.infer; @@ -9,3 +10,5 @@ export type Deltakelser = z.infer; export type PeriodeMedInntekt = z.infer; export type Rapporteringsperiode = z.infer; export type SøknadApiData = z.infer; +export type PersonaliaApiData = z.infer; +export type KontonummerInfo = z.infer; diff --git a/apps/ungdomsytelse-deltaker/src/context/DeltakerContext.tsx b/apps/ungdomsytelse-deltaker/src/context/DeltakerContext.tsx index 53b5715b7b..6c690ffdeb 100644 --- a/apps/ungdomsytelse-deltaker/src/context/DeltakerContext.tsx +++ b/apps/ungdomsytelse-deltaker/src/context/DeltakerContext.tsx @@ -1,6 +1,6 @@ import { createContext, ReactNode, useContext, useState } from 'react'; import { RegistrertBarn, Søker } from '@navikt/sif-common-api'; -import { Deltakelse } from '@api/types'; +import { Deltakelse, KontonummerInfo } from '@api/types'; import { deltakelseErÅpenForRapportering } from '@utils/deltakelserUtils'; interface DeltakerContextType { @@ -11,6 +11,7 @@ interface DeltakerContextType { export interface DeltakerContextData { søker: Søker; barn: RegistrertBarn[]; + kontonummerInfo?: KontonummerInfo; alleDeltakelser: Deltakelse[]; deltakelserSøktFor: Deltakelse[]; deltakelserIkkeSøktFor: Deltakelse[]; diff --git a/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts b/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts index aa9f964ed2..d60086555f 100644 --- a/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts +++ b/apps/ungdomsytelse-deltaker/src/hooks/useInitialData.ts @@ -4,6 +4,7 @@ import { DeltakerContextData } from '@context/DeltakerContext'; import { fetchBarn, fetchSøker } from '@navikt/sif-common-api'; import { useEffectOnce } from '@navikt/sif-common-hooks'; import { deltakelseErÅpenForRapportering } from '@utils/deltakelserUtils'; +import { personaliaService } from '../api/services/personaliaService'; export type InitialData = DeltakerContextData; @@ -18,6 +19,7 @@ export const useInitialData = () => { const søker = await fetchSøker(); const alleDeltakelser = await deltakerService.getDeltakelser(); const barn = await fetchBarn(); + const personalia = await personaliaService.fetch(); const deltakelserSøktFor = alleDeltakelser.filter((d) => d.harSøkt); const deltakelserIkkeSøktFor = alleDeltakelser.filter((d) => !d.harSøkt); @@ -27,6 +29,7 @@ export const useInitialData = () => { setInitialData({ barn, søker, + kontonummerInfo: personalia?.personalia, alleDeltakelser, deltakelserSøktFor, deltakelserIkkeSøktFor, diff --git a/apps/ungdomsytelse-deltaker/src/sites/innsyn/Innsyn.tsx b/apps/ungdomsytelse-deltaker/src/sites/innsyn/Innsyn.tsx new file mode 100644 index 0000000000..af47520b99 --- /dev/null +++ b/apps/ungdomsytelse-deltaker/src/sites/innsyn/Innsyn.tsx @@ -0,0 +1,30 @@ +import { setBreadcrumbs } from '@navikt/nav-dekoratoren-moduler'; +import { EnvKey } from '@navikt/sif-common-env'; +import { useEffectOnce } from '@navikt/sif-common-hooks'; +import { useDeltakerContext } from '../../context/DeltakerContext'; +import { appEnv } from '../../utils/appEnv'; +import { InnsynContextProvider } from './context/InnsynContext'; +import InnsynForside from './pages/InnsynForside'; + +const Innsyn = () => { + const { + data: { søker, deltakelserSøktFor, kontonummerInfo }, + } = useDeltakerContext(); + + const deltakelse = deltakelserSøktFor[0]; + + useEffectOnce(() => { + setBreadcrumbs([ + { title: 'Min side', url: '/dittnav/' }, + { title: 'Ungdomsprogrammet', url: appEnv[EnvKey.PUBLIC_PATH] }, + ]); + }); + + return ( + + + + ); +}; + +export default Innsyn; diff --git a/apps/ungdomsytelse-deltaker/src/sites/innsyn/InnsynRouter.tsx b/apps/ungdomsytelse-deltaker/src/sites/innsyn/InnsynRouter.tsx index 31d20a582b..40367a7189 100644 --- a/apps/ungdomsytelse-deltaker/src/sites/innsyn/InnsynRouter.tsx +++ b/apps/ungdomsytelse-deltaker/src/sites/innsyn/InnsynRouter.tsx @@ -1,9 +1,10 @@ import { Route, Routes } from 'react-router-dom'; +import Innsyn from './Innsyn'; const InnsynRouter = () => { return ( - sdf} /> + } /> ); }; diff --git a/apps/ungdomsytelse-deltaker/src/sites/innsyn/components/DeltakelseInfo.tsx b/apps/ungdomsytelse-deltaker/src/sites/innsyn/components/DeltakelseInfo.tsx new file mode 100644 index 0000000000..6ca1ee76e3 --- /dev/null +++ b/apps/ungdomsytelse-deltaker/src/sites/innsyn/components/DeltakelseInfo.tsx @@ -0,0 +1,34 @@ +import { Heading, VStack } from '@navikt/ds-react'; +import { Deltakelse, KontonummerInfo } from '../../../api/types'; +import { Søker } from '@navikt/sif-common-api'; +import { List } from '@navikt/ds-react/List'; +import { dateFormatter } from '@navikt/sif-common-utils'; +import KontonummerStatusTekst from './KontonummerStatusTekst'; + +interface Props { + deltakelse: Deltakelse; + søker: Søker; + kontonummerInfo?: KontonummerInfo; +} +const DeltakelseInfo = ({ deltakelse, kontonummerInfo }: Props) => { + const { programPeriode } = deltakelse; + return ( + + + Om deg og ungdomsprogrammet + + + + Fra: {dateFormatter.dateShortMonthYear(programPeriode.from)} + {programPeriode.to ? ` til ${dateFormatter.dateShortMonthYear(programPeriode.to)}` : ''} + + [TODO] + + + + + + ); +}; + +export default DeltakelseInfo; diff --git a/apps/ungdomsytelse-deltaker/src/sites/innsyn/components/KontonummerStatusTekst.tsx b/apps/ungdomsytelse-deltaker/src/sites/innsyn/components/KontonummerStatusTekst.tsx new file mode 100644 index 0000000000..3d6ed39ac0 --- /dev/null +++ b/apps/ungdomsytelse-deltaker/src/sites/innsyn/components/KontonummerStatusTekst.tsx @@ -0,0 +1,28 @@ +import { Alert } from '@navikt/ds-react'; +import { KontonummerInfo as KontonummerStatusTekst } from '../../../api/types'; + +interface Props { + kontonummerInfo?: KontonummerStatusTekst; +} + +const KontonummerStatusTekst = ({ kontonummerInfo }: Props) => { + if (!kontonummerInfo) { + return 'Informasjon om kontonummer mangler'; + } + const { kontonr, kontoregisterStatus } = kontonummerInfo; + if (kontoregisterStatus === 'SUCCESS' && kontonr) { + return `${kontonr}`; + } else if (kontoregisterStatus === 'FAILURE' && kontonr) { + return ( + + Ugyldig kontonummer - {kontonr} + + ); + } else if (kontoregisterStatus === 'FAILURE' && !kontonr) { + return `Kontonummer mangler`; + } + + return null; +}; + +export default KontonummerStatusTekst; diff --git a/apps/ungdomsytelse-deltaker/src/sites/innsyn/components/ManglendeKontonummer.tsx b/apps/ungdomsytelse-deltaker/src/sites/innsyn/components/ManglendeKontonummer.tsx new file mode 100644 index 0000000000..6f31b3c4b6 --- /dev/null +++ b/apps/ungdomsytelse-deltaker/src/sites/innsyn/components/ManglendeKontonummer.tsx @@ -0,0 +1,45 @@ +import { Alert, BodyShort, Heading, Link, VStack } from '@navikt/ds-react'; +import { KontonummerInfo } from '../../../api/types'; + +interface Props { + kontonummerInfo: KontonummerInfo; +} + +const ManglendeKontonummer = ({ kontonummerInfo }: Props) => { + if (kontonummerInfo.kontoregisterStatus === 'FAILURE') { + return ( + + + {kontonummerInfo.kontonr ? ( + <> + + Du må oppdatere kontonummeret ditt + + Kontonummeret vi har registrert på deg er ikke gyldig. + + Du kan oppdatere ditt kontonummer på{' '} + denne siden. + + + ) : ( + <> + + Vi mangler kontonummeret ditt + + + For at du skal være med i ungdomsprogrammet trenger vi kontonummer ditt. + + + Du kan registrere ditt kontonummer på{' '} + denne siden. + + + )} + + + ); + } + return null; +}; + +export default ManglendeKontonummer; diff --git a/apps/ungdomsytelse-deltaker/src/sites/innsyn/context/InnsynContext.tsx b/apps/ungdomsytelse-deltaker/src/sites/innsyn/context/InnsynContext.tsx new file mode 100644 index 0000000000..302c2307b4 --- /dev/null +++ b/apps/ungdomsytelse-deltaker/src/sites/innsyn/context/InnsynContext.tsx @@ -0,0 +1,21 @@ +import { createContext, FunctionComponent, ReactNode } from 'react'; +import { Deltakelse, KontonummerInfo } from '../../../api/types'; +import { Søker } from '@navikt/sif-common-api'; + +interface InnsynContextData { + søker: Søker; + deltakelse: Deltakelse; + kontonummerInfo?: KontonummerInfo; +} + +// eslint-disable-next-line @typescript-eslint/no-non-null-assertion +export const InnsynContext = createContext(null!); + +interface Props { + initialData: InnsynContextData; + children: ReactNode; +} + +export const InnsynContextProvider: FunctionComponent = ({ children, initialData }) => { + return {children}; +}; diff --git a/apps/ungdomsytelse-deltaker/src/sites/innsyn/hooks/useInnsynContext.ts b/apps/ungdomsytelse-deltaker/src/sites/innsyn/hooks/useInnsynContext.ts new file mode 100644 index 0000000000..d26a58d672 --- /dev/null +++ b/apps/ungdomsytelse-deltaker/src/sites/innsyn/hooks/useInnsynContext.ts @@ -0,0 +1,4 @@ +import { useContext } from 'react'; +import { InnsynContext } from '../context/InnsynContext'; + +export const useInnsynContext = () => useContext(InnsynContext); diff --git a/apps/ungdomsytelse-deltaker/src/sites/innsyn/pages/InnsynForside.tsx b/apps/ungdomsytelse-deltaker/src/sites/innsyn/pages/InnsynForside.tsx new file mode 100644 index 0000000000..44f1d2419a --- /dev/null +++ b/apps/ungdomsytelse-deltaker/src/sites/innsyn/pages/InnsynForside.tsx @@ -0,0 +1,52 @@ +import { VStack } from '@navikt/ds-react'; +import { setBreadcrumbs } from '@navikt/nav-dekoratoren-moduler'; +import Page from '@navikt/sif-common-core-ds/src/components/page/Page'; +import { EnvKey } from '@navikt/sif-common-env'; +import { useEffectOnce } from '@navikt/sif-common-hooks'; +import InntektsrapporteringForm from '../../../components/inntektsrapportering/InnteksrapporteringForm'; +import VelkommenPageHeader from '../../../components/velkommen-page-header/VelkommenPageHeader'; +import { useDeltakerContext } from '../../../context/DeltakerContext'; +import { appEnv } from '../../../utils/appEnv'; +import ManglendeKontonummer from '../components/ManglendeKontonummer'; +import DeltakelseInfo from '../components/DeltakelseInfo'; + +const InnsynForside = () => { + const { + data: { søker, deltakelserSøktFor, kontonummerInfo }, + } = useDeltakerContext(); + + const deltakelse = deltakelserSøktFor[0]; + // const { programPeriode } = deltakelse; + + useEffectOnce(() => { + setBreadcrumbs([ + { title: 'Min side', url: '/dittnav/' }, + { title: 'Ungdomsprogrammet', url: appEnv[EnvKey.PUBLIC_PATH] }, + ]); + }); + + return ( + + + + {/* + + Hei {søker.fornavn} + + + Du er meldt på av din veileder til å være med i ungdomsprogrammet fra og med{' '} + {dateFormatter.dateShortMonthYear(programPeriode.from)}. + + */} + {kontonummerInfo && kontonummerInfo.kontoregisterStatus === 'FAILURE' ? ( + + ) : null} + + + + + + ); +}; + +export default InnsynForside; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/KortOmUngdomsytelsen.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/KortOmUngdomsprogrammet.tsx" similarity index 69% rename from "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/KortOmUngdomsytelsen.tsx" rename to "apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/KortOmUngdomsprogrammet.tsx" index 78206697a2..8dbdda0d3c 100644 --- "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/KortOmUngdomsytelsen.tsx" +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/components/KortOmUngdomsprogrammet.tsx" @@ -1,12 +1,12 @@ import { Heading, ReadMore, VStack } from '@navikt/ds-react'; -const KortOmUngdomsytelsen = () => { +const KortOmUngdomsprogrammet = () => { return ( - Kort om ungdomsytelsen + Kort om Ungdomsprogrammet - Lorem + Lorem Lorem Lorem Lorem @@ -14,4 +14,4 @@ const KortOmUngdomsytelsen = () => { ); }; -export default KortOmUngdomsytelsen; +export default KortOmUngdomsprogrammet; diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/intro/IntroPage.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/intro/IntroPage.tsx" index 6a0256133b..1a8009f89f 100644 --- "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/intro/IntroPage.tsx" +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/intro/IntroPage.tsx" @@ -4,7 +4,7 @@ import VelkommenPageHeader from '@components/velkommen-page-header/VelkommenPage import { useDeltakerContext } from '@context/DeltakerContext'; import Page from '@navikt/sif-common-core-ds/src/components/page/Page'; import { dateFormatter } from '@navikt/sif-common-utils'; -import KortOmUngdomsytelsen from '../../components/KortOmUngdomsytelsen'; +import KortOmUngdomsprogrammet from '../../components/KortOmUngdomsprogrammet'; import { SøknadRoutes } from '../../types/SøknadRoutes'; const IntroPage = () => { @@ -15,9 +15,9 @@ const IntroPage = () => { if (deltakelserIkkeSøktFor.length !== 1) { return ( - + - + Scenario som ikke støttes @@ -38,15 +38,15 @@ const IntroPage = () => { }; return ( - + - + Hei {søker.fornavn} - Du er meldt på av din veileder til å være med i ungdomsytelse-programmet fra og med{' '} + Du er meldt på av din veileder til å være med i Ungdomsprogrammet fra og med{' '} {dateFormatter.dateShortMonthYear(programPeriode.from)}. For å starte programmet, må du sende inn en kort søknad. @@ -56,7 +56,7 @@ const IntroPage = () => {
    - +
    ); diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/KvitteringPage.tsx" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/KvitteringPage.tsx" index de0fe70dd8..102b4edea5 100644 --- "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/KvitteringPage.tsx" +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/KvitteringPage.tsx" @@ -18,16 +18,21 @@ const KvitteringPage = () => { }); return ( - - - - Vi har mottat din søknad + + + + Kvittering - - Vivero eos et accusamus et iusto odio dignis simos ducimus qui blanditiis praesentium - voluptatum. - - + + + Vi har mottatt din søknad + + + Vivero eos et accusamus et iusto odio dignis simos ducimus qui blanditiis praesentium + voluptatum. + + +
  • diff --git "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/kvitteringMesssages.ts" "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/kvitteringMesssages.ts" index f6233322f3..56a33780a9 100644 --- "a/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/kvitteringMesssages.ts" +++ "b/apps/ungdomsytelse-deltaker/src/sites/s\303\270knad/pages/kvittering/kvitteringMesssages.ts" @@ -3,7 +3,7 @@ const nb = { 'kvittering.info.tittel': '[TODO] Hva skjer videre nå?', 'kvittering.info.1': 'Hva skal vi ha med her? Hva skjer egentlig', 'kvittering.info.2': 'Vi kontakter deg hvis vi trenger flere opplysninger.', - 'kvittering.info.3': 'Du kan følge saken din på Din ungdomsytelse.', + 'kvittering.info.3': 'Du kan følge saken din på Ungdomsprogrammet.', }; const nn: Record = { ...nb }; From 9456b009d109eef1be48f4dc36de81efe4ef0089 Mon Sep 17 00:00:00 2001 From: frodehansen2 Date: Tue, 14 Jan 2025 12:46:28 +0100 Subject: [PATCH 7/7] Merge branch 'main' into ung --- apps/dine-pleiepenger/CHANGELOG.md | 6 + apps/dine-pleiepenger/nais/dev-gcp.json | 3 +- apps/dine-pleiepenger/nais/envs/.env.dev | 3 +- apps/dine-pleiepenger/nais/envs/.env.prod | 3 +- apps/dine-pleiepenger/nais/prod-gcp.json | 3 +- apps/dine-pleiepenger/package.json | 36 +- apps/dine-pleiepenger/playwright.config.ts | 3 +- apps/dine-pleiepenger/src/utils/env.ts | 2 - .../.env.example | 1 + .../.storybook/preview-head.html | 1 + .../e2e/playwright/playwright.env.ts | 1 + .../env.schema.ts | 2 +- .../mock/getAppSettings.cjs | 1 + .../nais/dev-gcp.json | 3 +- .../nais/prod-gcp.json | 3 +- .../package.json | 40 +- .../src/app/App.tsx | 2 +- .../src/app/i18n/all-messages.stories.tsx | 18 + .../src/app/i18n/app-messages.stories.tsx | 18 + .../src/app/i18n/appMessages.ts | 24 +- .../src/app/i18n/lib-messages.stories.tsx | 18 + .../pages/kvittering/kvitteringMesssages.ts | 9 +- .../pages/velkommen/velkommenPageMessages.ts | 44 +- .../app/pre-common/forms/barn/barnMessages.ts | 20 +- .../annenForelderenSituasjonMessages.ts" | 118 +- .../omAnnenForelderMessages.ts" | 29 +- .../steps/om-barna/omBarnaMessages.ts" | 15 +- .../oppsummering/oppsummeringMessages.ts" | 34 +- .../src/app/utils/appEnv.ts | 3 +- .../src/storybook/decorators/withIntl.tsx | 1 - apps/endringsmelding-pleiepenger/package.json | 30 +- .../app/components/tags/icon-tag/IconTag.tsx | 4 +- .../components/ArbeidstidUkeListe.tsx | 6 +- .../components/ArbeidstidUkeTabell.tsx | 8 +- .../.env.example | 1 + .../.storybook/main.ts | 25 + .../.storybook/preview-head.html | 12 + .../.storybook/preview.ts | 36 + .../e2e/playwright/playwright.env.ts | 1 + .../env.schema.ts | 1 + .../mock/AppSettings.cjs | 1 + .../nais/dev-gcp.json | 1 + .../nais/prod-gcp.json | 1 + .../package.json | 52 +- .../src/app/App.tsx | 1 + .../src/app/i18n/all-messages.stories.tsx | 18 + .../src/app/i18n/app-messages.stories.tsx | 18 + .../src/app/i18n/appMessages.ts | 21 +- .../src/app/i18n/lib-messages.stories.tsx | 18 + .../pages/kvittering/kvitteringMesssages.ts | 9 +- .../pages/velkommen/velkommenPageMessages.ts | 38 +- .../omOmsorgenForBarnMessages.ts" | 39 +- .../oppsummering/oppsummeringMessages.ts" | 22 +- .../tidspunktForAleneomsorgMessages.ts" | 20 +- .../src/app/utils/appEnv.ts | 1 + .../components/AlertStoryWrapper.tsx | 35 + .../src/storybook/components/ShadowBox.tsx | 11 + .../Sp\303\270rsm\303\245lWrapper.tsx" | 63 + .../storybook/components/StoryFormWrapper.tsx | 17 + .../components/StoryFormikWrapper.tsx | 61 + .../src/storybook/decorators/print.css | 17 + .../decorators/withAmplitudeProvider.tsx | 7 + .../storybook/decorators/withEnvSettings.tsx | 4 + .../decorators/withFormikWrapper.tsx | 7 + .../src/storybook/decorators/withIntl.tsx | 18 + .../src/storybook/decorators/withRouter.tsx | 7 + .../decorators/withStepFormValuesContext.tsx | 10 + .../decorators/withS\303\270knadContext.tsx" | 19 + .../src/storybook/mock-data/index.ts | 27 + .../src/storybook/utils/intlUtils.ts | 34 + .../FormikValidationErrorSummary.tsx | 6 +- .../sif-formik/getTypedFormComponents.tsx | 11 +- apps/omsorgsdager-kalkulator/package.json | 30 +- .../pages/_document.tsx | 5 +- .../.env.example | 4 + .../.storybook/preview-head.html | 23 + .../.storybook/preview.ts | 37 +- .../e2e/playwright/playwright.env.ts | 3 + .../tests/fyll-ut-s\303\270knad.spec.ts" | 5 + .../e2e/playwright/utils/setNow.ts | 11 + .../env.schema.ts | 6 +- .../mock/AppSettings.cjs | 5 +- .../nais/dev-gcp.json | 2 +- .../nais/prod-gcp.json | 1 + .../package.json | 52 +- .../src/app/App.tsx | 12 +- .../src/app/i18n/appMessages.ts | 109 +- .../src/app/i18n/index.tsx | 3 +- .../TilArbeidsgiverDokumentListe.tsx | 4 +- .../pages/kvittering/kvitteringMesssages.ts | 39 +- .../pages/velkommen/velkommenPageMessages.ts | 42 +- .../steps/delt-bosted/deltBostedMessages.ts" | 15 +- .../steps/dine-barn/dineBarnMessages.ts" | 24 +- .../frav\303\246rStepMessages.ts" | 28 +- .../legeerkl\303\246ringMessages.ts" | 17 +- .../UtbetalingsperioderSummaryView.tsx" | 7 +- .../oppsummering/oppsummeringMessages.ts" | 87 +- .../steps/situasjon/situasjonStepMessages.ts" | 43 +- .../src/app/utils/appEnv.ts | 3 +- .../validateApiData.ts" | 2 +- .../decorators/withS\303\270knadContext.tsx" | 3 +- .../src/storybook/mock-data/index.ts | 20 +- .../stories/steps/Situasjon.stories.tsx | 2 +- .../.env.example | 2 +- .../.storybook/preview-head.html | 24 +- .../mock-data/playwrightApiMockData.ts | 3 +- .../e2e/playwright/playwright.env.ts | 1 + .../e2e/playwright/utils/setNow.ts | 2 +- .../env.schema.ts | 4 +- .../mock/AppSettings.cjs | 2 +- .../mock/mock-api-server.cjs | 2 +- .../mock/mock-data/kun-barn-over-13.json | 6 +- .../nais/dev-gcp.json | 2 +- .../nais/prod-gcp.json | 1 + .../package.json | 49 +- .../src/app/App.tsx | 1 + .../src/app/i18n/appMessages.ts | 115 +- .../src/app/i18n/index.tsx | 4 +- .../pages/kvittering/kvitteringMesssages.ts | 10 +- .../pages/velkommen/velkommenPageMessages.ts | 105 +- .../arbeidssituasjonMessages.ts" | 43 +- .../steps/dine-barn/dineBarnMessages.ts" | 68 +- .../frav\303\246rFraMessages.ts" | 9 +- .../frav\303\246rStepMessages.ts" | 48 +- .../legeerkl\303\246ringMessages.ts" | 13 +- .../UtbetalingsperioderOppsummering.tsx" | 10 +- .../oppsummering/oppsummeringMessages.ts" | 70 +- .../src/app/utils/appEnv.ts | 3 +- .../decorators/withS\303\270knadContext.tsx" | 5 +- .../mock-data/s\303\270knadsdataMock.ts" | 2 + apps/omsorgspengesoknad/CHANGELOG.md | 8 + apps/omsorgspengesoknad/package.json | 26 +- .../app/pages/velkommen/VelkommenGuide.tsx | 31 - .../pages/velkommen/velkommenPageMessages.ts | 2 - apps/opplaringspenger-soknad/package.json | 34 +- .../.env.example | 2 +- .../e2e/playwright/playwright.env.ts | 1 + .../env.schema.ts | 2 +- .../mock/AppSettings.cjs | 1 + .../nais/dev-gcp.json | 2 +- .../nais/prod-gcp.json | 1 + .../package.json | 28 +- .../src/app/App.tsx | 1 + .../dagerMedTidMessages.ts | 33 +- .../src/app/i18n/app-messages.stories.tsx | 18 + .../src/app/i18n/appMessages.ts | 185 +- .../src/app/i18n/index.tsx | 5 +- .../pages/kvittering/kvitteringMesssages.ts | 12 +- .../pages/velkommen/velkommenPageMessages.ts | 41 +- .../arbeidssituasjonMessages.ts" | 111 +- .../steps/arbeidstid/arbeidstidMessages.ts" | 97 +- .../arbeidstid/arbeidstidPeriodeMessages.ts" | 35 +- .../legeerkl\303\246ringMessages.ts" | 13 +- .../opplysningerOmPleietrengendeMessages.ts" | 52 +- .../oppsummering/oppsummeringMessages.ts" | 135 +- .../steps/tidsrom/DagerMedPleieFormPart.tsx" | 5 +- .../steps/tidsrom/tidsromMessages.ts" | 59 +- .../src/app/utils/appEnv.ts | 3 +- .../validateApiData.ts" | 4 + apps/pleiepenger-sykt-barn/package.json | 26 +- .../tid-enkeltdag-dialog/TidEnkeltdagForm.tsx | 8 +- .../tidsbruk-kalender/TidsbrukKalenderDag.tsx | 6 +- .../ArbeidssituasjonPanel.tsx" | 4 +- apps/sif-demo-app/package.json | 42 +- apps/sif-ettersending/package.json | 28 +- .../app/soknad/SoknadRemoteDataFetcher.tsx | 5 +- .../src/app/soknad/SoknadRouter.tsx | 7 +- apps/ungdomsytelse-deltaker/package.json | 48 +- .../api-mock/mock-server.cjs | 18 +- apps/ungdomsytelse-veileder/package.json | 40 +- apps/ungdomsytelse-veileder/src/App.tsx | 2 +- .../src/api/schemas/deltakelseSchema.ts | 34 +- .../src/components/DeltakelserMeny.tsx | 17 + .../src/components/DeltakerHeader.tsx | 51 +- .../src/components/DeltakerPage.tsx | 26 + .../src/components/DeltakerPageContent.tsx | 60 +- .../aktiv-deltakelse/AktivDeltakelse.tsx | 73 - .../deltakelse-content/DeltakelseContent.tsx | 56 + .../deltakelse-content/DeltakelseHeader.tsx | 26 + .../DeltakelseStatusContent.tsx | 4 - .../components/ny-deltakelse/NyDeltakelse.tsx | 49 + .../src/depr/hooks/useNyDeltakelse.ts | 35 + .../src/forms/HentDeltakerForm.tsx | 4 +- .../MeldeInnDeltakerP\303\245NyttForm.tsx" | 27 - .../AvsluttDeltakelseForm.tsx | 18 +- .../EndreDeltakelseForm.tsx | 6 +- .../MeldInnDeltakerForm.tsx | 19 +- .../ny-deltakelse-form/NyDeltakelseForm.tsx | 60 + .../PeriodeFormPart.tsx | 0 .../pages/deltaker-page/DeltakerPage.tsx | 24 - package.json | 6 +- packages/appstatus-react-ds/package.json | 14 +- packages/appstatus-sanity-config/package.json | 14 +- packages/config/package.json | 12 +- packages/eslint-config-sif/package.json | 12 +- packages/sif-app-register/package.json | 2 +- packages/sif-common-amplitude/package.json | 10 +- packages/sif-common-api/package.json | 12 +- packages/sif-common-core-ds/package.json | 24 +- .../i18n/pictureScanningGuideMessages.tsx | 6 +- .../src/i18n/common.messages.tsx | 8 +- packages/sif-common-env/package.json | 2 +- packages/sif-common-formik-ds/package.json | 20 +- .../FormikValidationErrorSummary.tsx | 4 +- .../src/components/getTypedFormComponents.tsx | 35 +- packages/sif-common-forms-ds/package.json | 22 +- .../frav\303\246r/Frav\303\246rDagForm.tsx" | 7 +- .../Frav\303\246rDagerListAndDialog.tsx" | 5 +- .../Frav\303\246rPeriodeForm.tsx" | 11 +- .../Frav\303\246rPerioderListAndDialog.tsx" | 9 +- packages/sif-common-hooks/package.json | 2 +- packages/sif-common-sentry/package.json | 12 +- packages/sif-common-soknad-ds/package.json | 28 +- .../src/pages/error-page/ErrorPage.tsx | 3 +- .../setup/SoknadApplicationCommonRoutes.tsx | 10 +- packages/sif-common-ui/CHANGELOG.md | 6 + packages/sif-common-ui/package.json | 14 +- .../components/duration-text/DurationText.tsx | 5 +- .../duration-text/durationText.messages.ts | 5 +- .../day-selector/daySelector.messages.ts | 4 +- packages/sif-common-utils/package.json | 14 +- server/package.json | 8 +- yarn.lock | 4502 +++++++++++++---- 223 files changed, 7045 insertions(+), 2023 deletions(-) create mode 100644 apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/all-messages.stories.tsx create mode 100644 apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/app-messages.stories.tsx create mode 100644 apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/lib-messages.stories.tsx create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/.storybook/main.ts create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/.storybook/preview-head.html create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/.storybook/preview.ts create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/all-messages.stories.tsx create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/app-messages.stories.tsx create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/lib-messages.stories.tsx create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/AlertStoryWrapper.tsx create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/ShadowBox.tsx create mode 100644 "apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/Sp\303\270rsm\303\245lWrapper.tsx" create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/StoryFormWrapper.tsx create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/StoryFormikWrapper.tsx create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/print.css create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withAmplitudeProvider.tsx create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withEnvSettings.tsx create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withFormikWrapper.tsx create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withIntl.tsx create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withRouter.tsx create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withStepFormValuesContext.tsx create mode 100644 "apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withS\303\270knadContext.tsx" create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/storybook/mock-data/index.ts create mode 100644 apps/omsorgsdager-aleneomsorg-dialog/src/storybook/utils/intlUtils.ts create mode 100644 apps/omsorgspengerutbetaling-arbeidstaker-soknad/.storybook/preview-head.html create mode 100644 apps/omsorgspengerutbetaling-arbeidstaker-soknad/e2e/playwright/utils/setNow.ts delete mode 100644 apps/omsorgspengesoknad/src/app/pages/velkommen/VelkommenGuide.tsx create mode 100644 apps/pleiepenger-i-livets-sluttfase-soknad/src/app/i18n/app-messages.stories.tsx create mode 100644 apps/ungdomsytelse-veileder/src/components/DeltakelserMeny.tsx create mode 100644 apps/ungdomsytelse-veileder/src/components/DeltakerPage.tsx delete mode 100644 apps/ungdomsytelse-veileder/src/components/aktiv-deltakelse/AktivDeltakelse.tsx create mode 100644 apps/ungdomsytelse-veileder/src/components/deltakelse-content/DeltakelseContent.tsx create mode 100644 apps/ungdomsytelse-veileder/src/components/deltakelse-content/DeltakelseHeader.tsx create mode 100644 apps/ungdomsytelse-veileder/src/components/ny-deltakelse/NyDeltakelse.tsx create mode 100644 apps/ungdomsytelse-veileder/src/depr/hooks/useNyDeltakelse.ts delete mode 100644 "apps/ungdomsytelse-veileder/src/forms/MeldeInnDeltakerP\303\245NyttForm.tsx" create mode 100644 apps/ungdomsytelse-veileder/src/forms/ny-deltakelse-form/NyDeltakelseForm.tsx rename apps/ungdomsytelse-veileder/src/forms/{endre-deltakelse-form => periode-form-part}/PeriodeFormPart.tsx (100%) delete mode 100644 apps/ungdomsytelse-veileder/src/versjoner/versjon-1/pages/deltaker-page/DeltakerPage.tsx diff --git a/apps/dine-pleiepenger/CHANGELOG.md b/apps/dine-pleiepenger/CHANGELOG.md index 5cf926aae9..4e6093e324 100644 --- a/apps/dine-pleiepenger/CHANGELOG.md +++ b/apps/dine-pleiepenger/CHANGELOG.md @@ -1,5 +1,11 @@ # @navikt/dine-pleiepenger +## 1.8.1 + +### Patch Changes + +- Endre lenke til dokumentoversikten + ## 1.8.0 ### Minor Changes diff --git a/apps/dine-pleiepenger/nais/dev-gcp.json b/apps/dine-pleiepenger/nais/dev-gcp.json index c9c7aeab96..d5d9deb214 100644 --- a/apps/dine-pleiepenger/nais/dev-gcp.json +++ b/apps/dine-pleiepenger/nais/dev-gcp.json @@ -43,11 +43,10 @@ "NEXT_PUBLIC_PLEIEPENGER_INFO_URL": "https://www.dev.nav.no/pleiepenger-barn", "NEXT_PUBLIC_REGELVERK_INFO_URL": "https://lovdata.no/nav/folketrygdloven/kap9", "NEXT_PUBLIC_SAKSBEHANDLINGSTID_INFO_URL": "https://www.intern.dev.nav.no/saksbehandlingstider#pleiepenger-for-sykt-barn", - "NEXT_PUBLIC_SAKSOVERSIKT_URL": "https://person.nav.no/mine-saker", "NEXT_PUBLIC_SKRIV_TIL_OSS_URL": "https://www.nav.no/skriv-til-oss", "NEXT_PUBLIC_SYKDOM_I_FAMILIEN_INFO_URL": "https://www.nav.no/familie/sykdom-i-familien/nb/pleiepenger-for-sykt-barn", "NEXT_PUBLIC_ARBEIDSGIVER_PLEIEPENGER_URL": "https://www.nav.no/arbeidsgiver/pleiepenger-barn", - "NEXT_PUBLIC_MINSIDE_DOKUMENTOVERSIKT_URL": "https://person.dev.nav.no/mine-saker", + "NEXT_PUBLIC_MINSIDE_DOKUMENTOVERSIKT_URL": "https://www.dev.nav.no/dokumentarkiv/tema/OMS", "NEXT_PUBLIC_UTBETALINGSOVERSIKT_URL": "https://tjenester.nav.no/utbetalingsoversikt", "NEXT_PUBLIC_FEATURE_APPSTATUS": "off", diff --git a/apps/dine-pleiepenger/nais/envs/.env.dev b/apps/dine-pleiepenger/nais/envs/.env.dev index 68e4251fb8..341d54f169 100644 --- a/apps/dine-pleiepenger/nais/envs/.env.dev +++ b/apps/dine-pleiepenger/nais/envs/.env.dev @@ -32,10 +32,9 @@ NEXT_PUBLIC_INNBOKS_URL=https://innboks.dev.nav.no NEXT_PUBLIC_PLEIEPENGER_INFO_URL=https://www.dev.nav.no/pleiepenger-barn NEXT_PUBLIC_REGELVERK_INFO_URL=https://lovdata.no/nav/folketrygdloven/kap9 NEXT_PUBLIC_SAKSBEHANDLINGSTID_INFO_URL=https://www.nav.no/no/nav-og-samfunn/om-nav/saksbehandlingstider-i-nav -NEXT_PUBLIC_SAKSOVERSIKT_URL=https://person.nav.no/mine-saker NEXT_PUBLIC_SKRIV_TIL_OSS_URL=https://www.nav.no/skriv-til-oss NEXT_PUBLIC_SYKDOM_I_FAMILIEN_INFO_URL=https://www.nav.no/familie/sykdom-i-familien/nb/pleiepenger-for-sykt-barn NEXT_PUBLIC_ARBEIDSGIVER_PLEIEPENGER_URL=https://www.dev.nav.no/arbeidsgiver/pleiepenger-barn -NEXT_PUBLIC_MINSIDE_DOKUMENTOVERSIKT_URL=https://person.dev.nav.no/mine-saker +NEXT_PUBLIC_MINSIDE_DOKUMENTOVERSIKT_URL=https://www.dev.nav.no/dokumentarkiv/tema/OMS NEXT_PUBLIC_UTBETALINGSOVERSIKT_URL=https://tjenester.nav.no/utbetalingsoversikt/ diff --git a/apps/dine-pleiepenger/nais/envs/.env.prod b/apps/dine-pleiepenger/nais/envs/.env.prod index c29a4fd5ad..5a752cde5d 100644 --- a/apps/dine-pleiepenger/nais/envs/.env.prod +++ b/apps/dine-pleiepenger/nais/envs/.env.prod @@ -32,9 +32,8 @@ NEXT_PUBLIC_INNBOKS_URL=https://innboks.nav.no NEXT_PUBLIC_PLEIEPENGER_INFO_URL=https://www.nav.no/pleiepenger-barn NEXT_PUBLIC_REGELVERK_INFO_URL=https://lovdata.no/nav/folketrygdloven/kap9 NEXT_PUBLIC_SAKSBEHANDLINGSTID_INFO_URL=https://www.nav.no/saksbehandlingstider#pleiepenger-for-sykt-barn -NEXT_PUBLIC_SAKSOVERSIKT_URL=https://person.nav.no/mine-saker NEXT_PUBLIC_SKRIV_TIL_OSS_URL=https://www.nav.no/skriv-til-oss NEXT_PUBLIC_SYKDOM_I_FAMILIEN_INFO_URL=https://www.nav.no/familie/sykdom-i-familien/nb/pleiepenger-for-sykt-barn NEXT_PUBLIC_ARBEIDSGIVER_PLEIEPENGER_URL=https://www.nav.no/arbeidsgiver/pleiepenger-barn -NEXT_PUBLIC_MINSIDE_DOKUMENTOVERSIKT_URL=https://person.nav.no/mine-saker +NEXT_PUBLIC_MINSIDE_DOKUMENTOVERSIKT_URL=https://www.nav.no/dokumentarkiv/tema/OMS NEXT_PUBLIC_UTBETALINGSOVERSIKT_URL=https://tjenester.nav.no/utbetalingsoversikt diff --git a/apps/dine-pleiepenger/nais/prod-gcp.json b/apps/dine-pleiepenger/nais/prod-gcp.json index ef5aa81c3e..2691433b83 100644 --- a/apps/dine-pleiepenger/nais/prod-gcp.json +++ b/apps/dine-pleiepenger/nais/prod-gcp.json @@ -43,11 +43,10 @@ "NEXT_PUBLIC_PLEIEPENGER_INFO_URL": "https://www.nav.no/pleiepenger-barn", "NEXT_PUBLIC_REGELVERK_INFO_URL": "https://lovdata.no/nav/folketrygdloven/kap9", "NEXT_PUBLIC_SAKSBEHANDLINGSTID_INFO_URL": "https://www.nav.no/saksbehandlingstider#pleiepenger-for-sykt-barn", - "NEXT_PUBLIC_SAKSOVERSIKT_URL": "https://person.nav.no/mine-saker", "NEXT_PUBLIC_SKRIV_TIL_OSS_URL": "https://www.nav.no/skriv-til-oss", "NEXT_PUBLIC_SYKDOM_I_FAMILIEN_INFO_URL": "https://www.nav.no/familie/sykdom-i-familien/nb/pleiepenger-for-sykt-barn", "NEXT_PUBLIC_ARBEIDSGIVER_PLEIEPENGER_URL": "https://www.nav.no/arbeidsgiver/pleiepenger-barn", - "NEXT_PUBLIC_MINSIDE_DOKUMENTOVERSIKT_URL": "https://person.nav.no/mine-saker", + "NEXT_PUBLIC_MINSIDE_DOKUMENTOVERSIKT_URL": "https://www.nav.no/dokumentarkiv/tema/OMS", "NEXT_PUBLIC_UTBETALINGSOVERSIKT_URL": "https://tjenester.nav.no/utbetalingsoversikt", "NEXT_PUBLIC_FEATURE_APPSTATUS": "off", diff --git a/apps/dine-pleiepenger/package.json b/apps/dine-pleiepenger/package.json index edaded5464..0fcd9c6fc3 100644 --- a/apps/dine-pleiepenger/package.json +++ b/apps/dine-pleiepenger/package.json @@ -1,6 +1,6 @@ { "name": "@navikt/dine-pleiepenger", - "version": "1.8.0", + "version": "1.8.1", "private": true, "scripts": { "build-storybook": "storybook build", @@ -20,7 +20,7 @@ "@grafana/faro-web-sdk": "1.12.2", "@grafana/faro-web-tracing": "1.12.2", "@navikt/appstatus-react-ds": "*", - "@navikt/nav-dekoratoren-moduler": "3.1.1", + "@navikt/nav-dekoratoren-moduler": "3.1.3", "@navikt/next-logger": "1.35.0", "@navikt/oasis": "3.6.0", "@navikt/sif-app-register": "*", @@ -31,26 +31,26 @@ "axios": "1.7.9", "csp-header": "6.0.0", "date-fns": "3.6.0", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "jsdom": "25.0.1", "lodash.sortby": "4.7.0", "lodash.uniq": "4.5.0", - "next": "15.1.0", + "next": "15.1.4", "next-logger": "5.0.1", - "pino": "9.5.0", + "pino": "9.6.0", "react": "19.0.0", "react-dom": "19.0.0", "react-loading-skeleton": "3.5.0", - "swr": "2.2.5", - "uuid": "11.0.3", + "swr": "2.3.0", + "uuid": "11.0.5", "zod": "3.24.1" }, "devDependencies": { "@axe-core/playwright": "4.10.1", - "@navikt/ds-css": "7.8.0", + "@navikt/ds-css": "7.9.1", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", "@playwright/test": "1.49.1", "@sif/eslint-config": "*", "@storybook/addon-essentials": "8.4.7", @@ -61,15 +61,15 @@ "@storybook/nextjs": "8.4.7", "@storybook/react": "8.4.7", "@storybook/test": "8.4.7", - "@types/react": "19.0.1", + "@types/react": "19.0.6", "classnames": "2.5.1", "dayjs": "1.11.13", - "eslint": "9.17.0", - "eslint-plugin-storybook": "0.11.1", + "eslint": "9.18.0", + "eslint-plugin-storybook": "0.11.2", "formik": "2.4.6", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", - "next": "15.1.0", + "next": "15.1.4", "node-fetch": "3.3.2", "playwright-core": "1.49.1", "postcss": "8.4.49", @@ -77,11 +77,11 @@ "react": "19.0.0", "react-day-picker": "8.10.1", "react-dom": "19.0.0", - "react-intl": "7.0.4", + "react-intl": "7.1.0", "storybook": "8.4.7", - "tailwindcss": "3.4.16", - "typescript": "5.7.2", - "uuid": "11.0.3", + "tailwindcss": "3.4.17", + "typescript": "5.7.3", + "uuid": "11.0.5", "vitest": "2.1.8", "webpack": "5.97.1" }, diff --git a/apps/dine-pleiepenger/playwright.config.ts b/apps/dine-pleiepenger/playwright.config.ts index c58b9558a6..3fabccf317 100644 --- a/apps/dine-pleiepenger/playwright.config.ts +++ b/apps/dine-pleiepenger/playwright.config.ts @@ -57,12 +57,11 @@ export default defineConfig({ NEXT_PUBLIC_REGELVERK_INFO_URL: 'https://lovdata.no/nav/folketrygdloven/kap9', NEXT_PUBLIC_SAKSBEHANDLINGSTID_INFO_URL: 'https://www.intern.dev.nav.no/saksbehandlingstider#pleiepenger-for-sykt-barn', - NEXT_PUBLIC_SAKSOVERSIKT_URL: 'https://person.nav.no/mine-saker', NEXT_PUBLIC_SKRIV_TIL_OSS_URL: 'https://www.nav.no/skriv-til-oss', NEXT_PUBLIC_SYKDOM_I_FAMILIEN_INFO_URL: 'https://www.nav.no/familie/sykdom-i-familien/nb/pleiepenger-for-sykt-barn', NEXT_PUBLIC_ARBEIDSGIVER_PLEIEPENGER_URL: 'https://www.nav.no/arbeidsgiver/pleiepenger-barn', - NEXT_PUBLIC_MINSIDE_DOKUMENTOVERSIKT_URL: 'https://person.dev.nav.no/mine-saker', + NEXT_PUBLIC_MINSIDE_DOKUMENTOVERSIKT_URL: 'https://www.dev.nav.no/dokumentarkiv/tema/OMS', NEXT_PUBLIC_UTBETALINGSOVERSIKT_URL: 'https://tjenester.nav.no/utbetalingsoversikt', NEXT_PUBLIC_FEATURE_HENT_SAKER: 'on', NEXT_PUBLIC_FEATURE_HENT_MELLOMLAGRING: 'off', diff --git a/apps/dine-pleiepenger/src/utils/env.ts b/apps/dine-pleiepenger/src/utils/env.ts index 2a2ee16fc3..595b543c36 100644 --- a/apps/dine-pleiepenger/src/utils/env.ts +++ b/apps/dine-pleiepenger/src/utils/env.ts @@ -34,7 +34,6 @@ export const publicEnvSchema = z.object({ NEXT_PUBLIC_PLEIEPENGER_INFO_URL: z.string(), NEXT_PUBLIC_REGELVERK_INFO_URL: z.string(), NEXT_PUBLIC_SAKSBEHANDLINGSTID_INFO_URL: z.string(), - NEXT_PUBLIC_SAKSOVERSIKT_URL: z.string(), NEXT_PUBLIC_SKRIV_TIL_OSS_URL: z.string(), NEXT_PUBLIC_SYKDOM_I_FAMILIEN_INFO_URL: z.string(), NEXT_PUBLIC_ARBEIDSGIVER_PLEIEPENGER_URL: z.string(), @@ -93,7 +92,6 @@ export const browserEnv = publicEnvSchema.parse({ NEXT_PUBLIC_SKJEMA_PLEIEPENGER_URL: process.env.NEXT_PUBLIC_SKJEMA_PLEIEPENGER_URL, NEXT_PUBLIC_PLEIEPENGER_INFO_URL: process.env.NEXT_PUBLIC_PLEIEPENGER_INFO_URL, NEXT_PUBLIC_SKJEMA_ENDRINGSMELDING_URL: process.env.NEXT_PUBLIC_SKJEMA_ENDRINGSMELDING_URL, - NEXT_PUBLIC_SAKSOVERSIKT_URL: process.env.NEXT_PUBLIC_SAKSOVERSIKT_URL, NEXT_PUBLIC_DINE_UTBETALINGER_URL: process.env.NEXT_PUBLIC_DINE_UTBETALINGER_URL, NEXT_PUBLIC_SKRIV_TIL_OSS_URL: process.env.NEXT_PUBLIC_SKRIV_TIL_OSS_URL, NEXT_PUBLIC_ARBEIDSGIVER_PLEIEPENGER_URL: process.env.NEXT_PUBLIC_ARBEIDSGIVER_PLEIEPENGER_URL, diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/.env.example b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/.env.example index 67e4086706..1360cb3569 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/.env.example +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/.env.example @@ -9,6 +9,7 @@ SIF_PUBLIC_APPSTATUS_PROJECT_ID=ryujtq87 SIF_PUBLIC_DEKORATOR_URL=https://www.nav.no/dekoratoren/?simple=true&chatbot=false SIF_PUBLIC_LOGIN_URL=http://localhost:8081/auth-mock/cookie?subject=mockSubject&redirect_location=http://localhost:8080 SIF_PUBLIC_MINSIDE_URL=https://www.nav.no/minside +SIF_PUBLIC_FEATURE_NYNORSK=on K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH=/familie/sykdom-i-familien/soknad/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/api/k9-brukerdialog K9_BRUKERDIALOG_PROSESSERING_API_SCOPE=dev-gcp:dusseldorf:k9-brukerdialog-prosessering diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/.storybook/preview-head.html b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/.storybook/preview-head.html index 848255b5c3..23dc0780c9 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/.storybook/preview-head.html +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/.storybook/preview-head.html @@ -13,6 +13,7 @@ 'SIF_PUBLIC_MINSIDE_URL': 'https://www.intern.dev.nav.no/minside', 'SIF_PUBLIC_USE_AMPLITUDE': 'false', 'SIF_PUBLIC_AMPLITUDE_API_KEY': 'abc', + 'SIF_PUBLIC_FEATURE_NYNORSK': 'on', 'MOCK_DATE': '2023-01-01', 'USE_MOCK_DATE': 'true', 'K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH': '/', diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/e2e/playwright/playwright.env.ts b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/e2e/playwright/playwright.env.ts index 19942a1758..0d90a0c8f2 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/e2e/playwright/playwright.env.ts +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/e2e/playwright/playwright.env.ts @@ -12,6 +12,7 @@ export const playwrightEnv: AppEnv = { SIF_PUBLIC_LOGIN_URL: 'http://localhost:8081/auth-mock/cookie?subject=mockSubject&redirect_location=http://localhost:8080', SIF_PUBLIC_MINSIDE_URL: 'https://www.nav.no/minside', + SIF_PUBLIC_FEATURE_NYNORSK: 'on', K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH: '/familie/sykdom-i-familien/soknad/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/api/k9-brukerdialog', K9_BRUKERDIALOG_PROSESSERING_API_SCOPE: 'dev-gcp:dusseldorf:k9-brukerdialog-prosessering', diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/env.schema.ts b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/env.schema.ts index 723d95e6ed..de8b9395a2 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/env.schema.ts +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/env.schema.ts @@ -1,6 +1,6 @@ import { commonEnvSchema } from '@navikt/sif-common-env'; import * as z from 'zod'; -export const appEnvSchema = commonEnvSchema.extend({}); +export const appEnvSchema = commonEnvSchema.extend({ SIF_PUBLIC_FEATURE_NYNORSK: z.enum(['on', 'off']) }); export type AppEnv = z.infer; diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/mock/getAppSettings.cjs b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/mock/getAppSettings.cjs index efc8c02600..afe3a85767 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/mock/getAppSettings.cjs +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/mock/getAppSettings.cjs @@ -13,6 +13,7 @@ const getAppSettings = () => ({ SIF_PUBLIC_DEKORATOR_URL: `${process.env.SIF_PUBLIC_DEKORATOR_URL}`, SIF_PUBLIC_LOGIN_URL: `${process.env.SIF_PUBLIC_LOGIN_URL}`, SIF_PUBLIC_MINSIDE_URL: `${process.env.SIF_PUBLIC_MINSIDE_URL}`, + SIF_PUBLIC_FEATURE_NYNORSK: `${process.env.SIF_PUBLIC_FEATURE_NYNORSK}`, K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH: `${process.env.K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH}`, K9_BRUKERDIALOG_PROSESSERING_API_SCOPE: `${process.env.K9_BRUKERDIALOG_PROSESSERING_API_SCOPE}`, diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/nais/dev-gcp.json b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/nais/dev-gcp.json index 13c2648f47..2e77863201 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/nais/dev-gcp.json +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/nais/dev-gcp.json @@ -28,6 +28,7 @@ "SIF_PUBLIC_APPSTATUS_PROJECT_ID": "ryujtq87", "SIF_PUBLIC_DEKORATOR_URL": "https://dekoratoren.ekstern.dev.nav.no/?simple=true&chatbot=false&urlLookupTable=false&logoutUrl=https://ekstra-omsorgsdager-andre-forelder-ikke-tilsyn.intern.dev.nav.no/oauth2/logout&redirectToApp=true", "SIF_PUBLIC_LOGIN_URL": "https://ekstra-omsorgsdager-andre-forelder-ikke-tilsyn.intern.dev.nav.no/oauth2/login?redirect=/familie/sykdom-i-familien/soknad/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/soknad", - "SIF_PUBLIC_MINSIDE_URL": "https://www.intern.dev.nav.no/minside" + "SIF_PUBLIC_MINSIDE_URL": "https://www.intern.dev.nav.no/minside", + "SIF_PUBLIC_FEATURE_NYNORSK": "on" } } diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/nais/prod-gcp.json b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/nais/prod-gcp.json index 773f3c3f1e..4eb3b3afcc 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/nais/prod-gcp.json +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/nais/prod-gcp.json @@ -28,6 +28,7 @@ "SIF_PUBLIC_APPSTATUS_PROJECT_ID": "ryujtq87", "SIF_PUBLIC_DEKORATOR_URL": "https://www.nav.no/dekoratoren/?simple=true&chatbot=false&logoutUrl=https://www.nav.no/familie/sykdom-i-familien/soknad/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/oauth2/logout", "SIF_PUBLIC_LOGIN_URL": "https://www.nav.no/familie/sykdom-i-familien/soknad/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/oauth2/login?redirect=/familie/sykdom-i-familien/soknad/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/soknad", - "SIF_PUBLIC_MINSIDE_URL": "https://www.nav.no/minside" + "SIF_PUBLIC_MINSIDE_URL": "https://www.nav.no/minside", + "SIF_PUBLIC_FEATURE_NYNORSK": "off" } } diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/package.json b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/package.json index 912f342e5f..01c9a90a8e 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/package.json +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/package.json @@ -1,10 +1,15 @@ { - "author": "NAV", + "author": { + "name": "NAV" + }, "description": "Søknad om ekstra omsorgsdager når den andre forelderen ikke kan ha tilsyn med barn", "license": "MIT", "name": "@navikt/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn", "version": "1.32.0", - "repository": "https://github.com/navikt/sif-brukerdialog", + "repository": { + "type": "git", + "url": "git+https://github.com/navikt/sif-brukerdialog.git" + }, "private": true, "type": "module", "scripts": { @@ -22,12 +27,14 @@ "start-e2e-server": "node ./e2e/server/server.cjs", "start-express": "node ./server.cjs", "storybook": "storybook dev -p 6006", - "test": "vitest run" + "build-storybook": "storybook build", + "test": "vitest run", + "chromatic": "npx chromatic --project-token=chpt_7e1abb37d98312a" }, "dependencies": { - "@navikt/ds-css": "7.8.0", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", + "@navikt/ds-css": "7.9.1", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", "@navikt/sif-app-register": "*", "@navikt/sif-common-amplitude": "*", "@navikt/sif-common-core-ds": "*", @@ -44,14 +51,14 @@ "csp-header": "6.0.0", "dayjs": "1.11.13", "formik": "2.4.6", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "jsdom": "25.0.1", "object-hash": "3.0.0", "react": "19.0.0", "react-dom": "19.0.0", "react-fast-compare": "3.2.2", - "react-intl": "7.0.4", - "react-router-dom": "7.0.2" + "react-intl": "7.1.0", + "react-router-dom": "7.1.1" }, "devDependencies": { "@axe-core/playwright": "4.10.1", @@ -66,10 +73,11 @@ "@testing-library/dom": "10.4.0", "@testing-library/react": "16.1.0", "@types/object-hash": "3.0.6", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@types/react-router-dom": "5.3.3", "babel-polyfill": "6.26.0", + "chromatic": "11.22.2", "compression": "1.7.5", "cross-env": "7.0.3", "dotenv": "16.4.7", @@ -80,8 +88,8 @@ "playwright-core": "1.49.1", "rimraf": "6.0.1", "storybook": "8.4.7", - "typescript": "5.7.2", - "vite": "6.0.3", + "typescript": "5.7.3", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8" }, @@ -96,5 +104,9 @@ } } ] - } + }, + "bugs": { + "url": "https://github.com/navikt/sif-brukerdialog/issues" + }, + "homepage": "https://github.com/navikt/sif-brukerdialog#readme" } diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/App.tsx b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/App.tsx index dea5dae890..ce30b176ef 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/App.tsx +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/App.tsx @@ -33,7 +33,7 @@ const App = () => ( appTitle={OmsorgsdagerAnnenForelderIkkeTilsynApp.tittel.nb} intlMessages={applicationIntlMessages} publicPath={PUBLIC_PATH} - useLanguageSelector={false} + useLanguageSelector={appEnv.SIF_PUBLIC_FEATURE_NYNORSK === 'on'} useAmplitude={SIF_PUBLIC_USE_AMPLITUDE ? SIF_PUBLIC_USE_AMPLITUDE === 'true' : isProd()} amplitudeApiKey={SIF_PUBLIC_AMPLITUDE_API_KEY} appStatus={{ diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/all-messages.stories.tsx b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/all-messages.stories.tsx new file mode 100644 index 0000000000..f6e80b449c --- /dev/null +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/all-messages.stories.tsx @@ -0,0 +1,18 @@ +import { StoryFn } from '@storybook/react'; +import MessagesPreview from '@navikt/sif-common-core-ds/src/dev-utils/intl/messages-preview/MessagesPreview'; +import { withIntl } from '../../storybook/decorators/withIntl'; +import { applicationIntlMessages } from '.'; + +export default { + title: 'i18N/Alle tekster', + decorators: [withIntl], +}; + +const Template: StoryFn = () => ( + +); +export const Default = Template.bind({}); + +Default.args = {}; + +Default.parameters = {}; diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/app-messages.stories.tsx b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/app-messages.stories.tsx new file mode 100644 index 0000000000..2327ff3937 --- /dev/null +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/app-messages.stories.tsx @@ -0,0 +1,18 @@ +import { StoryFn } from '@storybook/react'; +import MessagesPreview from '@navikt/sif-common-core-ds/src/dev-utils/intl/messages-preview/MessagesPreview'; +import { withIntl } from '../../storybook/decorators/withIntl'; +import { appMessages } from './appMessages'; + +export default { + title: 'i18N/App-tekster', + decorators: [withIntl], +}; + +const Template: StoryFn = () => ( + +); +export const Default = Template.bind({}); + +Default.args = {}; + +Default.parameters = {}; diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/appMessages.ts b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/appMessages.ts index c32ff11a38..75d3f262bc 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/appMessages.ts +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/appMessages.ts @@ -31,7 +31,29 @@ const nb = { 'resetMellomlagring.startPåNytt': 'Start på nytt', }; -const nn: Record = { ...nb }; +const nn: Record = { + ...velkommenPageMessages.nn, + ...omAnnenForelderMessages.nn, + ...annenForelderenSituasjonMessages.nn, + ...omBarnaMessages.nn, + ...barnMessages.nn, + ...oppsummeringMessages.nn, + ...kvitteringMessages.nn, + ...validateApiDataMessages.nn, + + 'application.title': 'Søknad om ekstra omsorgsdager når den andre forelderen ikke kan ha tilsyn med barn', + + 'step.omAnnenForelder.stepTitle': 'Om den andre forelderen', + 'step.annenForelderSituasjon.stepTitle': 'Den andre forelderens situasjon', + 'step.omBarna.stepTitle': 'Om barn', + 'step.oppsummering.stepTitle': 'Oppsummering', + + 'initialLoadError.pageTitle': 'Det oppstod en feil', + 'initialLoadError.text.1': 'Det oppstod en feil under oppstarten av søknaden. Vennligst prøv igjen senere.', + + 'resetMellomlagring.text.1': 'Dersom feilen vedvarer, kan du prøve å starte på nytt med et tom skjema.', + 'resetMellomlagring.startPåNytt': 'Start på nytt', +}; export const appMessages = { nb, diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/lib-messages.stories.tsx b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/lib-messages.stories.tsx new file mode 100644 index 0000000000..14ee24c808 --- /dev/null +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/i18n/lib-messages.stories.tsx @@ -0,0 +1,18 @@ +import { StoryFn } from '@storybook/react'; +import MessagesPreview from '@navikt/sif-common-core-ds/src/dev-utils/intl/messages-preview/MessagesPreview'; +import { libMessages } from './index'; +import { withIntl } from '../../storybook/decorators/withIntl'; + +export default { + title: 'i18N/Bibliotek tekster', + decorators: [withIntl], +}; + +const Template: StoryFn = () => ( + +); +export const Default = Template.bind({}); + +Default.args = {}; + +Default.parameters = {}; diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/pages/kvittering/kvitteringMesssages.ts b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/pages/kvittering/kvitteringMesssages.ts index e986a938f3..44fdd5c336 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/pages/kvittering/kvitteringMesssages.ts +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/pages/kvittering/kvitteringMesssages.ts @@ -7,6 +7,13 @@ const nb = { 'Når søknaden er ferdigbehandlet, får du et svar fra oss på «Min side». Du kan sjekke saksbehandlingstiden her.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'kvittering.tittel': 'Me har motteke søknad om ekstra omsorgsdagar', + 'kvittering.info.tittel': 'Kva skjer vidare no?', + 'kvittering.info.1': 'Me behandlar søknaden din.', + 'kvittering.info.2': 'Me kontaktar deg dersom me treng fleire opplysningar.', + 'kvittering.info.3': + 'Når søknaden er ferdigbehandla, får du eit svar frå oss på «Min side». Du kan sjekke saksbehandlingstida her.', +}; export const kvitteringMessages = { nb, nn }; diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/pages/velkommen/velkommenPageMessages.ts b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/pages/velkommen/velkommenPageMessages.ts index 747ee84c98..75eb19f03d 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/pages/velkommen/velkommenPageMessages.ts +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/pages/velkommen/velkommenPageMessages.ts @@ -41,6 +41,48 @@ const nb = { 'Du har rett til innsyn i saken din. Vil du vite mer om hvordan Nav behandler personopplysninger? Se nav.no/personvern.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'page.velkommen.sidetittel': 'Søknad om ekstra omsorgsdagar', + 'page.velkommen.guide.tittel': 'Hei {navn}', + 'page.velkommen.guide.ingress': + 'Velkommen til søknad om ekstra omsorgsdagar når den andre forelderen ikkje kan ha tilsyn med barn.', + 'page.velkommen.guide.tekst.1': + 'Denne søknaden er for deg som skal søkje om ekstra omsorgsdagar fordi den andre forelderen ikkje kan ha tilsyn med barn i ein periode som varer i minst 6 månader. Dette er i situasjonar der den andre forelderen til dømes', + 'page.velkommen.guide.tekst.1.1': 'er fysisk eller psykisk sjuk', + 'page.velkommen.guide.tekst.1.2': 'er innlagd i helseinstitusjon', + 'page.velkommen.guide.tekst.1.3': 'har ei funksjonsnedsetting', + 'page.velkommen.guide.tekst.1.4': 'er i fengsel', + 'page.velkommen.guide.tekst.1.5': 'utfører verneplikt', + + 'page.velkommen.guide.tekst.2': + 'Dersom du får innvilga søknaden, får du dobla talet på omsorgsdagar så lenge vedtaket gjeld. Du treng ikkje søkje på nytt kvart kalenderår; vedtaket vil stadfeste kor lenge du har rett til ekstra omsorgsdagar.', + + 'page.velkommen.omSøknaden.tittel': 'Om søknaden', + 'page.velkommen.omSøknaden.1': 'Du får rettleiing undervegs i søknaden om kva du skal fylle ut, og korleis.', + 'page.velkommen.omSøknaden.2': + 'Me tek vare på svara dine i 72 timar. Dersom du til dømes vil ta ein pause eller blir automatisk logga ut, kan du halde fram der du var når du kjem tilbake.', + 'page.velkommen.omSøknaden.3': + 'Du må svare på alle spørsmåla for å kunne gå vidare. Dersom du manglar etterspurt dokumentasjon, kan du ettersende det så snart du kan.', + 'page.velkommen.omSøknaden.4': 'Om korleis me innhentar opplysningar om deg', + 'page.velkommen.harForståttRettigheterOgPlikter.notChecked': + 'Du må velje at du har forstått ansvaret ditt som søkjar', + 'personopplysninger.dialogtittel': 'Om behandling av personopplysningar', + 'personopplysninger.1': 'Slik behandlar Nav personopplysningane dine', + 'personopplysninger.2': + 'Me innhentar og mottek opplysningar om deg når me skal behandle saka di. Det er naudsynt for at du skal få riktig teneste. Saka di kan bli behandla automatisk.', + 'personopplysninger.3': 'Kva for opplysningar innhentar me?', + 'personopplysninger.4': 'Opplysningane me innhentar kjem enten frå deg eller frå offentlege register:', + 'personopplysninger.4.1': 'kva for barn du er registrert som forelder til.', + 'personopplysninger.4.2': 'kven den andre forelderen er.', + 'personopplysninger.4.3': 'arbeidssituasjonen din.', + 'personopplysninger.4.4': 'tilknytinga di til Noreg.', + 'personopplysninger.4.5': + 'trygdeordningar du kan ha rett til i andre land. Me kan òg sende opplysningar om deg til trygdemyndigheiter i andre land.', + 'personopplysninger.4.6': + 'dersom du søkjer i samband med at den andre forelderen er innlagd i helseinstitusjon, avtjenar verneplikt eller sonar fengselsstraff, kan me sjekke dette mot offentlege register ved behov.', + + 'personopplysninger.5': + 'Du har rett til innsyn i saka di. Vil du vite meir om korleis Nav behandlar personopplysningar? Sjå nav.no/personvern.', +}; export const velkommenPageMessages = { nb, nn }; diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/pre-common/forms/barn/barnMessages.ts b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/pre-common/forms/barn/barnMessages.ts index f8ebcb51b4..d8f730bac6 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/pre-common/forms/barn/barnMessages.ts +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/pre-common/forms/barn/barnMessages.ts @@ -17,7 +17,25 @@ const nb = { 'annetBarnForm.fnr.fødselsnummerIsNotAllowed': 'Du har oppgitt et fødselsnummer som du ikke kan bruke. Kontroller at du har tastet inn barnets fødselsnummer.', }; + const nn: Record = { - ...nb, + 'barn.form.title': 'Legg til barn', + 'barn.form.fnr': 'Barnet sitt fødselsnummer/D-nummer', + 'barn.form.navn': 'Barnet sitt namn', + 'barn.form.okButton': 'Ok', + 'barn.form.cancelButton': 'Avbryt', + 'barn.form.validation.required': 'Feltet er påkrevd', + 'barn.list.fnr': ' (fnr. {fnr})', + 'annetBarnForm.navn.stringHasNoValue': 'Skriv inn barnet sitt namn', + 'annetBarnForm.navn.stringIsTooShort': 'Namnet på barnet må innehalde minst {min} teikn.', + 'annetBarnForm.navn.stringIsTooLong': 'Namnet på barnet kan ikkje innehalde fleire enn {maks} teikn.', + 'annetBarnForm.fnr.fødselsnummerHasNoValue': 'Skriv inn barnet sitt fødselsnummer', + 'annetBarnForm.fnr.fødselsnummerIsInvalid': + 'Du har oppgitt eit ugyldig fødselsnummer. Kontroller at du har skrive inn riktig.', + 'annetBarnForm.fnr.fødselsnummerIsNot11Chars': + 'Du har oppgitt eit ugyldig fødselsnummer. Eit gyldig fødselsnummer består av 11 siffer.', + 'annetBarnForm.fnr.fødselsnummerIsNotAllowed': + 'Du har oppgitt eit fødselsnummer som du ikkje kan bruke. Kontroller at du har skrive inn barnet sitt fødselsnummer.', }; + export const barnMessages = { nb, nn }; diff --git "a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/annen-forelderens-situasjon/annenForelderenSituasjonMessages.ts" "b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/annen-forelderens-situasjon/annenForelderenSituasjonMessages.ts" index d31a18d635..74e2e6961c 100644 --- "a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/annen-forelderens-situasjon/annenForelderenSituasjonMessages.ts" +++ "b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/annen-forelderens-situasjon/annenForelderenSituasjonMessages.ts" @@ -118,6 +118,122 @@ const nb = { 'Du må svare om perioden er på minst 6 måneder eller ikke.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.annenForeldrensSituasjon.banner.1': + 'Her skal du gi informasjon om kva som er grunnen til at den andre forelderen ikkje kan ha tilsyn med barn i ein periode på minst 6 månader.', + + 'grunn.SYKDOM': 'Sjukdom, skade eller funksjonshemming', + 'grunn.INNLAGT_I_HELSEINSTITUSJON': 'Innlagd i helseinstitusjon', + 'grunn.FENGSEL': 'Fengsel', + 'grunn.UTØVER_VERNEPLIKT': 'Utfører verneplikt', + 'grunn.ANNET': 'Anna', + + 'step.annenForeldrensSituasjon.grunn.spm': + 'Vel ein av desse grunnane til at den andre forelderen ikkje kan ha tilsyn med barn i ein periode på 6 månader:', + 'step.annenForeldrensSituasjon.grunn.sykdom': 'Sjukdom, skade eller funksjonshemming', + 'step.annenForeldrensSituasjon.grunn.innlagtIHelseinstitusjon': 'Innlagd i helseinstitusjon', + 'step.annenForeldrensSituasjon.grunn.fengsel': 'Fengsel', + 'step.annenForeldrensSituasjon.grunn.utøverVerneplikt': 'Verneplikt', + 'step.annenForeldrensSituasjon.grunn.annet': 'Anna', + 'step.annenForeldrensSituasjon.grunn.annet.info': + 'For å få ekstra omsorgsdagar fordi den andre forelderen ikkje kan ha tilsyn med barn, må det skuldast forhold utanfor ens kontroll. Dersom forelderen er mykje borte på grunn av jobb eller studiar, gir ikkje dette rett til ekstra omsorgsdagar.', + + 'step.annenForeldrensSituasjon.beskrivelseAvSituasjonen.spm': + 'Beskriv kva som gjer at den andre forelderen ikkje kan ha tilsyn med barn:', + + 'step.annenForeldrensSituasjon.erVarighetMerEnn6Maneder.spm': 'Er perioden på minst 6 månader?', + + 'step.annenForeldrensSituasjon.periode.SYKDOM.spm': + 'I kva periode er den andre forelderen ute av stand til å ha tilsyn med barn?', + 'step.annenForeldrensSituasjon.periode.INNLAGT_I_HELSEINSTITUSJON.spm': 'I kva periode gjeld innleggelsen?', + 'step.annenForeldrensSituasjon.periode.FENGSEL.spm': 'I kva periode gjeld soninga i fengsel?', + 'step.annenForeldrensSituasjon.periode.UTØVER_VERNEPLIKT.spm': 'I kva periode blir verneplikta utført?', + 'step.annenForeldrensSituasjon.periode.ANNET.spm': 'I kva periode gjeld dette?', + + 'step.annenForeldrensSituasjon.periode.fra': 'Frå', + 'step.annenForeldrensSituasjon.periode.til': 'Til', + 'step.annenForeldrensSituasjon.periode.checkboxVetIkkeTom': 'Eg veit ikkje kor lenge perioden vil vare', + + 'step.annenForeldrensSituasjon.vetLengdePåInnleggelseperioden.spm': + 'Er det avklart kor lenge innleggelsen skal vare?', + 'step.annenForeldrensSituasjon.advarsel.1': + 'Dersom perioden den andre forelderen ikkje kan ha tilsyn med barn er på mindre enn 6 månader, kan du få avslag på søknaden.', + + 'step.annenForeldrensSituasjon.nextButtonLabel': 'Hald fram', + + 'validation.annenForelderSituasjonBeskrivelse.stringHasNoValue': + 'Skriv inn kva som gjer at den andre forelderen ikkje kan ha tilsyn med barn.', + 'validation.annenForelderSituasjonBeskrivelse.stringIsTooLong': + 'Skildringa av kva som gjer at den andre forelderen ikkje kan ha tilsyn med barn, kan ikkje innehalde fleire enn {maks} teikn.', + 'validation.annenForelderSituasjonBeskrivelse.stringIsTooShort': + 'Skildringa av kva som gjer at den andre forelderen ikkje kan ha tilsyn med barn, må innehalde minst {min} teikn.', + + 'validation.annenForelderPeriodeFom.dateHasNoValue.SYKDOM': + 'Du må oppgi frå kva dato den andre forelderen ikkje kan ta seg av barn.', + 'validation.annenForelderPeriodeFom.dateHasNoValue.INNLAGT_I_HELSEINSTITUSJON': + 'Du må oppgi frå kva dato innleggelsen gjeld.', + 'validation.annenForelderPeriodeFom.dateHasNoValue.FENGSEL': 'Du må oppgi frå kva dato soninga i fengsel gjeld.', + 'validation.annenForelderPeriodeFom.dateHasNoValue.UTØVER_VERNEPLIKT': + 'Du må oppgi frå kva dato verneplikta blir utført.', + 'validation.annenForelderPeriodeFom.dateHasNoValue.ANNET': + 'Du må oppgi frå kva dato den andre forelderen ikkje kan ta seg av barn.', + + 'validation.annenForelderPeriodeFom.fromDateIsAfterToDate.SYKDOM': + 'Frå-datoen kan ikkje vere seinare enn til-datoen.', + 'validation.annenForelderPeriodeFom.fromDateIsAfterToDate.INNLAGT_I_HELSEINSTITUSJON': + 'Frå-datoen kan ikkje vere seinare enn til-datoen.', + 'validation.annenForelderPeriodeFom.fromDateIsAfterToDate.FENGSEL': + 'Frå-datoen kan ikkje vere seinare enn til-datoen.', + 'validation.annenForelderPeriodeFom.fromDateIsAfterToDate.UTØVER_VERNEPLIKT': + 'Frå-datoen kan ikkje vere seinare enn til-datoen.', + 'validation.annenForelderPeriodeFom.fromDateIsAfterToDate.ANNET': + 'Frå-datoen kan ikkje vere seinare enn til-datoen.', + + 'validation.annenForelderPeriodeFom.dateHasInvalidFormat.SYKDOM': + 'Du må oppgi frå kva dato den andre forelderen ikkje kan ha tilsyn med barn i eit gyldig format. Gyldig format er dd.mm.åååå.', + 'validation.annenForelderPeriodeFom.dateHasInvalidFormat.INNLAGT_I_HELSEINSTITUSJON': + 'Du må oppgi frå kva dato innleggelsen gjeld i eit gyldig format. Gyldig format er dd.mm.åååå.', + 'validation.annenForelderPeriodeFom.dateHasInvalidFormat.FENGSEL': + 'Du må oppgi frå kva dato soninga i fengsel gjeld i eit gyldig format. Gyldig format er dd.mm.åååå.', + 'validation.annenForelderPeriodeFom.dateHasInvalidFormat.UTØVER_VERNEPLIKT': + 'Du må oppgi frå kva dato verneplikta blir utført i eit gyldig format. Gyldig format er dd.mm.åååå.', + 'validation.annenForelderPeriodeFom.dateHasInvalidFormat.ANNET': + 'Du må oppgi frå kva dato den andre forelderen ikkje kan ha tilsyn med barn i eit gyldig format. Gyldig format er dd.mm.åååå.', + + 'validation.annenForelderPeriodeTom.dateHasNoValue.SYKDOM': + 'Du må oppgi til kva dato den andre forelderen ikkje kan ta seg av barn.', + 'validation.annenForelderPeriodeTom.dateHasNoValue.INNLAGT_I_HELSEINSTITUSJON': + 'Du må oppgi til kva dato innleggelsen gjeld.', + 'validation.annenForelderPeriodeTom.dateHasNoValue.FENGSEL': 'Du må oppgi til kva dato soninga i fengsel gjeld.', + 'validation.annenForelderPeriodeTom.dateHasNoValue.UTØVER_VERNEPLIKT': + 'Du må oppgi til kva dato verneplikta blir utført.', + 'validation.annenForelderPeriodeTom.dateHasNoValue.ANNET': + 'Du må oppgi til kva dato den andre forelderen ikkje kan ta seg av barn.', + + 'validation.annenForelderPeriodeTom.toDateIsBeforeFromDate.SYKDOM': + 'Til-datoen kan ikkje vere tidlegare enn frå-datoen.', + 'validation.annenForelderPeriodeTom.toDateIsBeforeFromDate.INNLAGT_I_HELSEINSTITUSJON': + 'Til-datoen kan ikkje vere tidlegare enn frå-datoen.', + 'validation.annenForelderPeriodeTom.toDateIsBeforeFromDate.FENGSEL': + 'Til-datoen kan ikkje vere tidlegare enn frå-datoen.', + 'validation.annenForelderPeriodeTom.toDateIsBeforeFromDate.UTØVER_VERNEPLIKT': + 'Til-datoen kan ikkje vere tidlegare enn frå-datoen.', + 'validation.annenForelderPeriodeTom.toDateIsBeforeFromDate.ANNET': + 'Til-datoen kan ikkje vere tidlegare enn frå-datoen.', + + 'validation.annenForelderPeriodeTom.dateHasInvalidFormat.SYKDOM': + 'Du må oppgi til kva dato den andre forelderen ikkje kan ha tilsyn med barn i eit gyldig format. Gyldig format er dd.mm.åååå.', + 'validation.annenForelderPeriodeTom.dateHasInvalidFormat.INNLAGT_I_HELSEINSTITUSJON': + 'Du må oppgi til kva dato innleggelsen gjeld i eit gyldig format. Gyldig format er dd.mm.åååå.', + 'validation.annenForelderPeriodeTom.dateHasInvalidFormat.FENGSEL': + 'Du må oppgi til kva dato soninga i fengsel gjeld i eit gyldig format. Gyldig format er dd.mm.åååå.', + 'validation.annenForelderPeriodeTom.dateHasInvalidFormat.UTØVER_VERNEPLIKT': + 'Du må oppgi til kva dato verneplikta blir utført i eit gyldig format. Gyldig format er dd.mm.åååå.', + 'validation.annenForelderPeriodeTom.dateHasInvalidFormat.ANNET': + 'Du må oppgi til kva dato den andre forelderen ikkje kan ha tilsyn med barn i eit gyldig format. Gyldig format er dd.mm.åååå.', + + 'validation.annenForelderPeriodeMer6Maneder.yesOrNoIsUnanswered': + 'Du må svare på om perioden er på minst 6 månader eller ikkje.', +}; export const annenForelderenSituasjonMessages = { nb, nn }; diff --git "a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/om-annen-forelder/omAnnenForelderMessages.ts" "b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/om-annen-forelder/omAnnenForelderMessages.ts" index bb00ec7834..85b3f6956b 100644 --- "a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/om-annen-forelder/omAnnenForelderMessages.ts" +++ "b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/om-annen-forelder/omAnnenForelderMessages.ts" @@ -27,6 +27,33 @@ const nb = { 'Du må velge én av disse grunnene til at den andre forelderen ikke kan ha tilsyn med barn i en periode på 6 måneder.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.omAnnenForelder.sifGuidePanel': 'Her legg du inn informasjon om den andre forelderen som ', + 'step.omAnnenForelder.sifGuidePanel.list.1': 'du bur saman med, og', + 'step.omAnnenForelder.sifGuidePanel.list.2': 'som ikkje kan ha tilsyn med barn i ein periode på minst 6 månader', + 'step.omAnnenForelder.fnr.spm': 'Skriv inn fødselsnummeret til den andre forelderen, 11 siffer', + 'step.omAnnenForelder.navn.spm': 'Skriv inn namnet til den andre forelderen', + + 'step.omAnnenForelder.nextButtonLabel': 'Hald fram', + + 'fieldvalidation.mottakersFnrErSøkersFnr': 'Du har skrive inn ditt eige fødselsnummer', + + 'validation.harForståttRettigheterOgPlikter.notChecked': + 'Du må stadfeste at du har lese og forstått pliktene dine.', + 'validation.annenForelderNavn.stringHasNoValue': 'Skriv inn namnet til den andre forelderen.', + 'validation.annenForelderNavn.stringIsTooLong': + 'Namnet på den andre forelderen kan ikkje innehalde fleire enn {maks} teikn.', + 'validation.annenForelderNavn.stringIsTooShort': 'Namnet på den andre forelderen må innehalde minst {min} teikn.', + + 'validation.annenForelderFnr.fødselsnummerHasNoValue': 'Skriv inn fødselsnummeret til den andre forelderen.', + 'validation.annenForelderFnr.fødselsnummerIsInvalid': + 'Du har oppgitt eit ugyldig fødselsnummer. Kontroller at du har skrive inn riktig.', + 'validation.annenForelderFnr.fødselsnummerIsNot11Chars': + 'Du har oppgitt eit ugyldig fødselsnummer. Eit gyldig fødselsnummer består av 11 siffer.', + 'validation.annenForelderFnr.fødselsnummerIsNotAllowed': + 'Fødselsnummeret kan ikkje vere ditt eige. Legg inn fødselsnummeret til den andre forelderen.', + 'validation.annenForelderSituasjon.noValue': + 'Du må velje éin av desse grunnane til at den andre forelderen ikkje kan ha tilsyn med barn i ein periode på 6 månader.', +}; export const omAnnenForelderMessages = { nb, nn }; diff --git "a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/om-barna/omBarnaMessages.ts" "b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/om-barna/omBarnaMessages.ts" index 46fd6a9aea..9861bc730f 100644 --- "a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/om-barna/omBarnaMessages.ts" +++ "b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/om-barna/omBarnaMessages.ts" @@ -14,6 +14,19 @@ const nb = { 'step.omBarna.nextButtonLabel': 'Fortsett', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.omBarna.listHeader.registrerteBarn': 'Barna dine', + 'step.omBarna.spm.andreBarn': 'Har du andre barn?', + 'step.omBarna.spm.flereBarn': 'Har du fleire barn?', + 'step.omBarna.info.ingenbarn.2': 'Du må legge til minst eitt barn for å kunne gå vidare.', + 'step.omBarna.info.spm.text': + 'Har du barn som ikkje er registrerte her, kan du legge inn desse sjølv. Det kan til dømes vere fosterbarn.', + 'step.omBarna.født': 'Fødd', + 'step.omBarna.listDialog.knapplabel': 'Legg til barn', + 'step.omBarna.listDialog.listTitle': 'Andre barn', + 'step.omBarna.listDialog.modalTitle': 'Legg til barn', + + 'step.omBarna.nextButtonLabel': 'Hald fram', +}; export const omBarnaMessages = { nb, nn }; diff --git "a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" "b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" index 6d3b4dd7b8..0003aed7cf 100644 --- "a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" +++ "b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" @@ -33,6 +33,38 @@ const nb = { 'validation.harBekreftetOpplysninger.notChecked': 'Du må bekrefte opplysningene.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.oppsummering.nextButtonLabel': 'Send inn søknaden', + 'step.oppsummering.info': + 'Les gjennom oppsummeringa og sjekk at alt er riktig før du sender inn søknaden. Dersom du vil gjere endringar, kan du gå tilbake.', + + 'step.oppsummering.søker.header': 'Om deg som søkjar', + 'step.oppsummering.søker.navn': 'Namn', + 'step.oppsummering.søker.fnr': 'Fødselsnummer', + + 'step.oppsummering.omBarna.header': 'Om barn', + 'step.oppsummering.omBarna.barn': 'Barna dine', + 'step.oppsummering.omBarna.listItem': ' (fnr. {identitetsnummer})', + + 'step.oppsummering.annenForelder.header': 'Om den andre forelderen', + 'step.oppsummering.annenForelder.navn': 'Namn', + 'step.oppsummering.annenForelder.fnr': 'Fødselsnummer', + 'step.oppsummering.annenForelderensSituasjon.header': 'Den andre forelderen sin situasjon', + 'step.oppsummering.annenForelderensSituasjon.erVarighetMerEnn6Maneder': + 'Har du stadfesta at den andre forelderen ikkje kan ha tilsyn med barn i ein periode på minst 6 månader?', + 'step.oppsummering.annenForelderensSituasjon.tittel': + 'Grunn til at den andre forelderen ikkje kan ha tilsyn med barn:', + 'step.oppsummering.annenForelderensSituasjon.beskrivelse': 'Skildring av situasjonen:', + 'step.oppsummering.annenForelderensSituasjon.periode.header': + 'Periode når den andre forelderen ikkje kan ha tilsyn med barnet/barna:', + 'step.oppsummering.annenForelderensSituasjon.VetIkkeHvorLengePerioden': 'Eg veit ikkje kor lenge perioden vil vare', + + 'step.oppsummering.bekrefterOpplysninger': + 'Eg stadfestar at opplysningane eg har gitt er riktige, og at eg ikkje har halde tilbake opplysningar som har betydning for mi rett til omsorgsdagar.', + + 'step.oppsummering.sendSøknad': 'Send søknad', + + 'validation.harBekreftetOpplysninger.notChecked': 'Du må stadfeste opplysningane.', +}; export const oppsummeringMessages = { nb, nn }; diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/utils/appEnv.ts b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/utils/appEnv.ts index baa39e1d22..620b7d0e9c 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/utils/appEnv.ts +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/app/utils/appEnv.ts @@ -1,8 +1,9 @@ -import { getCommonEnv } from '@navikt/sif-common-env'; +import { getCommonEnv, getRequiredEnv } from '@navikt/sif-common-env'; import { AppEnv } from '../../../env.schema'; const getAppEnv = (): AppEnv => ({ ...getCommonEnv(), + SIF_PUBLIC_FEATURE_NYNORSK: getRequiredEnv('SIF_PUBLIC_FEATURE_NYNORSK') === 'on' ? 'on' : 'off', }); export const appEnv = getAppEnv(); diff --git a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/storybook/decorators/withIntl.tsx b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/storybook/decorators/withIntl.tsx index 57d56abd99..844c46fee0 100644 --- a/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/storybook/decorators/withIntl.tsx +++ b/apps/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/src/storybook/decorators/withIntl.tsx @@ -1,4 +1,3 @@ -import * as React from 'react'; import StoryIntlProvider from '../components/StoryIntlProvider'; export const withIntl = (Story) => ( diff --git a/apps/endringsmelding-pleiepenger/package.json b/apps/endringsmelding-pleiepenger/package.json index aa6aaac7f8..c4bcd6edb8 100644 --- a/apps/endringsmelding-pleiepenger/package.json +++ b/apps/endringsmelding-pleiepenger/package.json @@ -8,10 +8,10 @@ "version": "2.36.0", "private": true, "dependencies": { - "@navikt/ds-css": "7.8.0", + "@navikt/ds-css": "7.9.1", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", "@navikt/sif-common-amplitude": "*", "@navikt/sif-common-core-ds": "*", "@navikt/sif-common-env": "*", @@ -28,7 +28,7 @@ "dayjs": "1.11.13", "flat": "6.0.1", "formik": "2.4.6", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "intl": "1.2.5", "jsdom": "25.0.1", "lodash": "4.17.21", @@ -36,8 +36,8 @@ "react": "19.0.0", "react-day-picker": "8.10.1", "react-dom": "19.0.0", - "react-intl": "7.0.4", - "react-router-dom": "7.0.2" + "react-intl": "7.1.0", + "react-router-dom": "7.1.1" }, "devDependencies": { "@axe-core/playwright": "4.10.1", @@ -48,10 +48,10 @@ "@babel/preset-react": "7.26.3", "@babel/preset-typescript": "7.26.0", "@mswjs/data": "0.16.2", - "@navikt/ds-tailwind": "7.8.0", - "@navikt/nav-dekoratoren-moduler": "3.1.1", + "@navikt/ds-tailwind": "7.9.1", + "@navikt/nav-dekoratoren-moduler": "3.1.3", "@playwright/test": "1.49.1", - "@sentry/vite-plugin": "2.22.7", + "@sentry/vite-plugin": "2.23.0", "@sif/eslint-config": "*", "@storybook/addon-actions": "8.4.7", "@storybook/addon-essentials": "8.4.7", @@ -66,9 +66,9 @@ "@types/intl": "1.2.2", "@types/js-cookie": "3.0.6", "@types/object-hash": "3.0.6", - "@types/react": "19.0.1", + "@types/react": "19.0.6", "@types/react-document-title": "2.0.10", - "@types/react-dom": "19.0.2", + "@types/react-dom": "19.0.3", "@types/react-router-dom": "5.3.3", "@vitejs/plugin-react": "4.3.4", "axe-core": "4.10.2", @@ -79,7 +79,7 @@ "express": "4.21.2", "http-proxy-middleware": "3.0.3", "mockdate": "3.0.5", - "msw": "2.6.9", + "msw": "2.7.0", "mustache-express": "1.3.2", "playwright-core": "1.49.1", "postcss": "8.4.49", @@ -87,9 +87,9 @@ "react-responsive": "10.0.0", "storybook": "8.4.7", "storybook-addon-mock": "5.0.0", - "tailwindcss": "3.4.16", - "typescript": "5.7.2", - "vite": "6.0.3", + "tailwindcss": "3.4.17", + "typescript": "5.7.3", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8" }, diff --git a/apps/endringsmelding-pleiepenger/src/app/components/tags/icon-tag/IconTag.tsx b/apps/endringsmelding-pleiepenger/src/app/components/tags/icon-tag/IconTag.tsx index 5e80743630..29d99a0d0f 100644 --- a/apps/endringsmelding-pleiepenger/src/app/components/tags/icon-tag/IconTag.tsx +++ b/apps/endringsmelding-pleiepenger/src/app/components/tags/icon-tag/IconTag.tsx @@ -1,9 +1,9 @@ import { Tag, TagProps } from '@navikt/ds-react'; -import React from 'react'; +import React, { ReactElement } from 'react'; import './iconTag.scss'; interface Props extends TagProps { - icon?: JSX.Element; + icon?: ReactElement; } const IconTag: React.FunctionComponent = ({ className, icon, size = 'small', children, ...rest }) => ( diff --git a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeListe.tsx b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeListe.tsx index 1758b9f642..28e654f6f7 100644 --- a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeListe.tsx +++ b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeListe.tsx @@ -1,20 +1,20 @@ import { BodyShort, Heading } from '@navikt/ds-react'; -import React from 'react'; +import React, { ReactElement } from 'react'; import Block from '@navikt/sif-common-core-ds/src/atoms/block/Block'; import { dateFormatter } from '@navikt/sif-common-utils'; import dayjs from 'dayjs'; import { SelectableListType } from '../../../hooks/useSelectableList'; +import { AppText } from '../../../i18n'; import { ArbeidstidUkerItem } from '../types/ArbeidstidUkerItem'; import ArbeidstidUkeInfoListe from './ArbeidstidUkeInfoListe'; import UkeTags from './UkeTags'; import VelgArbeidsukeItem from './VelgArbeidsukeItem'; -import { AppText } from '../../../i18n'; interface Props { uker: ArbeidstidUkerItem[]; selectableList: SelectableListType; visEndringSomOpprinnelig?: boolean; - renderEditButton: (uke: ArbeidstidUkerItem, ukenummer: number, renderLabel: boolean) => JSX.Element | undefined; + renderEditButton: (uke: ArbeidstidUkerItem, ukenummer: number, renderLabel: boolean) => ReactElement | undefined; } const ArbeidstidUkeListe: React.FunctionComponent = ({ diff --git a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeTabell.tsx b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeTabell.tsx index 187976a377..18eb0d55f4 100644 --- a/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeTabell.tsx +++ b/apps/endringsmelding-pleiepenger/src/app/modules/arbeidstid-uker/components/ArbeidstidUkeTabell.tsx @@ -1,17 +1,17 @@ import { Checkbox, Table, Tooltip } from '@navikt/ds-react'; -import React from 'react'; +import React, { ReactElement } from 'react'; import AriaText from '@navikt/sif-common-core-ds/src/atoms/aria-text/AriaText'; import Block from '@navikt/sif-common-core-ds/src/atoms/block/Block'; import { DurationText } from '@navikt/sif-common-ui'; import { dateFormatter, getDateRangeText } from '@navikt/sif-common-utils'; import dayjs from 'dayjs'; import { SelectableListType } from '../../../hooks/useSelectableList'; +import { AppText, useAppIntl } from '../../../i18n'; import { ArbeidstidUkerItem } from '../types/ArbeidstidUkerItem'; import ArbeidstidUkeInfo from './ArbeidstidUkeInfo'; import UkeInfoIkon from './UkeInfo'; import UkeTags from './UkeTags'; import VelgArbeidsukeItem from './VelgArbeidsukeItem'; -import { AppText, useAppIntl } from '../../../i18n'; interface Props { uker: ArbeidstidUkerItem[]; @@ -19,8 +19,8 @@ interface Props { visEndringSomOpprinnelig?: boolean; renderCompactTable: boolean; arbeidstidKolonneTittel?: string; - renderEditButton: (uke: ArbeidstidUkerItem, ukenummer: number, renderLabel: boolean) => JSX.Element | undefined; - renderUkerFooter: () => JSX.Element; + renderEditButton: (uke: ArbeidstidUkerItem, ukenummer: number, renderLabel: boolean) => ReactElement | undefined; + renderUkerFooter: () => ReactElement; } const ArbeidstidUkeTabell: React.FunctionComponent = ({ diff --git a/apps/omsorgsdager-aleneomsorg-dialog/.env.example b/apps/omsorgsdager-aleneomsorg-dialog/.env.example index 0ca3e11766..dc747f3de2 100644 --- a/apps/omsorgsdager-aleneomsorg-dialog/.env.example +++ b/apps/omsorgsdager-aleneomsorg-dialog/.env.example @@ -10,6 +10,7 @@ SIF_PUBLIC_DEKORATOR_URL=https://dekoratoren.ekstern.dev.nav.no/?simple=true&cha SIF_PUBLIC_LOGIN_URL=https://omsorgsdager-aleneomsorg-dialog.intern.dev.nav.no/oauth2/login?redirect=/familie/sykdom-i-familien/soknad/omsorgsdager-aleneomsorg/soknad SIF_PUBLIC_MINSIDE_URL=https://www.intern.dev.nav.no/minside SIF_PUBLIC_OMS_IKKE_TILSYN_URL=https://ekstra-omsorgsdager-andre-forelder-ikke-tilsyn.intern.dev.nav.no/ +SIF_PUBLIC_FEATURE_NYNORSK=on SIF_PUBLIC_USE_FARO=true K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH=/api/brukerdialog diff --git a/apps/omsorgsdager-aleneomsorg-dialog/.storybook/main.ts b/apps/omsorgsdager-aleneomsorg-dialog/.storybook/main.ts new file mode 100644 index 0000000000..1015efd91f --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/.storybook/main.ts @@ -0,0 +1,25 @@ +import { join, dirname } from 'path'; + +function getAbsolutePath(value) { + return dirname(require.resolve(join(value, 'package.json'))); +} + +export default { + stories: ['../src/app/**/*.stories.@(ts|tsx)', '../src/storybook/**/*.stories.@(js|jsx|ts|tsx)'], + addons: [ + getAbsolutePath('@storybook/addon-essentials'), + getAbsolutePath('@storybook/addon-interactions'), + getAbsolutePath('@storybook/addon-a11y'), + getAbsolutePath('@storybook/addon-toolbars'), + ], + framework: { + name: '@storybook/react-vite', + options: {}, + }, + docs: { + autodocs: false, + }, + typescript: { + reactDocgen: 'react-docgen-typescript-plugin', + }, +}; diff --git a/apps/omsorgsdager-aleneomsorg-dialog/.storybook/preview-head.html b/apps/omsorgsdager-aleneomsorg-dialog/.storybook/preview-head.html new file mode 100644 index 0000000000..7747e8505f --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/.storybook/preview-head.html @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/apps/omsorgsdager-aleneomsorg-dialog/.storybook/preview.ts b/apps/omsorgsdager-aleneomsorg-dialog/.storybook/preview.ts new file mode 100644 index 0000000000..3c9df2a9fa --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/.storybook/preview.ts @@ -0,0 +1,36 @@ +import { Preview } from '@storybook/react'; +import '@navikt/ds-css'; + +const preview: Preview = { + globalTypes: { + locale: { + name: 'Språk', + description: 'Velg språk som skal brukes i komponenten', + defaultValue: 'nb', + toolbar: { + icon: 'globe', + items: [ + { value: 'nb', title: 'Bokmål' }, + { value: 'nn', title: 'Nynorsk' }, + ], + }, + }, + }, + parameters: { + actions: { argTypesRegex: '^on[A-Z].*' }, + options: { + storySort: { + method: 'alphabetical', + order: ['Components', 'Steps', ['OmBarnet', 'Legeerklæring', 'DeltBosted', 'Oppsummering'], 'Pages'], + }, + }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, + }, +}; + +export default preview; diff --git a/apps/omsorgsdager-aleneomsorg-dialog/e2e/playwright/playwright.env.ts b/apps/omsorgsdager-aleneomsorg-dialog/e2e/playwright/playwright.env.ts index 37d8bc0d89..0a9416e497 100644 --- a/apps/omsorgsdager-aleneomsorg-dialog/e2e/playwright/playwright.env.ts +++ b/apps/omsorgsdager-aleneomsorg-dialog/e2e/playwright/playwright.env.ts @@ -14,6 +14,7 @@ export const playwrightEnv: AppEnv = { 'https://omsorgsdager-aleneomsorg-dialog.intern.dev.nav.no/oauth2/login?redirect=/familie/sykdom-i-familien/soknad/omsorgsdager-aleneomsorg/soknad', SIF_PUBLIC_MINSIDE_URL: 'https://www.intern.dev.nav.no/minside', SIF_PUBLIC_OMS_IKKE_TILSYN_URL: 'https://ekstra-omsorgsdager-andre-forelder-ikke-tilsyn.intern.dev.nav.no/', + SIF_PUBLIC_FEATURE_NYNORSK: 'on', SIF_PUBLIC_USE_FARO: 'true', K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH: '/api/brukerdialog', K9_BRUKERDIALOG_PROSESSERING_API_SCOPE: 'dev-gcp:dusseldorf:k9-brukerdialog-prosessering', diff --git a/apps/omsorgsdager-aleneomsorg-dialog/env.schema.ts b/apps/omsorgsdager-aleneomsorg-dialog/env.schema.ts index 0c3f9c1dec..623a1f782d 100644 --- a/apps/omsorgsdager-aleneomsorg-dialog/env.schema.ts +++ b/apps/omsorgsdager-aleneomsorg-dialog/env.schema.ts @@ -2,6 +2,7 @@ import { commonEnvSchema } from '@navikt/sif-common-env'; import * as z from 'zod'; export const appEnvSchema = commonEnvSchema.extend({ + SIF_PUBLIC_FEATURE_NYNORSK: z.enum(['on', 'off']), SIF_PUBLIC_OMS_IKKE_TILSYN_URL: z.string().min(1), SIF_PUBLIC_USE_FARO: z.enum(['true', 'false']).optional(), }); diff --git a/apps/omsorgsdager-aleneomsorg-dialog/mock/AppSettings.cjs b/apps/omsorgsdager-aleneomsorg-dialog/mock/AppSettings.cjs index c48ba6cdc3..b91f56bd87 100644 --- a/apps/omsorgsdager-aleneomsorg-dialog/mock/AppSettings.cjs +++ b/apps/omsorgsdager-aleneomsorg-dialog/mock/AppSettings.cjs @@ -16,6 +16,7 @@ const getAppSettings = () => ({ SIF_PUBLIC_OMS_IKKE_TILSYN_URL: `${process.env.SIF_PUBLIC_OMS_IKKE_TILSYN_URL}`, SIF_PUBLIC_USE_AMPLITUDE: `${process.env.SIF_PUBLIC_USE_AMPLITUDE}`, SIF_PUBLIC_AMPLITUDE_API_KEY: `${process.env.SIF_PUBLIC_AMPLITUDE_API_KEY}`, + SIF_PUBLIC_FEATURE_NYNORSK: `${process.env.SIF_PUBLIC_FEATURE_NYNORSK}`, SIF_PUBLIC_USE_FARO: `${process.env.SIF_PUBLIC_USE_FARO}`, K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH: `${process.env.K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH}`, diff --git a/apps/omsorgsdager-aleneomsorg-dialog/nais/dev-gcp.json b/apps/omsorgsdager-aleneomsorg-dialog/nais/dev-gcp.json index ae9b9d8aaa..5a63f3a609 100644 --- a/apps/omsorgsdager-aleneomsorg-dialog/nais/dev-gcp.json +++ b/apps/omsorgsdager-aleneomsorg-dialog/nais/dev-gcp.json @@ -31,6 +31,7 @@ "SIF_PUBLIC_LOGIN_URL": "https://omsorgsdager-aleneomsorg-dialog.intern.dev.nav.no/oauth2/login?redirect=/familie/sykdom-i-familien/soknad/omsorgsdager-aleneomsorg/soknad", "SIF_PUBLIC_MINSIDE_URL": "https://www.intern.dev.nav.no/minside", "SIF_PUBLIC_OMS_IKKE_TILSYN_URL": "https://ekstra-omsorgsdager-andre-forelder-ikke-tilsyn.intern.dev.nav.no/", + "SIF_PUBLIC_FEATURE_NYNORSK": "on", "SIF_PUBLIC_USE_FARO": "true" } } diff --git a/apps/omsorgsdager-aleneomsorg-dialog/nais/prod-gcp.json b/apps/omsorgsdager-aleneomsorg-dialog/nais/prod-gcp.json index 65f811146f..5be9fdaf3e 100644 --- a/apps/omsorgsdager-aleneomsorg-dialog/nais/prod-gcp.json +++ b/apps/omsorgsdager-aleneomsorg-dialog/nais/prod-gcp.json @@ -29,6 +29,7 @@ "SIF_PUBLIC_LOGIN_URL": "https://www.nav.no/familie/sykdom-i-familien/soknad/omsorgsdager-aleneomsorg/oauth2/login?redirect=/familie/sykdom-i-familien/soknad/omsorgsdager-aleneomsorg/soknad", "SIF_PUBLIC_MINSIDE_URL": "https://www.nav.no/minside", "SIF_PUBLIC_OMS_IKKE_TILSYN_URL": "https://www.nav.no/familie/sykdom-i-familien/soknad/ekstra-omsorgsdager-andre-forelder-ikke-tilsyn/soknad", + "SIF_PUBLIC_FEATURE_NYNORSK": "off", "SIF_PUBLIC_USE_FARO": "true" } } diff --git a/apps/omsorgsdager-aleneomsorg-dialog/package.json b/apps/omsorgsdager-aleneomsorg-dialog/package.json index fcd10deed7..af84502bd8 100644 --- a/apps/omsorgsdager-aleneomsorg-dialog/package.json +++ b/apps/omsorgsdager-aleneomsorg-dialog/package.json @@ -1,9 +1,14 @@ { - "author": "NAV", + "author": { + "name": "NAV" + }, "description": "Søknad om ekstra omsorgsdager ved aleneomsorg for barn", "license": "MIT", "name": "@navikt/omsorgsdager-aleneomsorg-dialog", - "repository": "https://github.com/navikt/sif-brukerdialog", + "repository": { + "type": "git", + "url": "git+https://github.com/navikt/sif-brukerdialog.git" + }, "version": "2.25.0", "private": true, "type": "module", @@ -18,12 +23,15 @@ "lint:fix": "eslint --quiet --fix './src/**/*.{js,ts,tsx}'", "lint:tsc": "tsc --noEmit", "playwright-test": "playwright test", - "start-e2e-server": "node ./e2e/server/server.cjs" + "start-e2e-server": "node ./e2e/server/server.cjs", + "storybook": "storybook dev -p 6006", + "build-storybook": "storybook build", + "chromatic": "npx chromatic --project-token=" }, "dependencies": { - "@navikt/ds-css": "7.8.0", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", + "@navikt/ds-css": "7.9.1", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", "@navikt/sif-app-register": "*", "@navikt/sif-common-amplitude": "*", "@navikt/sif-common-core-ds": "*", @@ -41,15 +49,15 @@ "csp-header": "6.0.0", "dayjs": "1.11.13", "formik": "2.4.6", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "jsdom": "25.0.1", "object-hash": "3.0.0", "react": "19.0.0", "react-dom": "19.0.0", "react-fast-compare": "3.2.2", - "react-intl": "7.0.4", - "react-router-dom": "7.0.2", - "uuid": "11.0.3" + "react-intl": "7.1.0", + "react-router-dom": "7.1.1", + "uuid": "11.0.5" }, "devDependencies": { "@axe-core/playwright": "4.10.1", @@ -58,15 +66,24 @@ "@babel/plugin-transform-modules-commonjs": "7.26.3", "@babel/preset-env": "7.26.0", "@babel/preset-react": "7.26.3", + "@chromatic-com/storybook": "^3.2.3", "@playwright/test": "1.49.1", "@sif/eslint-config": "*", + "@storybook/addon-essentials": "^8.4.7", + "@storybook/addon-interactions": "^8.4.7", + "@storybook/addon-onboarding": "^8.4.7", + "@storybook/blocks": "^8.4.7", + "@storybook/react": "^8.4.7", + "@storybook/react-vite": "^8.4.7", + "@storybook/test": "^8.4.7", "@testing-library/dom": "10.4.0", "@types/object-hash": "3.0.6", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@types/react-router-dom": "5.3.3", "@vitejs/plugin-react": "4.3.4", "babel-polyfill": "6.26.0", + "chromatic": "11.22.2", "compression": "1.7.5", "cors": "2.8.5", "cross-env": "7.0.3", @@ -77,8 +94,13 @@ "less": "4.2.1", "mustache-express": "1.3.2", "playwright-core": "1.49.1", - "typescript": "5.7.2", - "vite": "6.0.3", + "storybook": "^8.4.7", + "typescript": "5.7.3", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0" - } + }, + "bugs": { + "url": "https://github.com/navikt/sif-brukerdialog/issues" + }, + "homepage": "https://github.com/navikt/sif-brukerdialog#readme" } diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/app/App.tsx b/apps/omsorgsdager-aleneomsorg-dialog/src/app/App.tsx index 3583d5a3b4..0f9171d9b8 100644 --- a/apps/omsorgsdager-aleneomsorg-dialog/src/app/App.tsx +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/app/App.tsx @@ -32,6 +32,7 @@ const App = () => ( appName={OmsorgsdagerAleneomsorgApp.navn} appTitle={OmsorgsdagerAleneomsorgApp.tittel.nb} intlMessages={applicationIntlMessages} + useLanguageSelector={appEnv.SIF_PUBLIC_FEATURE_NYNORSK === 'on'} appStatus={{ sanityConfig: { projectId: SIF_PUBLIC_APPSTATUS_PROJECT_ID, diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/all-messages.stories.tsx b/apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/all-messages.stories.tsx new file mode 100644 index 0000000000..f6e80b449c --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/all-messages.stories.tsx @@ -0,0 +1,18 @@ +import { StoryFn } from '@storybook/react'; +import MessagesPreview from '@navikt/sif-common-core-ds/src/dev-utils/intl/messages-preview/MessagesPreview'; +import { withIntl } from '../../storybook/decorators/withIntl'; +import { applicationIntlMessages } from '.'; + +export default { + title: 'i18N/Alle tekster', + decorators: [withIntl], +}; + +const Template: StoryFn = () => ( + +); +export const Default = Template.bind({}); + +Default.args = {}; + +Default.parameters = {}; diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/app-messages.stories.tsx b/apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/app-messages.stories.tsx new file mode 100644 index 0000000000..2327ff3937 --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/app-messages.stories.tsx @@ -0,0 +1,18 @@ +import { StoryFn } from '@storybook/react'; +import MessagesPreview from '@navikt/sif-common-core-ds/src/dev-utils/intl/messages-preview/MessagesPreview'; +import { withIntl } from '../../storybook/decorators/withIntl'; +import { appMessages } from './appMessages'; + +export default { + title: 'i18N/App-tekster', + decorators: [withIntl], +}; + +const Template: StoryFn = () => ( + +); +export const Default = Template.bind({}); + +Default.args = {}; + +Default.parameters = {}; diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/appMessages.ts b/apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/appMessages.ts index 1abe549ffa..0919462c23 100644 --- a/apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/appMessages.ts +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/appMessages.ts @@ -16,22 +16,33 @@ const nb = { ...validateApiDataMessages.nb, 'application.title': 'Søknad om ekstra omsorgsdager ved aleneomsorg', - 'step.omOmsorgenForBarn.stepTitle': 'Om aleneomsorg for barn', 'step.tidspunktForAleneomsorg.stepTitle': 'Tidspunkt for aleneomsorg', 'step.oppsummering.stepTitle': 'Oppsummering', - 'initialLoadError.pageTitle': 'Det oppstod en feil', 'initialLoadError.text.1': 'Det oppstod en feil under oppstarten av søknaden. Vennligst prøv igjen senere.', - 'resetMellomlagring.text.1': 'Dersom feilen vedvarer, kan du prøve å starte på nytt med et tom skjema.', 'resetMellomlagring.startPåNytt': 'Start på nytt', - 'validation.harForståttRettigheterOgPlikter.notChecked': 'Du må bekrefte at du har lest og forstått dine plikter.', }; const nn: Record = { - ...nb, + ...velkommenPageMessages.nn, + ...omOmsorgenForBarnMessages.nn, + ...annetBarnMessages.nn, + ...tidspunktForAleneomsorgMessages.nn, + ...oppsummeringMessages.nn, + ...kvitteringMessages.nn, + ...validateApiDataMessages.nn, + 'application.title': 'Søknad om ekstra omsorgsdagar ved åleineomsorg', + 'step.omOmsorgenForBarn.stepTitle': 'Om åleineomsorg for barn', + 'step.tidspunktForAleneomsorg.stepTitle': 'Tidspunkt for åleineomsorg', + 'step.oppsummering.stepTitle': 'Oppsummering', + 'initialLoadError.pageTitle': 'Det oppstod ein feil', + 'initialLoadError.text.1': 'Det oppstod ein feil under oppstarten av søknaden. Ver venleg og prøv igjen seinare.', + 'resetMellomlagring.text.1': 'Dersom feilen varer ved, kan du prøve å starte på nytt med eit tomt skjema.', + 'resetMellomlagring.startPåNytt': 'Start på nytt', + 'validation.harForståttRettigheterOgPlikter.notChecked': 'Du må stadfeste at du har lese og forstått dine plikter.', }; export const appMessages = { nb, nn }; diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/lib-messages.stories.tsx b/apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/lib-messages.stories.tsx new file mode 100644 index 0000000000..14ee24c808 --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/app/i18n/lib-messages.stories.tsx @@ -0,0 +1,18 @@ +import { StoryFn } from '@storybook/react'; +import MessagesPreview from '@navikt/sif-common-core-ds/src/dev-utils/intl/messages-preview/MessagesPreview'; +import { libMessages } from './index'; +import { withIntl } from '../../storybook/decorators/withIntl'; + +export default { + title: 'i18N/Bibliotek tekster', + decorators: [withIntl], +}; + +const Template: StoryFn = () => ( + +); +export const Default = Template.bind({}); + +Default.args = {}; + +Default.parameters = {}; diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/app/pages/kvittering/kvitteringMesssages.ts b/apps/omsorgsdager-aleneomsorg-dialog/src/app/pages/kvittering/kvitteringMesssages.ts index 6a7331b354..439f97a646 100644 --- a/apps/omsorgsdager-aleneomsorg-dialog/src/app/pages/kvittering/kvitteringMesssages.ts +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/app/pages/kvittering/kvitteringMesssages.ts @@ -7,7 +7,14 @@ const nb = { 'Når søknaden er ferdigbehandlet, får du et svar fra oss på «Min side». Du kan sjekke saksbehandlingstiden her.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'kvittering.tittel': 'Me har motteke søknad om ekstra omsorgsdagar', + 'kvittering.info.tittel': 'Kva skjer vidare no?', + 'kvittering.info.1': 'Me behandlar søknaden din.', + 'kvittering.info.2': 'Me kontaktar deg dersom me treng fleire opplysningar.', + 'kvittering.info.3': + 'Når søknaden er ferdigbehandla, får du eit svar frå oss på «Mi side». Du kan sjå saksbehandlingstida her.', +}; export const kvitteringMessages = { nb, diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/app/pages/velkommen/velkommenPageMessages.ts b/apps/omsorgsdager-aleneomsorg-dialog/src/app/pages/velkommen/velkommenPageMessages.ts index 53209dbf42..ac3bd4abba 100644 --- a/apps/omsorgsdager-aleneomsorg-dialog/src/app/pages/velkommen/velkommenPageMessages.ts +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/app/pages/velkommen/velkommenPageMessages.ts @@ -43,7 +43,43 @@ const nb = { }; const nn: Record = { - ...nb, + 'page.velkommen.sidetittel': 'Søknad om ekstra omsorgsdagar', + 'page.velkommen.guide.tittel': 'Hei {navn}', + 'page.velkommen.guide.ingress': 'Velkomen til søknad om ekstra omsorgsdagar ved åleineomsorg.', + 'page.velkommen.guide.tekst.1.1': + 'Når det gjeld omsorgsdagar er du åleine om omsorga når barnet bur fast hos deg, og du ikkje bur saman med den andre forelderen. Det kan for eksempel vere', + 'page.velkommen.guide.tekst.1.1.a': 'på grunn av samlivsbrot', + 'page.velkommen.guide.tekst.1.1.b': 'at du har åleineomsorg for eit donorbarn', + 'page.velkommen.guide.tekst.1.1.c': 'den andre forelderen er død', + 'page.velkommen.guide.tekst.1.2.tittel': 'Når skal du ikkje bruke denne søknaden?', + 'page.velkommen.guide.tekst.1.2': + 'Om de vanlegvis bur saman, men den andre forelderen ikkje kan passe barnet, skal du bruke Søknad om ekstra omsorgsdagar når den andre forelderen ikkje kan passe barn', + 'page.velkommen.guide.tekst.2': + 'Om de har avtalt delt fast bustad for barnet har begge foreldre rett på omsorgsdagar, og ingen av dykk skal søke om ekstra omsorgsdagar på grunn av åleineomsorg.', + 'page.velkommen.guide.tekst.3': + 'Du treng ikkje å søke fleire gonger for same barn, om du tidlegare har fått godkjend søknad.', + 'page.velkommen.omSøknaden.tittel': 'Om søknaden', + 'page.velkommen.omSøknaden.1': 'Du får rettleiing undervegs i søknaden om kva du skal fylle ut, og korleis.', + 'page.velkommen.omSøknaden.2': + 'Me tar vare på svara dine i 72 timar. Om du innanfor den tida for eksempel vil ta ein pause eller blir automatisk logga ut, held du fram der du var når du kjem tilbake.', + 'page.velkommen.omSøknaden.3': + 'Du må svare på alle spørsmåla for å kunne gå vidare. Om du manglar etterspurt dokumentasjon, kan du ettersende det så snart du kan.', + 'page.velkommen.omSøknaden.4': 'Om korleis me hentar opplysningar om deg', + 'page.velkommen.harForståttRettigheterOgPlikter.notChecked': 'Du må velje at du har forstått ditt ansvar som søkar', + 'page.velkommen.personopplysninger.dialogtittel': 'Om behandling av personopplysningar', + 'page.velkommen.personopplysninger.1': 'Slik behandlar Nav personopplysningane dine', + 'page.velkommen.personopplysninger.2': + 'Me hentar og mottek opplysningar om deg når me skal behandle saka di. Det er naudsynt for at du skal få riktig teneste. Saka di kan behandlast automatisk.', + 'page.velkommen.personopplysninger.3': 'Kva opplysningar hentar me?', + 'page.velkommen.personopplysninger.4': 'Opplysningane me hentar kjem anten frå deg eller frå offentlege register:', + 'page.velkommen.personopplysninger.4.1': 'kva barn du er registrert som forelder til.', + 'page.velkommen.personopplysninger.4.2': + 'kven den andre forelderen er, og om de er busett på same folkeregistrerte adresse.', + 'page.velkommen.personopplysninger.4.3': 'tilknytinga di til Noreg.', + 'page.velkommen.personopplysninger.4.4': + 'trygdeordningar du kan ha rett til i andre land. Me kan også sende opplysningar om deg til trygdemyndigheiter i andre land.', + 'page.velkommen.personopplysninger.5': + 'Du har rett til innsyn i saka di. Vil du vite meir om korleis Nav behandlar personopplysningar? Sjå nav.no/personvern.', }; export const velkommenPageMessages = { diff --git "a/apps/omsorgsdager-aleneomsorg-dialog/src/app/s\303\270knad/steps/om-omsorgen-for-barn/omOmsorgenForBarnMessages.ts" "b/apps/omsorgsdager-aleneomsorg-dialog/src/app/s\303\270knad/steps/om-omsorgen-for-barn/omOmsorgenForBarnMessages.ts" index bde26e7f20..ddf4dcd512 100644 --- "a/apps/omsorgsdager-aleneomsorg-dialog/src/app/s\303\270knad/steps/om-omsorgen-for-barn/omOmsorgenForBarnMessages.ts" +++ "b/apps/omsorgsdager-aleneomsorg-dialog/src/app/s\303\270knad/steps/om-omsorgen-for-barn/omOmsorgenForBarnMessages.ts" @@ -41,7 +41,44 @@ const nb = { }; const nn: Record = { - ...nb, + 'steg.omOmsorgenForBarn.dineBarn.seksjonsTittel': 'Dine barn', + + 'steg.omOmsorgenForBarn.info.spm.andreBarn': 'Har du barn som ikkje er registrert her?', + 'steg.omOmsorgenForBarn.info.spm.flereBarn': 'Har du fleire barn som ikkje er registrert her?', + 'steg.omOmsorgenForBarn.info.spm.text': + 'Om du har barn som ikkje er registrert her, kan du legge inn desse sjølv. Det kan til dømes vere fosterbarn.', + + 'steg.omOmsorgenForBarn.annetBarnListAndDialog.addLabel': 'Legg til barn', + 'steg.omOmsorgenForBarn.annetBarnListAndDialog.listTitle': 'Barn du har lagt til', + 'steg.omOmsorgenForBarn.annetBarnListAndDialog.modalTitle': 'Legg til barn', + 'steg.omOmsorgenForBarn.formLeggTilBarn.aldersGrenseInfo': + '(Du kan ikkje legge til barn som er 19 år i år eller eldre)', + + 'steg.omOmsorgenForBarn.aleneomsorg.seksjonsTittel': 'åleineomsorg', + 'steg.omOmsorgenForBarn.form.spm.hvilkeAvBarnaAleneomsorg': 'Kryss av for barn du er åleine om omsorga for:', + + 'steg.omOmsorgenForBarn.deltBosted.seksjonsTittel': 'Delt fast bustad', + 'steg.omOmsorgenForBarn.deltBosted.spm': 'Har du avtale om delt fast bustad for barnet?', + 'steg.omOmsorgenForBarn.deltBosted.flereBarn.spm': 'Har du avtale om delt fast bustad for nokre av barna?', + 'steg.omOmsorgenForBarn.deltBosted.description.tittel': 'Kva er avtale om delt fast bustad?', + 'steg.omOmsorgenForBarn.deltBosted.description': + 'Avtale om delt fast bustad er ein juridisk avtale i samsvar med barnelova §36 og betyr at barnet har fast bustad hos begge foreldra. Om det er avtalt delt fast bustad er ingen av foreldra åleine om omsorga for barnet, men begge har rett til ordinære omsorgsdagar.', + 'steg.omOmsorgenForBarna.deltBosted.velgMinstEttBarnMedDeltBostedAdvarsel': + 'Du må ha åleineomsorg for minst eitt barn for å kunne svare på kva barn ein har avtale om delt fast bustad for.', + + 'steg.omOmsorgenForBarn.form.født': 'Fødd {dato}', + 'steg.omOmsorgenForBarn.form.fødtNavn': 'Fødd {dato} {navn}', + + 'steg.omOmsorgenForBarn.alleBarnMedDeltBosted': + 'Du kan berre søke for barn du er åleine med omsorga for, og ikkje har avtale om delt fast bustad for. Om du og den andre forelderen har ei avtale om delt fast bustad, bur barnet fast hos dykk begge. I desse tilfella kan ingen av dykk få ekstra dagar på grunn av åleineomsorg, men de har begge rett til ordinære omsorgsdagar.', + 'steg.omOmsorgenForBarn.ingenbarn': 'Du må ha minst eitt barn for å kunne gå vidare.', + 'steg.omOmsorgenForBarn.nextButtonLabel': 'Fortsett', + + 'validation.avtaleOmDeltBosted.yesOrNoIsUnanswered': + 'Du må svare ja eller nei på om du har avtale om delt fast bustad.', + 'validation.harAvtaleOmDeltBostedFor.listIsEmpty': + 'Du må krysse av for barn du har delt fast bustad for eller svare «Nei» på spørsmålet ovanfor.', + 'validation.harAleneomsorgFor.listIsEmpty': 'Du må krysse av for barn du er åleine om omsorga for.', }; export const omOmsorgenForBarnMessages = { nb, nn }; diff --git "a/apps/omsorgsdager-aleneomsorg-dialog/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" "b/apps/omsorgsdager-aleneomsorg-dialog/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" index 992bd8fb2a..76104e5672 100644 --- "a/apps/omsorgsdager-aleneomsorg-dialog/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" +++ "b/apps/omsorgsdager-aleneomsorg-dialog/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" @@ -22,9 +22,27 @@ const nb = { }; const nn: Record = { - ...nb, -}; + 'step.oppsummering.søker.header': 'Om deg', + 'step.oppsummering.søker.navn': 'Namn', + 'step.oppsummering.søker.fnr': 'Fødselsnummer', + 'step.oppsummering.dineBarn.listItem.FOSTERBARN': '(Barnet er mitt fosterbarn).', + 'step.oppsummering.omOmsorgenForBarn.barnList.title': 'Barn du er åleine om omsorga for', + 'step.oppsummering.omOmsorgenForBarn.harOmsorgFor.tidspunktForAleneomsorg': 'Tidspunkt for åleineomsorg: {dato}', + 'step.oppsummering.omOmsorgenForBarn.harOmsorgFor.tidspunktForAleneomsorg.tidligere': + 'Du vart åleine om omsorga for over 2 år sidan.', + + 'step.oppsummering.bekrefterOpplysninger': + 'Eg stadfestar at opplysningane eg har gitt er riktige, og at eg ikkje har halde tilbake opplysningar som har tyding for min rett til omsorgsdagar.', + + 'step.oppsummering.sendMelding.feilmelding.førsteGang': + 'Det oppstod ein feil under innsending. Ver venleg å prøv på nytt.', + 'step.oppsummering.sendMelding.feilmelding.andreGang': + 'Det oppstod framleis ein feil under innsending. Vent litt og prøv på nytt.', + 'step.oppsummering.sendSøknad': 'Send søknad', + + 'validation.harBekreftetOpplysninger.notChecked': 'Du må stadfeste at opplysningane du har gitt er riktige.', +}; export const oppsummeringMessages = { nb, nn, diff --git "a/apps/omsorgsdager-aleneomsorg-dialog/src/app/s\303\270knad/steps/tidspunkt-for-aleneomsorg/tidspunktForAleneomsorgMessages.ts" "b/apps/omsorgsdager-aleneomsorg-dialog/src/app/s\303\270knad/steps/tidspunkt-for-aleneomsorg/tidspunktForAleneomsorgMessages.ts" index 17d2a1cca3..02b2112f3d 100644 --- "a/apps/omsorgsdager-aleneomsorg-dialog/src/app/s\303\270knad/steps/tidspunkt-for-aleneomsorg/tidspunktForAleneomsorgMessages.ts" +++ "b/apps/omsorgsdager-aleneomsorg-dialog/src/app/s\303\270knad/steps/tidspunkt-for-aleneomsorg/tidspunktForAleneomsorgMessages.ts" @@ -18,7 +18,25 @@ const nb = { 'Datoen når du ble du alene om omsorgen for barnet er ugyldig. Gyldig format er dd.mm.åååå.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.tidspunktForAleneomsorg.stepIntro': + 'No treng me å vite når du vart åleine om omsorga for barn. Om du vart åleine om omsorga tidlegare enn i fjor, treng me ikkje å vite konkret dato.', + 'step.tidspunktForAleneomsorg.info': 'Oppgi tidspunkt for når du vart åleine om omsorga', + 'step.tidspunktForAleneomsorg.spm': 'Kva år vart du åleine om omsorga for {navn}?', + 'step.tidspunktForAleneomsorg.radioPanelGroupLabel.siste2årene': 'I {yearAgo} eller {yearNow}', + 'step.tidspunktForAleneomsorg.radioPanelGroupLabel.tidligere': 'I {twoYearsAgo} eller tidlegare', + 'step.tidspunktForAleneomsorg.siste2årene.dato.spm': 'Kva dato vart du åleine om omsorga for {navn}?', + 'step.tidspunktForAleneomsorg.nextButtonLabel': 'Fortsett', + + 'validation.tidspunktForAleneomsorg.noValue': 'Du må oppgi kva år du vart åleine om omsorga for barnet.', + 'validation.tidspunktForAleneomsorg.dato.dateHasNoValue': + 'Du må oppgi kva dato du vart åleine om omsorga for barnet.', + 'validation.tidspunktForAleneomsorg.dato.dateIsAfterMax': 'Du må oppgi dagens dato eller tidlegare.', + 'validation.tidspunktForAleneomsorg.dato.dateIsBeforeMin': + 'Du kan ikkje oppgi dato tidlegare enn to år frå dagens år.', + 'validation.tidspunktForAleneomsorg.dato.dateHasInvalidFormat': + 'Datoen når du vart åleine om omsorga for barnet er ugyldig. Gyldig format er dd.mm.åååå.', +}; export const tidspunktForAleneomsorgMessages = { nb, diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/app/utils/appEnv.ts b/apps/omsorgsdager-aleneomsorg-dialog/src/app/utils/appEnv.ts index 30747f4d89..a377a6216d 100644 --- a/apps/omsorgsdager-aleneomsorg-dialog/src/app/utils/appEnv.ts +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/app/utils/appEnv.ts @@ -4,6 +4,7 @@ import { AppEnv } from '../../../env.schema'; const getAppEnv = (): AppEnv => ({ ...getCommonEnv(), SIF_PUBLIC_USE_FARO: getRequiredEnv('SIF_PUBLIC_USE_FARO') as 'true' | 'false', + SIF_PUBLIC_FEATURE_NYNORSK: getRequiredEnv('SIF_PUBLIC_FEATURE_NYNORSK') === 'on' ? 'on' : 'off', SIF_PUBLIC_OMS_IKKE_TILSYN_URL: getRequiredEnv('SIF_PUBLIC_OMS_IKKE_TILSYN_URL'), }); diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/AlertStoryWrapper.tsx b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/AlertStoryWrapper.tsx new file mode 100644 index 0000000000..dc131cda8c --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/AlertStoryWrapper.tsx @@ -0,0 +1,35 @@ +import { Heading, VStack } from '@navikt/ds-react'; +import { ReactNode } from 'react'; +import MessagesList from '@navikt/sif-common-core-ds/src/dev-utils/intl/messages-preview/MessagesList'; +import { storybookIntlUtils } from '../utils/intlUtils'; +import ShadowBox from './ShadowBox'; + +const AlertStoryWrapper = ({ + title, + children, + intlScope, +}: { + title: string; + children: ReactNode; + intlScope?: string; +}) => { + const messages = intlScope + ? storybookIntlUtils.getIntlMessagesFromKeys(storybookIntlUtils.getScopedIntlKeys(intlScope)) + : undefined; + return ( + <> + + + + {title} + +
    {children}
    +
    +
    + + {messages && } + + ); +}; + +export default AlertStoryWrapper; diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/ShadowBox.tsx b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/ShadowBox.tsx new file mode 100644 index 0000000000..b8efa42721 --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/ShadowBox.tsx @@ -0,0 +1,11 @@ +import { Box } from '@navikt/ds-react'; + +const ShadowBox = ({ children }: { children: React.ReactNode }) => { + return ( + + {children} + + ); +}; + +export default ShadowBox; diff --git "a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/Sp\303\270rsm\303\245lWrapper.tsx" "b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/Sp\303\270rsm\303\245lWrapper.tsx" new file mode 100644 index 0000000000..8e27205129 --- /dev/null +++ "b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/Sp\303\270rsm\303\245lWrapper.tsx" @@ -0,0 +1,63 @@ +import { Box, Button, Tabs, VStack } from '@navikt/ds-react'; +import * as React from 'react'; +import { MessagesTable } from '@navikt/sif-common-core-ds/src/dev-utils/intl/messages-preview/MessagesList'; +import ShadowBox from '../components/ShadowBox'; +import { storybookIntlUtils } from '../utils/intlUtils'; +import { StoryFormikWrapper } from './StoryFormikWrapper'; +import '@navikt/ds-css'; + +export interface SpørsmålWrapperProps { + formErrorHandlerIntlKey: string; + spørsmål: React.ReactNode; + messageIntlKeys?: string[]; + validationErrorIntlKeys?: string[]; +} + +const { getIntlMessagesFromKeys } = storybookIntlUtils; + +export const SpørsmålWrapper: React.FunctionComponent = (props) => { + const { spørsmål, messageIntlKeys = [], validationErrorIntlKeys = [], formErrorHandlerIntlKey } = props; + const infoMessages = getIntlMessagesFromKeys(messageIntlKeys); + const validationMessages = getIntlMessagesFromKeys(validationErrorIntlKeys); + const allMessages = getIntlMessagesFromKeys([...messageIntlKeys, ...validationErrorIntlKeys]); + + return ( + + + + + + {spørsmål} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/StoryFormWrapper.tsx b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/StoryFormWrapper.tsx new file mode 100644 index 0000000000..10ba4d53db --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/StoryFormWrapper.tsx @@ -0,0 +1,17 @@ +import { Box, VStack } from '@navikt/ds-react'; + +interface Props { + children: React.ReactNode; + values?: any; + maxWidth?: string; +} + +const StoryFormWrapper = ({ children, maxWidth = '35rem' }: Props) => ( + + + {children} + + +); + +export default StoryFormWrapper; diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/StoryFormikWrapper.tsx b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/StoryFormikWrapper.tsx new file mode 100644 index 0000000000..03a1d41c03 --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/components/StoryFormikWrapper.tsx @@ -0,0 +1,61 @@ +import { Box } from '@navikt/ds-react'; +import * as React from 'react'; +import { TypedFormikForm, TypedFormikWrapper } from '@navikt/sif-common-formik-ds'; +import getIntlFormErrorHandler from '@navikt/sif-common-formik-ds/src/validation/intlFormErrorHandler'; +import { useAppIntl } from '../../app/i18n'; +import '@navikt/ds-css'; + +interface Props { + parameters?: { + formik?: any; + includeButtons?: boolean; + maxWidth?: string; + formErrorHandlerIntlKey: string; + }; + children: React.ReactNode; + useBorder?: boolean; +} + +export const StoryFormikWrapper: React.FunctionComponent = (props) => { + const { intl } = useAppIntl(); + const { children, parameters, useBorder } = props; + const { + formik, + maxWidth = '800px', + includeButtons = true, + formErrorHandlerIntlKey = 'formIntlKey', + } = parameters || {}; + const initialValues = formik?.initialValues || {}; + + return ( + { + // eslint-disable-next-line no-console + console.log('StoryFormikProvider', values); + }} + renderForm={() => { + return ( + null} + includeValidationSummary={true} + formErrorHandler={getIntlFormErrorHandler(intl, formErrorHandlerIntlKey)} + runDelayedFormValidation={true}> + + {children} + + + ); + }} + /> + ); +}; diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/print.css b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/print.css new file mode 100644 index 0000000000..1c94453379 --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/print.css @@ -0,0 +1,17 @@ +@media print { + .navds-progress-bar { + display: none; + } + .navds-form-progress__collapsible { + display: none !important; + } + #decorator-header { + display: none !important; + } + #decorator-footer { + display: none !important; + } + .navds-tabs__tablist-wrapper { + display: none !important; + } +} diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withAmplitudeProvider.tsx b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withAmplitudeProvider.tsx new file mode 100644 index 0000000000..37923b84fd --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withAmplitudeProvider.tsx @@ -0,0 +1,7 @@ +import { AmplitudeProvider } from '@navikt/sif-common-amplitude'; + +export const withAmplitudeProvider = (Story: any) => ( + + + +); diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withEnvSettings.tsx b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withEnvSettings.tsx new file mode 100644 index 0000000000..c3d3afca93 --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withEnvSettings.tsx @@ -0,0 +1,4 @@ +export const withEnvSettings = (Story) => { + (window as any).appSettings.APP_VERSION = 'production'; + return ; +}; diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withFormikWrapper.tsx b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withFormikWrapper.tsx new file mode 100644 index 0000000000..4dbdb6f16c --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withFormikWrapper.tsx @@ -0,0 +1,7 @@ +import { StoryFormikWrapper } from '../components/StoryFormikWrapper'; + +export const withFormikWrapper = (Story, args) => ( + + + +); diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withIntl.tsx b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withIntl.tsx new file mode 100644 index 0000000000..49a7ec7269 --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withIntl.tsx @@ -0,0 +1,18 @@ +import { IntlProvider } from 'react-intl'; +import { applicationIntlMessages } from '../../app/i18n'; +import { uiMessages } from '@navikt/sif-common-ui'; +import './print.css'; + +export const withIntl = (Story, context) => { + const locale = context?.parameters?.locale || context?.globals.locale || 'nb'; + const messages = + locale === 'nb' + ? { ...applicationIntlMessages.nb, ...uiMessages.nb } + : { ...applicationIntlMessages.nn, ...uiMessages.nn }; + + return ( + + + + ); +}; diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withRouter.tsx b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withRouter.tsx new file mode 100644 index 0000000000..24bfb1c238 --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withRouter.tsx @@ -0,0 +1,7 @@ +import { BrowserRouter } from 'react-router-dom'; + +export const withRouterProvider = (Story: any) => ( + + + +); diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withStepFormValuesContext.tsx b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withStepFormValuesContext.tsx new file mode 100644 index 0000000000..af7d9cc1fe --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withStepFormValuesContext.tsx @@ -0,0 +1,10 @@ +import { StepFormValuesContextProvider } from '../../app/søknad/context/StepFormValuesContext'; +import { StepFormValues } from '../../app/types/StepFormValues'; + +export const withStepFormValuesContext = (Story, stepFormValues?: StepFormValues) => { + return ( + + + + ); +}; diff --git "a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withS\303\270knadContext.tsx" "b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withS\303\270knadContext.tsx" new file mode 100644 index 0000000000..22ff916cfb --- /dev/null +++ "b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/decorators/withS\303\270knadContext.tsx" @@ -0,0 +1,19 @@ +import { SøknadContextProvider } from '../../app/søknad/context/SøknadContext'; +import { SøknadContextState } from '../../app/types/SøknadContextState'; +import { RegistrerteBarnMock, SøkerMock } from '../mock-data'; + +export const mockInitialSøknadContextState: SøknadContextState = { + versjon: '1.0.0', + søker: SøkerMock, + registrertBarn: RegistrerteBarnMock, + søknadsdata: {} as any, + søknadRoute: undefined, + søknadSendt: false, + børMellomlagres: false, +}; + +export const withSøknadContextProvider = (Story: any, state: Partial = {}) => ( + + + +); diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/mock-data/index.ts b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/mock-data/index.ts new file mode 100644 index 0000000000..111bb4f87e --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/mock-data/index.ts @@ -0,0 +1,27 @@ +import { ISODateToDate } from '@navikt/sif-common-utils'; +import { RegistrertBarn } from '../../app/types/RegistrertBarn'; +import { Søker } from '../../app/types/Søker'; + +export const SøkerMock: Søker = { + fødselsnummer: '30086421581', + fornavn: 'GODSLIG', + aktørId: '132', + fødselsdato: ISODateToDate('1990-01-01'), + etternavn: 'KRONJUVEL', +}; + +export const RegistrerteBarnMock: RegistrertBarn[] = [ + { + fødselsdato: ISODateToDate('1990-01-01'), + fornavn: 'Barn', + mellomnavn: 'Barne', + etternavn: 'Barnesen', + aktørId: '1', + }, + { + fødselsdato: ISODateToDate('1990-01-02'), + fornavn: 'Mock', + etternavn: 'Mocknes', + aktørId: '2', + }, +]; diff --git a/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/utils/intlUtils.ts b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/utils/intlUtils.ts new file mode 100644 index 0000000000..51ce929f09 --- /dev/null +++ b/apps/omsorgsdager-aleneomsorg-dialog/src/storybook/utils/intlUtils.ts @@ -0,0 +1,34 @@ +import { applicationIntlMessages } from '../../app/i18n'; +import { MessageFileFormat } from '@navikt/sif-common-core-ds/src/types'; + +const getIntlMessagesFromKeys = (keys: string[]): MessageFileFormat => { + const messages: MessageFileFormat = { + nb: {}, + nn: {}, + }; + keys.map((k) => { + messages.nb[k] = applicationIntlMessages.nb[k]; + messages.nn[k] = applicationIntlMessages.nn[k]; + }); + + return messages; +}; + +const getValidationIntlKeys = (keys: string[], intlKeyPath: string) => { + return keys.map((key) => `${intlKeyPath}.${key}`); +}; + +const getScopedIntlKeys = (scope: string): string[] => { + return Object.keys(applicationIntlMessages.nb).filter((key) => key.includes(scope)); +}; + +const getScopedMessages = (scope: string): MessageFileFormat => { + return getIntlMessagesFromKeys(getScopedIntlKeys(scope)); +}; + +export const storybookIntlUtils = { + getIntlMessagesFromKeys, + getScopedIntlKeys, + getScopedMessages, + getValidationIntlKeys, +}; diff --git a/apps/omsorgsdager-kalkulator/components/sif-formik/formik-validation-error-summary/FormikValidationErrorSummary.tsx b/apps/omsorgsdager-kalkulator/components/sif-formik/formik-validation-error-summary/FormikValidationErrorSummary.tsx index fd422f306a..1006337c34 100644 --- a/apps/omsorgsdager-kalkulator/components/sif-formik/formik-validation-error-summary/FormikValidationErrorSummary.tsx +++ b/apps/omsorgsdager-kalkulator/components/sif-formik/formik-validation-error-summary/FormikValidationErrorSummary.tsx @@ -1,13 +1,13 @@ -import React, { RefObject } from 'react'; +import React, { ReactElement, RefObject } from 'react'; import { useFormikContext } from 'formik'; -import { getAllFieldsWithErrors, getErrorForField } from '../utils/typedFormErrorUtils'; import ValidationSummary, { ValidationSummaryError } from '../helpers/ValidationSummary'; import { TypedFormikFormContext } from '../typed-formik-form/TypedFormikForm'; +import { getAllFieldsWithErrors, getErrorForField } from '../utils/typedFormErrorUtils'; interface Props { heading?: string; summaryRef?: RefObject; - wrapper?: (errorSummary: JSX.Element) => JSX.Element; + wrapper?: (errorSummary: ReactElement) => ReactElement; } const FormikValidationErrorSummary: React.FunctionComponent = ({ heading, summaryRef, wrapper }) => { diff --git a/apps/omsorgsdager-kalkulator/components/sif-formik/getTypedFormComponents.tsx b/apps/omsorgsdager-kalkulator/components/sif-formik/getTypedFormComponents.tsx index e5a53128be..a4094144a0 100644 --- a/apps/omsorgsdager-kalkulator/components/sif-formik/getTypedFormComponents.tsx +++ b/apps/omsorgsdager-kalkulator/components/sif-formik/getTypedFormComponents.tsx @@ -1,3 +1,4 @@ +import { ReactElement } from 'react'; import FormikRadioGroup, { FormikRadioGroupProps } from './formik-radio-group/FormikRadioGroup'; import FormikSelect, { FormikSelectProps } from './formik-select/FormikSelect'; import FormikYesOrNoQuestion, { FormikYesOrNoQuestionProps } from './formik-yes-or-no-question/FormikYesOrNoQuestion'; @@ -5,11 +6,11 @@ import TypedFormikForm, { TypedFormikFormProps } from './typed-formik-form/Typed import TypedFormikWrapper, { TypedFormikWrapperProps } from './typed-formik-wrapper/TypedFormikWrapper'; export interface TypedFormComponents { - Form: (props: TypedFormikFormProps) => JSX.Element; - FormikWrapper: (props: TypedFormikWrapperProps) => JSX.Element; - RadioGroup: (props: FormikRadioGroupProps) => JSX.Element; - Select: (props: FormikSelectProps) => JSX.Element; - YesOrNoQuestion: (props: FormikYesOrNoQuestionProps) => JSX.Element; + Form: (props: TypedFormikFormProps) => ReactElement; + FormikWrapper: (props: TypedFormikWrapperProps) => ReactElement; + RadioGroup: (props: FormikRadioGroupProps) => ReactElement; + Select: (props: FormikSelectProps) => ReactElement; + YesOrNoQuestion: (props: FormikYesOrNoQuestionProps) => ReactElement; } export function getTypedFormComponents(): TypedFormComponents< diff --git a/apps/omsorgsdager-kalkulator/package.json b/apps/omsorgsdager-kalkulator/package.json index 87f9c23e10..a74ec56cb6 100644 --- a/apps/omsorgsdager-kalkulator/package.json +++ b/apps/omsorgsdager-kalkulator/package.json @@ -16,41 +16,41 @@ "test": "jest" }, "dependencies": { - "@navikt/ds-css": "7.8.0", + "@navikt/ds-css": "7.9.1", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", - "@navikt/nav-dekoratoren-moduler": "3.1.1", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", + "@navikt/nav-dekoratoren-moduler": "3.1.3", "classnames": "2.5.1", "csp-header": "6.0.0", "date-fns": "3.6.0", "dayjs": "1.11.13", "formik": "2.4.6", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "jsdom": "25.0.1", - "next": "15.1.0", + "next": "15.1.4", "node-fetch": "3.3.2", "react": "19.0.0", "react-day-picker": "8.10.1", "react-dom": "19.0.0", - "react-intl": "7.0.4", - "uuid": "11.0.3" + "react-intl": "7.1.0", + "uuid": "11.0.5" }, "devDependencies": { "@axe-core/playwright": "4.10.1", "@playwright/test": "1.49.1", - "@types/node": "22.10.2", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/node": "22.10.5", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@types/uuid": "10.0.0", "config": "*", - "eslint": "9.17.0", - "eslint-config-next": "15.1.0", + "eslint": "9.18.0", + "eslint-config-next": "15.1.4", "jest": "29.7.0", "jest-environment-jsdom": "29.7.0", "playwright-core": "1.49.1", "postcss": "8.4.49", - "tailwindcss": "3.4.16", - "typescript": "5.7.2" + "tailwindcss": "3.4.17", + "typescript": "5.7.3" } } diff --git a/apps/omsorgsdager-kalkulator/pages/_document.tsx b/apps/omsorgsdager-kalkulator/pages/_document.tsx index 2b3a47c62d..e780640757 100644 --- a/apps/omsorgsdager-kalkulator/pages/_document.tsx +++ b/apps/omsorgsdager-kalkulator/pages/_document.tsx @@ -1,4 +1,5 @@ -import { DecoratorComponentsReact, fetchDecoratorReact, DecoratorEnvProps } from '@navikt/nav-dekoratoren-moduler/ssr'; +import { ReactElement } from 'react'; +import { DecoratorComponentsReact, DecoratorEnvProps, fetchDecoratorReact } from '@navikt/nav-dekoratoren-moduler/ssr'; import Document, { DocumentContext, DocumentInitialProps, Head, Html, Main, NextScript } from 'next/document'; import 'node-fetch'; @@ -35,7 +36,7 @@ class MyDocument extends Document { return { ...initialProps, Decorator, language }; } - render(): JSX.Element { + render(): ReactElement { const { Decorator, language } = this.props; const showDecorator = true; return ( diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/.env.example b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/.env.example index c7e8191ac3..1764d92ebc 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/.env.example +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/.env.example @@ -4,6 +4,7 @@ NODE_ENV=development PUBLIC_PATH=/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling-arbeidstaker GITHUB_REF_NAME=branch-name +SIF_PUBLIC_FEATURE_NYNORSK=on SIF_PUBLIC_APPSTATUS_DATASET=staging SIF_PUBLIC_APPSTATUS_PROJECT_ID=ryujtq87 SIF_PUBLIC_DEKORATOR_URL=https://www.nav.no/dekoratoren/?simple=true&chatbot=false&logoutUrl=https://www.nav.no/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling/oauth2/logout @@ -14,3 +15,6 @@ SIF_PUBLIC_USE_AMPLITUDE=false K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH=/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling-arbeidstaker/api K9_BRUKERDIALOG_PROSESSERING_API_SCOPE=dev-gcp:dusseldorf:k9-brukerdialog-prosessering K9_BRUKERDIALOG_PROSESSERING_API_URL=http://k9-brukerdialog-prosessering + +MOCK_DATE=2024-08-01 +USE_MOCK_DATE=true diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/.storybook/preview-head.html b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/.storybook/preview-head.html new file mode 100644 index 0000000000..8a89fc0066 --- /dev/null +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/.storybook/preview-head.html @@ -0,0 +1,23 @@ + \ No newline at end of file diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/.storybook/preview.ts b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/.storybook/preview.ts index cf395a4f87..46c0f8580d 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/.storybook/preview.ts +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/.storybook/preview.ts @@ -1,16 +1,35 @@ +import { Preview } from '@storybook/react'; import '@navikt/ds-css'; -export const parameters = { - actions: { argTypesRegex: '^on[A-Z].*' }, - options: { - storySort: { - method: 'alphabetical', +const preview: Preview = { + globalTypes: { + locale: { + name: 'Språk', + description: 'Velg språk som skal brukes i komponenten', + defaultValue: 'nb', + toolbar: { + icon: 'globe', + items: [ + { value: 'nb', title: 'Bokmål' }, + { value: 'nn', title: 'Nynorsk' }, + ], + }, }, }, - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/, + parameters: { + actions: { argTypesRegex: '^on[A-Z].*' }, + options: { + storySort: { + method: 'alphabetical', + }, + }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, }, }, }; + +export default preview; diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/e2e/playwright/playwright.env.ts b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/e2e/playwright/playwright.env.ts index 7f0a945eb9..ed34b7eb21 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/e2e/playwright/playwright.env.ts +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/e2e/playwright/playwright.env.ts @@ -5,6 +5,7 @@ export const playwrightEnv: AppEnv = { APP_VERSION: 'dev', PUBLIC_PATH: '/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling-arbeidstaker', GITHUB_REF_NAME: 'branch-name', + SIF_PUBLIC_FEATURE_NYNORSK: 'on', SIF_PUBLIC_AMPLITUDE_API_KEY: 'default', SIF_PUBLIC_APPSTATUS_DATASET: 'staging', SIF_PUBLIC_APPSTATUS_PROJECT_ID: 'ryujtq87', @@ -18,4 +19,6 @@ export const playwrightEnv: AppEnv = { '/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling-arbeidstaker/api', K9_BRUKERDIALOG_PROSESSERING_API_SCOPE: 'dev-gcp:dusseldorf:k9-brukerdialog-prosessering', K9_BRUKERDIALOG_PROSESSERING_API_URL: 'http://k9-brukerdialog-prosessering', + MOCK_DATE: '2024-08-01', + USE_MOCK_DATE: 'true', }; diff --git "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/e2e/playwright/tests/fyll-ut-s\303\270knad.spec.ts" "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/e2e/playwright/tests/fyll-ut-s\303\270knad.spec.ts" index aa665a9d52..0924eb1c97 100644 --- "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/e2e/playwright/tests/fyll-ut-s\303\270knad.spec.ts" +++ "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/e2e/playwright/tests/fyll-ut-s\303\270knad.spec.ts" @@ -1,7 +1,12 @@ import { test } from '@playwright/test'; import { playwrightApiMockData } from '../mock-data/playwrightApiMockData'; +import { setNow } from '../utils/setNow'; import { utfyllingUtils } from '../utils/utfyllingUtils'; +test.beforeEach(async ({ page }) => { + await setNow(page); +}); + test.describe('Fyller ut søknad', () => { test.beforeEach(async ({ page }) => { await page.route('https://**.nav.no/**', async (route) => { diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/e2e/playwright/utils/setNow.ts b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/e2e/playwright/utils/setNow.ts new file mode 100644 index 0000000000..d0952e2a99 --- /dev/null +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/e2e/playwright/utils/setNow.ts @@ -0,0 +1,11 @@ +import MockDate from 'mockdate'; + +import { Page } from '@playwright/test'; + +export const testDate = new Date('2024-08-01'); + +export const setNow = async (page: Page, date: Date = testDate) => { + await page.addInitScript(() => { + MockDate.set(date || testDate); + }); +}; diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/env.schema.ts b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/env.schema.ts index 7e5d6490a4..486698be34 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/env.schema.ts +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/env.schema.ts @@ -1,6 +1,10 @@ import { commonEnvSchema } from '@navikt/sif-common-env'; import * as z from 'zod'; -export const appEnvSchema = commonEnvSchema; +export const appEnvSchema = commonEnvSchema.extend({ + SIF_PUBLIC_FEATURE_NYNORSK: z.enum(['on', 'off']).optional(), + MOCK_DATE: z.string().optional(), + USE_MOCK_DATE: z.string().optional(), +}); export type AppEnv = z.infer; diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/mock/AppSettings.cjs b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/mock/AppSettings.cjs index 5d047f3eba..5432a5772d 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/mock/AppSettings.cjs +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/mock/AppSettings.cjs @@ -12,7 +12,7 @@ const getAppSettings = () => ({ K9_BRUKERDIALOG_PROSESSERING_API_SCOPE: `${process.env.K9_BRUKERDIALOG_PROSESSERING_API_SCOPE}`, K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH: `${process.env.K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH}`, - SIF_PUBLIC_AMPLITUDE_API_KEY: `${process.env.SIF_PUBLIC_AMPLITUDE_API_KEY}`, + SIF_PUBLIC_FEATURE_NYNORSK: `${process.env.SIF_PUBLIC_FEATURE_NYNORSK}`, SIF_PUBLIC_APPSTATUS_DATASET: `${process.env.SIF_PUBLIC_APPSTATUS_DATASET}`, SIF_PUBLIC_APPSTATUS_PROJECT_ID: `${process.env.SIF_PUBLIC_APPSTATUS_PROJECT_ID}`, SIF_PUBLIC_DEKORATOR_URL: `${process.env.SIF_PUBLIC_DEKORATOR_URL}`, @@ -21,6 +21,9 @@ const getAppSettings = () => ({ SIF_PUBLIC_SKIP_ORGNUM_VALIDATION: `${process.env.SIF_PUBLIC_SKIP_ORGNUM_VALIDATION}`, SIF_PUBLIC_USE_AMPLITUDE: `${process.env.SIF_PUBLIC_USE_AMPLITUDE}`, SIF_PUBLIC_AMPLITUDE_API_KEY: `${process.env.SIF_PUBLIC_AMPLITUDE_API_KEY}`, + + MOCK_DATE: `${process.env.MOCK_DATE}`, + USE_MOCK_DATE: `${process.env.USE_MOCK_DATE}`, }); module.exports = getAppSettings; diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/nais/dev-gcp.json b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/nais/dev-gcp.json index 8a77650021..db19266b59 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/nais/dev-gcp.json +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/nais/dev-gcp.json @@ -22,10 +22,10 @@ "K9_BRUKERDIALOG_PROSESSERING_API_URL": "http://k9-brukerdialog-prosessering", "K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH": "/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling-arbeidstaker/api", + "SIF_PUBLIC_FEATURE_NYNORSK": "on", "SIF_PUBLIC_AMPLITUDE_API_KEY": "default", "SIF_PUBLIC_USE_AMPLITUDE": "false", "SIF_PUBLIC_APPSTATUS_DATASET": "staging", - "SIF_PUBLIC_APPSTATUS_PROJECT_ID": "ryujtq87", "SIF_PUBLIC_DEKORATOR_URL": "https://dekoratoren.ekstern.dev.nav.no/?simple=true&chatbot=false&urlLookupTable=false&logoutUrl=https://omsorgspengerutbetaling-soknad.intern.dev.nav.no/oauth2/logout&redirectToApp=true", "SIF_PUBLIC_LOGIN_URL": "https://omsorgspengerutbetaling-soknad.intern.dev.nav.no/oauth2/login?redirect=/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling/soknad", diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/nais/prod-gcp.json b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/nais/prod-gcp.json index 00a228728c..37f4774c09 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/nais/prod-gcp.json +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/nais/prod-gcp.json @@ -22,6 +22,7 @@ "K9_BRUKERDIALOG_PROSESSERING_API_URL": "http://k9-brukerdialog-prosessering", "K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH": "/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling-arbeidstaker/api", + "SIF_PUBLIC_FEATURE_NYNORSK": "off", "SIF_PUBLIC_AMPLITUDE_API_KEY": "10798841ebeba333b8ece6c046322d76", "SIF_PUBLIC_USE_AMPLITUDE": "true", "SIF_PUBLIC_APPSTATUS_DATASET": "production", diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/package.json b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/package.json index 910555dbef..e322bafff5 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/package.json +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/package.json @@ -1,17 +1,22 @@ { - "author": "NAV", + "author": { + "name": "NAV" + }, "description": "Søknad om utbetaling av omsorgsdager for arbeidstakere", "license": "MIT", "name": "@navikt/omsorgspengerutbetaling-arbeidstaker-soknad", - "repository": "https://github.com/navikt/sif-brukerdialog", + "repository": { + "type": "git", + "url": "git+https://github.com/navikt/sif-brukerdialog.git" + }, "version": "1.13.0", "private": true, "type": "module", "dependencies": { - "@navikt/ds-css": "7.8.0", + "@navikt/ds-css": "7.9.1", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", "@navikt/sif-app-register": "*", "@navikt/sif-common-amplitude": "*", "@navikt/sif-common-api": "*", @@ -29,23 +34,23 @@ "busboy": "1.6.0", "csp-header": "6.0.0", "dayjs": "1.11.13", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "jsdom": "25.0.1", "object-hash": "3.0.0", "react": "19.0.0", "react-dom": "19.0.0", "react-fast-compare": "3.2.2", - "react-intl": "7.0.4", - "react-router-dom": "7.0.2", + "react-intl": "7.1.0", + "react-router-dom": "7.1.1", "ulid": "2.3.0", - "uuid": "11.0.3" + "uuid": "11.0.5" }, "devDependencies": { "@babel/core": "7.26.0", "@babel/preset-env": "7.26.0", "@babel/preset-react": "7.26.3", "@babel/preset-typescript": "7.26.0", - "@chromatic-com/storybook": "3.2.2", + "@chromatic-com/storybook": "3.2.3", "@playwright/test": "1.49.1", "@sif/eslint-config": "*", "@storybook/addon-a11y": "8.4.7", @@ -58,29 +63,31 @@ "@storybook/react-vite": "8.4.7", "@storybook/test": "8.4.7", "@testing-library/dom": "10.4.0", - "@types/node": "22.10.2", + "@types/node": "22.10.5", "@types/object-hash": "3.0.6", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@types/react-router-dom": "5.3.3", "@vitejs/plugin-react": "4.3.4", "babel-polyfill": "6.26.0", + "chromatic": "11.22.2", "compression": "1.7.5", "cross-env": "7.0.3", "dotenv": "16.4.7", - "eslint": "9.17.0", - "eslint-plugin-storybook": "0.11.1", + "eslint": "9.18.0", + "eslint-plugin-storybook": "0.11.2", "express": "4.21.2", "helmet": "8.0.0", "http-proxy-middleware": "3.0.3", + "mockdate": "3.0.5", "mustache-express": "1.3.2", "postcss": "8.4.49", "postcss-nesting": "13.0.1", "storybook": "8.4.7", "storybook-addon-mock": "5.0.0", - "tailwindcss": "3.4.16", - "typescript": "5.7.2", - "vite": "6.0.3", + "tailwindcss": "3.4.17", + "typescript": "5.7.3", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8" }, @@ -97,7 +104,8 @@ "lint:eslint": "eslint \"./src/**/*.{js,ts,tsx}\"", "lint:fix": "eslint --quiet --fix './src/**/*.{js,ts,tsx}'", "lint:tsc": "tsc --noEmit", - "build-storybook": "storybook build" + "build-storybook": "storybook build", + "chromatic": "npx chromatic --project-token=" }, "eslintConfig": { "overrides": [ @@ -110,5 +118,9 @@ } } ] - } + }, + "bugs": { + "url": "https://github.com/navikt/sif-brukerdialog/issues" + }, + "homepage": "https://github.com/navikt/sif-brukerdialog#readme" } diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/App.tsx b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/App.tsx index 691ce36b90..cd304d1958 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/App.tsx +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/App.tsx @@ -1,11 +1,12 @@ import { Navigate, Route } from 'react-router-dom'; import { OmsorgspengerutbetalingArbeidstakerApp } from '@navikt/sif-app-register'; -import { isProd } from '@navikt/sif-common-env'; +import { getMaybeEnv, isProd } from '@navikt/sif-common-env'; import { ensureBaseNameForReactRouter, SoknadApplication, SoknadApplicationCommonRoutes, } from '@navikt/sif-common-soknad-ds'; +import MockDate from 'mockdate'; import { mellomlagringService } from './api/mellomlagringService'; import { applicationIntlMessages } from './i18n'; import Søknad from './søknad/Søknad'; @@ -25,11 +26,19 @@ const { ensureBaseNameForReactRouter(PUBLIC_PATH); +const envNow = getMaybeEnv('MOCK_DATE'); +if (envNow && getMaybeEnv('USE_MOCK_DATE') === 'true') { + // eslint-disable-next-line no-console + console.log(`setting time to: ${envNow}`); + MockDate.set(new Date(envNow)); +} + const handleResetSoknad = async () => { await mellomlagringService.purge(); relocateToWelcomePage(); }; +console.log(appEnv); const App = () => ( ( appName={OmsorgspengerutbetalingArbeidstakerApp.navn} appTitle={OmsorgspengerutbetalingArbeidstakerApp.tittel.nb} intlMessages={applicationIntlMessages} + useLanguageSelector={appEnv.SIF_PUBLIC_FEATURE_NYNORSK === 'on'} onResetSoknad={handleResetSoknad} appStatus={{ sanityConfig: { diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/i18n/appMessages.ts b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/i18n/appMessages.ts index 559e71576d..6a423de64a 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/i18n/appMessages.ts +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/i18n/appMessages.ts @@ -56,9 +56,6 @@ const nb = { 'step.oppsummering.pageTitle': 'Omsorgspengesøknad - oppsummering', 'step.oppsummering.stepTitle': 'Oppsummering', - 'page.confirmation.sidetittel': 'Vi har mottatt søknaden din', - 'page.confirmation.tittel': 'Vi har mottatt søknad om utbetaling av omsorgspenger', - 'validation.periode_ingenDagerEllerPerioder': 'Du må spesifisere minst én periode for arbeidsforholdet.', 'validation.fraværDagIkkeSammeÅrstall': 'Du har lagt inn fravær som går over flere år. Du kan kun legge inn fravær for ett år.', @@ -119,7 +116,109 @@ const nb = { }; const nn: Record = { - ...nb, -}; + ...situasjonMessages.nn, + ...dineBarnMessages.nn, + ...deltBostedMessages.nn, + ...velkommenPageMessages.nn, + ...fraværStepMessages.nn, + ...legeerklæringMessages.nn, + ...oppsummeringMessages.nn, + ...kvitteringMessages.nn, + ...validateApiDataMessages.nn, + + Ja: 'Ja', + Nei: 'Nei', + + 'application.title': 'Søknad om utbetaling av omsorgspengar når arbeidsgivar ikkje utbetalar', + dager: '{dager, plural, one {# dag} other {# dagar}}', + + 'initialLoadError.pageTitle': 'Det oppstod ein feil', + 'initialLoadError.text.1': 'Det oppstod ein feil under oppstarten av søknaden. Ver venleg og prøv igjen seinare.', + + 'resetMellomlagring.text.1': 'Dersom feilen vedvarer, kan du prøve å starte på nytt med eit tomt skjema.', + 'resetMellomlagring.startPåNytt': 'Start på nytt', + + 'step.nextButtonLabel': 'Fortset', + 'step.sendButtonLabel': 'Send inn søknaden', + 'step.sendButtonAriaLabel': 'Send inn søknaden', + + 'step.dineBarn.stepTitle': 'Dine barn', + 'step.dineBarn.stepIndicatorLabel': 'Dine barn', + + 'step.deltBosted.stepTitle': 'Avtale om delt fast bustad', + 'step.deltBosted.stepIndicatorLabel': 'Avtale om delt fast bustad', + + 'step.situasjon.pageTitle': 'Din arbeidssituasjon', + 'step.situasjon.stepTitle': 'Din arbeidssituasjon', + + 'step.fravær.pageTitle': 'Kva dagar søkjer du utbetaling for?', + 'step.fravær.stepTitle': 'Kva dagar søkjer du utbetaling for?', + + 'step.legeerklæring.pageTitle': 'Legeerklæring', + 'step.legeerklæring.stepTitle': 'Last opp legeerklæring', + + 'step.medlemskap.pageTitle': 'Omsorgspengesøknad - medlemskap', + 'step.medlemskap.stepTitle': 'Medlemskap', + + 'step.oppsummering.pageTitle': 'Omsorgspengesøknad - oppsummering', + 'step.oppsummering.stepTitle': 'Oppsummering', + 'validation.periode_ingenDagerEllerPerioder': 'Du må spesifisere minst éin periode for arbeidsforholdet.', + 'validation.fraværDagIkkeSammeÅrstall': + 'Du har lagt inn fråvær som går over fleire år. Du kan berre leggje inn fråvær for eitt år.', + 'validation.fraværPeriodeIkkeSammeÅrstall': + 'Du har lagt inn fråvær som går over fleire år. Du kan berre leggje inn fråvær for eitt år.', + 'validation.perioderEllerDagerOverlapper': 'Éin eller fleire av fråværsdagane overlappar.', + 'validation.harHattFraværHosArbeidsgiver.yesOrNoIsUnanswered': + 'Du må svare på om du har hatt fråvær hos {arbeidsgivernavn} fordi du har brukt omsorgsdagar.', + 'validation.arbeidsgiverHarUtbetaltLønn.yesOrNoIsUnanswered': + 'Du må svare på om {arbeidsgivernavn} har utbetalt deg lønn for dei dagane du har brukt omsorgsdagar.', + 'validation.arbeidsforhold.ansettelseslengde.begrunnelse.noValue': + 'Du må svare på kva som var din situasjon før du starta å jobbe hos {arbeidsgivernavn}.', + 'validation.arbeidsforhold.hvorLengeJobbet.noValue': + 'Du må svare på kor lenge du har vore i jobb hos {arbeidsgivernavn}.', + 'validation.arbeidsforhold.harPerioderMedFravær.yesOrNoIsUnanswered': + 'Du må svare på om du har hatt heile dagar med fråvær frå jobb hos {arbeidsgivernavn}.', + 'validation.arbeidsforhold.harDagerMedDelvisFravær.yesOrNoIsUnanswered': + 'Du må svare på om du har hatt dagar med delvis fråvær frå jobb hos {arbeidsgivernavn}.', + 'validation.arbeidsforhold.fraværPerioder.listIsEmpty': + 'Du har svart at du har heile dagar med fråvær hos {arbeidsgivernavn}, så du må leggje inn kva dagar det gjeld.', + 'validation.arbeidsforhold.fraværDager.listIsEmpty': + 'Du har svart at du har dagar med delvis fråvær hos {arbeidsgivernavn}, så du må leggje inn kva dagar det gjeld.', + 'validation.perioderHarVærtIUtlandet.yesOrNoIsUnanswered': + 'Du må svare på om du har vore i utlandet nokre av dagane du søkjer omsorgspengar for.', + 'validation.perioderUtenlandsopphold.listIsEmpty': + 'Du har svart at du har vore i utlandet i perioden du søkjer for. Du må derfor leggje til utanlandsopphald.', + 'validation.harBoddUtenforNorgeSiste12Mnd.yesOrNoIsUnanswered': + 'Du må svare på om du har budd i utlandet i heile eller delar av dei siste 12 månadene.', + 'validation.utenlandsoppholdSiste12Mnd.utenlandsopphold_ikke_registrert': + 'Du har ikkje registrert nokre utanlandsopphald for dei siste 12 månadene.', + 'validation.utenlandsoppholdSiste12Mnd.utenlandsopphold_overlapper': + 'Eitt eller fleire av utanlandsopphalda dei siste 12 månadene har datoar som overlappar.', + 'validation.utenlandsoppholdSiste12Mnd.utenlandsopphold_utenfor_periode': + 'Eitt eller fleire av utanlandsopphalda du har lagt inn er utanfor søknadsperioden.', + 'validation.skalBoUtenforNorgeNeste12Mnd.yesOrNoIsUnanswered': + 'Du må svare på om du planlegg å bu i utlandet i heile eller delar av dei neste 12 månadene.', + 'validation.utenlandsoppholdNeste12Mnd.utenlandsopphold_ikke_registrert': + 'Du har ikkje registrert nokre utanlandsopphald for dei neste 12 månadene.', + 'validation.utenlandsoppholdNeste12Mnd.utenlandsopphold_overlapper': + 'Eitt eller fleire av utanlandsopphalda dei neste 12 månadene har datoar som overlappar.', + 'validation.utenlandsoppholdNeste12Mnd.utenlandsopphold_utenfor_periode': + 'Eitt eller fleire av utanlandsopphalda du har lagt inn er utanfor søknadsperioden.', + 'validation.harForståttRettigheterOgPlikter.notChecked': 'Du må stadfeste at du har lese og forstått dine plikter.', + 'validation.harBekreftetOpplysninger.notChecked': 'Du må stadfeste at opplysningane du har gitt er riktige.', + 'validation.situasjon.arbeidsforhold.utbetalingsårsak.noValue': + 'Du må svare på kva som er grunnen til at du søkjer om utbetaling av omsorgspengar frå Nav.', + 'validation.situasjon.arbeidsforhold.ÅrsakMindre4Uker.noValue': + 'Du må svare på kva som var situasjonen din rett før du starta hos {arbeidsgivernavn}.', + 'validation.arbeidsforhold.utbetalingsårsak.konfliktForklaring.stringHasNoValue': + 'Du må forklare situasjonen med arbeidsgivaren din.', + 'validation.arbeidsforhold.utbetalingsårsak.konfliktForklaring.stringIsTooShort': + 'Forklaringa må vere på minst {min} teikn.', + 'validation.arbeidsforhold.utbetalingsårsak.konfliktForklaring.stringIsTooLong': + 'Forklaringa kan vere på maks {maks} teikn.', + 'validation.arbeidsforhold.utbetalingsårsak.vedlegg.noVedleggUploaded': + 'Ingen dokument med forklaring frå {arbeidsgivernavn} er lasta opp.', + 'validation.barn.ingenBarn': 'Du må leggje til minst eitt barn du har omsorg for', +}; export const appMessages = { nb, nn }; diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/i18n/index.tsx b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/i18n/index.tsx index 94bedc29e5..4eae1d1dc9 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/i18n/index.tsx +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/i18n/index.tsx @@ -35,7 +35,8 @@ const nb = { }; const nn: Record = { - ...nb, + ...libMessages.nn, + ...appMessages.nn, }; export type AppMessageKeys = keyof typeof nb; diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/pages/kvittering/components/TilArbeidsgiverDokumentListe.tsx b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/pages/kvittering/components/TilArbeidsgiverDokumentListe.tsx index dbfc68c694..3de2db8791 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/pages/kvittering/components/TilArbeidsgiverDokumentListe.tsx +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/pages/kvittering/components/TilArbeidsgiverDokumentListe.tsx @@ -1,4 +1,4 @@ -import * as React from 'react'; +import { ReactElement } from 'react'; import { Søker } from '@navikt/sif-common-api'; import Block from '@navikt/sif-common-core-ds/src/atoms/block/Block'; import { formatName } from '@navikt/sif-common-core-ds/src/utils/personUtils'; @@ -10,7 +10,7 @@ interface Props { arbeidsgivere: ArbeidsgiverDetaljer[]; } -const TilArbeidsgiverDokumentListe: React.FC = ({ søker, arbeidsgivere }: Props): JSX.Element => { +const TilArbeidsgiverDokumentListe: React.FC = ({ søker, arbeidsgivere }: Props): ReactElement => { const { fornavn, mellomnavn, etternavn } = søker; const søkersNavn: string | undefined = fornavn && etternavn ? formatName(fornavn, etternavn, mellomnavn || undefined) : 'UKJENT BRUKER'; diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/pages/kvittering/kvitteringMesssages.ts b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/pages/kvittering/kvitteringMesssages.ts index e383e1196b..53c2a490fb 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/pages/kvittering/kvitteringMesssages.ts +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/pages/kvittering/kvitteringMesssages.ts @@ -35,4 +35,41 @@ const nb = { 'page.conformation.tilArbeidsgiverDokument.info.4.lenkeTekst': 'nav.no/inntektsmeldingen', }; -export const kvitteringMessages = { nb }; +const nn: Record = { + 'page.confirmation.sidetittel': 'Me har motteke søknaden din', + 'page.confirmation.tittel': 'Me har motteke søknad om utbetaling av omsorgspengar', + 'page.confirmation.undertittel': 'Kva skjer vidare no?', + 'page.conformation.alert.infoForsvinner': + 'Obs! Denne informasjonen forsvinn når du lukkar den. Det er derfor viktig at du les gjennom før du går vidare.', + 'page.conformation.alert.infoPrint': + 'Du kan skrive ut denne informasjonssida og gje utskrifta til arbeidsgivaren din.', + 'page.conformation.alert.info.1': + 'Dette er ei stadfesting på at me har motteke søknaden din. Når søknaden din er ferdigbehandla, får du eit svar frå oss.', + 'page.conformation.alert.info.2': + 'Du må be arbeidsgivar om å sende inntektsmelding til oss. Det er viktig at arbeidsgivar kryssar av for at inntektsmeldinga gjeld omsorgspengar.', + 'page.conformation.alert.info.3': 'Me kontaktar deg dersom me treng fleire opplysningar.', + 'page.conformation.alert.info.4': + 'Du kan skrive ut denne informasjonssida og gje utskrifta til arbeidsgivaren din. Dersom du er registrert med fleire arbeidsgivarar, får du ein utskrift til kvar av dei.', + 'page.conformation.skrivUtKnapp': 'Skriv ut denne sida no', + 'page.conformation.skrivUt.info': + 'Dersom du ikkje kan skrive ut denne informasjonssida, kan du ta bilete av den. Hugs også å ta bilete av informasjonen som kjem under, som du kan gje til arbeidsgivar.', + 'page.conformation.tilArbeidsgiverDokument.tittel': 'Nav har motteke følgjande opplysningar:', + 'page.conformation.tilArbeidsgiverDokument.1': '{søkersNavn} er tilsett hos {arbeidsgiversNavn}', + 'page.conformation.tilArbeidsgiverDokument.2': '{søkersNavn} søkjer om {søknadNavn} for periodane:', + 'page.conformation.tilArbeidsgiverDokument.alert.1': + 'For at arbeidstakar skal få raskt svar på søknaden sin, ber me om at inntektsmeldinga blir sendt til oss så snart som mogleg.', + 'page.conformation.tilArbeidsgiverDokument.alert.2': + 'Det er viktig at du kryssar av for at inntektsmeldinga gjeld {søknadNavn}.', + 'page.conformation.tilArbeidsgiverDokument.alert.3': + 'Dersom inntektsmeldinga allereie er sendt, kan du sjå bort frå denne meldinga.', + 'page.conformation.tilArbeidsgiverDokument.info.tittel': 'Slik sender du inntektsmeldinga', + 'page.conformation.tilArbeidsgiverDokument.info.1': + 'Inntektsmeldinga blir sendt frå arbeidsgivars eige lønns- og personalsystem eller frå altinn.no. Meldinga inneheld inntektsopplysningar og annan informasjon Nav må ha for å behandle søknaden arbeidstakar har sendt. Hugs å velje riktig inntektsmelding.', + 'page.conformation.tilArbeidsgiverDokument.info.2': + 'Fyll inn alle dagar og/eller periodar som samsvarar med arbeidstakars søknad. Dersom søknaden ikkje stemmer med kva de har avtalt, må de avklare dette dykk imellom før du sender inntektsmeldinga.', + 'page.conformation.tilArbeidsgiverDokument.info.3': 'Du finn meir informasjon om inntektsmeldinga på', + + 'page.conformation.tilArbeidsgiverDokument.info.4.lenkeTekst': 'nav.no/inntektsmeldingen', +}; + +export const kvitteringMessages = { nb, nn }; diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/pages/velkommen/velkommenPageMessages.ts b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/pages/velkommen/velkommenPageMessages.ts index 5c2abb2a7a..75f769a907 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/pages/velkommen/velkommenPageMessages.ts +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/pages/velkommen/velkommenPageMessages.ts @@ -38,4 +38,44 @@ const nb = { 'Du har rett til innsyn i saken din. Vil du vite mer om hvordan Nav behandler personopplysninger? Se nav.no/personvern.', }; -export const velkommenPageMessages = { nb }; +const nn: Record = { + 'page.velkommen.sidetittel': 'Søknad om utbetaling av omsorgspengar', + 'page.velkommen.guide.tittel': 'Hei {navn}', + 'page.velkommen.guide.ingress': 'Velkommen til søknad om omsorgspengar.', + 'page.velkommen.guide.tekst.1': + 'Vanlegvis skal arbeidsgjevar utbetale omsorgspengar for omsorgsdagar du har brukt som arbeidstakar. Dersom du ikkje har rett til omsorgspengar frå arbeidsgjevar, eller det er andre grunnar til at arbeidsgjevar ikkje utbetaler, kan du ha rett til utbetaling frå Nav.', + 'page.velkommen.guide.tekst.2': + 'I tillegg til å søkje må du be arbeidsgjevar om å sende inntektsmelding til oss så snart du har sendt søknaden. Me må ha den for å kunne behandle søknaden din.', + + 'page.velkommen.omSøknaden.tittel': 'Om søknaden', + 'page.velkommen.omSøknaden.1': 'Du får rettleiing undervegs i søknaden om kva du skal fylle ut, og korleis.', + 'page.velkommen.omSøknaden.2': + 'Me tek vare på svara dine i 72 timar. Dersom du i løpet av den tida til dømes vil ta ein pause eller blir automatisk logga ut, kan du halde fram der du var når du kjem tilbake.', + 'page.velkommen.omSøknaden.3': + 'Du må svare på alle spørsmåla for å kunne gå vidare. Dersom du manglar etterspurt dokumentasjon, kan du ettersende det så snart du kan.', + 'page.velkommen.omSøknaden.4': 'Om korleis me hentar opplysningar om deg', + 'page.velkommen.form.bekreftLabel': 'Eg stadfestar at eg har forstått mitt ansvar som søkjar', + 'page.velkommen.form.ansvar.tittel': 'Ditt ansvar som søkjar', + 'page.velkommen.form.ansvar.list.1': + 'Eg forstår at dersom eg gjev uriktige opplysningar, kan det få konsekvensar for retten min til det eg søkjer om', + 'page.velkommen.form.ansvar.list.2.1': 'Eg har lese og forstått det som står på', + 'page.velkommen.form.ansvar.list.2.2': 'nav.no/rett og plikt', + 'page.velkommen.harForståttRettigheterOgPlikter.notChecked': + 'Du må velje at du har forstått ditt ansvar som søkjar', + 'personopplysninger.dialogtittel': 'Om behandling av personopplysningar', + 'personopplysninger.1': 'Slik behandlar Nav personopplysningane dine', + 'personopplysninger.2': + 'Me hentar inn og mottar opplysningar om deg for å behandle saka di. Det er nødvendig for at du skal få rett teneste. Deler av saka di blir behandla automatisk.', + 'personopplysninger.3': 'Kva opplysningar hentar me inn?', + 'personopplysninger.4': 'Opplysningane me hentar kjem anten frå deg eller frå offentlege register:', + 'personopplysninger.4.1': 'kva barn du er registrert som forelder til', + 'personopplysninger.4.2': 'opplysningar om barnet sin helse', + 'personopplysninger.4.3': 'arbeidsforholda dine og inntekta di', + 'personopplysninger.4.4': 'ytingar du mottar frå Nav', + 'personopplysninger.4.5': 'tilknytinga di til Noreg', + 'personopplysninger.4.6': + 'trygdeordningar du kan ha rett til i andre land. Me kan også sende opplysningar om deg til trygdemyndigheiter i andre land', + 'personopplysninger.5': + 'Du har rett til innsyn i saka di. Vil du vite meir om korleis Nav behandlar personopplysningar? Sjå nav.no/personvern.', +}; +export const velkommenPageMessages = { nb, nn }; diff --git "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/delt-bosted/deltBostedMessages.ts" "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/delt-bosted/deltBostedMessages.ts" index f493c29478..f8b4d56bba 100644 --- "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/delt-bosted/deltBostedMessages.ts" +++ "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/delt-bosted/deltBostedMessages.ts" @@ -11,4 +11,17 @@ const nb = { 'step.deltBosted.vedleggsliste.ingenAvtaleLastetOpp': 'Ingen avtale er lastet opp', }; -export const deltBostedMessages = { nb }; +const nn: Record = { + 'step.deltBosted.info.1': 'Du har opplyst om at de har avtale om delt fast bustad.', + 'step.deltBosted.info.2': 'Du kan registrere at barnet har delt fast bustad i Folkeregisteret.', + 'step.deltBosted.info.3': + 'Dersom barnet ikkje er registrert med delt fast bustad, og ikkje har same adresse som deg i Folkeregisteret, må du sende inn avtalen saman med søknaden.', + 'step.deltBosted.info.4': 'Du lastar opp avtalen anten ved å ta bilete av den, eller ved å skanne den.', + + 'step.deltBosted.uploadBtn': 'Last opp avtale', + + 'step.deltBosted.vedleggsliste.tittel': 'Last opp dokument', + 'step.deltBosted.vedleggsliste.ingenAvtaleLastetOpp': 'Ingen avtale er lasta opp', +}; + +export const deltBostedMessages = { nb, nn }; diff --git "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/dine-barn/dineBarnMessages.ts" "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/dine-barn/dineBarnMessages.ts" index 3e13d1fa72..680fff6db8 100644 --- "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/dine-barn/dineBarnMessages.ts" +++ "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/dine-barn/dineBarnMessages.ts" @@ -23,6 +23,28 @@ const nb = { 'Hvis foreldrene til barnet ikke bor sammen, kan de inngå en avtale om delt fast bosted etter barneloven §36. Barnet bor da fast med begge sine foreldre.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.dineBarn.nextButtonLabel': 'Fortset', + 'step.dineBarn.intro.tekst': + 'Me må vite kor mange barn du har, for å vurdere kor mange omsorgsdagar du har rett til.', + + 'step.dineBarn.seksjonsTittel': 'Dine barn', + + 'step.dineBarn.registrerteBarn.ingenFunnet': 'Me fann ikkje nokon barn registrert på deg.', + 'step.dineBarn.født': 'Fødd {dato}', + + 'step.dineBarn.andreBarn.heading': 'Andre barn', + 'step.dineBarn.annetBarnListAndDialog.addLabel': 'Legg til barn', + 'step.dineBarn.annetBarnListAndDialog.listTitle': 'Har du barn som ikkje er registrert her?', + 'step.dineBarn.annetBarnListAndDialog.listTitle.ingenRegistrerteBarn': 'Har du andre barn?', + 'step.dineBarn.annetBarnListAndDialog.modalTitle': 'Legg til barn', + 'step.dineBarn.formLeggTilBarn.aldersGrenseInfo': '(du kan ikkje legge til barn som er 19 år eller eldre)', + 'step.dineBarn.harDeltBosted.spm': 'Er det avtalt delt fast bustad for nokre av barna dine?', + 'validation.harDeltBosted.yesOrNoIsUnanswered': + 'Du må svare på om det er avtalt delt fast bustad for nokre av barna dine.', + 'step.dineBarn.harDeltBosted.info.tittel': 'Kva er delt fast bustad?', + 'step.dineBarn.harDeltBosted.info.tekst': + 'Dersom foreldra til barnet ikkje bur saman, kan dei inngå ein avtale om delt fast bustad etter barnelova §36. Barnet bur då fast med begge foreldra sine.', +}; export const dineBarnMessages = { nb, nn }; diff --git "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/frav\303\246r/frav\303\246rStepMessages.ts" "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/frav\303\246r/frav\303\246rStepMessages.ts" index 7508594036..ea525e7783 100644 --- "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/frav\303\246r/frav\303\246rStepMessages.ts" +++ "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/frav\303\246r/frav\303\246rStepMessages.ts" @@ -24,4 +24,30 @@ const nb = { 'step.fravær.værtIUtlandet.modalTittel': 'Utenlandsopphold', }; -export const fraværStepMessages = { nb }; +const nn: Record = { + 'step.fravær.stepIndicatorLabel': 'Kva dagar søkjer du utbetaling for?', + 'step.fravær.nextButtonLabel': 'Fortset', + 'step.fravær.info.1': + 'Her legg du inn dagar du har hatt fråvær frå jobb, fordi du har vore heime med omsorgsdagar.', + 'step.fravær.info.2': + 'Du skal berre leggje inn dagar du ikkje har fått utbetalt lønn frå arbeidsgjevaren din.', + 'step.fravær.heledager.spm': 'Har du hatt heile dagar med fråvær frå jobb?', + 'step.fravær.heledager.perioderModal.label': 'Legg til ny periode med fullt fråvær', + 'step.fravær.heledager.perioderModal.title': 'Fråvær heile dagar', + 'step.fravær.perioderDagModal.begrensTilSammeÅrInfo': + 'Du kan berre søkje innanfor eitt kalenderår om gongen. Dersom du skal søkje for fleire år, må du sende ein søknad for kvart av åra.', + 'step.fravær.delvisdag.spm': 'Har du hatt dagar med delvis fråvær frå jobb?', + 'step.fravær.delvisdag.dagModal.label': 'Legg til ny dag med delvis fråvær', + 'step.fravær.delvisdag.dagModal.title': 'Fråvær delar av dag', + 'step.fravær.info.ikkeHelg.tittel': 'Kvifor kan eg ikkje velje laurdag eller søndag?', + 'step.fravær.delvisdag.info.ikkeHelg.tekst': + 'Du kan berre få utbetalt omsorgspengar for kvardagar, sjølv om du jobbar laurdag eller søndag. Difor kan du ikkje leggje inn delvis fråvær på laurdagar eller søndagar.', + 'step.fravær.heledager.info.ikkeHelg.tekst': + 'Du kan berre få utbetalt omsorgspengar for kvardagar, sjølv om du jobbar laurdag eller søndag. Difor kan du ikkje velje laurdag eller søndag som start- eller sluttdato i perioden du legg inn.', + 'step.fravær.utenlandsopphold.tittel': 'Utanlandsopphald i dagane med fråvær', + 'step.fravær.værtIUtlandet.spm': 'Har du vore i utlandet nokre av dagane du søkjer omsorgspengar for?', + 'step.fravær.værtIUtlandet.leggTilLabel': 'Legg til nytt utanlandsopphald', + 'step.fravær.værtIUtlandet.modalTittel': 'Utanlandsopphald', +}; + +export const fraværStepMessages = { nb, nn }; diff --git "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/legeerkl\303\246ring/legeerkl\303\246ringMessages.ts" "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/legeerkl\303\246ring/legeerkl\303\246ringMessages.ts" index e489174a2e..4aaf446d15 100644 --- "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/legeerkl\303\246ring/legeerkl\303\246ringMessages.ts" +++ "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/legeerkl\303\246ring/legeerkl\303\246ringMessages.ts" @@ -13,4 +13,19 @@ const nb = { 'vedleggsliste.ingenLegeerklæringLastetOpp': 'Ingen legeerklæring er lastet opp', }; -export const legeerklæringMessages = { nb }; +const nn: Record = { + 'step.legeerklæring.stepIndicatorLabel': 'Last opp di legeerklæring', + 'step.legeerklæring.counsellorpanel.1': + 'Dersom du søkjer om utbetaling for meir enn 3 samanhengande dagar, må du laste opp ei legeerklæring som gjeld frå og med den 4. dagen.', + 'step.legeerklæring.counsellorpanel.2': + 'Dersom du søkjer for kortare periode eller for enkeltdagar, treng du ikkje legeerklæring. Du kan då halde fram med søknaden utan å laste opp noko.', + 'step.legeerklæring.counsellorpanel.3': + 'Dersom du søkjer for meir enn 3 samanhengande dagar, men ikkje har legeerklæring tilgjengeleg no,', + 'step.legeerklæring.counsellorpanel.3.lenkeEttersending': 'kan du ettersende den her.', + + 'step.legeerklæring.vedleggsliste.tittel': 'Last opp legeerklæring', + + 'vedleggsliste.ingenLegeerklæringLastetOpp': 'Ingen legeerklæring er lasta opp', +}; + +export const legeerklæringMessages = { nb, nn }; diff --git "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/oppsummering/components/UtbetalingsperioderSummaryView.tsx" "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/oppsummering/components/UtbetalingsperioderSummaryView.tsx" index e22228f5b2..21763076c0 100644 --- "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/oppsummering/components/UtbetalingsperioderSummaryView.tsx" +++ "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/oppsummering/components/UtbetalingsperioderSummaryView.tsx" @@ -1,4 +1,5 @@ import { FormSummary } from '@navikt/ds-react'; +import { ReactElement } from 'react'; import { SummaryList } from '@navikt/sif-common-ui'; import { ISODateToDate } from '@navikt/sif-common-utils/src'; import { prettifyDate, prettifyDateExtended } from '@navikt/sif-common-utils/src/dateFormatter'; @@ -62,7 +63,7 @@ export const outNull = ( maybeUtbetalingsperiodeDag: UtbetalingsperiodeDag | null, ): maybeUtbetalingsperiodeDag is UtbetalingsperiodeDag => maybeUtbetalingsperiodeDag !== null; -export const utbetalingsperiodeDagToDagSummaryStringView = (dag: UtbetalingsperiodeDag): JSX.Element => { +export const utbetalingsperiodeDagToDagSummaryStringView = (dag: UtbetalingsperiodeDag): ReactElement => { const antallTimerSkulleJobbet = `${timeToDecimalTime(dag.antallTimerPlanlagt)} ${timeText( `${timeToDecimalTime(dag.antallTimerPlanlagt)}`, )}`; @@ -83,7 +84,7 @@ export const utbetalingsperiodeDagToDagSummaryStringView = (dag: Utbetalingsperi ); }; -const UtbetalingsperioderSummaryView: React.FC = ({ utbetalingsperioder = [] }: Props): JSX.Element => { +const UtbetalingsperioderSummaryView: React.FC = ({ utbetalingsperioder = [] }: Props): ReactElement => { const perioder = utbetalingsperioder.filter((p) => p.antallTimerBorte === null); const dager: UtbetalingsperiodeDag[] = utbetalingsperioder.map(toMaybeUtbetalingsperiodeDag).filter(outNull); @@ -98,7 +99,7 @@ const UtbetalingsperioderSummaryView: React.FC = ({ utbetalingsperioder = ( + itemRenderer={(periode: Utbetalingsperiode): ReactElement => ( <> = { + 'step.oppsummering.stepIndicatorLabel': 'Oppsummering', + 'step.oppsummering.nextButtonLabel': 'Send søknad', + + 'step.oppsummering.info': + 'Les gjennom oppsummeringa før du sender inn søknaden. Dersom du vil gjere endringar, kan du gå tilbake.', + 'step.oppsummering.søker.header': 'Om deg', + 'step.oppsummering.søker.navn': 'Namn', + 'step.oppsummering.søker.fnr': 'Fødselsnummer', + + 'step.oppsummering.arbeidsforhold.tittel': 'Fråvær frå arbeid', + 'step.oppsummering.arbeidsforhold.forhold': '{navn} (organisasjonsnummer: {organisasjonsnummer})', + 'step.oppsummering.arbeidsforhold.ingenArbeidsforhold': 'Ingen arbeidsgivar er valt', + 'step.oppsummering.arbeidsforhold.harHattFravær.spm': + 'Har du hatt fråvær hos denne arbeidsgivaren fordi du har brukt omsorgsdagar?', + 'step.oppsummering.arbeidsforhold.harArbeidsgiverUtbetaltDegLønnForOmsorgsdagene.spm': + 'Har arbeidsgivaren utbetalt deg lønn for dei dagane du har brukt omsorgsdagar?', + 'step.oppsummering.arbeidsforhold.utbetalingsårsak.spm': + 'Kva er grunnen til at du søkjer om utbetaling av omsorgspengar frå Nav?', + 'step.oppsummering.arbeidsforhold.utbetalingsårsak.IKKE_BESVART': 'Ikkje besvart', + 'step.oppsummering.arbeidsforhold.utbetalingsårsak.NYOPPSTARTET_HOS_ARBEIDSGIVER': + 'Eg har jobba mindre enn 4 veker hos denne arbeidsgivaren', + 'step.oppsummering.arbeidsforhold.utbetalingsårsak.ARBEIDSGIVER_KONKURS': 'Arbeidsgivar er konkurs', + 'step.oppsummering.arbeidsforhold.utbetalingsårsak.KONFLIKT_MED_ARBEIDSGIVER': + 'Det er usemje mellom meg og arbeidsgivar', + 'step.oppsummering.arbeidsforhold.årsakMinde4Uker.spm': + 'Kva var situasjonen din rett før du starta hos denne arbeidsgivaren?', + 'step.oppsummering.arbeidsforhold.årsakMinde4Uker.JOBBET_HOS_ANNEN_ARBEIDSGIVER': + 'Eg jobba for ein annan arbeidsgivar', + 'step.oppsummering.arbeidsforhold.årsakMinde4Uker.VAR_FRILANSER': 'Eg var frilanser', + 'step.oppsummering.arbeidsforhold.årsakMinde4Uker.VAR_SELVSTENDIGE': 'Eg var sjølvstendig næringsdrivande', + 'step.oppsummering.arbeidsforhold.årsakMinde4Uker.SØKTE_ANDRE_UTBETALINGER': + 'Eg søkte om eller mottok dagpengar, foreldrepengar, svangerskapspengar, sjukepengar, omsorgspengar, pleiepengar eller opplæringspengar.', + 'step.oppsummering.arbeidsforhold.årsakMinde4Uker.ARBEID_I_UTLANDET': + 'Eg var i arbeid, hadde frilansoppdrag eller næringsverksemd i utlandet', + 'step.oppsummering.arbeidsforhold.årsakMinde4Uker.UTØVDE_VERNEPLIKT': 'Eg utførte verneplikt', + 'step.oppsummering.arbeidsforhold.årsakMinde4Uker.ANNET': 'Anna', + 'step.oppsummering.arbeidsforhold.konflikt.forklaringTittel': + 'Forklar situasjonen med arbeidsgivaren din. Få med kvifor du meiner at du har rett til å få omsorgspengar frå arbeidsgivar.', + 'step.oppsummering.arbeidsforhold.konflikt.dokumenter.header': + 'Forklaring frå arbeidsgivar om kvifor dei ikkje utbetalar:', + 'step.oppsummering.arbeidsforhold.konflikt.dokumenter.ikkelastetopp': 'Ikkje lasta opp, må ettersendast', + 'step.oppsummering.arbeidsforhold.fravær.heleDager.header': 'Heile dagar med fråvær', + 'step.oppsummering.arbeidsforhold.fravær.heleDager.item': 'Frå og med {fom}, til og med {tom}', + 'step.oppsummering.arbeidsforhold.delvisFravær.header': 'Dagar med delvis fråvær', + 'step.oppsummering.arbeidsforhold.delvisFravær.item': + '{dato}: Skulle jobba {timerSkulleJobbet}. Borte frå jobb {timerBorte}.', + 'step.oppsummering.fravær.årsak': 'Årsak: {årsak}.', + + 'step.oppsummering.utenlandsopphold.titel': 'Utanlandsopphald', + 'step.oppsummering.utenlandsoppholdIPerioden.listetittel': 'Utanlandsopphald i perioden du har brukt omsorgsdagar', + + 'step.oppsummering.medlemskap.header': 'Medlemskap i folketrygda', + 'step.oppsummering.utlandetSiste12.header': 'Har du budd i utlandet dei siste 12 månadene?', + 'step.oppsummering.utlandetSiste12.liste.header': 'Bustadar i utlandet siste 12 månader', + 'step.oppsummering.utlandetNeste12.header': 'Skal du bu i utlandet dei neste 12 månadene?', + 'step.oppsummering.utlandetNeste12.liste.header': 'Bustadar i utlandet neste 12 månader', + + 'step.oppsummering.dokumenter.header': 'Vedlegg', + + 'step.oppsummering.deltBosted.ingenVedlegg': 'Ingen avtale om delt bustad er lasta opp. Denne må ettersendast.', + 'step.oppsummering.deltBosted.header': 'Avtale om delt fast bustad', + 'step.oppsummering.deltBosted.dokumenter': 'Dokument lasta opp', + + 'step.oppsummering.legeerklæring.ingenVedlegg': 'Ingen legeerklæring er lasta opp. Denne må ettersendast.', + 'step.oppsummering.fosterbarn': 'Fosterbarn', + 'step.oppsummering.fosterbarn.harFosterbarn': 'Har du fosterbarn?', + 'step.oppsummering.fosterbarn.listItem': ' (fnr. {identitetsnummer})', + + 'step.oppsummering.legeerklæring.header': 'Legeerklæring', + 'step.oppsummering.legeerklæring.liste.header': 'Dokument lasta opp', + + 'step.oppsummering.bekrefterOpplysninger': + 'Eg stadfestar at opplysningane eg har gitt er riktige, og at eg ikkje har halde tilbake opplysningar som har betydning for min rett til omsorgspengar.', + 'step.oppsummering.bekrefterOpplysninger.ikkeBekreftet': 'Du må stadfeste opplysningane', + + 'step.oppsummering.dineBarn.tittel': 'Dine barn', + 'step.oppsummering.dineBarn.registrerteBarn': 'Barn me har funne på deg i folkeregisteret', + 'step.oppsummering.dineBarn.andreBarn': 'Andre barn du har lagt til her', + 'step.oppsummering.dineBarn.født': 'Fødselsdato: {dato}', + 'step.oppsummering.dineBarn.id': 'Fødselsnummer/id: {identitetsnummer}', + 'step.oppsummering.dineBarn.fosterbarn': 'Barnet er mitt fosterbarn', + 'step.oppsummering.sendSøknad': 'Send søknad', +}; + +export const oppsummeringMessages = { nb, nn }; diff --git "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/situasjon/situasjonStepMessages.ts" "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/situasjon/situasjonStepMessages.ts" index 5a87b624d5..20d7d58d4d 100644 --- "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/situasjon/situasjonStepMessages.ts" +++ "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/s\303\270knad/steps/situasjon/situasjonStepMessages.ts" @@ -40,4 +40,45 @@ const nb = { 'step.situasjon.vedleggsliste.ingenDokumenterLastetOpp': 'Ingen dokumenter er lastet opp', }; -export const situasjonMessages = { nb }; +const nn: Record = { + 'step.situasjon.stepIndicatorLabel': 'Kva er din arbeidssituasjon?', + 'step.situasjon.nextButtonLabel': 'Fortset', + 'step.situasjon.arbeidsforhold.aktivtArbeidsforhold.info.del1': + 'Her er arbeidsgjevarane me har funne registrert på deg.', + 'step.situasjon.arbeidsforhold.aktivtArbeidsforhold.info.del2': + 'Dersom det manglar ein arbeidsgjevar her, må du be arbeidsgjevar sende ei ny A-melding. Dette gjerast anten via eige lønns- og personalsystem, eller via Altinn.', + 'step.situasjon.arbeidsforhold.harHattFravær.spm': + 'Har du hatt fråvær hos denne arbeidsgjevaren fordi du har brukt omsorgsdagar?', + 'step.situasjon.arbeidsforhold.harArbeidsgiverUtbetaltDegLønnForOmsorgsdagene.spm': + 'Har arbeidsgjevaren utbetalt deg lønn for dagane du har brukt omsorgsdagar?', + 'step.situasjon.arbeidsforhold.utbetalingsårsak.spm': + 'Kva er grunnen til at du søkjer om utbetaling av omsorgspengar frå Nav?', + 'step.situasjon.arbeidsforhold.utbetalingsårsak.nyoppstartetHosArbeidsgiver': + 'Eg har jobba mindre enn 4 veker hos denne arbeidsgjevaren', + 'step.situasjon.arbeidsforhold.utbetalingsårsak.arbeidsgiverKonkurs': 'Arbeidsgjevar er konkurs', + 'step.situasjon.arbeidsforhold.utbetalingsårsak.konfliktMedArbeidsgiver': + 'Det er usemje mellom meg og arbeidsgjevar', + 'step.situasjon.arbeidsforhold.utbetalingsårsak.konfliktMedArbeidsgiver.forklaring': + 'Forklar situasjonen med arbeidsgjevaren din. Få med kvifor du meiner at du har rett til å få omsorgspengar frå arbeidsgjevar.', + 'step.situasjon.arbeidsforhold.utbetalingsårsak.vedlegg.title': + 'Du må laste opp ei forklaring frå din arbeidsgjevar på kvifor dei ikkje har utbetalt deg omsorgspengar.', + 'step.situasjon.arbeidsforhold.utbetalingsårsak.vedlegg': 'Last opp forklaring frå arbeidsgjevar', + 'step.situasjon.arbeidsforhold.årsakMinde4Uker.spm': + 'Kva var situasjonen din rett før du starta hos denne arbeidsgjevaren?', + 'step.situasjon.arbeidsforhold.årsakMinde4Uker.jobbetHosAnnenArbeidsgiver': 'Eg jobba for ein annan arbeidsgjevar', + 'step.situasjon.arbeidsforhold.årsakMinde4Uker.varFrilanser': 'Eg var frilanser', + 'step.situasjon.arbeidsforhold.årsakMinde4Uker.varSelvstendige': 'Eg var sjølvstendig næringsdrivande', + 'step.situasjon.arbeidsforhold.årsakMinde4Uker.søkteAndreUtbetalinger': + 'Eg søkte om eller mottok dagpengar, foreldrepengar, svangerskapspengar, sjukepengar, omsorgspengar, pleiepengar eller opplæringspengar', + 'step.situasjon.arbeidsforhold.årsakMinde4Uker.arbeidIUtlandet': + 'Eg jobba i utlandet som arbeidstakar, sjølvstendig næringsdrivande eller frilanser', + 'step.situasjon.arbeidsforhold.årsakMinde4Uker.utøvdeVerneplikt': 'Eg utførte verneplikt', + 'step.situasjon.arbeidsforhold.årsakMinde4Uker.annet': 'Anna', + 'step.situasjon.arbeidsforhold.harUtbetalingLønn.alertstripe': + 'Nav utbetalar ikkje for omsorgsdagar som arbeidsgjevar allereie har utbetalt for.', + 'step.situasjon.arbeidsforhold.ingen.info.text': 'Me finn ingen registrerte arbeidsgjevarar.', + 'step.situasjon.arbeidsforhold.ingenGjeldende.info.text.nei': + 'Du må ha hatt fråvær frå minst éin arbeidsgjevar for å gå vidare i søknaden.', + 'step.situasjon.vedleggsliste.ingenDokumenterLastetOpp': 'Ingen dokument er lasta opp', +}; +export const situasjonMessages = { nb, nn }; diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/utils/appEnv.ts b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/utils/appEnv.ts index baa39e1d22..620b7d0e9c 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/utils/appEnv.ts +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/utils/appEnv.ts @@ -1,8 +1,9 @@ -import { getCommonEnv } from '@navikt/sif-common-env'; +import { getCommonEnv, getRequiredEnv } from '@navikt/sif-common-env'; import { AppEnv } from '../../../env.schema'; const getAppEnv = (): AppEnv => ({ ...getCommonEnv(), + SIF_PUBLIC_FEATURE_NYNORSK: getRequiredEnv('SIF_PUBLIC_FEATURE_NYNORSK') === 'on' ? 'on' : 'off', }); export const appEnv = getAppEnv(); diff --git "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/utils/s\303\270knadsdataToApiData/validateApiData.ts" "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/utils/s\303\270knadsdataToApiData/validateApiData.ts" index a3bd8a6b47..d15055f0e3 100644 --- "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/utils/s\303\270knadsdataToApiData/validateApiData.ts" +++ "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/app/utils/s\303\270knadsdataToApiData/validateApiData.ts" @@ -13,7 +13,7 @@ export const validateApiDataMessages = { 'apiDataValidation.omsorgsavtaleMangler': 'Det mangler avtale om delt bosted. ', }, nn: { - 'apiDataValidation.undefined': 'Det oppstod en feil ved visningen av siden.', + 'apiDataValidation.undefined': 'Det oppstod en feil ved visningen av sida.', 'apiDataValidation.omsorgsavtaleMangler': 'Det mangler avtale om delt bosted. ', }, }; diff --git "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/storybook/decorators/withS\303\270knadContext.tsx" "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/storybook/decorators/withS\303\270knadContext.tsx" index 3b10f5b641..c39a6f8952 100644 --- "a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/storybook/decorators/withS\303\270knadContext.tsx" +++ "b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/storybook/decorators/withS\303\270knadContext.tsx" @@ -1,7 +1,7 @@ import * as React from 'react'; import { SøknadContextProvider } from '../../app/søknad/context/SøknadContext'; import { SøknadContextState } from '../../app/types/SøknadContextState'; -import { søkerStorybookMock } from '../mock-data'; +import { registrerteBarnMock, søkerStorybookMock } from '../mock-data'; export const mockInitialSøknadContextState: SøknadContextState = { versjon: '1.0.0', @@ -9,6 +9,7 @@ export const mockInitialSøknadContextState: SøknadContextState = { søknadsdata: { id: '1', }, + registrerteBarn: registrerteBarnMock, søknadRoute: undefined, søknadSendt: false, børMellomlagres: false, diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/storybook/mock-data/index.ts b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/storybook/mock-data/index.ts index 67512faca7..5abac9b160 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/storybook/mock-data/index.ts +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/storybook/mock-data/index.ts @@ -1,8 +1,8 @@ +import { RegistrertBarn, Søker } from '@navikt/sif-common-api'; import { ISODateToDate } from '@navikt/sif-common-utils'; -import { Søker } from '../../app/types/Søker'; +import { Utbetalingsårsak, ÅrsakNyoppstartet } from '../../app/types/ArbeidsforholdTypes'; import { ArbeidsgiverResponse } from '../../app/types/Arbeidsgiver'; import { ApiAktivitet, ArbeidsgiverDetaljer } from '../../app/types/søknadApiData/SøknadApiData'; -import { Utbetalingsårsak, ÅrsakNyoppstartet } from '../../app/types/ArbeidsforholdTypes'; export const søkerStorybookMock: Søker = { fødselsnummer: '30086421581', @@ -12,6 +12,22 @@ export const søkerStorybookMock: Søker = { etternavn: 'KRONJUVEL', }; +export const registrerteBarnMock: RegistrertBarn[] = [ + { + fødselsdato: ISODateToDate('1990-01-01'), + fornavn: 'Barn', + mellomnavn: 'Barne', + etternavn: 'Barnesen', + aktørId: '1', + }, + { + fødselsdato: ISODateToDate('1990-01-02'), + fornavn: 'Mock', + etternavn: 'Mocknes', + aktørId: '2', + }, +]; + export const arbeidsgivereStorybookMock: ArbeidsgiverResponse = { organisasjoner: [ { diff --git a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/storybook/stories/steps/Situasjon.stories.tsx b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/storybook/stories/steps/Situasjon.stories.tsx index d113a4c707..5bba1580a7 100644 --- a/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/storybook/stories/steps/Situasjon.stories.tsx +++ b/apps/omsorgspengerutbetaling-arbeidstaker-soknad/src/storybook/stories/steps/Situasjon.stories.tsx @@ -24,7 +24,7 @@ export default { parameters: { mockData: [ { - url: 'http://localhost:8089/oppslag/arbeidsgiver?fra_og_med=2024-01-01&til_og_med=2024-04-30', + url: '/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling-arbeidstaker/api/oppslag/arbeidsgiver?fra_og_med=2024-01-01&til_og_med=2024-04-30', method: 'GET', status: 200, response: arbeidsgivereStorybookMock, diff --git a/apps/omsorgspengerutbetaling-soknad/.env.example b/apps/omsorgspengerutbetaling-soknad/.env.example index bc432a786c..0202e1cfc0 100644 --- a/apps/omsorgspengerutbetaling-soknad/.env.example +++ b/apps/omsorgspengerutbetaling-soknad/.env.example @@ -8,7 +8,7 @@ SIF_PUBLIC_APPSTATUS_DATASET=staging SIF_PUBLIC_APPSTATUS_PROJECT_ID=ryujtq87 SIF_PUBLIC_DEKORATOR_URL=https://www.nav.no/dekoratoren/?simple=true&chatbot=false&logoutUrl=https://www.nav.no/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling/oauth2/logout SIF_PUBLIC_LOGIN_URL=http://localhost:8081/auth-mock/cookie?subject=mockSubject&redirect_location=http://localhost:8080 - +SIF_PUBLIC_FEATURE_NYNORSK=on SIF_PUBLIC_MINSIDE_URL=https://www.intern.dev.nav.no/minside K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH=/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling/api diff --git a/apps/omsorgspengerutbetaling-soknad/.storybook/preview-head.html b/apps/omsorgspengerutbetaling-soknad/.storybook/preview-head.html index 7a8e29f572..790af15410 100644 --- a/apps/omsorgspengerutbetaling-soknad/.storybook/preview-head.html +++ b/apps/omsorgspengerutbetaling-soknad/.storybook/preview-head.html @@ -1,11 +1,23 @@ \ No newline at end of file diff --git a/apps/omsorgspengerutbetaling-soknad/e2e/playwright/mock-data/playwrightApiMockData.ts b/apps/omsorgspengerutbetaling-soknad/e2e/playwright/mock-data/playwrightApiMockData.ts index b0789c8fe4..5536318b00 100644 --- a/apps/omsorgspengerutbetaling-soknad/e2e/playwright/mock-data/playwrightApiMockData.ts +++ b/apps/omsorgspengerutbetaling-soknad/e2e/playwright/mock-data/playwrightApiMockData.ts @@ -1,7 +1,8 @@ import dayjs from 'dayjs'; +import { testDate } from '../utils/setNow'; const getDateNYearsAgo = (years: number): Date => { - return dayjs().subtract(years, 'year').toDate(); + return dayjs(testDate).subtract(years, 'year').toDate(); }; const søkerMock = { diff --git a/apps/omsorgspengerutbetaling-soknad/e2e/playwright/playwright.env.ts b/apps/omsorgspengerutbetaling-soknad/e2e/playwright/playwright.env.ts index 05de24fff0..31e6850f0d 100644 --- a/apps/omsorgspengerutbetaling-soknad/e2e/playwright/playwright.env.ts +++ b/apps/omsorgspengerutbetaling-soknad/e2e/playwright/playwright.env.ts @@ -5,6 +5,7 @@ export const playwrightEnv: AppDevEnv = { APP_VERSION: 'dev', PUBLIC_PATH: '/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling', GITHUB_REF_NAME: 'branch-name', + SIF_PUBLIC_FEATURE_NYNORSK: 'on', SIF_PUBLIC_AMPLITUDE_API_KEY: 'default', SIF_PUBLIC_APPSTATUS_DATASET: 'staging', SIF_PUBLIC_APPSTATUS_PROJECT_ID: 'ryujtq87', diff --git a/apps/omsorgspengerutbetaling-soknad/e2e/playwright/utils/setNow.ts b/apps/omsorgspengerutbetaling-soknad/e2e/playwright/utils/setNow.ts index b44193037c..d0952e2a99 100644 --- a/apps/omsorgspengerutbetaling-soknad/e2e/playwright/utils/setNow.ts +++ b/apps/omsorgspengerutbetaling-soknad/e2e/playwright/utils/setNow.ts @@ -2,7 +2,7 @@ import MockDate from 'mockdate'; import { Page } from '@playwright/test'; -const testDate = new Date('2024-08-01'); +export const testDate = new Date('2024-08-01'); export const setNow = async (page: Page, date: Date = testDate) => { await page.addInitScript(() => { diff --git a/apps/omsorgspengerutbetaling-soknad/env.schema.ts b/apps/omsorgspengerutbetaling-soknad/env.schema.ts index 0136a4c746..ec9bbd8923 100644 --- a/apps/omsorgspengerutbetaling-soknad/env.schema.ts +++ b/apps/omsorgspengerutbetaling-soknad/env.schema.ts @@ -1,7 +1,9 @@ import { commonEnvSchema } from '@navikt/sif-common-env'; import * as z from 'zod'; -export const appEnvSchema = commonEnvSchema; +export const appEnvSchema = commonEnvSchema.extend({ + SIF_PUBLIC_FEATURE_NYNORSK: z.enum(['on', 'off']), +}); export const appDevEnvSchema = appEnvSchema.extend({ MOCK_DATE: z.string().optional(), diff --git a/apps/omsorgspengerutbetaling-soknad/mock/AppSettings.cjs b/apps/omsorgspengerutbetaling-soknad/mock/AppSettings.cjs index 0d5707ae86..dbcdb9e38a 100644 --- a/apps/omsorgspengerutbetaling-soknad/mock/AppSettings.cjs +++ b/apps/omsorgspengerutbetaling-soknad/mock/AppSettings.cjs @@ -10,7 +10,7 @@ const getAppSettings = () => ({ K9_BRUKERDIALOG_PROSESSERING_API_SCOPE: `${process.env.K9_BRUKERDIALOG_PROSESSERING_API_SCOPE}`, K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH: `${process.env.K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH}`, - SIF_PUBLIC_AMPLITUDE_API_KEY: `${process.env.SIF_PUBLIC_AMPLITUDE_API_KEY}`, + SIF_PUBLIC_FEATURE_NYNORSK: `${process.env.SIF_PUBLIC_FEATURE_NYNORSK}`, SIF_PUBLIC_APPSTATUS_DATASET: `${process.env.SIF_PUBLIC_APPSTATUS_DATASET}`, SIF_PUBLIC_APPSTATUS_PROJECT_ID: `${process.env.SIF_PUBLIC_APPSTATUS_PROJECT_ID}`, SIF_PUBLIC_DEKORATOR_URL: `${process.env.SIF_PUBLIC_DEKORATOR_URL}`, diff --git a/apps/omsorgspengerutbetaling-soknad/mock/mock-api-server.cjs b/apps/omsorgspengerutbetaling-soknad/mock/mock-api-server.cjs index 39fffefbd7..04ea2f7a74 100644 --- a/apps/omsorgspengerutbetaling-soknad/mock/mock-api-server.cjs +++ b/apps/omsorgspengerutbetaling-soknad/mock/mock-api-server.cjs @@ -7,7 +7,7 @@ const busboyCons = require('busboy'); require('dotenv').config(); -const barnMock = require('./mock-data/ett-eller-to-barn-under-13.json'); +const barnMock = require('./mock-data/kun-barn-over-13.json'); const søkerMock = require('./mock-data/soker.json'); const { v4: uuidv4 } = require('uuid'); diff --git a/apps/omsorgspengerutbetaling-soknad/mock/mock-data/kun-barn-over-13.json b/apps/omsorgspengerutbetaling-soknad/mock/mock-data/kun-barn-over-13.json index d2100b26c3..f8ec7eb609 100644 --- a/apps/omsorgspengerutbetaling-soknad/mock/mock-data/kun-barn-over-13.json +++ b/apps/omsorgspengerutbetaling-soknad/mock/mock-data/kun-barn-over-13.json @@ -1,13 +1,11 @@ { "barn": [ { - "fødselsdato": "2009-01-02", + "fødselsdato": "2012-01-05", "fornavn": "Barn", "mellomnavn": "Barne", "etternavn": "Barnesen", "aktørId": "1" - }, - { "fødselsdato": "2008-01-02", "fornavn": "Mock", "etternavn": "Mocknes", "aktørId": "2" }, - { "fødselsdato": "2007-01-02", "fornavn": "Smilende", "etternavn": "Karaffel", "aktørId": "3" } + } ] } diff --git a/apps/omsorgspengerutbetaling-soknad/nais/dev-gcp.json b/apps/omsorgspengerutbetaling-soknad/nais/dev-gcp.json index d61559c13f..23bb5648bb 100644 --- a/apps/omsorgspengerutbetaling-soknad/nais/dev-gcp.json +++ b/apps/omsorgspengerutbetaling-soknad/nais/dev-gcp.json @@ -22,10 +22,10 @@ "K9_BRUKERDIALOG_PROSESSERING_API_URL": "http://k9-brukerdialog-prosessering", "K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH": "/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling/api", + "SIF_PUBLIC_FEATURE_NYNORSK": "on", "SIF_PUBLIC_AMPLITUDE_API_KEY": "default", "SIF_PUBLIC_USE_AMPLITUDE": "false", "SIF_PUBLIC_APPSTATUS_DATASET": "staging", - "SIF_PUBLIC_APPSTATUS_PROJECT_ID": "ryujtq87", "SIF_PUBLIC_DEKORATOR_URL": "https://dekoratoren.ekstern.dev.nav.no/?simple=true&chatbot=false&urlLookupTable=false&logoutUrl=https://omsorgspengerutbetaling-soknad.intern.dev.nav.no/oauth2/logout&redirectToApp=true", "SIF_PUBLIC_LOGIN_URL": "https://omsorgspengerutbetaling-soknad.intern.dev.nav.no/oauth2/login?redirect=/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling/soknad", diff --git a/apps/omsorgspengerutbetaling-soknad/nais/prod-gcp.json b/apps/omsorgspengerutbetaling-soknad/nais/prod-gcp.json index e90054bf03..3cb0f319ca 100644 --- a/apps/omsorgspengerutbetaling-soknad/nais/prod-gcp.json +++ b/apps/omsorgspengerutbetaling-soknad/nais/prod-gcp.json @@ -22,6 +22,7 @@ "K9_BRUKERDIALOG_PROSESSERING_API_URL": "http://k9-brukerdialog-prosessering", "K9_BRUKERDIALOG_PROSESSERING_FRONTEND_PATH": "/familie/sykdom-i-familien/soknad/omsorgspengerutbetaling/api", + "SIF_PUBLIC_FEATURE_NYNORSK": "off", "SIF_PUBLIC_AMPLITUDE_API_KEY": "10798841ebeba333b8ece6c046322d76", "SIF_PUBLIC_USE_AMPLITUDE": "true", "SIF_PUBLIC_APPSTATUS_DATASET": "production", diff --git a/apps/omsorgspengerutbetaling-soknad/package.json b/apps/omsorgspengerutbetaling-soknad/package.json index a8a6d34496..0981a85cb6 100644 --- a/apps/omsorgspengerutbetaling-soknad/package.json +++ b/apps/omsorgspengerutbetaling-soknad/package.json @@ -1,17 +1,22 @@ { - "author": "NAV", + "author": { + "name": "NAV" + }, "description": "Søknad om utbetaling av omsorgsdager for selvstendige og frilansere", "license": "MIT", "name": "@navikt/omsorgspengerutbetaling-soknad", - "repository": "https://github.com/navikt/sif-brukerdialog", + "repository": { + "type": "git", + "url": "git+https://github.com/navikt/sif-brukerdialog.git" + }, "version": "1.23.0", "private": true, "type": "module", "dependencies": { - "@navikt/ds-css": "7.8.0", + "@navikt/ds-css": "7.9.1", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", "@navikt/sif-app-register": "*", "@navikt/sif-common-amplitude": "*", "@navikt/sif-common-api": "*", @@ -26,16 +31,16 @@ "@navikt/sif-common-utils": "*", "axios": "1.7.9", "csp-header": "6.0.0", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "jsdom": "25.0.1", "lodash": "4.17.21", "object-hash": "3.0.0", "react": "19.0.0", "react-dom": "19.0.0", "react-fast-compare": "3.2.2", - "react-intl": "7.0.4", - "react-router-dom": "7.0.2", - "uuid": "11.0.3" + "react-intl": "7.1.0", + "react-router-dom": "7.1.1", + "uuid": "11.0.5" }, "devDependencies": { "@babel/core": "7.26.0", @@ -54,19 +59,20 @@ "@storybook/test": "8.4.7", "@testing-library/dom": "10.4.0", "@testing-library/react": "16.1.0", - "@types/node": "22.10.2", + "@types/node": "22.10.5", "@types/object-hash": "3.0.6", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@types/react-router-dom": "5.3.3", "@vitejs/plugin-react": "4.3.4", "babel-polyfill": "6.26.0", "busboy": "1.6.0", + "chromatic": "11.22.2", "compression": "1.7.5", "cross-env": "7.0.3", "dotenv": "16.4.7", - "eslint": "9.17.0", - "eslint-plugin-storybook": "0.11.1", + "eslint": "9.18.0", + "eslint-plugin-storybook": "0.11.2", "express": "4.21.2", "helmet": "8.0.0", "http-proxy-middleware": "3.0.3", @@ -75,9 +81,9 @@ "postcss": "8.4.49", "postcss-nesting": "13.0.1", "storybook": "8.4.7", - "tailwindcss": "3.4.16", - "typescript": "5.7.2", - "vite": "6.0.3", + "tailwindcss": "3.4.17", + "typescript": "5.7.3", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8" }, @@ -93,7 +99,8 @@ "playwright-test": "playwright test", "start-e2e-server": "node ./e2e/server/server.cjs", "storybook": "storybook dev -p 6006", - "test": "vitest run" + "test": "vitest run", + "chromatic": "npx chromatic --project-token=" }, "eslintConfig": { "overrides": [ @@ -106,5 +113,9 @@ } } ] - } + }, + "bugs": { + "url": "https://github.com/navikt/sif-brukerdialog/issues" + }, + "homepage": "https://github.com/navikt/sif-brukerdialog#readme" } diff --git a/apps/omsorgspengerutbetaling-soknad/src/app/App.tsx b/apps/omsorgspengerutbetaling-soknad/src/app/App.tsx index 579fc3dd03..d9414e6dc4 100644 --- a/apps/omsorgspengerutbetaling-soknad/src/app/App.tsx +++ b/apps/omsorgspengerutbetaling-soknad/src/app/App.tsx @@ -39,6 +39,7 @@ const App = () => ( appName={OmsorgspengerutbetalingSNFriApp.navn} appTitle={OmsorgspengerutbetalingSNFriApp.tittel.nb} intlMessages={applicationIntlMessages} + useLanguageSelector={appEnv.SIF_PUBLIC_FEATURE_NYNORSK === 'on'} appStatus={{ sanityConfig: { projectId: SIF_PUBLIC_APPSTATUS_PROJECT_ID, diff --git a/apps/omsorgspengerutbetaling-soknad/src/app/i18n/appMessages.ts b/apps/omsorgspengerutbetaling-soknad/src/app/i18n/appMessages.ts index f6788f2fc3..6c805b1d4c 100644 --- a/apps/omsorgspengerutbetaling-soknad/src/app/i18n/appMessages.ts +++ b/apps/omsorgspengerutbetaling-soknad/src/app/i18n/appMessages.ts @@ -6,7 +6,6 @@ import { fraværFraMessages } from '../søknad/steps/fravær-fra/fraværFraMessa import { fraværStepMessages } from '../søknad/steps/fravær/fraværStepMessages'; import { legeerklæringMessages } from '../søknad/steps/legeerklæring/legeerklæringMessages'; import { oppsummeringMessages } from '../søknad/steps/oppsummering/oppsummeringMessages'; -import { uiMessages } from '@navikt/sif-common-ui/src/i18n/ui.messages'; const nb = { ...velkommenPageMessages.nb, @@ -17,7 +16,6 @@ const nb = { ...legeerklæringMessages.nb, ...oppsummeringMessages.nb, ...kvitteringMessages.nb, - ...uiMessages.nb, 'application.title': 'Søknad om utbetaling av omsorgspenger til selvstendig næringsdrivende eller frilansere', @@ -123,6 +121,117 @@ const nb = { 'apiDataValidation.undefined': 'Det oppstod en feil ved visningen av siden.', }; -const nn: Record = { ...nb }; +const nn: Record = { + ...velkommenPageMessages.nn, + ...dineBarnMessages.nn, + ...fraværStepMessages.nn, + ...arbeidssituasjonMessages.nn, + ...fraværFraMessages.nn, + ...legeerklæringMessages.nn, + ...oppsummeringMessages.nn, + ...kvitteringMessages.nn, + 'application.title': 'Søknad om utbetaling av omsorgspengar til sjølvstendig næringsdrivande eller frilansarar', + + time: 'time', + timer: 'timar', + + 'step.dineBarn.stepTitle': 'Barn og rett til omsorgspengar frå Nav', + 'step.dineBarn.stepIndicatorLabel': 'Barn og rett til omsorgspengar frå Nav', + + 'step.fravaer.stepTitle': 'Dagar du søkjer om utbetaling for', + + 'step.legeerklæring.stepTitle': 'Last opp legeerklæring', + + 'step.legeerklæring.counsellorpanel.1': + 'Dersom du søkjer om utbetaling for meir enn 3 samanhengande dagar, må du laste opp ei legeerklæring som gjeld frå og med den 4. dagen.', + 'step.legeerklæring.counsellorpanel.2': + 'Dersom du søkjer for kortare periode eller for enkeltdagar, treng du ikkje legeerklæring. Du kan då fortsette søknaden utan å laste opp noko.', + 'step.legeerklæring.counsellorpanel.3': + 'Dersom du søkjer for meir enn 3 samanhengande dagar, men ikkje har legeerklæring tilgjengeleg no,', + 'step.legeerklæring.counsellorpanel.3.lenkeEttersending': 'kan du ettersende den her.', + + 'step.legeerklæring.uploadBtn': 'Last opp legeerklæring', + 'step.legeerklæring.nextButtonLabel': 'Fortset', + + 'vedleggsliste.ingenLegeerklæringLastetOpp': 'Ingen vedlegg er lasta opp', + + 'step.arbeidssituasjon.stepTitle': 'Arbeidssituasjon', + + 'step.fravaerFra.stepTitle': 'Fråvær frå arbeid som sjølvstendig næringsdrivande og/eller frilanser', + + 'step.medlemskap.stepTitle': 'Medlemskap i folketrygda', + + 'step.oppsummering.stepTitle': 'Oppsummering', + + 'initialLoadError.pageTitle': 'Det oppstod ein feil', + 'initialLoadError.text.1': 'Det oppstod ein feil under oppstarten av søknaden. Ver venleg og prøv igjen seinare.', + + 'resetMellomlagring.text.1': 'Dersom feilen vedvarer, kan du prøve å starte på nytt med eit tomt skjema.', + 'resetMellomlagring.startPåNytt': 'Start på nytt', + + 'page.ikkeTilgang.tekst': + 'Du har ikkje tilgang til denne sida. Dersom du er under 18 år, må ein av foreldra dine eller ein føresett skrive under på søknaden saman med deg. Du må derfor fylle ut søknaden på papir og sende den i posten.', + 'page.ikkeTilgang.lastNed': 'Her kan du laste ned papirsøknaden', + + 'validation.barn.ingenBarn': 'Du må leggje til minst eitt barn for å kunne gå vidare i søknaden.', + 'validation.harUtvidetRett.yesOrNoIsUnanswered': + 'Du må svare om du har fått ekstra omsorgsdagar for barn fordi barnet har kronisk sjukdom eller funksjonshemming.', + 'validation.harSyktBarn.yesOrNoIsUnanswered': + 'Du må svare om du har fått ekstra omsorgsdagar for eit barn som har ein sjukdom eller funksjonshemming som gjer at du oftare må vere borte frå jobb.', + 'validation.harAleneomsorg.yesOrNoIsUnanswered': + 'Du må svare på om du har fått ekstra omsorgsdagar fordi du er åleine om omsorga.', + 'validation.harDekketTiFørsteDagerSelv.notAnswered': 'Du må svare på om du har dekt dei 10 første dagane i år.', + 'validation.harDekketTiFørsteDagerSelv.yesOrNoIsUnanswered': + 'Du må svare på om du har dekt dei 10 første dagane i år.', + 'validation.harPerioderMedFravær.yesOrNoIsUnanswered': + 'Du må svare ja eller nei på om du har hatt heile dagar med fråvær frå jobb.', + 'validation.fraværPerioder.listIsEmpty': 'Du har ikkje lagt til dagar med fullt fråvær.', + 'validation.fraværPerioder.ulikeÅrstall': + 'Du har lagt til fråvær som er i fleire år. Ein søknad kan berre innehalde fråvær i eitt år.', + 'validation.fraværDager.listIsEmpty': 'Du har ikkje lagt til dagar med delvis fråvær.', + 'validation.harDagerMedDelvisFravær.yesOrNoIsUnanswered': + 'Du må svare ja eller nei på om du har hatt dagar med delvis fråvær frå jobb.', + 'validation.perioder_harVærtIUtlandet.yesOrNoIsUnanswered': + 'Du må svare ja eller nei på om du har vore i utlandet nokre av dagane du søkjer omsorgspengar for.', + 'validation.perioder_utenlandsopphold.listIsEmpty': + 'Du har svart at du har vore i utlandet i perioden du søkjer for, du må derfor leggje til utanlandsopphald.', + + 'validation.frilans_erFrilanser.yesOrNoIsUnanswered': 'Du må svare ja eller nei på om du var frilanser.', + 'validation.frilans_startdato.dateHasNoValue': 'Du må fylle ut når du starta som frilanser.', + 'validation.frilans_startdato.dateHasInvalidFormat': + 'Datoen for når du starta som frilanser er ugyldig. Gyldig format er dd.mm.åååå.', + 'validation.frilans_startdato.dateIsAfterMax': + 'Datoen for når du starta som frilanser kan ikkje vere etter dagens dato eller siste dag du søkjer for.', + 'validation.frilans_sluttdato.dateHasNoValue': 'Du må fylle ut når du slutta som frilanser.', + 'validation.frilans_sluttdato.dateHasInvalidFormat': + 'Datoen for når du slutta som frilanser er ugyldig. Gyldig format er dd.mm.åååå.', + 'validation.frilans_sluttdato.dateIsAfterMax': + 'Datoen for når du slutta som frilanser kan ikkje vere etter dagens dato.', + 'validation.frilans_sluttdato.dateIsBeforeMin': + 'Datoen for når du slutta som frilanser kan ikkje vere før datoen du starta.', + 'validation.frilans_jobberFortsattSomFrilans.yesOrNoIsUnanswered': + 'Du må svare på om du framleis jobbar som frilanser.', + + 'validation.selvstendig_erSelvstendigNæringsdrivende.yesOrNoIsUnanswered': + 'Du må svare ja eller nei på om du var sjølvstendig næringsdrivande.', + 'validation.selvstendig_harFlereVirksomheter.yesOrNoIsUnanswered': + 'Du må svare ja eller nei på om du har fleire enn éi verksemd som er aktiv.', + 'validation.selvstendig_virksomhet.noValue': 'Du har ikkje registrert informasjon om verksemda di.', + + 'validation.arbeidssituasjon.situasjon.frilanser': 'frilanser', + 'validation.arbeidssituasjon.situasjon.sn': 'sjølvstendig næringsdrivande', + 'validation.arbeidssituasjon.situasjon.frilanserOgSn': 'frilanser og sjølvstendig næringsdrivande', + + 'validation.arbeidssituasjon_tidsrom.arbeidsperiodeStarterEtterFraværsperiode': + 'Du har registrert fråværsdagar utanfor perioden du har oppgitt som {situasjon}. Du kan berre søkje for dagar du har vore frilanser eller sjølvstendig næringsdrivande.', + 'validation.arbeidssituasjon_tidsrom.arbeidsperiodeSlutterFørEllerIFraværsperiode': + 'Du har registrert fråværsdagar utanfor perioden du har oppgitt som {situasjon}. Du kan berre søkje for dagar du har vore frilanser eller sjølvstendig næringsdrivande.', + + 'validation.aktivitetFravær.noValue': 'Du må velje kva arbeid du hadde fråvær frå {dato}.', + 'validation.harBekreftetOpplysninger.notChecked': 'Du må stadfeste at opplysningane er riktige.', + 'validation.harForståttRettigheterOgPlikter.notChecked': 'Du må stadfeste at du har lese og forstått dine plikter.', + + 'apiDataValidation.undefined': 'Det oppstod ein feil ved visninga av sida.', +}; export const appMessages = { nb, nn }; diff --git a/apps/omsorgspengerutbetaling-soknad/src/app/i18n/index.tsx b/apps/omsorgspengerutbetaling-soknad/src/app/i18n/index.tsx index f67beaf895..c4f6a1307b 100644 --- a/apps/omsorgspengerutbetaling-soknad/src/app/i18n/index.tsx +++ b/apps/omsorgspengerutbetaling-soknad/src/app/i18n/index.tsx @@ -22,6 +22,7 @@ export const libMessages = { ...fraværMessages.nb, ...virksomhetMessages.nb, ...medlemskapFormMessages.nb, + ...uiMessages.nb, }, nn: { ...commonMessages.nn, @@ -31,7 +32,8 @@ export const libMessages = { ...bostedUtlandMessages.nn, ...fraværMessages.nn, ...virksomhetMessages.nn, - ...medlemskapFormMessages.nb, + ...medlemskapFormMessages.nn, + ...uiMessages.nn, }, }; diff --git a/apps/omsorgspengerutbetaling-soknad/src/app/pages/kvittering/kvitteringMesssages.ts b/apps/omsorgspengerutbetaling-soknad/src/app/pages/kvittering/kvitteringMesssages.ts index 0b211e0043..d09ade264f 100644 --- a/apps/omsorgspengerutbetaling-soknad/src/app/pages/kvittering/kvitteringMesssages.ts +++ b/apps/omsorgspengerutbetaling-soknad/src/app/pages/kvittering/kvitteringMesssages.ts @@ -8,6 +8,14 @@ const nb = { 'Når søknaden er ferdigbehandlet, får du et svar fra oss på «Min side». Du kan sjekke saksbehandlingstiden her.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'page.kvittering.sidetittel': 'Me har mottatt søknaden din', + 'page.kvittering.tittel': 'Me har mottatt søknad om utbetaling av omsorgspengar', + 'page.kvittering.info.tittel': 'Kva skjer vidare no?', + 'page.kvittering.info.1': 'Me behandlar søknaden din.', + 'page.kvittering.info.2': 'Me kontaktar deg dersom me treng fleire opplysningar.', + 'page.kvittering.info.3': + 'Når søknaden er ferdigbehandla, får du eit svar frå oss på «Min side». Du kan sjekke saksbehandlingstida her.', +}; export const kvitteringMessages = { nb, nn }; diff --git a/apps/omsorgspengerutbetaling-soknad/src/app/pages/velkommen/velkommenPageMessages.ts b/apps/omsorgspengerutbetaling-soknad/src/app/pages/velkommen/velkommenPageMessages.ts index 4de687caf2..1bc715bdf7 100644 --- a/apps/omsorgspengerutbetaling-soknad/src/app/pages/velkommen/velkommenPageMessages.ts +++ b/apps/omsorgspengerutbetaling-soknad/src/app/pages/velkommen/velkommenPageMessages.ts @@ -1,36 +1,71 @@ -export const velkommenPageMessages = { - nb: { - 'page.velkommen.sidetittel': 'Søknad om utbetaling av omsorgspenger', - 'page.velkommen.guide.tittel': 'Hei {navn}', - 'page.velkommen.guide.ingress': 'Velkommen til søknad om omsorgspenger.', - 'page.velkommen.guide.tekst.1': - 'Denne søknaden bruker du når du er selvstendig næringsdrivende eller frilanser og skal søke om utbetaling av omsorgspenger for bruk av omsorgsdager.', - 'page.velkommen.guide.tekst.2': - 'Hvis du er ansatt i eget AS regnes du som arbeidstaker og du skal ikke bruke denne søknaden. For å få utbetalt omsorgspenger når du er ansatt i eget AS skal du eller din regnskapsfører sende inntektsmelding til Nav.', - - 'page.velkommen.omSøknaden.tittel': 'Om søknaden', - 'page.velkommen.omSøknaden.1': 'Du får veiledning underveis i søknaden om hva du skal fylle ut, og hvordan.', - 'page.velkommen.omSøknaden.2': - 'Vi tar vare på svarene dine i 72 timer. Hvis du innenfor den tiden for eksempel vil ta en pause eller blir automatisk logget ut, fortsetter du der du var når du kommer tilbake.', - 'page.velkommen.omSøknaden.3': - 'Du må svare på alle spørsmålene for å kunne gå videre. Hvis du mangler etterspurt dokumentasjon, kan du ettersende det så snart du kan.', - 'page.velkommen.omSøknaden.4': 'Om hvordan vi innhenter opplysninger om deg', - - 'personopplysninger.dialogtittel': 'Om behandling av personopplysninger', - 'personopplysninger.1': 'Slik behandler Nav personopplysningene dine', - 'personopplysninger.2': - 'Vi innhenter og mottar opplysninger om deg for å behandle saken din. Det er nødvendig for at du skal få riktig tjeneste. Deler av saken din behandles automatisk.', - 'personopplysninger.3': 'Hvilke opplysninger innhenter vi?', - 'personopplysninger.4': 'Opplysningene vi innhenter kommer enten fra deg eller fra offentlige registre:', - 'personopplysninger.4.1': 'hvilke barn du er registrert som forelder til', - 'personopplysninger.4.2': 'opplysninger om barnets helse', - 'personopplysninger.4.3': 'arbeidsforholdene dine og inntekten din', - 'personopplysninger.4.4': 'ytelser du mottar fra Nav', - 'personopplysninger.4.5': 'tilknytningen din til Norge', - 'personopplysninger.4.6': - 'trygdeordninger du kan ha rett til i andre land. Vi kan også sende opplysninger om deg til trygdemyndigheter i andre land', - - 'personopplysninger.5': - 'Du har rett til innsyn i saken din. Vil du vite mer om hvordan Nav behandler personopplysninger? Se nav.no/personvern.', - }, +const nb = { + 'page.velkommen.sidetittel': 'Søknad om utbetaling av omsorgspenger', + 'page.velkommen.guide.tittel': 'Hei {navn}', + 'page.velkommen.guide.ingress': 'Velkommen til søknad om omsorgspenger.', + 'page.velkommen.guide.tekst.1': + 'Denne søknaden bruker du når du er selvstendig næringsdrivende eller frilanser og skal søke om utbetaling av omsorgspenger for bruk av omsorgsdager.', + 'page.velkommen.guide.tekst.2': + 'Hvis du er ansatt i eget AS regnes du som arbeidstaker og du skal ikke bruke denne søknaden. For å få utbetalt omsorgspenger når du er ansatt i eget AS skal du eller din regnskapsfører sende inntektsmelding til Nav.', + + 'page.velkommen.omSøknaden.tittel': 'Om søknaden', + 'page.velkommen.omSøknaden.1': 'Du får veiledning underveis i søknaden om hva du skal fylle ut, og hvordan.', + 'page.velkommen.omSøknaden.2': + 'Vi tar vare på svarene dine i 72 timer. Hvis du innenfor den tiden for eksempel vil ta en pause eller blir automatisk logget ut, fortsetter du der du var når du kommer tilbake.', + 'page.velkommen.omSøknaden.3': + 'Du må svare på alle spørsmålene for å kunne gå videre. Hvis du mangler etterspurt dokumentasjon, kan du ettersende det så snart du kan.', + 'page.velkommen.omSøknaden.4': 'Om hvordan vi innhenter opplysninger om deg', + + 'personopplysninger.dialogtittel': 'Om behandling av personopplysninger', + 'personopplysninger.1': 'Slik behandler Nav personopplysningene dine', + 'personopplysninger.2': + 'Vi innhenter og mottar opplysninger om deg for å behandle saken din. Det er nødvendig for at du skal få riktig tjeneste. Deler av saken din behandles automatisk.', + 'personopplysninger.3': 'Hvilke opplysninger innhenter vi?', + 'personopplysninger.4': 'Opplysningene vi innhenter kommer enten fra deg eller fra offentlige registre:', + 'personopplysninger.4.1': 'hvilke barn du er registrert som forelder til', + 'personopplysninger.4.2': 'opplysninger om barnets helse', + 'personopplysninger.4.3': 'arbeidsforholdene dine og inntekten din', + 'personopplysninger.4.4': 'ytelser du mottar fra Nav', + 'personopplysninger.4.5': 'tilknytningen din til Norge', + 'personopplysninger.4.6': + 'trygdeordninger du kan ha rett til i andre land. Vi kan også sende opplysninger om deg til trygdemyndigheter i andre land', + + 'personopplysninger.5': + 'Du har rett til innsyn i saken din. Vil du vite mer om hvordan Nav behandler personopplysninger? Se nav.no/personvern.', }; + +const nn: Record = { + 'page.velkommen.sidetittel': 'Søknad om utbetaling av omsorgspengar', + 'page.velkommen.guide.tittel': 'Hei {navn}', + 'page.velkommen.guide.ingress': 'Velkomen til søknad om omsorgspengar.', + 'page.velkommen.guide.tekst.1': + 'Denne søknaden bruker du når du er sjølvstendig næringsdrivande eller frilanser og skal søkje om utbetaling av omsorgspengar for bruk av omsorgsdagar.', + 'page.velkommen.guide.tekst.2': + 'Dersom du er tilsett i eige AS blir du rekna som arbeidstakar, og du skal ikkje bruke denne søknaden. For å få utbetalt omsorgspengar når du er tilsett i eige AS, skal du eller din rekneskapsførar sende inntektsmelding til Nav.', + + 'page.velkommen.omSøknaden.tittel': 'Om søknaden', + 'page.velkommen.omSøknaden.1': 'Du får rettleiing undervegs i søknaden om kva du skal fylle ut, og korleis.', + 'page.velkommen.omSøknaden.2': + 'Me tar vare på svara dine i 72 timar. Dersom du innanfor den tida til dømes vil ta ein pause eller blir automatisk logga ut, kan du halde fram der du var når du kjem tilbake.', + 'page.velkommen.omSøknaden.3': + 'Du må svare på alle spørsmåla for å kunne gå vidare. Dersom du manglar etterspurt dokumentasjon, kan du ettersende det så snart du kan.', + 'page.velkommen.omSøknaden.4': 'Om korleis me hentar opplysningar om deg', + + 'personopplysninger.dialogtittel': 'Om behandling av personopplysningar', + 'personopplysninger.1': 'Slik behandlar Nav personopplysningane dine', + 'personopplysninger.2': + 'Me hentar inn og mottar opplysningar om deg for å behandle saka di. Det er nødvendig for at du skal få rett teneste. Deler av saka di blir behandla automatisk.', + 'personopplysninger.3': 'Kva opplysningar hentar me inn?', + 'personopplysninger.4': 'Opplysningane me hentar kjem anten frå deg eller frå offentlege register:', + 'personopplysninger.4.1': 'kva barn du er registrert som forelder til', + 'personopplysninger.4.2': 'opplysningar om barnet sin helse', + 'personopplysninger.4.3': 'arbeidsforholda dine og inntekta di', + 'personopplysninger.4.4': 'ytingar du mottar frå Nav', + 'personopplysninger.4.5': 'tilknytinga di til Noreg', + 'personopplysninger.4.6': + 'trygdeordningar du kan ha rett til i andre land. Me kan også sende opplysningar om deg til trygdemyndigheiter i andre land', + + 'personopplysninger.5': + 'Du har rett til innsyn i saka di. Vil du vite meir om korleis Nav behandlar personopplysningar? Sjå nav.no/personvern.', +}; + +export const velkommenPageMessages = { nb, nn }; diff --git "a/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/arbeidssituasjon/arbeidssituasjonMessages.ts" "b/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/arbeidssituasjon/arbeidssituasjonMessages.ts" index 4acd308c23..2fdacd1446 100644 --- "a/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/arbeidssituasjon/arbeidssituasjonMessages.ts" +++ "b/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/arbeidssituasjon/arbeidssituasjonMessages.ts" @@ -42,6 +42,47 @@ const nb = { 'fiskerinfo.BLAD_B': 'Blad B', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.arbeidssituasjon.info.1': + 'No treng me å vite kva som var arbeidssituasjonen din i dagane du søkjer utbetaling for.', + 'step.arbeidssituasjon.advarsel.ingenSituasjonValgt': 'Du må velje minst éin av situasjonane over.', + + 'step.arbeidssituasjon.frilanser.hjelpetekst.tittel': 'Kva betyr det å vere frilanser?', + 'step.arbeidssituasjon.frilanser.hjelpetekst': + 'Du er frilanser når du mottar lønn for enkeltståande oppdrag utan å vere fast eller mellombels tilsett hos den du utfører oppdraget for. Dersom du er usikker på om du er frilanser, må du sjekke om oppdraga dine er registrerte som frilansoppdrag på', + 'step.arbeidssituasjon.frilanser.hjelpetekst.skatteetatenLenke': 'skatteetaten sine nettsider.', + + 'step.arbeidssituasjon.selvstendig.hjelpetekst.tittel': 'Kva betyr det å vere sjølvstendig næringsdrivande?', + 'step.arbeidssituasjon.selvstendig.hjelpetekst': + 'Du er sjølvstendig næringsdrivande når du anten har eit enkeltpersonføretak (ENK), eit ansvarleg selskap (ANS), eller eit ansvarleg selskap med delt ansvar (DA).', + 'step.arbeidssituasjon.selvstendig.hjelpetekst.snSkatteetatenLenke': + 'I tillegg kan du lese på skatteetaten si side om andre situasjonar der du kan reknast som sjølvstendig næringsdrivande.', + + 'frilanser.erFrilanser.spm': 'Var du frilanser i dagane du søkjer utbetaling for?', + 'frilanser.nårStartet.spm': 'Når starta du som frilanser?', + 'frilanser.jobberFortsatt.spm': 'Jobbar du framleis som frilanser?', + 'frilanser.nårSluttet.spm': 'Når slutta du som frilanser?', + 'selvstendig.erDuSelvstendigNæringsdrivende.spm': + 'Var du sjølvstendig næringsdrivande i dagane du søkjer utbetaling for?', + 'selvstendig.harFlereVirksomheter.spm': 'Har du fleire enn éi næringsverksemd som er aktiv?', + 'selvstendig.veileder.flereAktiveVirksomheter': + 'Når du har fleire aktive næringsverksemder, skal du berre leggje inn den verksemda som er eldst. Har du for eksempel ei verksemd du starta i 2012 og ei anna som du starta i 2020, skal du berre leggje inn verksemda du starta i 2012.', + 'selvstendig.infoDialog.infoTittel': 'Næringsverksemd som du har lagt inn:', + 'selvstendig.infoDialog.registrerKnapp': 'Registrer verksemd', + 'selvstendig.infoDialog.endreKnapp': 'Endre opplysningar', + 'selvstendig.infoDialog.fjernKnapp': 'Fjern verksemd', + 'selvstendig.infoDialog.tittel.en': 'Opplysningar om verksemda di', + 'selvstendig.infoDialog.tittel.flere': 'Opplysningar om den eldste verksemda di', + + 'næringstype.FISKE': 'Fiske', + 'næringstype.JORDBRUK_SKOGBRUK': 'Jordbruk', + 'næringstype.DAGMAMMA': 'Dagmamma i eige heim', + 'næringstype.ANNEN': 'Annan verksemd', + + 'fiskerinfo.LOTT': 'Lott', + 'fiskerinfo.HYRE': 'Hyre', + 'fiskerinfo.BLAD_A': 'Blad A', + 'fiskerinfo.BLAD_B': 'Blad B', +}; export const arbeidssituasjonMessages = { nb, nn }; diff --git "a/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/dine-barn/dineBarnMessages.ts" "b/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/dine-barn/dineBarnMessages.ts" index 6c78b5f15f..7ef93457a6 100644 --- "a/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/dine-barn/dineBarnMessages.ts" +++ "b/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/dine-barn/dineBarnMessages.ts" @@ -66,7 +66,73 @@ const nb = { 'For å ha rett til omsorgspenger fra det året barnet fyller 13 år, må du ha fått ekstra omsorgsdager fra Nav fordi barnet har en kronisk/langvarig sykdom eller en funksjonshemning.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.dineBarn.nextButtonLabel': 'Fortset', + 'step.dineBarn.intro.1': + 'Sjølvstendig næringsdrivande og frilansarar må som hovudregel sjølv dekke 10 omsorgsdagar kvart kalenderår. Dersom du har rett til meir enn 10 omsorgsdagar, kan du søkje om utbetaling frå Nav frå den 11. dagen du er heime med sjukt barn.', + 'step.dineBarn.intro.info.tittel': 'Har det yngste barnet ditt fylt 12 år?', + 'step.dineBarn.intro.info.tekst.1': + 'Rett til omsorgsdagar varer som hovudregel til og med det kalenderåret barnet fyller 12 år.', + 'step.dineBarn.intro.info.tekst.2': + 'I nokre tilfelle kan du få omsorgspengar ut året barnet fyller 18 år. Dette gjeld når du har fått ekstra omsorgsdagar på grunn av sjukdom hos barnet. Dersom dette gjeld deg, treng du ikkje dekke dei 10 første dagane sjølv.', + 'step.dineBarn.intro.info.barnOver13.tittel': 'Barn over 13', + 'step.dineBarn.intro.info.barnOver13.tekst.1': + 'Rett til omsorgsdagar varer som hovudregel til og med det kalenderåret barnet fyller 12 år.', + 'step.dineBarn.intro.info.barnOver13.tekst.2': + 'I nokre tilfelle kan du få omsorgspengar ut året barnet fyller 18 år. Dette gjeld når du har fått ekstra omsorgsdagar på grunn av sjukdom hos barnet. Du kan då søkje om utbetaling frå første dag du er heime med sjukt barn.', + + 'step.dineBarn.seksjonsTittel': 'Dine barn', + 'step.dineBarn.født': 'Fødd {dato}', + + 'step.dineBarn.annetBarnListAndDialog.addLabel': 'Legg til barn', + 'step.dineBarn.annetBarnListAndDialog.listTitle': 'Har du barn som ikkje er registrert her?', + 'step.dineBarn.annetBarnListAndDialog.listTitle.lagtTilBarn': 'Barn du har lagt til', + 'step.dineBarn.annetBarnListAndDialog.listTitle.ingenRegistrerteBarn': 'Har du andre barn?', + 'step.dineBarn.annetBarnListAndDialog.modalTitle': 'Legg til barn', + + 'step.dineBarn.utvidetRettSykdom.spm': + 'Har du fått ekstra omsorgsdagar for eit barn som har ein sjukdom eller funksjonshemming som gjer at du oftare må vere borte frå jobb?', + 'step.dineBarn.utvidetRettSykdom.info.tittel': 'Kva betyr dette?', + 'step.dineBarn.utvidetRettSykdom.info.1': + 'Dersom barnet har ein kronisk/langvarig sjukdom eller funksjonshemming som gir høgare risiko for at du må vere borte frå jobb, kan du ha rett til ekstra omsorgsdagar. Du vil då ha rett til omsorgsdagar ut året barnet fyller 18 år.', + 'step.dineBarn.utvidetRettSykdom.info.2': + 'Du svarer ja dersom du har fått vedtak frå Nav om ekstra omsorgsdagar på grunn av sjukdom. Dersom du har sendt inn søknad og ventar på svar, skal du også svare ja på dette spørsmålet.', + + 'step.dineBarn.utvidetRettAleneomsorg.spm': 'Har du fått ekstra omsorgsdagar fordi du er åleine om omsorga?', + 'step.dineBarn.utvidetRettAleneomsorg.info.tittel': 'Kva betyr dette?', + 'step.dineBarn.utvidetRettAleneomsorg.info.tekst.1': + 'Du er åleine om omsorga dersom barnet bur fast hos deg, og du ikkje bur saman med den andre forelderen. Dersom du og den andre forelderen har ein avtale om delt fast bustad, er du ikkje åleine om omsorga for barnet.', + 'step.dineBarn.utvidetRettAleneomsorg.info.tekst.2': + 'Du kan også reknast som åleine om omsorga dersom den andre forelderen ikkje kan ha tilsyn med barnet i minst 6 månader, til dømes på grunn av eigen sjukdom eller fengselsopphald.', + 'step.dineBarn.utvidetRettAleneomsorg.info.tekst.3': + 'Du kan svare ja på dette spørsmålet dersom du har fått vedtak frå Nav om ekstra omsorgsdagar på grunn av åleineomsorg. Dersom du har sendt inn søknad og ventar på svar, skal du også svare ja på dette spørsmålet.', + + 'step.dineBarn.utvidetRettSykdom.nei.alertStripe': + 'Når du berre har barn som er 13 år i år eller eldre, må du ha søkt om eller fått ekstra omsorgsdagar for å kunne søkje om utbetaling.', + + 'step.dineBarn.bekrefterDektTiDagerSelv.info.titel': 'Omsorgsdagar du må dekke sjølv', + 'step.dineBarn.bekrefterDektTiDagerSelv.spm': 'Har du dekt dei 10 første omsorgsdagane i år?', + 'step.dineBarn.bekrefterDektTiDagerSelv.info.tittel': 'Kvifor spør me om dette?', + 'step.dineBarn.bekrefterDektTiDagerSelv.info.tekst': + 'Du skal dekke dei 10 første omsorgsdagane sjølv, og kan søkje om utbetaling frå Nav frå den 11. dagen du er heime med sjukt barn.', + + 'step.dineBarn.info.spm.text': + 'Dersom du har barn som ikkje er registrert her, kan du leggje inn desse sjølv. Det kan til dømes vere fosterbarn.', + 'step.dineBarn.formLeggTilBarn.aldersGrenseInfo': '(Du kan ikkje leggje til barn som er 19 år eller eldre)', + + 'relasjonTilBarnet.mor': 'Mor', + 'relasjonTilBarnet.far': 'Far', + 'relasjonTilBarnet.adoptivforelder': 'Adoptivforelder', + 'relasjonTilBarnet.fosterforelder': 'Fosterforelder', + + 'step.dineBarn.ettEllerToBarnUnder13.ingenRett.tittel': 'Du må sjølv dekke omsorgsdagane dine', + 'step.dineBarn.ettEllerToBarnUnder13.ingenRett.tekst.1': + 'Ut frå svara dine har du ikkje meir enn to barn som du kan bruke omsorgsdagar for, og du har ikkje ekstra omsorgsdagar frå Nav. Du har då rett til 10 omsorgsdagar.', + 'step.dineBarn.ettEllerToBarnUnder13.ingenRett.tekst.2': + 'Fordi du er sjølvstendig næringsdrivande eller frilanser, må du sjølv dekke desse 10 omsorgsdagane.', + 'step.dineBarn.kunBarnOver13.ingenRett.tekst': + 'For å ha rett til omsorgspengar frå det året barnet fyller 13 år, må du ha fått ekstra omsorgsdagar frå Nav fordi barnet har ein kronisk/langvarig sjukdom eller ei funksjonshemming.', +}; export const dineBarnMessages = { nb, diff --git "a/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/frav\303\246r-fra/frav\303\246rFraMessages.ts" "b/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/frav\303\246r-fra/frav\303\246rFraMessages.ts" index 9482a497b3..196ee6efcd 100644 --- "a/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/frav\303\246r-fra/frav\303\246rFraMessages.ts" +++ "b/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/frav\303\246r-fra/frav\303\246rFraMessages.ts" @@ -6,6 +6,11 @@ const nb = { 'aktivitetFravær.FRILANSER': 'frilanser', }; -const nn: Record = { ...nb }; - +const nn: Record = { + 'step.fravaerFra.dag.spm': 'Kva arbeid hadde du fråvær frå {dato}?', + 'step.fravaerFra.info': + 'Du har opplyst at du er både sjølvstendig næringsdrivande og frilanser. No treng me å vite kva arbeid du hadde fråvær frå i dagane du brukte omsorgsdagar.', + 'aktivitetFravær.SELVSTENDIG_VIRKSOMHET': 'sjølvstendig næringsdrivande', + 'aktivitetFravær.FRILANSER': 'frilanser', +}; export const fraværFraMessages = { nb, nn }; diff --git "a/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/frav\303\246r/frav\303\246rStepMessages.ts" "b/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/frav\303\246r/frav\303\246rStepMessages.ts" index 3b312bb9ea..eab8bd80a9 100644 --- "a/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/frav\303\246r/frav\303\246rStepMessages.ts" +++ "b/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/frav\303\246r/frav\303\246rStepMessages.ts" @@ -47,6 +47,52 @@ const nb = { 'list.fjernKnapp': 'Fjern', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.fravaer.counsellorpanel.content': + 'I dei fleste tilfelle må ein som sjølvstendig næringsdrivande og frilanser betale dei 10 første dagane med omsorgspengar i året sjølv.', + 'step.fravaer.dager_med_fullt_fravært.label': 'Dagar med fullt fråvær', + 'step.fravaer.dager_med_delvis_fravært.label': 'Dagar med delvis fråvær', + 'step.fravaer.har_du_oppholdt_deg_i_utlandet_for_dager_du_soker_ok.spm': + 'Har du vore i utlandet nokre av dagane du søkjer omsorgspengar for?', + + 'step.fravaer.info.1': + 'Du kan få utbetalt omsorgspengar for bruk av omsorgsdagar i opptil tre månader tilbake i tid, rekna frå månaden før Nav mottok søknaden din.', + 'step.fravaer.info.2': + 'Du kan berre søkje om utbetaling frå eitt og same år. Det betyr at dersom du skal søkje om utbetaling for {forrigeÅr} i tillegg til {inneværendeÅr}, må du sende to søknader.', + + 'step.fravaer.spm.harPerioderMedFravær': 'Har du hatt heile dagar med fråvær frå jobb?', + 'step.fravaer.dager.tittel': 'Omsorgsdagar du søkjer utbetaling for', + 'step.fravaer.dager.info': + 'Her skal du leggje inn dagane du søkjer utbetaling for. Det er berre mogleg å søkje frå den 11. omsorgsdagen du brukte.', + 'step.fravaer.dager.info.UTVIDET_RETT_PGA_SYKT_BARN_OVER_13': + 'Her skal du leggje inn dagane du søkjer utbetaling for. Du kan søkje om utbetaling frå første dag du var heime med sjukt barn.', + 'step.fravaer.harPerioderMedFravær.listTitle': 'Dagar med fullt fråvær frå jobb', + 'step.fravaer.harPerioderMedFravær.addLabel': 'Legg til dagar med fullt fråvær frå jobb', + 'step.fravaer.harPerioderMedFravær.modalTitle': 'Dagar med fullt fråvær frå jobb', + '@forms.fravær.form.periode.tittel': 'Dagar du søkjer utbetaling for', + 'step.fravaer.info.ikkeHelg.tittel': 'Kvifor kan eg ikkje velje laurdag eller søndag?', + 'step.fravaer.heledager.info.ikkeHelg.tekst': + 'Du kan berre få utbetalt omsorgspengar for kvardagar, sjølv om du jobbar laurdag eller søndag. Difor kan du ikkje velje laurdag eller søndag som start- eller sluttdato i perioden du legg inn.', + 'step.fravaer.delvisdag.info.ikkeHelg.tekst': + 'Du kan berre få utbetalt omsorgspengar for kvardagar, sjølv om du jobbar laurdag eller søndag. Difor kan du ikkje leggje inn delvis fråvær på laurdagar eller søndagar.', + 'step.fravaer.spm.harDagerMedDelvisFravær': 'Har du hatt dagar med delvis fråvær frå jobb?', + + 'step.fravaer.harDagerMedDelvisFravær.listTitle': 'Dagar med delvis fråvær frå jobb', + 'step.fravaer.harDagerMedDelvisFravær.addLabel': 'Legg til dag med delvis fråvær frå jobb', + 'step.fravaer.harDagerMedDelvisFravær.modalTitle': 'Dag med delvis fråvær frå jobb', + 'step.fravaer.måVelgeSituasjon': 'Du må velje éi av situasjonane over.', + 'step.fravaer.utenlandsopphold.tittel': 'Utanlandsopphald i dagane med fråvær', + 'step.fravaer.utenlandsopphold.addLabel': 'Legg til utanlandsopphald', + 'step.fravaer.utenlandsopphold.modalTitle': 'Utanlandsopphald', + 'fravær.antallTimer': 'Tal på timar', + 'fravær.time': 'time', + 'fravær.timer': 'timar', + 'fravær.timer.label': 'Timar', + 'fravær.delvis.fjern.fjernDag': 'Fjern dag med delvis fråvær ({dato}, {timer})', + 'fravær.delvis.fjern.fjernDagUtenTimer': 'Fjern dag med delvis fråvær ({dato}, tal på timar ikkje valt)', + 'fravær.delvis.fjern.fjernTimer': 'Fjern dag med delvis fråvær (dato ikkje valt, {timer} valt)', + 'fravær.delvis.fjern.fjernUtenDagOgTimer': 'Fjern dag med delvis fråvær (dato og tal på timar ikkje valt)', + 'list.fjernKnapp': 'Fjern', +}; export const fraværStepMessages = { nb, nn }; diff --git "a/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/legeerkl\303\246ring/legeerkl\303\246ringMessages.ts" "b/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/legeerkl\303\246ring/legeerkl\303\246ringMessages.ts" index 9c2f92da99..45529636a1 100644 --- "a/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/legeerkl\303\246ring/legeerkl\303\246ringMessages.ts" +++ "b/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/legeerkl\303\246ring/legeerkl\303\246ringMessages.ts" @@ -11,6 +11,15 @@ const nb = { 'steg.legeerklæring.vedlegg.knappLabel': 'Last opp legeerklæringen', }; -const nn: Record = { ...nb }; - +const nn: Record = { + 'steg.legeerklæring.stepIndicatorLabel': 'Last opp di legeerklæring', + 'steg.legeerklæring.nextButtonLabel': 'Fortset', + 'steg.legeerklæring.counsellorpanel.1': + 'Når du søkjer om utbetaling frå Nav, må du leggje ved legeerklæring på barnet eller barnepassaren sin sjukdom frå og med den fjerde fråværsdagen. Det gjer du anten ved å ta bilete av legeerklæringa, eller ved å skanne den. Ver nøye med at all tekst er med, inkludert legens signatur.', + 'steg.legeerklæring.counsellorpanel.2': + 'Me kan ikkje behandle søknaden din før me mottar legeerklæringa. Dersom du ikkje har legeerklæringa tilgjengeleg no, tilrår me at du ventar med å søkje til du har den tilgjengeleg. Dersom du ikkje kan vente med å sende søknaden, kan du halde fram utan, men då må du ettersende legeerklæringa så snart som mogleg.', + 'steg.legeerklæring.counsellorpanel.ettersendLenke': + 'Her får du rettleiing til korleis du ettersender dokumentasjon.', + 'steg.legeerklæring.vedlegg.knappLabel': 'Last opp legeerklæringa', +}; export const legeerklæringMessages = { nb, nn }; diff --git "a/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/oppsummering/components/UtbetalingsperioderOppsummering.tsx" "b/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/oppsummering/components/UtbetalingsperioderOppsummering.tsx" index 17680e88cc..9294ae2f3d 100644 --- "a/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/oppsummering/components/UtbetalingsperioderOppsummering.tsx" +++ "b/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/oppsummering/components/UtbetalingsperioderOppsummering.tsx" @@ -1,5 +1,5 @@ import { FormSummary } from '@navikt/ds-react'; -import React from 'react'; +import React, { ReactElement } from 'react'; import { SummaryList } from '@navikt/sif-common-ui'; import { iso8601DurationToTime, ISODateToDate, prettifyDate, Time, timeToDecimalTime } from '@navikt/sif-common-utils'; import dayjs from 'dayjs'; @@ -64,7 +64,7 @@ const getFraværAktivitetString = (aktivitetFravær: ApiAktivitet[], { text }: A }); }; -const renderEnkeltdagElement = (date: Date): JSX.Element => ( +const renderEnkeltdagElement = (date: Date): ReactElement => (
    {dayjs(date).format('dddd')} {prettifyDate(date)}
    @@ -74,13 +74,13 @@ const renderFraværAktivitetElement = ( aktivitet: ApiAktivitet[], visAktivitet: boolean, appIntl: AppIntlShape, -): JSX.Element | null => (visAktivitet ?
    {getFraværAktivitetString(aktivitet, appIntl)}
    : null); +): ReactElement | null => (visAktivitet ?
    {getFraværAktivitetString(aktivitet, appIntl)}
    : null); export const renderUtbetalingsperiodeDag = ( dag: UtbetalingsperiodeDag, visAktivitet: boolean, appIntl: AppIntlShape, -): JSX.Element => { +): ReactElement => { const antallTimerSkulleJobbet = `${timeToDecimalTime(dag.antallTimerPlanlagt)} ${timeText( `${timeToDecimalTime(dag.antallTimerPlanlagt)}`, appIntl, @@ -102,7 +102,7 @@ const renderUtbetalingsperiode = ( periode: UtbetalingsperiodeApi, visAktivitet: boolean, appIntl: AppIntlShape, -): JSX.Element => { +): ReactElement => { const fom = ISODateToDate(periode.fraOgMed); const tom = ISODateToDate(periode.tilOgMed); diff --git "a/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" "b/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" index cb28c4b3bc..d5323ad7fc 100644 --- "a/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" +++ "b/apps/omsorgspengerutbetaling-soknad/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" @@ -68,6 +68,74 @@ const nb = { 'frilanser.summary.nårSluttet.header': 'Når sluttet du som frilanser?', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.oppsummering.info': + 'Les gjennom oppsummeringa før du sender inn søknaden. Dersom du vil gjere endringar, kan du gå tilbake.', + 'step.oppsummering.søker.header': 'Om deg som søkjar', + 'step.oppsummering.søker.navn': 'Namn', + 'step.oppsummering.søker.fnr': 'Fødselsnummer', + 'step.oppsummering.søker.omDeg': 'Om deg', + + 'step.oppsummering.dineBarn': 'Om barn og dagar du må dekke sjølv', + 'step.oppsummering.dineBarn.barn': 'Dine barn', + 'step.oppsummering.dineBarn.listItem': ' (fnr. {identitetsnummer})', + 'step.oppsummering.dineBarn.listItem.utvidetRett': 'Ekstra omsorgsdagar.', + 'step.oppsummering.dineBarn.listItem.årsak.FOSTERBARN': '(Barnet er mitt fosterbarn).', + + 'step.oppsummering.arbeidssituasjon.header': 'Di arbeidssituasjon', + 'step.oppsummering.utbetalinger.header': 'Dagar du søkjer om utbetaling for', + 'step.oppsummering.utbetalinger.heleDager': 'Heile dagar med fråvær', + 'step.oppsummering.utbetalinger.delvisDager': 'Dagar med delvis fråvær', + 'step.oppsummering.medlemskap.header': 'Medlemskap i folketrygda', + + 'step.oppsummering.utlandetSiste12.header': 'Har du budd i utlandet dei siste 12 månadene?', + 'step.oppsummering.utlandetSiste12.bosteder': 'Bustader i utlandet dei siste 12 månadene', + 'step.oppsummering.utlandetNeste12.header': 'Skal du bu i utlandet dei neste 12 månadene?', + 'step.oppsummering.utlandetNeste12.bosteder': 'Bustader i utlandet dei neste 12 månadene', + 'step.oppsummering.utlandetSiste12.liste.header': 'Utanlandsopphald siste 12 månader', + 'step.oppsummering.utlandetNeste12.liste.header': 'Utanlandsopphald neste 12 månader', + + 'step.oppsummering.bekrefterOpplysninger': + 'Eg stadfestar at opplysningane eg har gitt er riktige, og at eg ikkje har halde tilbake opplysningar som har betydning for min rett til omsorgspengar.', + 'step.oppsummering.bekrefterOpplysninger.ikkeBekreftet': 'Du må stadfeste opplysningane', + + 'step.oppsummering.utenlandsoppholdIPerioden.listetittel': 'Utanlandsopphald i perioden', + + 'step.oppsummering.apiValideringFeil.tittel': 'Noko av informasjonen manglar', + + 'step.oppsummering.legeerklæring.ingenVedlegg': 'Ingen legeerklæring er lasta opp', + 'step.oppsummering.legeerklæring.header': 'Legeerklæring', + + 'step.oppsummering.fravær.aktivitet.1': 'Fråvær som {aktivitet}.', + 'step.oppsummering.fravær.aktivitet.2': 'Fråvær som {aktivitet1} og {aktivitet2}.', + 'step.oppsummering.dokumenter.ikkelastetopp': 'Ikkje lasta opp, må ettersendast', + + 'step.oppsummering.sendSøknad': 'Send søknad', + + 'summary.virksomhet.header': 'Sjølvstendig næringsdrivande', + 'summary.virksomhet.næringstype': 'Næringstype', + 'summary.virksomhet.regnskapsfører': 'Rekneskapsførar er {navn}, telefon: {telefon}.', + 'summary.virksomhet.ikkeRegnskapsfører': 'Har ikkje rekneskapsførar.', + 'summary.virksomhet.tidsinfo.avsluttet': 'Starta {fraOgMed}, avslutta {tilOgMed}.', + 'summary.virksomhet.tidsinfo.pågående': 'Starta {fraOgMed} (pågåande).', + 'summary.virksomhet.fisker.påBladB': 'Fiskar er på Blad B.', + 'summary.virksomhet.fisker.ikkePåBladB': 'Fiskar er ikkje på Blad B.', + 'summary.virksomhet.registrertILand': 'Registrert i {land}', + 'summary.virksomhet.registrertILand.orgnr': ' (organisasjonsnummer {orgnr})', + 'summary.virksomhet.næringsinntekt': 'Næringsinntekt: {næringsinntekt}', + 'summary.virksomhet.varigEndring.html': + 'Har hatt varig endring i arbeidsforholdet, verksemda eller arbeidssituasjonen dei siste fire åra. Dato for endring var {dato}, og næringsinntekt etter endringa er {inntekt}. Skildring av endringa:', + 'summary.virksomhet.yrkesaktivSisteTreFerdigliknedeÅrene': 'Vart yrkesaktiv {dato}', + 'summary.virksomhet.harDuHattInntekt.header': + 'Var du sjølvstendig næringsdrivande i dagane du søkjer utbetaling for?', + 'summary.virksomhet.harFlereVirksomheter.header': 'Har du fleire enn éi næringsverksemd som er aktiv?', + 'summary.virksomhet.virksomhetInfo.tittel': 'Næringsverksemd som du har lagt inn:', + + 'frilanser.summary.header': 'Frilanser', + 'frilanser.summary.harDuHattInntekt.header': 'Var du frilanser i dagane du søkjer utbetaling for?', + 'frilanser.summary.nårStartet.header': 'Når starta du som frilanser?', + 'frilanser.summary.jobberFortsatt.header': 'Jobbar du framleis som frilanser?', + 'frilanser.summary.nårSluttet.header': 'Når slutta du som frilanser?', +}; export const oppsummeringMessages = { nb, nn }; diff --git a/apps/omsorgspengerutbetaling-soknad/src/app/utils/appEnv.ts b/apps/omsorgspengerutbetaling-soknad/src/app/utils/appEnv.ts index 33e2743374..a2752c7ea4 100644 --- a/apps/omsorgspengerutbetaling-soknad/src/app/utils/appEnv.ts +++ b/apps/omsorgspengerutbetaling-soknad/src/app/utils/appEnv.ts @@ -1,7 +1,8 @@ -import { getCommonEnv } from '@navikt/sif-common-env'; +import { getCommonEnv, getMaybeEnv } from '@navikt/sif-common-env'; const getAppEnv = () => ({ ...getCommonEnv(), + SIF_PUBLIC_FEATURE_NYNORSK: getMaybeEnv('SIF_PUBLIC_FEATURE_NYNORSK') === 'on' ? 'on' : 'off', }); export const appEnv = getAppEnv(); diff --git "a/apps/omsorgspengerutbetaling-soknad/src/storybook/decorators/withS\303\270knadContext.tsx" "b/apps/omsorgspengerutbetaling-soknad/src/storybook/decorators/withS\303\270knadContext.tsx" index 0195ada24b..4311680dd6 100644 --- "a/apps/omsorgspengerutbetaling-soknad/src/storybook/decorators/withS\303\270knadContext.tsx" +++ "b/apps/omsorgspengerutbetaling-soknad/src/storybook/decorators/withS\303\270knadContext.tsx" @@ -2,14 +2,13 @@ import * as React from 'react'; import { SøknadContextProvider } from '../../app/søknad/context/SøknadContext'; import { SøknadContextState } from '../../app/types/SøknadContextState'; import { RegistrerteBarnMock, SøkerMock } from '../mock-data'; +import { søknadsdataMock } from '../mock-data/søknadsdataMock'; export const mockInitialSøknadContextState: SøknadContextState = { versjon: '1.0.0', søker: SøkerMock, registrerteBarn: RegistrerteBarnMock, - søknadsdata: { - id: '1', - }, + søknadsdata: søknadsdataMock, søknadRoute: undefined, søknadSendt: false, børMellomlagres: false, diff --git "a/apps/omsorgspengerutbetaling-soknad/src/storybook/mock-data/s\303\270knadsdataMock.ts" "b/apps/omsorgspengerutbetaling-soknad/src/storybook/mock-data/s\303\270knadsdataMock.ts" index 70f39a9705..bf1d42bcc1 100644 --- "a/apps/omsorgspengerutbetaling-soknad/src/storybook/mock-data/s\303\270knadsdataMock.ts" +++ "b/apps/omsorgspengerutbetaling-soknad/src/storybook/mock-data/s\303\270knadsdataMock.ts" @@ -38,6 +38,7 @@ export const søknadsdataMock: Søknadsdata = { perioder_harVærtIUtlandet: true, perioder_utenlandsopphold: [ { + type: 'enkel', id: 'd1b6db4d-fc66-4910-8ec4-61568911e652', fom: ISODateToDate('2024-04-08'), tom: ISODateToDate('2024-04-10'), @@ -107,6 +108,7 @@ export const søknadsdataMock: Søknadsdata = { harBoddUtenforNorgeSiste12Mnd: true, utenlandsoppholdSiste12Mnd: [ { + type: 'enkel', id: '4ffe9887-000f-496a-bc38-a5428dcc259b', fom: ISODateToDate('2023-11-06'), tom: ISODateToDate('2024-04-13'), diff --git a/apps/omsorgspengesoknad/CHANGELOG.md b/apps/omsorgspengesoknad/CHANGELOG.md index 84fa74fb7b..ff3a1b9897 100644 --- a/apps/omsorgspengesoknad/CHANGELOG.md +++ b/apps/omsorgspengesoknad/CHANGELOG.md @@ -1,5 +1,13 @@ # @navikt/omsorgspengesoknad +## 1.37.1 + +### Patch Changes + +- Korrigering i intl-tekster som hadde feil nøkkelref til values +- Updated dependencies + - @navikt/sif-common-ui@0.9.1 + ## 1.37.0 ### Minor Changes diff --git a/apps/omsorgspengesoknad/package.json b/apps/omsorgspengesoknad/package.json index d3002ce394..6cd0f957eb 100644 --- a/apps/omsorgspengesoknad/package.json +++ b/apps/omsorgspengesoknad/package.json @@ -6,14 +6,14 @@ "license": "MIT", "name": "@navikt/omsorgspengesoknad", "repository": "https://github.com/navikt/sif-brukerdialog", - "version": "1.37.0", + "version": "1.37.1", "private": true, "type": "module", "dependencies": { - "@navikt/ds-css": "7.8.0", + "@navikt/ds-css": "7.9.1", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", "@navikt/sif-app-register": "*", "@navikt/sif-common-amplitude": "*", "@navikt/sif-common-core-ds": "*", @@ -29,15 +29,15 @@ "csp-header": "6.0.0", "dayjs": "1.11.13", "formik": "2.4.6", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "jsdom": "25.0.1", "lodash": "4.17.21", "object-hash": "3.0.0", "react": "19.0.0", "react-dom": "19.0.0", "react-fast-compare": "3.2.2", - "react-intl": "7.0.4", - "react-router-dom": "7.0.2" + "react-intl": "7.1.0", + "react-router-dom": "7.1.1" }, "devDependencies": { "@axe-core/playwright": "4.10.1", @@ -58,14 +58,14 @@ "@testing-library/dom": "10.4.0", "@testing-library/react": "16.1.0", "@types/object-hash": "3.0.6", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@types/react-router-dom": "5.3.3", "@vitejs/plugin-react": "4.3.4", "axe-core": "4.10.2", "babel-polyfill": "6.26.0", "busboy": "1.6.0", - "chromatic": "11.20.2", + "chromatic": "11.22.2", "compression": "1.7.5", "cors": "2.8.5", "cross-env": "7.0.3", @@ -77,9 +77,9 @@ "playwright-core": "1.49.1", "postcss": "8.4.49", "storybook": "8.4.7", - "tailwindcss": "3.4.16", - "typescript": "5.7.2", - "vite": "6.0.3", + "tailwindcss": "3.4.17", + "typescript": "5.7.3", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8" }, diff --git a/apps/omsorgspengesoknad/src/app/pages/velkommen/VelkommenGuide.tsx b/apps/omsorgspengesoknad/src/app/pages/velkommen/VelkommenGuide.tsx deleted file mode 100644 index c0cf6738b7..0000000000 --- a/apps/omsorgspengesoknad/src/app/pages/velkommen/VelkommenGuide.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { BodyLong, GuidePanel, Heading } from '@navikt/ds-react'; -import React from 'react'; -import { AppText } from '../../i18n'; - -interface Props { - navn: string; -} - -const VelkommenGuide: React.FunctionComponent = ({ navn }) => ( - - - - - -

    - -

    -

    - -

    -

    - -

    -

    - -

    -
    -
    -); - -export default VelkommenGuide; diff --git a/apps/omsorgspengesoknad/src/app/pages/velkommen/velkommenPageMessages.ts b/apps/omsorgspengesoknad/src/app/pages/velkommen/velkommenPageMessages.ts index 08e25fee4f..e89762a804 100644 --- a/apps/omsorgspengesoknad/src/app/pages/velkommen/velkommenPageMessages.ts +++ b/apps/omsorgspengesoknad/src/app/pages/velkommen/velkommenPageMessages.ts @@ -1,7 +1,6 @@ const nb = { 'page.velkommen.sidetittel': 'Søknad om ekstra omsorgsdager for barn som har kronisk/langvarig sykdom eller funksjonshemning', - 'page.velkommen.guide.tittel': 'Hei, {navn}', 'page.velkommen.guide.ingress': 'Velkommen til søknad om ekstra omsorgsdager for barn som har kronisk/langvarig sykdom eller funksjonshemning.', 'page.velkommen.guide.tekst.1': @@ -42,7 +41,6 @@ const nb = { const nn: Record = { 'page.velkommen.sidetittel': 'Søknad om ekstra omsorgsdagar for barn som har kronisk/langvarig sjukdom eller funksjonshemming', - 'page.velkommen.guide.tittel': 'Hei, {namn}', 'page.velkommen.guide.ingress': 'Velkommen til søknad om ekstra omsorgsdagar for barn som har kronisk/langvarig sjukdom eller funksjonshemming.', 'page.velkommen.guide.tekst.1': diff --git a/apps/opplaringspenger-soknad/package.json b/apps/opplaringspenger-soknad/package.json index c63863f59d..4f4002ab07 100644 --- a/apps/opplaringspenger-soknad/package.json +++ b/apps/opplaringspenger-soknad/package.json @@ -8,10 +8,10 @@ "private": true, "type": "module", "dependencies": { - "@navikt/ds-css": "7.8.0", + "@navikt/ds-css": "7.9.1", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", "@navikt/sif-app-register": "*", "@navikt/sif-common-amplitude": "*", "@navikt/sif-common-core-ds": "*", @@ -32,7 +32,7 @@ "express": "4.21.2", "express-rate-limit": "7.5.0", "formik": "2.4.6", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "http-proxy-middleware": "3.0.3", "jose": "5.9.6", "jsdom": "25.0.1", @@ -43,9 +43,9 @@ "react": "19.0.0", "react-dom": "19.0.0", "react-fast-compare": "3.2.2", - "react-intl": "7.0.4", - "react-router-dom": "7.0.2", - "uuid": "11.0.3", + "react-intl": "7.1.0", + "react-router-dom": "7.1.1", + "uuid": "11.0.5", "zod": "3.24.1" }, "devDependencies": { @@ -65,26 +65,26 @@ "@storybook/test": "8.4.7", "@testing-library/dom": "10.4.0", "@testing-library/react": "16.1.0", - "@types/node": "22.10.2", + "@types/node": "22.10.5", "@types/object-hash": "3.0.6", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@types/react-router-dom": "5.3.3", "@vitejs/plugin-react": "4.3.4", "babel-polyfill": "6.26.0", "busboy": "1.6.0", - "chromatic": "11.20.2", + "chromatic": "11.22.2", "cross-env": "7.0.3", - "eslint": "9.17.0", - "eslint-plugin-storybook": "0.11.1", + "eslint": "9.18.0", + "eslint-plugin-storybook": "0.11.2", "helmet": "8.0.0", - "msw": "2.6.9", + "msw": "2.7.0", "postcss": "8.4.49", "postcss-nesting": "13.0.1", "storybook": "8.4.7", - "tailwindcss": "3.4.16", - "typescript": "5.7.2", - "vite": "6.0.3", + "tailwindcss": "3.4.17", + "typescript": "5.7.3", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8" }, diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/.env.example b/apps/pleiepenger-i-livets-sluttfase-soknad/.env.example index dae4a713c3..1d58cf3ce0 100644 --- a/apps/pleiepenger-i-livets-sluttfase-soknad/.env.example +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/.env.example @@ -3,10 +3,10 @@ APP_VERSION=dev PUBLIC_PATH=/familie/sykdom-i-familien/soknad/pleiepenger-i-livets-sluttfase GITHUB_REF_NAME=main - SIF_PUBLIC_APPSTATUS_DATASET=staging SIF_PUBLIC_APPSTATUS_PROJECT_ID=ryujtq87 SIF_PUBLIC_USE_AMPLITUDE=false +SIF_PUBLIC_FEATURE_NYNORSK=on SIF_PUBLIC_DEKORATOR_URL=https://dekoratoren.ekstern.dev.nav.no/?simple=true&chatbot=false&urlLookupTable=false& SIF_PUBLIC_LOGIN_URL=ttp://localhost:8089/auth-mock/cookie?subject=mockSubject&redirect_location=http://localhost:8080 SIF_PUBLIC_MINSIDE_URL=https://www.intern.dev.nav.no/minside diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/e2e/playwright/playwright.env.ts b/apps/pleiepenger-i-livets-sluttfase-soknad/e2e/playwright/playwright.env.ts index 743edd05bb..adbdeee5d1 100644 --- a/apps/pleiepenger-i-livets-sluttfase-soknad/e2e/playwright/playwright.env.ts +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/e2e/playwright/playwright.env.ts @@ -10,6 +10,7 @@ export const playwrightEnv: AppEnv = { SIF_PUBLIC_APPSTATUS_PROJECT_ID: 'ryujtq87', SIF_PUBLIC_USE_AMPLITUDE: 'false', SIF_PUBLIC_DEKORATOR_URL: 'https://dekoratoren.ekstern.dev.nav.no/?simple=true&chatbot=false&urlLookupTable=false&', + SIF_PUBLIC_FEATURE_NYNORSK: 'on', SIF_PUBLIC_LOGIN_URL: 'ttp://localhost:8089/auth-mock/cookie?subject=mockSubject&redirect_location=http://localhost:8080', SIF_PUBLIC_MINSIDE_URL: 'https://www.intern.dev.nav.no/minside', diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/env.schema.ts b/apps/pleiepenger-i-livets-sluttfase-soknad/env.schema.ts index 723d95e6ed..de8b9395a2 100644 --- a/apps/pleiepenger-i-livets-sluttfase-soknad/env.schema.ts +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/env.schema.ts @@ -1,6 +1,6 @@ import { commonEnvSchema } from '@navikt/sif-common-env'; import * as z from 'zod'; -export const appEnvSchema = commonEnvSchema.extend({}); +export const appEnvSchema = commonEnvSchema.extend({ SIF_PUBLIC_FEATURE_NYNORSK: z.enum(['on', 'off']) }); export type AppEnv = z.infer; diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/mock/AppSettings.cjs b/apps/pleiepenger-i-livets-sluttfase-soknad/mock/AppSettings.cjs index e3dbc1e8f3..1361ab29c6 100644 --- a/apps/pleiepenger-i-livets-sluttfase-soknad/mock/AppSettings.cjs +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/mock/AppSettings.cjs @@ -9,6 +9,7 @@ const getAppSettings = () => ({ SIF_PUBLIC_AMPLITUDE_API_KEY: `${process.env.SIF_PUBLIC_AMPLITUDE_API_KEY}`, SIF_PUBLIC_APPSTATUS_DATASET: `${process.env.SIF_PUBLIC_APPSTATUS_DATASET}`, SIF_PUBLIC_APPSTATUS_PROJECT_ID: `${process.env.SIF_PUBLIC_APPSTATUS_PROJECT_ID}`, + SIF_PUBLIC_FEATURE_NYNORSK: `${process.env.SIF_PUBLIC_FEATURE_NYNORSK}`, SIF_PUBLIC_DEKORATOR_URL: `${process.env.SIF_PUBLIC_DEKORATOR_URL}`, SIF_PUBLIC_LOGIN_URL: `${process.env.SIF_PUBLIC_LOGIN_URL}`, SIF_PUBLIC_MINSIDE_URL: `${process.env.SIF_PUBLIC_MINSIDE_URL}`, diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/nais/dev-gcp.json b/apps/pleiepenger-i-livets-sluttfase-soknad/nais/dev-gcp.json index 51b73edb73..7969fb25cd 100644 --- a/apps/pleiepenger-i-livets-sluttfase-soknad/nais/dev-gcp.json +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/nais/dev-gcp.json @@ -25,7 +25,7 @@ "SIF_PUBLIC_AMPLITUDE_API_KEY": "default", "SIF_PUBLIC_USE_AMPLITUDE": "false", "SIF_PUBLIC_APPSTATUS_DATASET": "staging", - + "SIF_PUBLIC_FEATURE_NYNORSK": "on", "SIF_PUBLIC_APPSTATUS_PROJECT_ID": "ryujtq87", "SIF_PUBLIC_DEKORATOR_URL": "https://dekoratoren.ekstern.dev.nav.no/?simple=true&chatbot=false&urlLookupTable=false&logoutUrl=https://pleiepenger-i-livets-sluttfase.intern.dev.nav.no/oauth2/logout", "SIF_PUBLIC_LOGIN_URL": "https://pleiepenger-i-livets-sluttfase.intern.dev.nav.no/oauth2/login?redirect=/familie/sykdom-i-familien/soknad/pleiepenger-i-livets-sluttfase/soknad", diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/nais/prod-gcp.json b/apps/pleiepenger-i-livets-sluttfase-soknad/nais/prod-gcp.json index 1ad96e5d29..94bfb6da57 100644 --- a/apps/pleiepenger-i-livets-sluttfase-soknad/nais/prod-gcp.json +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/nais/prod-gcp.json @@ -26,6 +26,7 @@ "SIF_PUBLIC_USE_AMPLITUDE": "true", "SIF_PUBLIC_APPSTATUS_DATASET": "production", "SIF_PUBLIC_APPSTATUS_PROJECT_ID": "ryujtq87", + "SIF_PUBLIC_FEATURE_NYNORSK": "off", "SIF_PUBLIC_DEKORATOR_URL": "https://www.nav.no/dekoratoren/?simple=true&chatbot=false&logoutUrl=https://www.nav.no/familie/sykdom-i-familien/soknad/pleiepenger-i-livets-sluttfase/oauth2/logout", "SIF_PUBLIC_LOGIN_URL": "https://www.nav.no/familie/sykdom-i-familien/soknad/pleiepenger-i-livets-sluttfase/oauth2/login?redirect=/familie/sykdom-i-familien/soknad/pleiepenger-i-livets-sluttfase/soknad", "SIF_PUBLIC_MINSIDE_URL": "https://www.nav.no/minside" diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/package.json b/apps/pleiepenger-i-livets-sluttfase-soknad/package.json index d69cbabdb4..7ca9995d82 100644 --- a/apps/pleiepenger-i-livets-sluttfase-soknad/package.json +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/package.json @@ -8,10 +8,10 @@ "private": true, "type": "module", "dependencies": { - "@navikt/ds-css": "7.8.0", + "@navikt/ds-css": "7.9.1", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", "@navikt/sif-app-register": "*", "@navikt/sif-common-amplitude": "*", "@navikt/sif-common-api": "*", @@ -31,16 +31,16 @@ "csp-header": "6.0.0", "dayjs": "1.11.13", "formik": "2.4.6", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "jsdom": "25.0.1", "lodash": "4.17.21", "object-hash": "3.0.0", "react": "19.0.0", "react-dom": "19.0.0", "react-fast-compare": "3.2.2", - "react-intl": "7.0.4", - "react-router-dom": "7.0.2", - "uuid": "11.0.3" + "react-intl": "7.1.0", + "react-router-dom": "7.1.1", + "uuid": "11.0.5" }, "devDependencies": { "@axe-core/playwright": "4.10.1", @@ -48,7 +48,7 @@ "@babel/preset-env": "7.26.0", "@babel/preset-react": "7.26.3", "@babel/preset-typescript": "7.26.0", - "@chromatic-com/storybook": "3.2.2", + "@chromatic-com/storybook": "3.2.3", "@playwright/test": "1.49.1", "@sif/eslint-config": "*", "@storybook/addon-essentials": "8.4.7", @@ -62,15 +62,15 @@ "@testing-library/dom": "10.4.0", "@testing-library/react": "16.1.0", "@types/object-hash": "3.0.6", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@types/react-router-dom": "5.3.3", "babel-polyfill": "6.26.0", "compression": "1.7.5", "cross-env": "7.0.3", "dotenv": "16.4.7", - "eslint": "9.17.0", - "eslint-plugin-storybook": "0.11.1", + "eslint": "9.18.0", + "eslint-plugin-storybook": "0.11.2", "express": "4.21.2", "helmet": "8.0.0", "http-proxy-middleware": "3.0.3", @@ -79,8 +79,8 @@ "postcss": "8.4.49", "storybook": "8.4.7", "storybook-addon-mock": "5.0.0", - "typescript": "5.7.2", - "vite": "6.0.3", + "typescript": "5.7.3", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8" }, diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/App.tsx b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/App.tsx index 2d18927aac..6554db6a18 100644 --- a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/App.tsx +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/App.tsx @@ -30,6 +30,7 @@ const App = () => ( appName={PleiepengerLivetsSluttApp.navn} appTitle={PleiepengerLivetsSluttApp.tittel.nb} intlMessages={applicationIntlMessages} + useLanguageSelector={appEnv.SIF_PUBLIC_FEATURE_NYNORSK === 'on'} appStatus={{ sanityConfig: { projectId: SIF_PUBLIC_APPSTATUS_PROJECT_ID, diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/components/dager-med-tid-liste/dagerMedTidMessages.ts b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/components/dager-med-tid-liste/dagerMedTidMessages.ts index 95493b3a1b..ad52d21968 100644 --- a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/components/dager-med-tid-liste/dagerMedTidMessages.ts +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/components/dager-med-tid-liste/dagerMedTidMessages.ts @@ -1,12 +1,23 @@ -export const dagerMedTidMessages = { - nb: { - 'dagerMedTid.mandager': 'Mandager', - 'dagerMedTid.tirsdager': 'Tirsdager', - 'dagerMedTid.onsdager': 'Onsdager', - 'dagerMedTid.torsdager': 'Torsdager', - 'dagerMedTid.fredager': 'Fredager', - 'dagerMedTid.ingenDagerRegistrert': 'Ingen dager registrert.', - 'dagerMedTid.normaltTimer': 'Normalt {timer}', - 'dagerMedTid.uke': 'Uke {uke}', - }, +const nb = { + 'dagerMedTid.mandager': 'Mandager', + 'dagerMedTid.tirsdager': 'Tirsdager', + 'dagerMedTid.onsdager': 'Onsdager', + 'dagerMedTid.torsdager': 'Torsdager', + 'dagerMedTid.fredager': 'Fredager', + 'dagerMedTid.ingenDagerRegistrert': 'Ingen dager registrert.', + 'dagerMedTid.normaltTimer': 'Normalt {timer}', + 'dagerMedTid.uke': 'Uke {uke}', }; + +const nn: Record = { + 'dagerMedTid.mandager': 'Måndagar', + 'dagerMedTid.tirsdager': 'Tysdagar', + 'dagerMedTid.onsdager': 'Onsdagar', + 'dagerMedTid.torsdager': 'Torsdagar', + 'dagerMedTid.fredager': 'Fredagar', + 'dagerMedTid.ingenDagerRegistrert': 'Ingen dagar registrert.', + 'dagerMedTid.normaltTimer': 'Normalt {timer}', + 'dagerMedTid.uke': 'Veke {uke}', +}; + +export const dagerMedTidMessages = { nb, nn }; diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/i18n/app-messages.stories.tsx b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/i18n/app-messages.stories.tsx new file mode 100644 index 0000000000..c6491442a4 --- /dev/null +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/i18n/app-messages.stories.tsx @@ -0,0 +1,18 @@ +import { StoryFn } from '@storybook/react'; +import MessagesPreview from '@navikt/sif-common-core-ds/src/dev-utils/intl/messages-preview/MessagesPreview'; +import { withIntl } from '../../storybook/decorators/withIntl'; +import { appMessages } from './appMessages'; + +export default { + title: 'i18N/App tekster', + decorators: [withIntl], +}; + +const Template: StoryFn = () => ( + +); +export const Default = Template.bind({}); + +Default.args = {}; + +Default.parameters = {}; diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/i18n/appMessages.ts b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/i18n/appMessages.ts index 26c80e89da..e34da1b31b 100644 --- a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/i18n/appMessages.ts +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/i18n/appMessages.ts @@ -196,6 +196,189 @@ const nb = { 'ingenFraværConfirmation.heading': 'Fravær fra jobb', }; -const nn: Record = { ...nb }; +const nn: Record = { + ...velkommenPageMessages.nn, + ...opplysningerOmPleietrengendeMessages.nn, + ...legeerklæringMessages.nn, + ...tidsromMessages.nn, + ...arbeidstidMessages.nn, + ...arbeidssituasjonMessages.nn, + ...oppsummeringMessages.nn, + ...kvitteringMessages.nn, + ...validateApiDataMessages.nn, + ...arbeidstidPeriodeMessages.nn, + ...dagerMedTidMessages.nn, + 'application.title': 'Søknad om pleiepengar i livets sluttfase', + + 'initialLoadError.pageTitle': 'Det oppstod ein feil', + 'initialLoadError.text.1': 'Det oppstod ein feil under oppstarten av søknaden. Venlegst prøv igjen seinare.', + + 'resetMellomlagring.text.1': 'Om feilen vedvarer, kan du prøve å starte på nytt med eit tomt skjema.', + 'resetMellomlagring.startPåNytt': 'Start på nytt', + + hvaBetyrDette: 'Kva betyr dette?', + fødselsnummer: 'Fødselsnummer:', + + 'dagerMedTid.uke': 'Veke {uke}', + 'dagerMedTid.ingenDagerRegistrert': 'Ingen dagar registrerte', + + 'frilanser.harDuHattInntekt.spm': 'Er du frilansar i perioden du søker for?', + 'frilanser.nårStartet.spm': 'Når starta du å jobbe som frilansar?', + 'frilanser.jobberFortsatt.spm': 'Jobbar du framleis som frilansar?', + 'frilanser.nårSluttet.spm': 'Når slutta du som frilansar?', + 'frilanser.jobberNormaltTimer.spm': + 'Kor mange timar jobbar du normalt per veke som frilansar når du ikkje har fråvær?', + 'frilanser.jobberNormaltTimer.avsluttet.spm': + 'Kor mange timar jobba du normalt per veke som frilansar då du ikkje hadde fråvær?', + + 'frilanser.hjelpetekst.spm': 'Kva betyr det å vere frilansar?', + 'frilanser.hjelpetekst': + 'Du er frilansar når du mottek løn for enkeltståande oppdrag utan å vere fast eller mellombels tilsett hos den du utfører oppdraget for. Om du er usikker på om du er frilansar må du sjekke om oppdraga dine er registrerte som frilansoppdrag på', + 'frilanser.hjelpetekst.skatteetatenLenke': 'skatteetaten sine nettsider.', + + 'selvstendig.harDuHattInntekt.spm': 'Er du sjølvstendig næringsdrivande i perioden du søker for?', + 'selvstendig.harDuHattInntekt.hjelpetekst.tittel': 'Kva betyr det å vere sjølvstendig næringsdrivande?', + 'selvstendig.harDuHattInntekt.hjelpetekst': + 'Du er sjølvstendig næringsdrivande når du enten har eit enkeltpersonføretak (ENK), eit ansvarleg selskap (ANS), eller eit ansvarleg selskap med delt ansvar (DA).', + 'selvstendig.harDuHattInntekt.hjelpetekst.snSkatteetatenLenke': + 'Du kan lese meir om andre situasjonar på skatteetaten sine nettsider.', + 'selvstendig.harFlereVirksomheter.spm': 'Har du fleire enn éi næringsverksemd som er aktiv?', + 'selvstendig.veileder.flereAktiveVirksomheter': + 'Når du har fleire aktive næringsverksemder skal du berre legge inn den eldste av dei. Har du til dømes ei verksemd du starta i 2012 og ei anna som du starta i 2020, skal du berre legge inn verksemda frå 2012.', + + 'selvstendig.infoDialog.infoTittel': 'Næringsverksemd som du har lagt inn:', + 'selvstendig.infoDialog.registrerKnapp': 'Registrer verksemd', + 'selvstendig.infoDialog.endreKnapp': 'Endre opplysningar', + 'selvstendig.infoDialog.fjernKnapp': 'Fjern verksemd', + 'selvstendig.infoDialog.tittel': 'Verksemd', + + 'sn.arbeidsforhold.spm': + 'Kor mange timar jobbar du normalt per veke som sjølvstendig næringsdrivande når du ikkje har fråvær?', + + 'step.arbeidstid.pageTitle': 'Opplysningar om arbeidstid', + 'step.arbeidstid.stepTitle': 'Jobb i søknadsperioden', + 'step.arbeidstid.stepIndicatorLabel': 'Jobb i søknadsperioden', + 'step.arbeidstid.nextButtonLabel': 'Hald fram', + + 'step.medlemskap.pageTitle': 'Medlemskap i folketrygda', + 'step.medlemskap.stepTitle': 'Medlemskap i folketrygda', + 'step.medlemskap.stepIndicatorLabel': 'Om medlemskap i folketrygda', + 'step.medlemskap.nextButtonLabel': 'Hald fram', + + 'validation.harForståttRettigheterOgPlikter.notChecked': 'Du må stadfeste at du har lese og forstått dine plikter.', + + 'validation.pleierDuDenSykeHjemme.yesOrNoIsUnanswered': 'Du må svare på om du pleier personen heime.', + + 'validation.flereSokere.noValue': + 'Du må svare ja, nei eller usikker på om de er fleire som skal dele på pleiepengane.', + + 'validation.skalJobbeIPerioden.yesOrNoIsUnanswered': + 'Du må svare på om du skal gi pleie og jobbe på same dag, nokre av dagane du skal gi pleie.', + + 'validation.dagerMedPleie.ingenDagerValgt': 'Du må velje minst éin dag med pleiepengar.', + 'validation.skalJobbeOgPleieSammeDag.yesOrNoIsUnanswered': + 'Du må svare på om du skal gi pleie og jobbe på same dag.', + 'validation.skalOppholdeSegIUtlandetIPerioden.yesOrNoIsUnanswered': + 'Du må svare på om du oppheld deg i utlandet i nokre av dagane du søker for.', + 'validation.utenlandsoppholdIPerioden.utenlandsopphold_ikke_registrert': + 'Du har svart ja til at du oppheld deg i utlandet i nokre av dagane du søker for. Legg til minst eitt utanlandsopphald.', + 'validation.utenlandsoppholdIPerioden.utenlandsopphold_overlapper': + 'Du har lagt inn utanlandsopphald med datoar som overlappar kvarandre.', + 'validation.utenlandsoppholdIPerioden.utenlandsopphold_utenfor_periode': + 'Du har lagt inn utanlandsopphald som er utanfor søknadsperioden.', + 'validation.utenlandsoppholdIPerioden.utenlandsopphold_overlapper_samme_start_slutt': + 'Eit utanlandsopphald kan ikkje starte same dag som eit anna avsluttast.', + + 'validation.arbeidsforhold.erAnsatt.yesOrNoIsUnanswered': + 'Du må svare på om du er tilsett hos {navn} i perioden du søker pleiepengar.', + + 'validation.frilans.harHattInntektSomFrilanser.yesOrNoIsUnanswered': + 'Du må svare på om du er frilansar i perioden du søker for.', + 'validation.frilans.startdato.dateHasNoValue': + 'Du må oppgje kva dato du starta som frilansar. Skriv inn eller vel dato frå kalenderen.', + 'validation.frilans.startdato.dateHasInvalidFormat': + 'Du må oppgje datoen for når du starta som frilansar i eit gyldig format. Gyldig format er dd.mm.åååå.', + 'validation.frilans.startdato.dateIsAfterMax': + 'Datoen for når du starta som frilansar kan ikkje vere etter dagens dato.', + 'validation.frilans.startdato.startetEtterSøknadsperiode': + 'Du har oppgitt at du starta som frilansar etter perioden du søker for. Om dette stemmer, kan du svare "Nei" på spørsmålet om du var frilansar i perioden du søker for.', + 'validation.frilans.sluttdato.sluttetFørSøknadsperiode': + 'Du har oppgitt at du slutta som frilansar før perioden du søker for. Om dette stemmer, kan du svare "Nei" på spørsmålet om du var frilansar i perioden du søker for.', + 'validation.frilans.sluttdato.dateHasNoValue': + 'Du må oppgje når du slutta som frilansar. Skriv inn eller vel dato frå kalenderen.', + 'validation.frilans.sluttdato.dateHasInvalidFormat': + 'Du må oppgje datoen for når du slutta som frilansar i eit gyldig format. Gyldig format er dd.mm.åååå.', + 'validation.frilans.sluttdato.dateIsAfterMax': + 'Datoen for når du slutta som frilansar kan ikkje vere etter dagens dato.', + 'validation.frilans.sluttdato.dateIsBeforeMin': + 'Datoen for når du slutta som frilansar kan ikkje vere før datoen du starta.', + 'validation.frilans.jobberFortsattSomFrilans.yesOrNoIsUnanswered': + 'Du må svare på om du framleis jobbar som frilansar.', + + 'validation.selvstendig.harHattInntektSomSN.yesOrNoIsUnanswered': + 'Du må svare på om du er sjølvstendig næringsdrivande i perioden du søker for.', + 'validation.selvstendig.harFlereVirksomheter.yesOrNoIsUnanswered': + 'Du må svare på om du har fleire enn éi verksemd som er aktiv.', + 'validation.selvstendig.virksomhet.noValue': + 'Du må oppgje informasjon om verksemda di som sjølvstendig næringsdrivande.', + 'validation.selvstendig.virksomhet.startetEtterSøknadsperiode': + 'Du har oppgitt at du starta som sjølvstendig næringsdrivande etter perioden du søker for. Om dette stemmer, svarer du "Nei" på spørsmålet om du var sjølvstendig næringsdrivande i perioden du søker for.', + 'validation.selvstendig.virksomhet.sluttetFørSøknadsperiode': + 'Du har oppgitt at du slutta som sjølvstendig næringsdrivande før perioden du søker for. Om dette stemmer, svarer du "Nei" på spørsmålet om du var sjølvstendig næringsdrivande i perioden du søker for.', + + 'validation.harVærtEllerErVernepliktig.yesOrNoIsUnanswered': + 'Du må svare på om du utførte verneplikt på tidspunktet du søker pleiepengar frå.', + 'virksomhetForm.næringstype.noValue': 'Du må velje kva type verksemd du har.', + + 'validation.opptjeningUtland.listIsEmpty': 'Du må legge til jobb i eit anna EØS-land.', + 'validation.harOpptjeningUtland.yesOrNoIsUnanswered': + 'Du må svare på om du har jobba som arbeidstakar eller frilansar i eit anna EØS-land i løpet av dei siste 3 månadene før første dag med pleiepengar.', + + 'validation.harUtenlandskNæring.yesOrNoIsUnanswered': + 'Du må svare på om du har jobba som sjølvstendig næringsdrivande i eit anna EØS-land i løpet av dei siste 3 åra før perioden du søker om.', + 'validation.utenlandskNæring.listIsEmpty': 'Du må legge til næringsverksemd i eit anna EØS-land.', + + 'validation.arbeidsforhold.sluttetFørSøknadsperiode.yesOrNoIsUnanswered': + 'Du må svare på om du slutta hos {navn} før {fraDato}.', + 'validation.arbeidsforhold.jobberNormaltTimer.numberHasNoValue': + 'Du må oppgje kor mange timar per veke du {jobber} {hvor} i perioden.', + 'validation.arbeidsforhold.jobberNormaltTimer.numberHasInvalidFormat': + 'Tal timar du {jobber} per veke {hvor} har ikkje gyldig format. Eit gyldig tal inneheld berre siffer og komma som desimalteikn.', + 'validation.arbeidIPeriode.jobber': 'Du må svare kva situasjon som gjeld for deg hos {hvor} i perioden.', + + 'validation.arbeidsforhold.jobberNormaltTimer.numberIsTooSmall': + 'Tal timar du {jobber} per veke {hvor} kan ikkje vere mindre enn {min}.', + 'validation.arbeidsforhold.jobberNormaltTimer.numberIsTooLarge': + 'Tal timar du {jobber} per veke {hvor} kan ikkje vere meir enn {max}.', + + 'validation.harBoddUtenforNorgeSiste12Mnd.yesOrNoIsUnanswered': + 'Du må svare på om du har budd i utlandet i heile eller delar av dei siste 12 månadene.', + 'validation.utenlandsoppholdSiste12Mnd.utenlandsopphold_ikke_registrert': + 'Du har oppgitt at du har vore i utlandet dei siste 12 månadene. Du må registrere dette utanlandsopphaldet.', + 'validation.utenlandsoppholdSiste12Mnd.utenlandsopphold_overlapper': + 'Eitt eller fleire av utanlandsopphalda du har lagt inn for dei siste 12 månadene, har datoar som overlappar kvarandre.', + 'validation.skalBoUtenforNorgeNeste12Mnd.yesOrNoIsUnanswered': + 'Du må svare på om du planlegg å bu i utlandet i heile eller delar av dei neste 12 månadene.', + 'validation.utenlandsoppholdNeste12Mnd.utenlandsopphold_ikke_registrert': + 'Du har oppgitt at du skal opphalde deg i utlandet dei neste 12 månadene. Du må registrere dette utanlandsopphaldet.', + 'validation.utenlandsoppholdNeste12Mnd.utenlandsopphold_overlapper': + 'Eitt eller fleire av utanlandsopphalda du har lagt inn for dei neste 12 månadene, har datoar som overlappar kvarandre.', + + 'validation.harBekreftetOpplysninger.notChecked': 'Du må stadfeste at opplysningane du har gitt er riktige.', + + 'arbeidssituasjonFrilanser.frilanserPart.tittel': 'Om deg som frilansar', + 'frilansoppdragListe.oppdrag': 'Periode: {tidsrom}', + 'frilansoppdragListe.tidsrom.avsluttet': 'frå {fra} til {til}', + 'frilansoppdragListe.tidsrom.pågående': 'frå {fra} - pågåande', + 'frilansoppdragInfo.tittel': 'Registrerte frilansoppdrag i perioden:', + 'frilansoppdragInfo.tekst': + 'Dette er frilansoppdrag registrert i AA-registeret i perioden du søker om pleiepengar. Om informasjonen ikkje stemmer, må du kontakte oppdragsgivar og be dei oppdatere informasjonen i AA-registeret.', + 'ingenFraværConfirmation.title': 'Ingen fråvær registrert', + 'ingenFraværConfirmation.okLabel': 'Ja, det stemmer', + 'ingenFraværConfirmation.cancelLabel': 'Nei, det stemmer ikkje', + 'ingenFraværConfirmation.content': + 'Du har oppgitt at du jobbar som normalt og ikkje har fråvær i dagane du søker for. For å ha rett til pleiepengar må du ha fråvær frå jobb fordi du pleier nokon. Stemmer det at du ikkje har fråvær frå jobb i dagane du søker for?', + 'ingenFraværConfirmation.heading': 'Fråvær frå jobb', +}; export const appMessages = { nb, nn }; diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/i18n/index.tsx b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/i18n/index.tsx index dcbe0ddb48..48adca12d9 100644 --- a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/i18n/index.tsx +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/i18n/index.tsx @@ -43,7 +43,10 @@ const nb = { ...appMessages.nb, }; -const nn: Record = { ...nb }; +const nn: Record = { + ...libMessages.nn, + ...appMessages.nn, +}; export type AppMessageKeys = keyof typeof nb; diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/pages/kvittering/kvitteringMesssages.ts b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/pages/kvittering/kvitteringMesssages.ts index 4046dd81e7..fe55728e74 100644 --- a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/pages/kvittering/kvitteringMesssages.ts +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/pages/kvittering/kvitteringMesssages.ts @@ -10,6 +10,16 @@ const nb = { 'Når søknaden er ferdig behandlet får du et svar fra oss på «Min side». Du kan sjekke saksbehandlingstiden her.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'page.kvittering.sidetittel': 'Vi har motteke søknaden din', + 'page.kvittering.tittel': 'Vi har motteke søknad om pleiepengar i livets sluttfase', + 'page.kvittering.info.tittel': 'Kva skjer vidare no?', + 'page.kvittering.list.item.1': + 'Du må be {antall, plural, one {arbeidsgivar} other {arbeidsgivarane}} om å sende inntektsmelding så snart som mogleg dersom du søker for første gong eller det er meir enn 4 veker sidan sist du hadde pleiepengar.', + 'page.kvittering.list.item.2': + 'Vi startar behandlinga av søknaden din når vi har motteke all nødvendig dokumentasjon. Vi kontaktar deg dersom vi treng fleire opplysningar.', + 'page.kvittering.list.item.3': + 'Når søknaden er ferdig behandla, får du eit svar frå oss på «Mi side». Du kan sjekke saksbehandlingstida her.', +}; export const kvitteringMessages = { nb, nn }; diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/pages/velkommen/velkommenPageMessages.ts b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/pages/velkommen/velkommenPageMessages.ts index 47eaf51cae..c58783303d 100644 --- a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/pages/velkommen/velkommenPageMessages.ts +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/pages/velkommen/velkommenPageMessages.ts @@ -39,6 +39,45 @@ const nb = { 'Du har rett til innsyn i saken din. Vil du vite mer om hvordan Nav behandler personopplysninger? Se nav.no/personvern.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'page.velkommen.sidetittel': 'Søknad om pleiepengar i livets sluttfase', + 'page.velkommen.guide.tittel': 'Hei {navn}', + 'page.velkommen.guide.ingress': 'Velkomen til søknad om pleiepengar i livets sluttfase.', + 'page.velkommen.guide.tekst.1': + 'Denne søknaden bruker du når du må vere borte frå jobb for å pleie og ta vare på ein person som er i livets sluttfase.', + 'page.velkommen.guide.tekst.2': + 'Den som er sjuk må pleiast heime hos nokon, vanlegvis heime hos deg eller hos den som er sjuk.', + + 'page.velkommen.omSøknaden.tittel': 'Om søknaden', + 'page.velkommen.omSøknaden.1': 'Du får rettleiing undervegs i søknaden om kva du skal fylle ut, og korleis.', + 'page.velkommen.omSøknaden.2': + 'Me tar vare på svara dine i 72 timar. Så, dersom du innanfor den tida til dømes vil ta ein pause eller blir automatisk logga ut, kan du halde fram der du var når du kjem tilbake.', + 'page.velkommen.omSøknaden.3': + 'Du må svare på alle spørsmåla for å kunne gå vidare. Dersom du manglar etterspurt dokumentasjon, kan du ettersende det så snart du kan.', + 'page.velkommen.omSøknaden.4': 'Om korleis me hentar opplysningar om deg', + 'page.velkommen.form.bekreftLabel': 'Eg stadfestar at eg har forstått mitt ansvar som søkjar', + 'page.velkommen.form.ansvar.tittel': 'Ditt ansvar som søkjar', + 'page.velkommen.form.ansvar.list.1': + 'Eg forstår at dersom eg gir uriktige opplysningar, kan det få konsekvensar for retten min til det eg søkjer om', + 'page.velkommen.form.ansvar.list.2.1': 'Eg har lese og forstått det som står på', + 'page.velkommen.form.ansvar.list.2.2': 'nav.no/rett og plikt', + 'page.velkommen.harForståttRettigheterOgPlikter.notChecked': + 'Du må velje at du har forstått ditt ansvar som søkjar', + 'personopplysninger.1': 'Slik behandlar Nav personopplysningane dine', + 'personopplysninger.2': + 'Me hentar inn og mottar opplysningar om deg for å behandle saka di. Det er nødvendig for at du skal få rett teneste. Deler av saka di blir behandla automatisk.', + 'personopplysninger.3': 'Kva opplysningar hentar me inn?', + 'personopplysninger.4': 'Opplysningane me hentar kjem anten frå deg eller frå offentlege register:', + 'personopplysninger.4.1': 'opplysningar om helsa til den du skal pleie', + 'personopplysninger.4.2': 'arbeidsforholda dine og inntekta di', + 'personopplysninger.4.3': 'ytingar du mottar frå Nav', + 'personopplysninger.4.4': 'tilknytinga di til Noreg', + 'personopplysninger.4.5': + 'trygdeordningar du kan ha rett til i andre land. Me kan også sende opplysningar om deg til trygdemyndigheiter i andre land', + 'personopplysninger.5.1': + 'Me lagrar opplysningar me får inn om personen du søkjer pleiepengar for. Dette gjer me for å kunne gjenbruke opplysningane dersom andre søkjer pleiepengar for same person.', + 'personopplysninger.6': + 'Du har rett til innsyn i saka di. Vil du vite meir om korleis Nav behandlar personopplysningar? Sjå nav.no/personvern.', +}; export const velkommenPageMessages = { nb, nn }; diff --git "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/arbeidssituasjon/arbeidssituasjonMessages.ts" "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/arbeidssituasjon/arbeidssituasjonMessages.ts" index 35aff5c3e9..b4196876ae 100644 --- "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/arbeidssituasjon/arbeidssituasjonMessages.ts" +++ "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/arbeidssituasjon/arbeidssituasjonMessages.ts" @@ -112,6 +112,115 @@ const nb = { 'Hvis du for dette arbeidsforholdet for eksempel får foreldrepenger, sykepenger eller annet fra Nav nå, registrerer du det som var normalarbeidstiden din før du begynte å få denne utbetalingen fra Nav.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.arbeidssituasjon.pageTitle': 'Arbeidssituasjon', + 'step.arbeidssituasjon.stepTitle': 'Arbeidssituasjon', + 'step.arbeidssituasjon.stepIndicatorLabel': 'Arbeidssituasjon', + 'step.arbeidssituasjon.nextButtonLabel': 'Fortsett', + + 'steg.arbeidssituasjon.tittel': 'Arbeidsgivarar', + + 'steg.arbeidssituasjon.veileder.1': + 'No treng me å vite litt om arbeidssituasjonen din og kor mykje du normalt jobbar når du ikkje har fråvær frå jobben din.', + 'steg.arbeidssituasjon.veileder.2': + 'Om du er arbeidstakar og er usikker på kva som er din normale arbeidstid, finn du svaret i arbeidskontrakten din. Eventuelt kan du spørje arbeidsgivaren din.', + 'steg.arbeidssituasjon.veileder.medArbeidsgiver': + 'Nedanfor ser du {antall, plural, one {arbeidsgivaren} other {arbeidsgivarar}} du er registrert tilsett hos i AA-registeret i perioden du søkjer om pleiepengar. For at me skal vere sikre på at opplysningane er riktige må du stadfeste om du er, eller har vore, tilsett der.', + 'steg.arbeidssituasjon.veileder.ingenArbeidsgiverFunnet': + 'Me har ikkje funne nokon arbeidsgivarar registrert på deg i AA-registeret.', + 'steg.arbeidssituasjon.veileder.manglerDetArbeidsgiver': + 'Om du i nokon av dagane du søkjer for er, eller var, tilsett hos ein arbeidsgivar som ikkje er vist her, må du be arbeidsgivaren sende ein ny A-melding. Dette gjer dei enten via sitt eige lønns- og personalsystem, eller gjennom Altinn.', + 'steg.arbeidssituasjon.info.tekst': + 'Om det manglar ein arbeidsgivar her, må du be arbeidsgivaren din sende ny A-melding, enten via lønns- og personalsystemet eller gjennom Altinn.', + 'steg.arbeidssituasjon.ingenOpplysninger': 'Me har ikkje funne nokon arbeidsgivar registrert på deg.', + + 'steg.arbeidssituasjon.intro': 'Me har funne desse arbeidsforholda registrert på deg.', + 'steg.arbeidssituasjon.info.tittel': 'Manglar det eit arbeidsforhold her?', + 'steg.arbeidssituasjon.frilanser.tittel': 'Frilans', + 'steg.arbeidssituasjon.sn.tittel': 'Sjølvstendig næringsdrivande', + 'steg.arbeidssituasjon.verneplikt.tittel': 'Verneplikt', + 'steg.arbeidssituasjon.verneplikt.spm': 'Utøvde du verneplikt på tidspunktet du søkjer pleiepengar frå?', + 'steg.arbeidssituasjon.verneplikt.info.tittel': 'Kva betyr dette?', + 'steg.arbeidssituasjon.verneplikt.info.tekst': + 'Du skal svare ja på dette spørsmålet om du har utøvd verneplikt i minst 28 dagar på starttidspunktet for perioden du søkjer for, eller om perioden med verneplikt var meint å vare i minst 28 dagar.', + 'steg.arbeidssituasjon.opptjeningUtland.tittel': 'Jobba i eit anna EØS-land', + 'steg.arbeidssituasjon.opptjeningUtland.spm': + 'Har du jobba som arbeidstakar eller frilanser i eit anna EØS-land i løpet av dei 3 siste månadene før perioden du søkjer om?', + 'steg.arbeidssituasjon.opptjeningUtland.addLabel': 'Legg til jobb i eit anna EØS-land', + 'steg.arbeidssituasjon.opptjeningUtland.listTitle': 'Registrert jobb i eit anna EØS-land', + 'steg.arbeidssituasjon.opptjeningUtland.modalTitle': 'Jobb i EØS-land', + + 'steg.arbeidssituasjon.utenlandskNæring.spm': + 'Har du jobba som sjølvstendig næringsdrivande i eit anna EØS-land i løpet av dei 3 siste åra før perioden du søkjer om?', + 'steg.arbeidssituasjon.utenlandskNæring.addLabel': 'Legg til næringsverksemd i eit anna EØS-land', + 'steg.arbeidssituasjon.utenlandskNæring.modalTitle': 'Verksemd', + 'steg.arbeidssituasjon.utenlandskNæring.listTitle': 'Næringsverksemd i eit anna EØS-land', + + 'arbeidsforhold.part.jobber': 'jobbar', + 'arbeidsforhold.part.jobbet': 'jobba', + 'arbeidsforhold.part.hosArbeidsgiver': 'hos {navn}', + 'arbeidsforhold.part.som.ANSATT': 'hos {navn}', + 'arbeidsforhold.part.som.FRILANSER': 'som frilanser', + 'arbeidsforhold.part.som.SELVSTENDIG': 'som sjølvstendig næringsdrivande', + + 'arbeidsforhold.ikkeAnsatt.info': + 'Når du ikkje er tilsett her lenger, må du be denne arbeidsgivaren sende ein ny A-melding med sluttdato. Dette gjer dei enten via sitt eige lønns- og personalsystem, eller via Altinn.', + 'arbeidsforhold.ikkeFrilansoppdragIPerioden.info': 'Informasjon når frilansoppdraget ikkje gjeld perioden', + + 'arbeidsforhold.erAnsatt.spm': 'Stemmer det at du er tilsett hos {navn} i perioden du søkjer for?', + 'arbeidsforhold.harFrilansoppdrag.spm': + 'Stemmer det at du har eit frilansoppdrag hos {navn} i perioden du søkjer for?', + 'arbeidsforhold.sluttetFørSøknadsperiode.spm': 'Slutta du hos {navn} før {fraDato}?', + 'arbeidsforhold.avsluttet.info': + 'Sluttdato var innanfor perioden du søkjer om pleiepengar. Me treng difor å vite korleis normalarbeidstida di var hos {navn}', + + 'arbeidsforhold.jobberNormaltTimer.spm': + 'Kor mange timar jobbar du normalt per veke hos {navn} når du ikkje har fråvær?', + 'arbeidsforhold.jobberNormaltTimer.avsluttet.spm': 'Kor mange timar jobba du normalt per veke hos {navn}?', + 'arbeidsforhold.utledet': 'timar i veka', + 'arbeidsforhold.timer.suffix': 'timar per veke', + + 'arbeidsforhold.normalTimer.info.tittel': 'Kva betyr dette?', + 'arbeidsforhold.ansatt.normalTimer.info': + 'Om du er usikker på kor mange timar du jobbar per veke, finn du som regel svaret i arbeidskontrakten din. Du kan også spørje arbeidsgivaren din.', + 'arbeidsforhold.frilanser.normalTimer.info': + 'Her skal du oppgi kor mange timar du normalt jobbar som frilanser når du ikkje har fråvær på grunn av til dømes pleiepengar.', + 'arbeidsforhold.selvstendig.normalTimer.info': + 'Her skal du oppgi kor mange timar du normalt jobbar som sjølvstendig næringsdrivande når du ikkje har fråvær på grunn av til dømes pleiepengar.', + 'arbeidsforhold.normalTimer.info.list.item.1': + 'Om du jobbar like mange timar kvar veke, er det desse timane du oppgir.', + 'arbeidsforhold.normalTimer.info.list.item.2': + 'Om du jobbar turnus eller har ein annan varierande arbeidstid, legg du inn eit snitt per veke.', + + 'arbeidsforhold.normalTimer.info.turnus.tittel': 'Korleis reknar eg ut eit snitt når eg jobbar turnus?', + 'arbeidsforhold.normalTimer.info.turnus.avsnitt.1': + 'Du reknar ut snittet ved å legge saman talet på timar du jobbar totalt i heile turnusperioden din, og deler det med talet på veker som turnusperioden din består av.', + 'arbeidsforhold.normalTimer.info.turnus.avsnitt.2': 'Døme:', + 'arbeidsforhold.normalTimer.info.turnus.avsnitt.3': + 'Du har ein turnus som går over 3 veker. Den første veka jobbar du 20 timar, den andre 40 timar og den tredje veka jobbar du 15 timar. Då legg du saman talet på timar du har jobba og deler med talet på veker i turnusperioden din.', + 'arbeidsforhold.normalTimer.info.turnus.avsnitt.4': 'Då blir reknestykket slik i dette dømet:', + 'arbeidsforhold.normalTimer.info.turnus.avsnitt.4a': '20 timar + 40 timar + 15 timar = 75 timar', + 'arbeidsforhold.normalTimer.info.turnus.avsnitt.4b': + 'Så deler du talet på timar med talet på veker i turnusperioden din: 75 / 3 = 25', + 'arbeidsforhold.normalTimer.info.turnus.avsnitt.5': + 'Du jobbar altså i snitt 25 timar per veke, og det er dette talet du oppgir.', + + 'arbeidsforhold.normalTimer.info.varierende.tittel': 'Korleis reknar eg ut eit snitt ved varierande arbeidstid?', + 'arbeidsforhold.normalTimer.info.varierende.avsnitt.1': + 'Du reknar ut eit snitt ved å legge saman talet på timar du totalt har jobba dei siste 12 vekene og deler det med 12. Om du ikkje har jobba i 12 veker, reknar du ut snittet på same måte ved å bruke dei vekene du har jobba.', + 'arbeidsforhold.normalTimer.info.varierende.avsnitt.2': 'Døme når du har jobba dei siste 12 vekene:', + 'arbeidsforhold.normalTimer.info.varierende.avsnitt.3': + 'Dei siste 12 vekene har du jobba 250 timar. Då deler du talet på timar du har jobba med 12: 250 timar / 12 veker = 20,8', + 'arbeidsforhold.normalTimer.info.varierende.avsnitt.4': + 'Du jobbar altså i snitt 20,8 timar per veke, og det er dette talet du oppgir.', + 'arbeidsforhold.normalTimer.info.varierende.avsnitt.5': + 'Slik reknar du ut eit snitt når du har jobba mindre enn 12 veker:', + 'arbeidsforhold.normalTimer.info.varierende.avsnitt.6': + 'Då deler du talet på timar med talet på veker du har jobba. Om du til dømes har jobba i 7 veker, så deler du talet på timar du har jobba med 7.', + + 'arbeidsforhold.normalTimer.info.utbetalingFraNAV.tittel': 'Kva om eg får utbetaling frå Nav no?', + 'arbeidsforhold.normalTimer.info.utbetalingFraNAV.avsnitt.1': + 'Om du for dette arbeidsforholdet til dømes får foreldrepengar, sjukepengar eller anna frå Nav no, registrerer du det som var normalarbeidstida di før du byrja å få denne utbetalinga frå Nav.', +}; export const arbeidssituasjonMessages = { nb, nn }; diff --git "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/arbeidstid/arbeidstidMessages.ts" "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/arbeidstid/arbeidstidMessages.ts" index 3fb79c119f..0dde8e3b43 100644 --- "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/arbeidstid/arbeidstidMessages.ts" +++ "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/arbeidstid/arbeidstidMessages.ts" @@ -1,35 +1,66 @@ -export const arbeidstidMessages = { - nb: { - 'arbeidIPeriode.StepInfo.1': - 'Du har fortalt oss at du skal jobbe noe de dagene du skal gi pleie. Så, nå må du legge inn i kalenderen hvor mye du skal jobbe.', - 'arbeidIPeriode.FrilansLabel': 'Frilans', - 'arbeidIPeriode.SNLabel': 'Selvstendig næringsdrivende', - 'arbeidIPeriode.jobberIPerioden.spm': 'I dagene du søker for, hvilken situasjon gjelder for deg {hvor}?', - 'arbeidIPeriode.enkeltdager_gruppe.legend': - 'Oppgi hvor mye du jobber {hvor} i de dagene du søker pleiepenger for.', - 'arbeidIPeriode.jobberIPerioden.jobberIkke': 'Jeg jobber ikke noe de dagene jeg pleier', - 'arbeidIPeriode.jobberIPerioden.jobberVanlig': 'Jeg jobber som normalt, og har ikke fravær', - 'arbeidIPeriode.jobberIPerioden.jobberRedusert': 'Jeg kombinerer delvis jobb med pleiepenger', - 'arbeidIPeriode.iDag.utledet': 'timer i uka', - 'arbeidIPeriode.prosent.utledet.medTimer': 'prosent av {timerNormalt} ({timerRedusert} per dag)', - 'arbeidIPeriode.arbeidstidSted.frilansoppdrag': 'Frilansoppdrag', - 'arbeidIPeriode.arbeidstidSted.sn': 'Selvstendig næringsdrivende', +const nb = { + 'arbeidIPeriode.StepInfo.1': + 'Du har fortalt oss at du skal jobbe noe de dagene du skal gi pleie. Så, nå må du legge inn i kalenderen hvor mye du skal jobbe.', + 'arbeidIPeriode.FrilansLabel': 'Frilans', + 'arbeidIPeriode.SNLabel': 'Selvstendig næringsdrivende', + 'arbeidIPeriode.jobberIPerioden.spm': 'I dagene du søker for, hvilken situasjon gjelder for deg {hvor}?', + 'arbeidIPeriode.enkeltdager_gruppe.legend': 'Oppgi hvor mye du jobber {hvor} i de dagene du søker pleiepenger for.', + 'arbeidIPeriode.jobberIPerioden.jobberIkke': 'Jeg jobber ikke noe de dagene jeg pleier', + 'arbeidIPeriode.jobberIPerioden.jobberVanlig': 'Jeg jobber som normalt, og har ikke fravær', + 'arbeidIPeriode.jobberIPerioden.jobberRedusert': 'Jeg kombinerer delvis jobb med pleiepenger', + 'arbeidIPeriode.iDag.utledet': 'timer i uka', + 'arbeidIPeriode.prosent.utledet.medTimer': 'prosent av {timerNormalt} ({timerRedusert} per dag)', + 'arbeidIPeriode.arbeidstidSted.frilansoppdrag': 'Frilansoppdrag', + 'arbeidIPeriode.arbeidstidSted.sn': 'Selvstendig næringsdrivende', - 'arbeidIPeriode.validation.timerDag.timeHasNoValue': 'Du må fylle ut timer og minutter for {dato} {hvor}.', - 'arbeidIPeriode.validation.timerDag.hoursAreInvalid': 'Antall timer på {dato} er ikke et gyldig tall.', - 'arbeidIPeriode.validation.timerDag.minutesAreInvalid': 'Antall minutter på {dato} er ikke et gyldig tall.', - 'arbeidIPeriode.validation.timerDag.tooManyHours': 'Antall timer på {dato} kan ikke overstige 24 timer.', - 'arbeidIPeriode.validation.timerDag.tooManyMinutes': - 'Antall minutter på {dato} kan ikke overstige 59 minutter.', - 'arbeidIPeriode.validation.timerDag.durationIsTooLong': - 'Antall timer og minutter registrert {dato} er for høyt. Tiden kan ikke overstige 24 timer hver ukedag.', - 'arbeidIPeriode.validation.timerDag.durationIsTooShort': - 'Antall timer og minutter {dato} kan ikke være mindre enn 0 timer og 0 minutter.', - 'arbeidIPeriode.validation.timerDag.minutesAreNegative': - 'Antall timer og minutter {dato} kan ikke være mindre enn 0 timer og 0 minutter.', - 'arbeidIPeriode.validation.timerDag.hoursAreNegative': - 'Antall timer og minutter {dato} kan ikke være mindre enn 0 timer og 0 minutter.', - 'arbeidIPeriode.validation.ingenTidRegistrert': - 'Du har ikke oppgitt noe tid med jobb {hvor} på dagene du har søkt om. Hvis dette stemmer, skal du velge "Jeg jobber ikke " på spørsmålet ovenfor.', - }, + 'arbeidIPeriode.validation.timerDag.timeHasNoValue': 'Du må fylle ut timer og minutter for {dato} {hvor}.', + 'arbeidIPeriode.validation.timerDag.hoursAreInvalid': 'Antall timer på {dato} er ikke et gyldig tall.', + 'arbeidIPeriode.validation.timerDag.minutesAreInvalid': 'Antall minutter på {dato} er ikke et gyldig tall.', + 'arbeidIPeriode.validation.timerDag.tooManyHours': 'Antall timer på {dato} kan ikke overstige 24 timer.', + 'arbeidIPeriode.validation.timerDag.tooManyMinutes': 'Antall minutter på {dato} kan ikke overstige 59 minutter.', + 'arbeidIPeriode.validation.timerDag.durationIsTooLong': + 'Antall timer og minutter registrert {dato} er for høyt. Tiden kan ikke overstige 24 timer hver ukedag.', + 'arbeidIPeriode.validation.timerDag.durationIsTooShort': + 'Antall timer og minutter {dato} kan ikke være mindre enn 0 timer og 0 minutter.', + 'arbeidIPeriode.validation.timerDag.minutesAreNegative': + 'Antall timer og minutter {dato} kan ikke være mindre enn 0 timer og 0 minutter.', + 'arbeidIPeriode.validation.timerDag.hoursAreNegative': + 'Antall timer og minutter {dato} kan ikke være mindre enn 0 timer og 0 minutter.', + 'arbeidIPeriode.validation.ingenTidRegistrert': + 'Du har ikke oppgitt noe tid med jobb {hvor} på dagene du har søkt om. Hvis dette stemmer, skal du velge "Jeg jobber ikke " på spørsmålet ovenfor.', }; + +const nn: Record = { + 'arbeidIPeriode.StepInfo.1': + 'Du har fortalt oss at du skal jobbe noko dei dagane du skal gi pleie. No må du leggje inn i kalenderen kor mykje du skal jobbe.', + 'arbeidIPeriode.FrilansLabel': 'Frilans', + 'arbeidIPeriode.SNLabel': 'Sjølvstendig næringsdrivande', + 'arbeidIPeriode.jobberIPerioden.spm': 'I dagane du søkjer for, kva situasjon gjeld for deg {hvor}?', + 'arbeidIPeriode.enkeltdager_gruppe.legend': + 'Oppgi kor mykje du jobbar {hvor} i dei dagane du søkjer pleiepengar for.', + 'arbeidIPeriode.jobberIPerioden.jobberIkke': 'Eg jobbar ikkje noko dei dagane eg pleier', + 'arbeidIPeriode.jobberIPerioden.jobberVanlig': 'Eg jobbar som normalt, og har ikkje fråvær', + 'arbeidIPeriode.jobberIPerioden.jobberRedusert': 'Eg kombinerer delvis jobb med pleiepengar', + 'arbeidIPeriode.iDag.utledet': 'timar i veka', + 'arbeidIPeriode.prosent.utledet.medTimer': 'prosent av {timerNormalt} ({timerRedusert} per dag)', + 'arbeidIPeriode.arbeidstidSted.frilansoppdrag': 'Frilansoppdrag', + 'arbeidIPeriode.arbeidstidSted.sn': 'Sjølvstendig næringsdrivande', + + 'arbeidIPeriode.validation.timerDag.timeHasNoValue': 'Du må fylle ut timar og minutt for {dato} {hvor}.', + 'arbeidIPeriode.validation.timerDag.hoursAreInvalid': 'Tal på timar for {dato} er ikkje eit gyldig tal.', + 'arbeidIPeriode.validation.timerDag.minutesAreInvalid': 'Tal på minutt for {dato} er ikkje eit gyldig tal.', + 'arbeidIPeriode.validation.timerDag.tooManyHours': 'Tal på timar for {dato} kan ikkje overstige 24 timar.', + 'arbeidIPeriode.validation.timerDag.tooManyMinutes': 'Tal på minutt for {dato} kan ikkje overstige 59 minutt.', + 'arbeidIPeriode.validation.timerDag.durationIsTooLong': + 'Tal på timar og minutt registrert for {dato} er for høgt. Tida kan ikkje overstige 24 timar kvar vekedag.', + 'arbeidIPeriode.validation.timerDag.durationIsTooShort': + 'Tal på timar og minutt for {dato} kan ikkje vere mindre enn 0 timar og 0 minutt.', + 'arbeidIPeriode.validation.timerDag.minutesAreNegative': + 'Tal på timar og minutt for {dato} kan ikkje vere mindre enn 0 timar og 0 minutt.', + 'arbeidIPeriode.validation.timerDag.hoursAreNegative': + 'Tal på timar og minutt for {dato} kan ikkje vere mindre enn 0 timar og 0 minutt.', + 'arbeidIPeriode.validation.ingenTidRegistrert': + "Du har ikkje oppgitt noko tid med jobb {hvor} på dagane du har søkt om. Dersom dette stemmer, skal du velje 'Eg jobbar ikkje' på spørsmålet ovanfor.", +}; + +export const arbeidstidMessages = { nb, nn }; diff --git "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/arbeidstid/arbeidstidPeriodeMessages.ts" "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/arbeidstid/arbeidstidPeriodeMessages.ts" index 5fdf07fcf7..5e90fb9340 100644 --- "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/arbeidstid/arbeidstidPeriodeMessages.ts" +++ "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/arbeidstid/arbeidstidPeriodeMessages.ts" @@ -1,25 +1,30 @@ import { typedIntlHelper } from '@navikt/sif-common-core-ds/src/utils/intlUtils'; import { IntlShape } from 'react-intl'; -const arbeidIPeriodeIntlValuesMessages = { - nb: { - 'arbeidstidPeriode.arbeidIPeriodeIntlValues.harJobbet': 'har jobbet', - 'arbeidstidPeriode.arbeidIPeriodeIntlValues.skalJobbe': 'skal jobbe', - 'arbeidstidPeriode.arbeidIPeriodeIntlValues.somAnsatt': `hos {arbeidsstedNavn}`, - 'arbeidstidPeriode.arbeidIPeriodeIntlValues.somFrilanser': 'som frilanser', - 'arbeidstidPeriode.arbeidIPeriodeIntlValues.somSN': 'som selvstendig næringsdrivende', - 'arbeidstidPeriode.arbeidIPeriodeIntlValues.iPerioden': `i perioden {fra} til {til}`, - }, +const nb = { + 'arbeidstidPeriode.arbeidIPeriodeIntlValues.harJobbet': 'har jobbet', + 'arbeidstidPeriode.arbeidIPeriodeIntlValues.skalJobbe': 'skal jobbe', + 'arbeidstidPeriode.arbeidIPeriodeIntlValues.somAnsatt': `hos {arbeidsstedNavn}`, + 'arbeidstidPeriode.arbeidIPeriodeIntlValues.somFrilanser': 'som frilanser', + 'arbeidstidPeriode.arbeidIPeriodeIntlValues.somSN': 'som selvstendig næringsdrivende', + 'arbeidstidPeriode.arbeidIPeriodeIntlValues.iPerioden': `i perioden {fra} til {til}`, + 'arbeidstidPeriode.timer': '{timer, plural, one {# time} other {# timer}}', + 'arbeidstidPeriode.timer.ikkeTall': `{timer} timer`, }; -export const arbeidstidPeriodeMessages = { - nb: { - ...arbeidIPeriodeIntlValuesMessages.nb, - 'arbeidstidPeriode.timer': '{timer, plural, one {# time} other {# timer}}', - 'arbeidstidPeriode.timer.ikkeTall': `{timer} timer`, - }, +const nn: Record = { + 'arbeidstidPeriode.arbeidIPeriodeIntlValues.harJobbet': 'har jobba', + 'arbeidstidPeriode.arbeidIPeriodeIntlValues.skalJobbe': 'skal jobbe', + 'arbeidstidPeriode.arbeidIPeriodeIntlValues.somAnsatt': `hos {arbeidsstedNavn}`, + 'arbeidstidPeriode.arbeidIPeriodeIntlValues.somFrilanser': 'som frilansar', + 'arbeidstidPeriode.arbeidIPeriodeIntlValues.somSN': 'som sjølvstendig næringsdrivande', + 'arbeidstidPeriode.arbeidIPeriodeIntlValues.iPerioden': `i perioden {fra} til {til}`, + 'arbeidstidPeriode.timer': '{timer, plural, one {# time} other {# timar}}', + 'arbeidstidPeriode.timer.ikkeTall': `{timer} timar`, }; +export const arbeidstidPeriodeMessages = { nb, nn }; + type ArbeidstidPeriodeMessagesType = keyof typeof arbeidstidPeriodeMessages.nb; export const getArbeidstidPeriodeIntl = (intl: IntlShape) => typedIntlHelper(intl); diff --git "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/legeerkl\303\246ring/legeerkl\303\246ringMessages.ts" "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/legeerkl\303\246ring/legeerkl\303\246ringMessages.ts" index 4ebf9e0be9..22d15d036f 100644 --- "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/legeerkl\303\246ring/legeerkl\303\246ringMessages.ts" +++ "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/legeerkl\303\246ring/legeerkl\303\246ringMessages.ts" @@ -12,6 +12,17 @@ const nb = { 'vedleggsliste.ingenLegeerklæringLastetOpp': 'Ingen legeerklæring er lastet opp', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.legeerklæring.pageTitle': 'Legeerklæring', + 'step.legeerklæring.stepTitle': 'Legeerklæring', + 'step.legeerklæring.stepIndicatorLabel': 'Legeerklæring', + 'step.legeerklæring.nextButtonLabel': 'Fortset', + 'step.legeerklæring.counsellorPanel.info': + 'Her skal du laste opp ei legeerklæring som stadfestar at personen er i livets sluttfase. Du kan hoppe over dette dersom du eller ein annan allereie har lasta opp ei slik erklæring.', + + 'step.legeerklæring.vedlegg.knappLabel': 'Last opp legeerklæringa', + + 'vedleggsliste.ingenLegeerklæringLastetOpp': 'Ingen legeerklæring er lasta opp', +}; export const legeerklæringMessages = { nb, nn }; diff --git "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/opplysninger-om-pleietrengende/opplysningerOmPleietrengendeMessages.ts" "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/opplysninger-om-pleietrengende/opplysningerOmPleietrengendeMessages.ts" index 0dd6db4e87..8dab02f273 100644 --- "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/opplysninger-om-pleietrengende/opplysningerOmPleietrengendeMessages.ts" +++ "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/opplysninger-om-pleietrengende/opplysningerOmPleietrengendeMessages.ts" @@ -51,6 +51,56 @@ const nb = { 'Du må svare på hvorfor den du pleier ikke har fødselsnummer eller D-nummer.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.opplysningerOmPleietrengende.pageTitle': 'Om personen du pleier', + 'step.opplysningerOmPleietrengende.stepTitle': 'Om personen du pleier', + 'step.opplysningerOmPleietrengende.stepIndicatorLabel': 'Om personen du pleier', + 'step.opplysningerOmPleietrengende.nextButtonLabel': 'Fortset', + 'step.opplysningerOmPleietrengende.counsellorPanel.info': + 'Her gir du opplysningar om personen du skal gi pleie til, og om det er fleire som skal dele på å gi pleie.', + + 'steg.opplysningerOmPleietrengende.pleierDuDenSykeHjemme.spm': + 'Skal du pleie personen heime i dei dagane du søkjer for?', + 'steg.opplysningerOmPleietrengende.pleierDuDenSykeHjemme.alert': + 'Du kan berre søkje for dagar du pleier personen heime.', + 'steg.opplysningerOmPleietrengende.pleierDuDenSykeHjemme.info.tittel': 'Kva betyr dette?', + 'steg.opplysningerOmPleietrengende.pleierDuDenSykeHjemme.info.1': + 'For å ha rett til pleiepengar må du pleie den som treng pleie heime i ein privat heim. Som oftast skjer det heime hos deg, eller heime hos den du pleier.', + 'steg.opplysningerOmPleietrengende.pleierDuDenSykeHjemme.info.2': + 'Det er ikkje rett til pleiepengar i denne situasjonen dersom den pleietrengande er på sjukehus eller ein annan institusjon.', + + 'step.opplysningerOmPleietrengende.spm.navn': 'Namn på den du skal pleie', + 'step.opplysningerOmPleietrengende.spm.fnr': 'Fødselsnummer/D-nummer', + 'step.opplysningerOmPleietrengende.årsakManglerIdentitetsnummer.spm': + 'Kvifor har ikkje personen fødselsnummer eller D-nummer?', + 'step.opplysningerOmPleietrengende.årsakManglerIdentitetsnummer.BOR_I_UTLANDET': 'Personen bur i utlandet', + 'step.opplysningerOmPleietrengende.årsakManglerIdentitetsnummer.ANNET': 'Anna', + 'step.opplysningerOmPleietrengende.id.tittel': 'ID for personen du pleier', + 'step.opplysningerOmPleietrengende.id.info': + 'Når personen du pleier ikkje har fødselsnummer eller D-nummer, må du leggje ved ei kopi av ID for personen. Godkjend ID kan vere fødselsattest, dødsattest, førarkort, ID-kort eller pass.', + 'step.opplysningerOmPleietrengende.id.uploadButtonLabel': 'Last opp ID', + 'vedleggsliste.ingenDokumenter': 'Ingen dokument er lasta opp', + + 'step.opplysningerOmPleietrengende.fnr.harIkkeFnr': 'Personen har ikkje fødselsnummer/D-nummer', + 'step.opplysningerOmPleietrengende.fødselsdato': 'Fødselsdato', + 'validation.navn.stringHasNoValue': 'Du må skrive inn namnet til den du pleier.', + 'validation.norskIdentitetsnummer.fødselsnummerHasNoValue': + 'Du må skrive inn fødselsnummeret til personen du pleier. Eit fødselsnummer består av 11 siffer.', + 'validation.norskIdentitetsnummer.fødselsnummerIsInvalid': + 'Du har oppgitt eit ugyldig fødselsnummer. Kontroller at du har tasta inn riktig.', + 'validation.norskIdentitetsnummer.fødselsnummerIsNot11Chars': + 'Du har oppgitt eit ugyldig fødselsnummer. Eit gyldig fødselsnummer består av 11 siffer.', + 'validation.norskIdentitetsnummer.fødselsnummerIsNotAllowed': + 'Du har oppgitt ditt eige fødselsnummer. Du må skrive inn fødselsnummeret til personen du pleier.', + 'validation.norskIdentitetsnummer.fødselsnummerAsHnrIsNotAllowed': + 'Fødselsnummeret/D-nummeret du har tasta inn er ikkje eit gyldig norsk fødselsnummer. Kontroller at du har tasta inn riktig.', + 'validation.fødselsdato.dateHasNoValue': + 'Du må oppgi fødselsdatoen til personen du pleier. Skriv inn, eller vel dato frå datoveljaren.', + 'validation.fødselsdato.dateIsAfterMax': 'Fødselsdatoen kan ikkje vere etter dagens dato.', + 'validation.fødselsdato.dateHasInvalidFormat': + 'Du må oppgi fødselsdatoen i eit gyldig format. Gyldig format er dd.mm.åååå.', + 'validation.årsakManglerIdentitetsnummer.noValue': + 'Du må svare på kvifor den du pleier ikkje har fødselsnummer eller D-nummer.', +}; export const opplysningerOmPleietrengendeMessages = { nb, nn }; diff --git "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" index 45424e4605..545d33dac9 100644 --- "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" +++ "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/oppsummering/oppsummeringMessages.ts" @@ -134,6 +134,139 @@ const nb = { 'opptjeningIUtlandetSummaryItem.info': 'Jobbet i {landnavn} som {hva} hos {hvor}', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.oppsummering.pageTitle': 'Oppsummering', + 'step.oppsummering.stepTitle': 'Oppsummering', + 'step.oppsummering.stepIndicatorLabel': 'Oppsummering', + 'step.oppsummering.nextButtonLabel': 'Send inn søknad', + 'step.oppsummering.info': + 'Les gjennom oppsummeringa og sjekk at alt er riktig før du sender inn søknaden. Om du vil gjere endringar, kan du gå tilbake.', + + 'step.oppsummering.søker.header': 'Om deg', + 'step.oppsummering.søker.navn': 'Namn', + 'step.oppsummering.søker.fnr': 'Fødselsnummer', + 'step.oppsummering.pleietrengende.header': 'Om personen du pleier', + 'step.oppsummering.pleietrengende.fødselsdato': 'Fødselsdato', + 'step.oppsummering.pleietrengende.navn': 'Namn', + 'step.oppsummeringpleietrengende.harIkkeFnr': + 'Oppgitt grunn for at vedkomande ikkje har fødselsnummer eller D-nummer', + 'step.oppsummeringpleietrengende.årsakManglerIdentitetsnummer.BOR_I_UTLANDET': 'Personen bur i utlandet', + 'step.oppsummeringpleietrengende.årsakManglerIdentitetsnummer.ANNET': 'Anna', + 'step.oppsummeringpleietrengende.id': 'ID for personen du pleier', + 'step.oppsummering.pleietrengende.fnr': 'Fødselsnummer', + 'step.oppsummering.pleietrengende.id.ingenId': 'Ingen ID er lasta opp', + + 'step.oppsummeringtidsrom.header': 'Dagane du søker pleiepengar for', + 'step.oppsummeringtidsrom.valgteDager.header': '{dager} {dager, plural, one {dag} other {dagar}} med pleiepengar', + 'step.oppsummeringsøknadsperiode.header': 'Periode', + 'step.oppsummeringtidsrom.fomtom': '{fom} - {tom}', + + 'step.oppsummeringpleierDuDenSykeHjemme.header': 'Skal du pleie personen heime dei dagane du søker for?', + 'step.oppsummeringskalJobbeOgPleieSammeDag.header': 'Skal du jobbe delvis i nokre av dagane du søker for?', + + 'step.oppsummeringflereSokere.header': 'Er de fleire som skal dele på pleiepengane?', + + 'step.oppsummeringJA': 'Ja', + 'step.oppsummeringNEI': 'Nei', + 'step.oppsummeringUSIKKER': 'Usikker', + + 'step.oppsummeringutenlandsoppholdIPerioden.header': 'Oppheld du deg i utlandet i nokre av dagane du søker for?', + 'step.oppsummeringutenlandsoppholdIPerioden.listetittel': 'Utanlandsopphald i perioden', + + 'step.oppsummeringarbeidssituasjon.header': 'Din arbeidssituasjon', + 'step.oppsummeringvedlegg.header': 'Vedlegg', + + 'arbeidsgiver.tittel': '{navn} (organisasjonsnummer {organisasjonsnummer})', + 'frilans.tittel': 'Frilans', + 'frilans.tittel.start': 'Frilansar hos {hvor} (starta {startdato})', + 'frilans.tittel.slutt': 'Frilansar hos {hvor} (slutta {sluttdato})', + 'frilans.tittel.startOgSlutt': 'Frilansar hos {hvor} (starta {startdato}, slutta {sluttdato})', + 'selvstendigNæringsdrivende.tittel': 'Sjølvstendig næringsdrivande', + + 'oppsummering.arbeidssituasjon.arbeidsgiver.ansatt': 'Er tilsett i perioden', + 'oppsummering.arbeidssituasjon.avsluttet.arbeidsgiver.ansatt': 'Er ikkje lenger tilsett', + 'oppsummering.arbeidssituasjon.tid': 'Jobbar normalt {timer, plural, one {# time} other {# timar}} per veke', + 'oppsummering.arbeidssituasjon.avsluttet.tid': + 'Jobba normalt {timer, plural, one {# time} other {# timar}} per veke', + 'oppsummering.arbeidssituasjon.avsluttet.sluttetFørSøknadsperiode': 'Slutta før {periodeFra}', + 'oppsummering.arbeidssituasjon.avsluttet.sluttetISøknadsperiode': 'Slutta etter {periodeFra}', + + 'oppsummering.arbeidssituasjon.arbeidsgivere.ingenIPeriode.header': 'Arbeidsgivarar', + 'oppsummering.arbeidssituasjon.arbeidsgivere.ingenIPeriode.tekst': 'Er ikkje tilsett i perioden det søkast for', + + 'oppsummering.arbeidssituasjon.frilanser.header': 'Frilansar', + 'oppsummering.arbeidssituasjon.frilans.erIkkeFrilanser': 'Er ikkje frilansar i perioden det søkast for', + 'oppsummering.arbeidssituasjon.frilans.startet': 'Starta som frilansar {dato}', + 'oppsummering.arbeidssituasjon.frilans.fortsattFrilanser': 'Er framleis frilansar', + 'oppsummering.arbeidssituasjon.frilans.sluttet': 'Slutta som frilansar {dato}', + 'oppsummering.arbeidssituasjon.frilans.frilansoppdrag': 'Frilansoppdrag registrert i perioden:', + + 'oppsummering.arbeidssituasjon.selvstendig.header': 'Sjølvstendig næringsdrivande', + 'oppsummering.arbeidssituasjon.selvstendig.erIkkeSN': + 'Er ikkje sjølvstendig næringsdrivande i perioden det søkast for', + 'oppsummering.arbeidssituasjon.selvstendig.erSn': 'Er sjølvstendig næringsdrivande i perioden', + 'oppsummering.arbeidssituasjon.selvstendig.flereVirksomheter': 'Har fleire verksemder', + 'oppsummering.arbeidssituasjon.selvstendig.enVirksomhet': 'Har 1 verksemd', + + 'oppsummering.arbeidssituasjon.verneplikt.header': 'Verneplikt', + 'oppsummering.arbeidssituasjon.verneplikt.harVærtVernepliktig': + 'Utøvde verneplikt på tidspunktet det søkast pleiepengar frå', + 'oppsummering.arbeidssituasjon.verneplikt.harIkkeVærtVernepliktig': + 'Utøvde ikkje verneplikt på tidspunktet det søkast pleiepengar frå', + + 'oppsummering.arbeidssituasjon.optjeningIUtlandet.tittel': 'Arbeidstakar eller frilansar i eit anna EØS-land', + 'oppsummering.arbeidssituasjon.optjeningIUtlandet.ja': + 'Har jobba som arbeidstakar eller frilansar i eit anna EØS-land i løpet av dei 3 siste månadene før perioden ein søker om', + 'oppsummering.arbeidssituasjon.optjeningIUtlandet.nei': + 'Har ikkje jobba som arbeidstakar eller frilansar i eit anna EØS-land i løpet av dei 3 siste månadene før perioden ein søker om', + 'oppsummering.arbeidssituasjon.optjeningIUtlandet.periode': 'Periode med jobb i anna EØS-land', + 'oppsummering.arbeidssituasjon.optjeningIUtlandet.perioder': 'Periodar med jobb i anna EØS-land', + + 'oppsummering.arbeidssituasjon.utenlandskNæring.tittel': 'Sjølvstendig næringsdrivande i eit anna EØS-land', + 'oppsummering.arbeidssituasjon.utenlandskNæring.nei': + 'Har ikkje jobba som sjølvstendig næringsdrivande i eit anna EØS-land i løpet av dei 3 siste åra før perioden ein søker om', + 'oppsummering.arbeidssituasjon.utenlandskNæring.ja': + 'Har jobba som sjølvstendig næringsdrivande i eit anna EØS-land i løpet av dei 3 siste åra før perioden ein søker om', + 'oppsummering.arbeidssituasjon.utenlandskNæring.næringer': 'Næringsverksemder i andre EØS-land', + 'oppsummering.arbeidssituasjon.utenlandskNæring.næring': 'Næringsverksemd i anna EØS-land', + + 'oppsummering.arbeidIPeriode.jobbIPerioden.header': 'Jobb i søknadsperioden', + 'oppsummering.arbeidIPeriode.jobbIPerioden': 'Jobb i søknadsperioden', + 'oppsummering.arbeidIPeriode.jobberIPerioden.ja': 'jobbar', + 'oppsummering.arbeidIPeriode.jobberIPerioden.HELT_FRAVÆR': 'Eg jobbar ikkje her dei dagane eg pleier', + 'oppsummering.arbeidIPeriode.jobberIPerioden.REDUSERT': 'Eg kombinerer delvis jobb med pleiepengar', + 'oppsummering.arbeidIPeriode.jobberIPerioden.SOM_VANLIG': 'Eg jobbar som normalt, og har ikkje fråvær', + 'oppsummering.arbeidIPeriode.jobberIPerioden.liktHverUke': 'Eg jobbar likt kvar veke', + 'oppsummering.arbeidIPeriode.jobberIPerioden.prosent': 'Eg jobbar {prosent} prosent, i snitt {timer} kvar vekedag', + 'oppsummering.arbeidIPeriode.jobberIPerioden.informasjonMangler': 'Informasjon om arbeid i perioden manglar', + 'oppsummering.arbeidIPeriode.jobberIPerioden.dagerJegSkalJobbe.heading': 'Dagar med pleiepengar der eg skal jobbe', + 'summary.virksomhet.virksomhetInfo.tittel': 'Næringsverksemd som du har lagt inn', + + 'step.oppsummering.bekrefterOpplysninger': + 'Eg stadfestar at opplysningane eg har gitt er riktige, og at eg ikkje har halde tilbake opplysningar som har betydning for mi rett til pleiepengar.', + + 'step.oppsummering.sendMelding.feilmelding.førsteGang': + 'Det oppstod ein feil under innsending. Ver venleg å prøve igjen.', + 'step.oppsummering.sendMelding.feilmelding.andreGang': + 'Det oppstod framleis ein feil under innsending. Ver venleg å vente litt og prøve igjen.', + + 'step.oppsummering.legeerklæring.header': 'Legeerklæring', + 'step.oppsummering.legeerklæring.label': 'Dokument som er lasta opp', + 'step.oppsummering.samværsavtale.header': 'Avtale om delt bustad', + + 'step.oppsummering.fravær.aktivitet.1': 'Fråvær som {aktivitet}.', + 'step.oppsummering.fravær.aktivitet.2': 'Fråvær som {aktivitet1} og {aktivitet2}.', + + 'step.oppsummeringbekreftelseFraLege.header': 'Legeerklæring', + 'step.oppsummering.legeerklæring.ingenVedlegg': 'Ingen legeerklæring er lasta opp', + + 'step.oppsummering.apiValideringFeil.tittel': 'Noko av informasjonen manglar', + 'step.oppsummering.sendSøknad': 'Send søknad', + + 'step.oppsummering.bekrefterOpplysninger.ikkeBekreftet': 'Du må stadfeste opplysningane', + + 'opptjeningIUtlandetSummaryItem.periode': 'Periode: {periode}', + 'opptjeningIUtlandetSummaryItem.info': 'Jobba i {landnavn} som {hva} hos {hvor}', +}; export const oppsummeringMessages = { nb, nn }; diff --git "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/tidsrom/DagerMedPleieFormPart.tsx" "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/tidsrom/DagerMedPleieFormPart.tsx" index 413af408eb..25bfd8a6d6 100644 --- "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/tidsrom/DagerMedPleieFormPart.tsx" +++ "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/tidsrom/DagerMedPleieFormPart.tsx" @@ -7,7 +7,7 @@ import dayjs from 'dayjs'; import { useFormikContext } from 'formik'; import { getTilgjengeligSøknadsperiode } from '../../../utils/getTilgjengeligSøknadsperiode'; import { TidsromFormFields, TidsromFormValues } from './TidsromStep'; -import { AppText } from '../../../i18n'; +import { AppText, useAppIntl } from '../../../i18n'; interface MånedOgDag { måned: Date; @@ -15,6 +15,7 @@ interface MånedOgDag { } const DagerMedPleieFormPart = () => { + const { text } = useAppIntl(); const periode = getTilgjengeligSøknadsperiode(); const { setFieldValue, values } = useFormikContext(); @@ -36,7 +37,7 @@ const DagerMedPleieFormPart = () => { <> { return sd.length === 0 ? 'ingenDagerValgt' : undefined; }} diff --git "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/tidsrom/tidsromMessages.ts" "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/tidsrom/tidsromMessages.ts" index 751f587549..a832e87aa4 100644 --- "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/tidsrom/tidsromMessages.ts" +++ "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/s\303\270knad/steps/tidsrom/tidsromMessages.ts" @@ -51,10 +51,67 @@ const nb = { 'steg.tidsrom.hvilketTidsrom.fom': 'Fra og med', 'steg.tidsrom.hvilketTidsrom.tom': 'Til og med', + 'steg.tidsrom.dagerMedPleie.spm': 'Hvilke dager skal du være hjemme fra jobb for å gi pleie?', + 'dagerMedPleie.info.1': 'Velg i kalenderen hvilke dager du er borte fra jobben for å gi pleie. Du kan velge hele uker ved å klikke på ukenummer.', }; -const nn: Record = { ...nb }; +const nn: Record = { + 'step.tidsrom.pageTitle': 'Dagar du må vere heime frå jobb for å gi pleie', + 'step.tidsrom.stepTitle': 'Dagar du må vere heime frå jobb for å gi pleie', + 'step.tidsrom.stepIndicatorLabel': 'Periode', + 'step.tidsrom.counsellorPanel.avsnitt.1': 'No skal du velje dei dagane du må vere heime frå jobb for å gi pleie.', + 'step.tidsrom.counsellorPanel.avsnitt.2': + 'Du kan søkje tre månader tilbake i tid, og to veker fram i tid. Dersom du etter to veker framleis er borte frå jobb for å gi pleie, kan du sende inn ein ny søknad.', + 'step.tidsrom.counsellorPanel.avsnitt.3': + 'Hugs at det ikkje er rett til pleiepengar på dagar der personen er innlagt på sjukehus eller ein annan institusjon.', + + 'step.tidsrom.nextButtonLabel': 'Fortset', + 'step.tidsrom.infotekst': + 'For å ha rett til pleiepengar må du ha omsorga for pleietrengande i heile perioden du søkjer for.', + 'steg.tidsrom.veileder.utenlandsopphold': + 'Når du oppheld deg i eit land utanfor EØS, kan du behalde pleiepengane i ein avgrensa periode på opptil 8 veker av ein 12 månader lang periode.', + + 'steg.opplysningerOmPleietrengende.flereSokere.spm': 'Er de fleire som skal dele på pleiepengane?', + 'steg.opplysningerOmPleietrengende.flereSokere.spm.description.tittle': + 'Når de er fleire har de 60 dagar til saman', + 'steg.opplysningerOmPleietrengende.flereSokere.spm.description': + 'Dersom fleire personar skal dele på å pleie personen, har de til saman 60 dagar å dele på. Om du er usikker på om de blir fleire, svarer du «Usikker» på dette spørsmålet.', + + 'step.tidsrom.flereSokere.ja': 'Ja', + 'step.tidsrom.flereSokere.nei': 'Nei', + 'step.tidsrom.flereSokere.usikker': 'Usikker', + 'steg.tidsrom.skalJobbeIPerioden.spm': 'Skal du jobbe delvis i nokre av dagane du søkjer for?', + 'steg.tidsrom.skalJobbeIPerioden.info.tittel': 'Kva betyr dette?', + 'steg.tidsrom.skalJobbeIPerioden.info.tekst.1': + 'Du skal svare ja på dette spørsmålet berre dersom du skal jobbe og gi pleie på same dag.', + 'steg.tidsrom.skalJobbeIPerioden.info.tekst.2.1': 'Døme:', + 'steg.tidsrom.skalJobbeIPerioden.info.tekst.2.2': + 'Du søkjer om pleiepengar for 10 dagar. På onsdag passar det at du gir pleie ein halv dag, og at du jobbar ein halv dag. I dette tilfellet svarer du ja på spørsmålet, då du jobbar og gir pleie på same dag.', + + 'steg.tidsrom.iUtlandetIPerioden.spm': 'Oppheld du deg i utlandet i nokre av dagane du søkjer for?', + 'steg.tidsrom.iUtlandetIPerioden.listTitle': 'Utanlandsopphald i perioden', + 'steg.tidsrom.iUtlandetIPerioden.modalTitle': 'Utanlandsopphald', + 'steg.tidsrom.iUtlandetIPerioden.addLabel': 'Legg til utanlandsopphald', + + 'steg.tidsrom.hjelpetekst.tittel': 'Kan eg søkje for fleire periodar i same søknad?', + 'steg.tidsrom.hjelpetekst.1': + 'Når du ikkje tek ut dagane samanhengande, kan du søkje om fleire periodar dersom du jobbar i full stilling mellom periodane du har pleiepengar.', + 'steg.tidsrom.hjelpetekst.2': + 'Då set du frå og med dato til den første dagen du har pleiepengar. Til og med dato set du til den siste dagen du har pleiepengar i den siste perioden.', + 'steg.tidsrom.hjelpetekst.3': + 'Når du seinare i søknaden blir spurt om jobb, legg du inn at du jobbar fullt i periodane du ikkje har pleiepengar. Du får ikkje pleiepengar i periodane du jobbar fullt.', + 'steg.tidsrom.hjelpetekst.4': + 'Dersom du ikkje jobbar i full stilling mellom periodane med pleiepengar, kan du ikkje søkje for fleire periodar i same søknad. Då må du sende ein søknad for kvar periode.', + + 'steg.tidsrom.hvilketTidsrom.spm': 'Kva periode søkjer du for?', + 'steg.tidsrom.hvilketTidsrom.fom': 'Frå og med', + 'steg.tidsrom.hvilketTidsrom.tom': 'Til og med', + + 'steg.tidsrom.dagerMedPleie.spm': 'Kva dagar skal du vere heime frå jobb for å gi pleie', + 'dagerMedPleie.info.1': + 'Vel i kalenderen kva dagar du er borte frå jobben for å gi pleie. Du kan velje heile veker ved å klikke på veketalet.', +}; export const tidsromMessages = { nb, nn }; diff --git a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/utils/appEnv.ts b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/utils/appEnv.ts index baa39e1d22..fbdb62ad19 100644 --- a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/utils/appEnv.ts +++ b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/utils/appEnv.ts @@ -1,8 +1,9 @@ -import { getCommonEnv } from '@navikt/sif-common-env'; +import { getCommonEnv, getMaybeEnv } from '@navikt/sif-common-env'; import { AppEnv } from '../../../env.schema'; const getAppEnv = (): AppEnv => ({ ...getCommonEnv(), + SIF_PUBLIC_FEATURE_NYNORSK: getMaybeEnv('SIF_PUBLIC_FEATURE_NYNORSK') === 'on' ? 'on' : 'off', }); export const appEnv = getAppEnv(); diff --git "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/utils/s\303\270knadsdataToApiData/validateApiData.ts" "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/utils/s\303\270knadsdataToApiData/validateApiData.ts" index b4a7e19ff8..be724357dc 100644 --- "a/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/utils/s\303\270knadsdataToApiData/validateApiData.ts" +++ "b/apps/pleiepenger-i-livets-sluttfase-soknad/src/app/utils/s\303\270knadsdataToApiData/validateApiData.ts" @@ -12,6 +12,10 @@ export const validateApiDataMessages = { 'apiDataValidation.undefined': 'Det oppstod en feil ved visningen av siden.', 'apiDataValidation.omsorgsavtaleMangler': 'Det mangler avtale om delt bosted. ', }, + nn: { + 'apiDataValidation.undefined': 'Det oppstod ein feil ved visninga av sida.', + 'apiDataValidation.omsorgsavtaleMangler': 'Det manglar avtale om delt bustad.', + }, }; interface ApiDataValidationError { diff --git a/apps/pleiepenger-sykt-barn/package.json b/apps/pleiepenger-sykt-barn/package.json index 59fc05db68..dbd66d6c70 100644 --- a/apps/pleiepenger-sykt-barn/package.json +++ b/apps/pleiepenger-sykt-barn/package.json @@ -9,10 +9,10 @@ "type": "module", "dependencies": { "@navikt/appstatus-react-ds": "*", - "@navikt/ds-css": "7.8.0", + "@navikt/ds-css": "7.9.1", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "7.8.0", - "@navikt/nav-dekoratoren-moduler": "3.1.1", + "@navikt/ds-react": "7.9.1", + "@navikt/nav-dekoratoren-moduler": "3.1.3", "@navikt/sif-app-register": "*", "@navikt/sif-common-amplitude": "*", "@navikt/sif-common-core-ds": "*", @@ -29,15 +29,15 @@ "csp-header": "6.0.0", "date-fns": "3.6.0", "formik": "2.4.6", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "http-status-codes": "2.3.0", "jsdom": "25.0.1", "lodash.groupby": "4.6.0", "mockdate": "3.0.5", "react": "19.0.0", "react-day-picker": "8.10.1", - "react-router-dom": "7.0.2", - "uuid": "11.0.3" + "react-router-dom": "7.1.1", + "uuid": "11.0.5" }, "devDependencies": { "@axe-core/playwright": "4.10.1", @@ -46,9 +46,9 @@ "@babel/plugin-transform-modules-commonjs": "7.26.3", "@babel/preset-env": "7.26.0", "@babel/preset-react": "7.26.3", - "@chromatic-com/storybook": "3.2.2", + "@chromatic-com/storybook": "3.2.3", "@playwright/test": "1.49.1", - "@sentry/vite-plugin": "2.22.7", + "@sentry/vite-plugin": "2.23.0", "@sif/eslint-config": "*", "@storybook/addon-essentials": "8.4.7", "@storybook/addon-interactions": "8.4.7", @@ -62,8 +62,8 @@ "@testing-library/react": "16.1.0", "@testing-library/user-event": "14.5.2", "@types/lodash.groupby": "4.6.9", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@types/react-router-dom": "5.3.3", "@vitejs/plugin-react": "4.3.4", "axe-core": "4.10.2", @@ -80,11 +80,11 @@ "mustache-express": "1.3.2", "playwright-core": "1.49.1", "react-dom": "19.0.0", - "react-intl": "7.0.4", + "react-intl": "7.1.0", "storybook": "8.4.7", "storybook-addon-mock": "5.0.0", - "typescript": "5.7.2", - "vite": "6.0.3", + "typescript": "5.7.3", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8" }, diff --git a/apps/pleiepenger-sykt-barn/src/app/local-sif-common-pleiepenger/components/tid-enkeltdag-dialog/TidEnkeltdagForm.tsx b/apps/pleiepenger-sykt-barn/src/app/local-sif-common-pleiepenger/components/tid-enkeltdag-dialog/TidEnkeltdagForm.tsx index 121a40bad6..35a88081b8 100644 --- a/apps/pleiepenger-sykt-barn/src/app/local-sif-common-pleiepenger/components/tid-enkeltdag-dialog/TidEnkeltdagForm.tsx +++ b/apps/pleiepenger-sykt-barn/src/app/local-sif-common-pleiepenger/components/tid-enkeltdag-dialog/TidEnkeltdagForm.tsx @@ -1,13 +1,13 @@ -import React from 'react'; +import React, { ReactElement } from 'react'; import { useAppIntl } from '@i18n/index'; import Block from '@navikt/sif-common-core-ds/src/atoms/block/Block'; import FormBlock from '@navikt/sif-common-core-ds/src/atoms/form-block/FormBlock'; -import { DurationText } from '@navikt/sif-common-ui'; import bemUtils from '@navikt/sif-common-core-ds/src/utils/bemUtils'; import { DateRange, getTypedFormComponents, InputTime } from '@navikt/sif-common-formik-ds/src'; import { getDateValidator, getRequiredFieldValidator } from '@navikt/sif-common-formik-ds/src/validation'; import getIntlFormErrorHandler from '@navikt/sif-common-formik-ds/src/validation/intlFormErrorHandler'; import { ValidationError } from '@navikt/sif-common-formik-ds/src/validation/types'; +import { DurationText } from '@navikt/sif-common-ui'; import { DateDurationMap, dateFormatter, @@ -23,6 +23,7 @@ import { import dayjs from 'dayjs'; import minMax from 'dayjs/plugin/minMax'; import ResponsivePanel from '../../../components/responsive-panel/ResponsivePanel'; +import { AppText } from '../../../i18n'; import { getDagerMedNyTid, getDateRangeWithinDateRange, @@ -30,7 +31,6 @@ import { trimDateRangeToWeekdays, } from './utils/tidEnkeltdagUtils'; import { getTidEnkeltdagFormTidValidator } from './utils/tidEnkeltdagValidation'; -import { AppText } from '../../../i18n'; dayjs.extend(minMax); @@ -137,7 +137,7 @@ const TidEnkeltdagForm: React.FunctionComponent = ({ p?: { fra: string; til: string }, values?: any, // TODO - fikse nøkkel - ): JSX.Element => ; + ): ReactElement => ; return ( JSX.Element | undefined; +export type TidsbrukKalenderDagFooterRenderer = (dato: Date) => ReactElement | undefined; interface Props { dato: Date; diff --git "a/apps/pleiepenger-sykt-barn/src/app/s\303\270knad/arbeidssituasjon-step/components/arbeidssituasjon-panel/ArbeidssituasjonPanel.tsx" "b/apps/pleiepenger-sykt-barn/src/app/s\303\270knad/arbeidssituasjon-step/components/arbeidssituasjon-panel/ArbeidssituasjonPanel.tsx" index 17a7515d4d..2f5152066c 100644 --- "a/apps/pleiepenger-sykt-barn/src/app/s\303\270knad/arbeidssituasjon-step/components/arbeidssituasjon-panel/ArbeidssituasjonPanel.tsx" +++ "b/apps/pleiepenger-sykt-barn/src/app/s\303\270knad/arbeidssituasjon-step/components/arbeidssituasjon-panel/ArbeidssituasjonPanel.tsx" @@ -1,12 +1,12 @@ import { Heading } from '@navikt/ds-react'; -import React from 'react'; +import React, { ReactElement } from 'react'; import bemUtils from '@navikt/sif-common-core-ds/src/utils/bemUtils'; import ResponsivePanel from '../../../../components/responsive-panel/ResponsivePanel'; import './arbeidssituasjonPanel.less'; interface Props { title: string; - description?: JSX.Element; + description?: ReactElement; titleIcon?: React.ReactNode; children: React.ReactNode; } diff --git a/apps/sif-demo-app/package.json b/apps/sif-demo-app/package.json index f4eafd4ae6..0b78ca825b 100644 --- a/apps/sif-demo-app/package.json +++ b/apps/sif-demo-app/package.json @@ -14,12 +14,12 @@ "lint:fix": "eslint --fix" }, "dependencies": { - "@hookform/resolvers": "3.9.1", - "@navikt/aksel-icons": "7.8.0", - "@navikt/ds-css": "7.8.0", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", - "@navikt/nav-dekoratoren-moduler": "3.1.1", + "@hookform/resolvers": "3.10.0", + "@navikt/aksel-icons": "7.9.1", + "@navikt/ds-css": "7.9.1", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", + "@navikt/nav-dekoratoren-moduler": "3.1.3", "@navikt/sif-common-api": "*", "@navikt/sif-common-core-ds": "*", "@navikt/sif-common-env": "*", @@ -29,28 +29,28 @@ "clsx": "2.1.1", "csp-header": "6.0.0", "date-fns": "3.6.0", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "jsdom": "25.0.1", "postcss": "8.4.49", "react": "19.0.0", "react-dom": "19.0.0", - "react-hook-form": "7.54.1", + "react-hook-form": "7.54.2", "zod": "3.24.1" }, "devDependencies": { "@eslint/eslintrc": "3.2.0", - "@eslint/js": "9.17.0", - "@navikt/nav-dekoratoren-moduler": "3.1.1", - "@types/node": "22.10.2", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", - "@typescript-eslint/parser": "8.18.0", + "@eslint/js": "9.18.0", + "@navikt/nav-dekoratoren-moduler": "3.1.3", + "@types/node": "22.10.5", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", + "@typescript-eslint/parser": "8.19.1", "@vitejs/plugin-react": "4.3.4", "autoprefixer": "10.4.20", "compression": "1.7.5", - "eslint": "9.17.0", + "eslint": "9.18.0", "eslint-plugin-prettier": "5.2.1", - "eslint-plugin-react": "7.37.2", + "eslint-plugin-react": "7.37.4", "eslint-plugin-simple-import-sort": "12.1.1", "eslint-plugin-unicorn": "56.0.1", "express": "4.21.2", @@ -59,11 +59,11 @@ "postcss-import": "16.1.0", "postcss-styled-syntax": "0.7.0", "prettier": "3.4.2", - "stylelint": "16.12.0", - "tailwindcss": "3.4.16", - "typescript": "5.7.2", - "typescript-eslint": "8.18.0", - "vite": "6.0.3", + "stylelint": "16.13.0", + "tailwindcss": "3.4.17", + "typescript": "5.7.3", + "typescript-eslint": "8.19.1", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0" } } diff --git a/apps/sif-ettersending/package.json b/apps/sif-ettersending/package.json index 308f6c696f..a2c2035e85 100644 --- a/apps/sif-ettersending/package.json +++ b/apps/sif-ettersending/package.json @@ -8,11 +8,11 @@ "private": true, "type": "module", "dependencies": { - "@navikt/ds-css": "7.8.0", + "@navikt/ds-css": "7.9.1", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", - "@navikt/nav-dekoratoren-moduler": "3.1.1", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", + "@navikt/nav-dekoratoren-moduler": "3.1.3", "@navikt/sif-app-register": "*", "@navikt/sif-common-amplitude": "*", "@navikt/sif-common-core-ds": "*", @@ -31,13 +31,13 @@ "date-fns": "3.6.0", "dayjs": "1.11.13", "formik": "2.4.6", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "jsdom": "25.0.1", "lodash": "4.17.21", "react": "19.0.0", "react-day-picker": "8.10.1", - "react-intl": "7.0.4", - "react-router-dom": "7.0.2" + "react-intl": "7.1.0", + "react-router-dom": "7.1.1" }, "devDependencies": { "@axe-core/playwright": "4.10.1", @@ -47,8 +47,8 @@ "@playwright/test": "1.49.1", "@sif/eslint-config": "*", "@testing-library/dom": "10.4.0", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@types/react-router-dom": "5.3.3", "@types/uuid": "10.0.0", "@vitejs/plugin-react": "4.3.4", @@ -59,17 +59,17 @@ "cross-env": "7.0.3", "dotenv": "16.4.7", "express": "4.21.2", - "globals": "15.13.0", + "globals": "15.14.0", "helmet": "8.0.0", "http-proxy-middleware": "3.0.3", "mustache-express": "1.3.2", "playwright-core": "1.49.1", "postcss": "8.4.49", "react-dom": "19.0.0", - "tailwindcss": "3.4.16", - "typescript": "5.7.2", - "uuid": "11.0.3", - "vite": "6.0.3", + "tailwindcss": "3.4.17", + "typescript": "5.7.3", + "uuid": "11.0.5", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8", "zod": "3.24.1" diff --git a/apps/sif-ettersending/src/app/soknad/SoknadRemoteDataFetcher.tsx b/apps/sif-ettersending/src/app/soknad/SoknadRemoteDataFetcher.tsx index a788b3386f..0f9567ceef 100644 --- a/apps/sif-ettersending/src/app/soknad/SoknadRemoteDataFetcher.tsx +++ b/apps/sif-ettersending/src/app/soknad/SoknadRemoteDataFetcher.tsx @@ -1,3 +1,4 @@ +import { ReactElement } from 'react'; import { useParams } from 'react-router-dom'; import { ErrorPage, LoadingPage, SoknadErrorMessages } from '@navikt/sif-common-soknad-ds'; import useSoknadEssentials from '../hooks/useSoknadEssentials'; @@ -29,7 +30,7 @@ const getSøknadstypeFromUrlParam = (param?: string): Søknadstype | undefined = return undefined; }; -const SoknadRemoteDataFetcher = (): JSX.Element => { +const SoknadRemoteDataFetcher = (): ReactElement => { const { text } = useAppIntl(); const { soknadstype } = useParams(); const søknadstype = getSøknadstypeFromUrlParam(soknadstype); @@ -51,7 +52,7 @@ const SoknadRemoteDataFetcher = (): JSX.Element => { return ( ( + contentRenderer={(): ReactElement => ( <> diff --git a/apps/sif-ettersending/src/app/soknad/SoknadRouter.tsx b/apps/sif-ettersending/src/app/soknad/SoknadRouter.tsx index 8eef2163e1..67df52e956 100644 --- a/apps/sif-ettersending/src/app/soknad/SoknadRouter.tsx +++ b/apps/sif-ettersending/src/app/soknad/SoknadRouter.tsx @@ -1,3 +1,4 @@ +import { ReactElement } from 'react'; import { useIntl } from 'react-intl'; import { Navigate, Route, Routes } from 'react-router-dom'; import { ErrorPage, LastAvailableStepInfo, SoknadErrorMessages, soknadStepUtils } from '@navikt/sif-common-soknad-ds'; @@ -6,17 +7,17 @@ import { APPLICATION_SENDT_PAGE } from '../config/routeConfig'; import KvitteringPage from '../pages/kvittering-page/KvitteringPage'; import VelkommenPage from '../pages/velkommen-page/VelkommenPage'; import { Person } from '../types/Person'; +import { RegistrertBarn } from '../types/RegistrertBarn'; import { SoknadFormData, SoknadFormField } from '../types/SoknadFormData'; import { Søknadstype } from '../types/Søknadstype'; import { getAvailableSteps } from '../utils/routeUtils'; import BeskrivelseStep from './beskrivelse-step/BeskrivelseStep'; +import DokumentTypeStep from './dokument-type-step/DokumentTypeStep'; import DokumenterStep from './dokumenter-step/DokumenterStep'; import OppsummeringStep from './oppsummering-step/OppsummeringStep'; import { useSoknadContext } from './SoknadContext'; import { StepID } from './soknadStepsConfig'; import ValgOmsTypeStep from './valgOmsType-step/ValgOmsTypeStep'; -import DokumentTypeStep from './dokument-type-step/DokumentTypeStep'; -import { RegistrertBarn } from '../types/RegistrertBarn'; interface Props { søker: Person; @@ -63,7 +64,7 @@ const SoknadRouter = ({ søker, barn, søknadstype, soknadId }: Props) => { path="*" element={ { + contentRenderer={(): ReactElement => { const availableSteps = getAvailableSteps(values, søknadstype); const lastAvailableStep = availableSteps.slice(-1)[0]; const lastAvailableStepInfo: LastAvailableStepInfo | undefined = lastAvailableStep diff --git a/apps/ungdomsytelse-deltaker/package.json b/apps/ungdomsytelse-deltaker/package.json index 85a6f58d4b..4095242648 100644 --- a/apps/ungdomsytelse-deltaker/package.json +++ b/apps/ungdomsytelse-deltaker/package.json @@ -17,11 +17,11 @@ "test": "vitest run" }, "dependencies": { - "@navikt/aksel-icons": "7.8.0", - "@navikt/ds-css": "7.8.0", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", - "@navikt/nav-dekoratoren-moduler": "3.1.1", + "@navikt/aksel-icons": "7.9.1", + "@navikt/ds-css": "7.9.1", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", + "@navikt/nav-dekoratoren-moduler": "3.1.3", "@navikt/sif-common-api": "*", "@navikt/sif-common-core-ds": "*", "@navikt/sif-common-env": "*", @@ -32,23 +32,23 @@ "clsx": "2.1.1", "csp-header": "6.0.0", "dayjs": "1.11.13", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "jsdom": "25.0.1", "object-hash": "^3.0.0", "postcss": "8.4.49", "react": "19.0.0", "react-dom": "19.0.0", - "react-hook-form": "7.54.1", - "react-intl": "7.0.4", - "react-router-dom": "7.0.2", + "react-hook-form": "7.54.2", + "react-intl": "7.1.0", + "react-router-dom": "7.1.1", "swr": "^2.2.5", - "uuid": "11.0.3", + "uuid": "11.0.5", "zod": "3.24.1" }, "devDependencies": { "@eslint/eslintrc": "3.2.0", - "@eslint/js": "9.17.0", - "@navikt/nav-dekoratoren-moduler": "3.1.1", + "@eslint/js": "9.18.0", + "@navikt/nav-dekoratoren-moduler": "3.1.3", "@storybook/addon-essentials": "8.4.7", "@storybook/addon-interactions": "8.4.7", "@storybook/addon-links": "8.4.7", @@ -57,19 +57,19 @@ "@storybook/react": "8.4.7", "@storybook/react-vite": "8.4.7", "@storybook/test": "8.4.7", - "@types/node": "22.10.2", + "@types/node": "22.10.5", "@types/object-hash": "^3", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", - "@typescript-eslint/parser": "8.18.0", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", + "@typescript-eslint/parser": "8.19.1", "@vitejs/plugin-react": "4.3.4", "autoprefixer": "10.4.20", "compression": "1.7.5", - "eslint": "9.17.0", + "eslint": "9.18.0", "eslint-plugin-prettier": "5.2.1", - "eslint-plugin-react": "7.37.2", + "eslint-plugin-react": "7.37.4", "eslint-plugin-simple-import-sort": "12.1.1", - "eslint-plugin-storybook": "0.11.1", + "eslint-plugin-storybook": "0.11.2", "eslint-plugin-unicorn": "56.0.1", "express": "4.21.2", "http-proxy-middleware": "3.0.3", @@ -79,11 +79,11 @@ "postcss-styled-syntax": "0.7.0", "prettier": "3.4.2", "storybook": "8.4.7", - "stylelint": "16.12.0", - "tailwindcss": "3.4.16", - "typescript": "5.7.2", - "typescript-eslint": "8.18.0", - "vite": "6.0.3", + "stylelint": "16.13.0", + "tailwindcss": "3.4.17", + "typescript": "5.7.3", + "typescript-eslint": "8.19.1", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8" }, diff --git a/apps/ungdomsytelse-veileder/api-mock/mock-server.cjs b/apps/ungdomsytelse-veileder/api-mock/mock-server.cjs index 6ee0dfd82c..0edae1271b 100644 --- a/apps/ungdomsytelse-veileder/api-mock/mock-server.cjs +++ b/apps/ungdomsytelse-veileder/api-mock/mock-server.cjs @@ -67,7 +67,19 @@ const deltakelse2 = { id: 'd-r', deltakerIdent: '03867198392', }, - fraOgMed: '2025-09-01', + fraOgMed: '2024-09-01', + tilOgMed: '2025-01-01', + harSøkt: true, +}; +const deltakelse2 = { + id: '3ebb8cb3-a2eb-45a5-aeee-22a2766aaab2', + deltakerIdent: '03867198392', + deltaker: { + id: 'd-r', + deltakerIdent: '03867198392', + }, + fraOgMed: '2025-01-02', + tilOgMed: '2025-02-04', harSøkt: false, }; const deltakelser = [deltakelse1, deltakelse2]; @@ -147,8 +159,8 @@ const startExpressServer = () => { id: 'd-n', deltakerIdent: req.body.deltakerIdent, }, - harSøkt: true, - fraOgMed: req.body.fraOgMed, + harSøkt: false, + fraOgMed: req.body.startdato, }; setTimeout(() => { res.status(200).send(response); diff --git a/apps/ungdomsytelse-veileder/package.json b/apps/ungdomsytelse-veileder/package.json index d8e34d01a2..38e1d654cc 100644 --- a/apps/ungdomsytelse-veileder/package.json +++ b/apps/ungdomsytelse-veileder/package.json @@ -17,11 +17,11 @@ "lint:fix": "eslint --fix" }, "dependencies": { - "@navikt/aksel-icons": "7.8.0", - "@navikt/ds-css": "7.8.0", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", - "@navikt/nav-dekoratoren-moduler": "3.1.1", + "@navikt/aksel-icons": "7.9.1", + "@navikt/ds-css": "7.9.1", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", + "@navikt/nav-dekoratoren-moduler": "3.1.3", "@navikt/sif-common-api": "*", "@navikt/sif-common-core-ds": "*", "@navikt/sif-common-env": "*", @@ -32,28 +32,28 @@ "csp-header": "6.0.0", "date-fns": "3.6.0", "formik": "2.4.6", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "jsdom": "25.0.1", "postcss": "8.4.49", "react": "19.0.0", "react-dom": "19.0.0", - "react-hook-form": "7.54.1", + "react-hook-form": "7.54.2", "zod": "3.24.1" }, "devDependencies": { "@eslint/eslintrc": "3.2.0", - "@eslint/js": "9.17.0", - "@navikt/nav-dekoratoren-moduler": "3.1.1", - "@types/node": "22.10.2", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", - "@typescript-eslint/parser": "8.18.0", + "@eslint/js": "9.18.0", + "@navikt/nav-dekoratoren-moduler": "3.1.3", + "@types/node": "22.10.5", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", + "@typescript-eslint/parser": "8.19.1", "@vitejs/plugin-react": "4.3.4", "autoprefixer": "10.4.20", "compression": "1.7.5", - "eslint": "9.17.0", + "eslint": "9.18.0", "eslint-plugin-prettier": "5.2.1", - "eslint-plugin-react": "7.37.2", + "eslint-plugin-react": "7.37.4", "eslint-plugin-simple-import-sort": "12.1.1", "eslint-plugin-unicorn": "56.0.1", "express": "4.21.2", @@ -62,11 +62,11 @@ "postcss-import": "16.1.0", "postcss-styled-syntax": "0.7.0", "prettier": "3.4.2", - "stylelint": "16.12.0", - "tailwindcss": "3.4.16", - "typescript": "5.7.2", - "typescript-eslint": "8.18.0", - "vite": "6.0.3", + "stylelint": "16.13.0", + "tailwindcss": "3.4.17", + "typescript": "5.7.3", + "typescript-eslint": "8.19.1", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0" } } diff --git a/apps/ungdomsytelse-veileder/src/App.tsx b/apps/ungdomsytelse-veileder/src/App.tsx index a41f00f11a..7e15176766 100644 --- a/apps/ungdomsytelse-veileder/src/App.tsx +++ b/apps/ungdomsytelse-veileder/src/App.tsx @@ -3,7 +3,7 @@ import { Route, Routes } from 'react-router-dom'; import AppHeader from './components/AppHeader'; import { appMessages } from './i18n'; import StartPage from './pages/start-page/StartPage'; -import DeltakerPage from './versjoner/versjon-1/pages/deltaker-page/DeltakerPage'; +import DeltakerPage from './components/DeltakerPage'; import './app.css'; import { Page } from '@navikt/ds-react'; diff --git a/apps/ungdomsytelse-veileder/src/api/schemas/deltakelseSchema.ts b/apps/ungdomsytelse-veileder/src/api/schemas/deltakelseSchema.ts index bd56890fce..d581b794e0 100644 --- a/apps/ungdomsytelse-veileder/src/api/schemas/deltakelseSchema.ts +++ b/apps/ungdomsytelse-veileder/src/api/schemas/deltakelseSchema.ts @@ -1,6 +1,27 @@ import { z } from 'zod'; import { parseMaybeDateStringToDate } from '@navikt/sif-common-api/src/utils/jsonParseUtils'; -import { dateRangeUtils } from '@navikt/sif-common-utils'; +import { DateRange, dateRangeUtils } from '@navikt/sif-common-utils'; +import { isBefore } from 'date-fns'; + +const erDeltakelseAktiv = (harSøkt: boolean, fraOgMed: Date, tilOgMed: Date | undefined): boolean => { + if (!harSøkt) { + return false; + } + if (tilOgMed) { + return dateRangeUtils.isDateInDateRange(new Date(), { from: fraOgMed, to: tilOgMed }); + } + return isBefore(fraOgMed, new Date()); +}; + +const erDeltakelseAvsluttet = (harSøkt: boolean, tilOgMed: Date | undefined): boolean => { + if (!harSøkt) { + return false; + } + if (!tilOgMed) { + return false; + } + return isBefore(tilOgMed, new Date()); +}; export const deltakelseSchema = z .object({ @@ -23,7 +44,12 @@ export const deltakelseSchema = z }) .transform((data) => ({ ...data, - erAktiv: !data.tilOgMed - ? true - : dateRangeUtils.isDateInDateRange(new Date(), { from: data.fraOgMed, to: data.tilOgMed }), + erAktiv: erDeltakelseAktiv(data.harSøkt, data.fraOgMed, data.tilOgMed), + erAvsluttet: erDeltakelseAvsluttet(data.harSøkt, data.tilOgMed), + periode: data.tilOgMed + ? ({ + from: data.fraOgMed, + to: data.tilOgMed, + } as DateRange) + : undefined, })); diff --git a/apps/ungdomsytelse-veileder/src/components/DeltakelserMeny.tsx b/apps/ungdomsytelse-veileder/src/components/DeltakelserMeny.tsx new file mode 100644 index 0000000000..a80e69bd20 --- /dev/null +++ b/apps/ungdomsytelse-veileder/src/components/DeltakelserMeny.tsx @@ -0,0 +1,17 @@ +import { Box, VStack } from '@navikt/ds-react'; +import { useDeltaker } from '../context/DeltakerContext'; +import { dateFormatter } from '@navikt/sif-common-utils'; + +const DeltakelserMeny = () => { + const { deltakelser = [] } = useDeltaker(); + + return ( + + {deltakelser.map((deltakelse) => ( + {dateFormatter.compact(deltakelse.fraOgMed)} + ))} + + ); +}; + +export default DeltakelserMeny; diff --git a/apps/ungdomsytelse-veileder/src/components/DeltakerHeader.tsx b/apps/ungdomsytelse-veileder/src/components/DeltakerHeader.tsx index 04206ebca0..e6c23ca5c4 100644 --- a/apps/ungdomsytelse-veileder/src/components/DeltakerHeader.tsx +++ b/apps/ungdomsytelse-veileder/src/components/DeltakerHeader.tsx @@ -1,4 +1,4 @@ -import { BodyShort, Box, Button, HStack, Page } from '@navikt/ds-react'; +import { BodyShort, Box, Button, HStack } from '@navikt/ds-react'; import { Deltakelse, Deltaker } from '../api/types'; import PersonNøytral from '../illustrations/PersonNøytral'; import Fødselsnummer from './Fødselsnummer'; @@ -19,33 +19,30 @@ const DeltakerHeader = ({ onLukkDeltaker, }: Props) => { return ( - - - - - - - {fornavn} {etternavn} - - - - {deltakelser && deltakelser?.length > 1 ? ( - <> - |Deltakelser: {deltakelser.length} - - ) : null} - - + + + + + + {fornavn} {etternavn} + + - - + {deltakelser && deltakelser?.length > 1 ? ( + <> + |Deltakelser: {deltakelser.length} + + ) : null} + + + ); }; diff --git a/apps/ungdomsytelse-veileder/src/components/DeltakerPage.tsx b/apps/ungdomsytelse-veileder/src/components/DeltakerPage.tsx new file mode 100644 index 0000000000..0b0f704244 --- /dev/null +++ b/apps/ungdomsytelse-veileder/src/components/DeltakerPage.tsx @@ -0,0 +1,26 @@ +import { useParams } from 'react-router-dom'; +import { DeltakerProvider } from '../context/DeltakerContext'; +import DeltakerPageHeader from './DeltakerPageHeader'; +import DeltakerPageContent from './DeltakerPageContent'; +import { Page, VStack } from '@navikt/ds-react'; + +type DeltakerPageParams = { + deltakerId: string; +}; + +const DeltakerPage = () => { + const { deltakerId } = useParams(); + + return ( + + + + + + + + + ); +}; + +export default DeltakerPage; diff --git a/apps/ungdomsytelse-veileder/src/components/DeltakerPageContent.tsx b/apps/ungdomsytelse-veileder/src/components/DeltakerPageContent.tsx index a42c7c6ea5..d9480a6c58 100644 --- a/apps/ungdomsytelse-veileder/src/components/DeltakerPageContent.tsx +++ b/apps/ungdomsytelse-veileder/src/components/DeltakerPageContent.tsx @@ -1,7 +1,9 @@ -import { Alert, Box, HStack, Page, VStack } from '@navikt/ds-react'; +import { Accordion, Alert, Box, Heading, HStack, VStack } from '@navikt/ds-react'; import LoadingSpinner from '@navikt/sif-common-core-ds/src/atoms/loading-spinner/LoadingSpinner'; import { useDeltaker } from '../context/DeltakerContext'; -import AktivDeltakelse from './aktiv-deltakelse/AktivDeltakelse'; +import DeltakelseContent from './deltakelse-content/DeltakelseContent'; +import NyDeltakelse from './ny-deltakelse/NyDeltakelse'; +import DeltakelseHeader from './deltakelse-content/DeltakelseHeader'; const DeltakerPageContent = () => { const { deltaker, deltakelser = [], refetchDeltakelser } = useDeltaker(); @@ -30,35 +32,41 @@ const DeltakerPageContent = () => { return Ingen deltakelser funnet; } - if (deltakelser.length === 1) { - return ( - - - - ); - } return ( - - - {deltakelser.map((deltakelse) => ( - + + + + Deltakelseperioder + + + {deltakelser.map((deltakelse) => ( + + + + + + + + + ))} + + + - ))} - - + + + ); - - return Flere deltakelser er registrert; }; export default DeltakerPageContent; diff --git a/apps/ungdomsytelse-veileder/src/components/aktiv-deltakelse/AktivDeltakelse.tsx b/apps/ungdomsytelse-veileder/src/components/aktiv-deltakelse/AktivDeltakelse.tsx deleted file mode 100644 index a141731f63..0000000000 --- a/apps/ungdomsytelse-veileder/src/components/aktiv-deltakelse/AktivDeltakelse.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import { Box, Heading, HStack, Tabs, Tag, VStack } from '@navikt/ds-react'; -import { dateFormatter } from '@navikt/sif-common-utils'; -import { Deltakelse, Deltaker } from '../../api/types'; -import DeltakelseStatusContent from '../deltakelse-status-content/DeltakelseStatusContent'; -import EndreDeltakelseForm from '../../forms/endre-deltakelse-form/EndreDeltakelseForm'; -import SlettDeltakelseForm from '../../forms/slett-deltakelse-form/SlettDeltakelseForm'; - -interface Props { - deltaker: Deltaker; - deltakelse: Deltakelse; - alleDeltakelser: Deltakelse[]; - onChange: () => void; -} -const AktivDeltakelse = ({ deltaker, deltakelse, alleDeltakelser, onChange }: Props) => { - return ( - - - - - - - Deltakerperiode - - - {deltakelse.harSøkt === false ? ( - - Ikke søkt for - - ) : null} - - - - Startdato: {dateFormatter.compact(deltakelse.fraOgMed)} - - Sluttdato: {deltakelse.tilOgMed ? dateFormatter.compact(deltakelse.tilOgMed) : <>-} - - - - - - - - - - - {deltakelse.harSøkt === false ? : null} - - - - - - - - - - - - - - - - - - - - ); -}; - -export default AktivDeltakelse; diff --git a/apps/ungdomsytelse-veileder/src/components/deltakelse-content/DeltakelseContent.tsx b/apps/ungdomsytelse-veileder/src/components/deltakelse-content/DeltakelseContent.tsx new file mode 100644 index 0000000000..5f1f406241 --- /dev/null +++ b/apps/ungdomsytelse-veileder/src/components/deltakelse-content/DeltakelseContent.tsx @@ -0,0 +1,56 @@ +import { Box, Tabs } from '@navikt/ds-react'; +import { Deltakelse, Deltaker } from '../../api/types'; +import AvsluttDeltakelseForm from '../../forms/avslutt-deltakelse-form/AvsluttDeltakelseForm'; +import DeltakelseStatusContent from '../deltakelse-status-content/DeltakelseStatusContent'; +import EndreDeltakelseForm from '../../forms/endre-deltakelse-form/EndreDeltakelseForm'; +import SlettDeltakelseForm from '../../forms/slett-deltakelse-form/SlettDeltakelseForm'; + +interface Props { + deltaker: Deltaker; + deltakelse: Deltakelse; + alleDeltakelser: Deltakelse[]; + onChange: () => void; +} +const DeltakelseContent = ({ deltaker, deltakelse, alleDeltakelser, onChange }: Props) => { + return ( + <> + + + + + {deltakelse.harSøkt === false ? : null} + + + + + + + + + + + + + + console.log('avbryt')} + /> + + + + + + + + + + ); +}; + +export default DeltakelseContent; diff --git a/apps/ungdomsytelse-veileder/src/components/deltakelse-content/DeltakelseHeader.tsx b/apps/ungdomsytelse-veileder/src/components/deltakelse-content/DeltakelseHeader.tsx new file mode 100644 index 0000000000..749df30383 --- /dev/null +++ b/apps/ungdomsytelse-veileder/src/components/deltakelse-content/DeltakelseHeader.tsx @@ -0,0 +1,26 @@ +import { Box, HStack, Tag } from '@navikt/ds-react'; +import { Deltakelse } from '../../api/types'; +import { dateFormatter } from '@navikt/sif-common-utils'; + +interface Props { + deltakelse: Deltakelse; +} + +const DeltakelseHeader = ({ deltakelse }: Props) => ( + + {dateFormatter.compact(deltakelse.fraOgMed)} + <>- + {deltakelse.tilOgMed ? dateFormatter.compact(deltakelse.tilOgMed) : <>} + {deltakelse.harSøkt ? ( + + Deltaker har søkt + + ) : ( + + Deltaker har ikke søkt enda + + )} + +); + +export default DeltakelseHeader; diff --git a/apps/ungdomsytelse-veileder/src/components/deltakelse-status-content/DeltakelseStatusContent.tsx b/apps/ungdomsytelse-veileder/src/components/deltakelse-status-content/DeltakelseStatusContent.tsx index 8b711688b0..61920fc463 100644 --- a/apps/ungdomsytelse-veileder/src/components/deltakelse-status-content/DeltakelseStatusContent.tsx +++ b/apps/ungdomsytelse-veileder/src/components/deltakelse-status-content/DeltakelseStatusContent.tsx @@ -28,14 +28,10 @@ const DeltakelseStatusContent = ({ deltakelse }: Props) => { - {/* - - */} {dateFormatter.compact(deltakelse.fraOgMed)} {deltakelse.tilOgMed ? dateFormatter.compact(deltakelse.tilOgMed) : '-'} - 0 ); diff --git a/apps/ungdomsytelse-veileder/src/components/ny-deltakelse/NyDeltakelse.tsx b/apps/ungdomsytelse-veileder/src/components/ny-deltakelse/NyDeltakelse.tsx new file mode 100644 index 0000000000..b80681faa8 --- /dev/null +++ b/apps/ungdomsytelse-veileder/src/components/ny-deltakelse/NyDeltakelse.tsx @@ -0,0 +1,49 @@ +import { Box, Button } from '@navikt/ds-react'; +import { Deltakelse, Deltaker } from '../../api/types'; +import { useState } from 'react'; +import MeldInnDeltakerForm from '../../forms/meld-inn-deltaker-form/MeldInnDeltakerForm'; +import { DateRange, dateRangeUtils } from '@navikt/sif-common-utils'; + +interface Props { + deltaker: Deltaker; + alleDeltakelser: Deltakelse[]; + onDeltakelseRegistrert: () => void; +} + +const NyDeltakelse = ({ alleDeltakelser, deltaker, onDeltakelseRegistrert }: Props) => { + const [showForm, setShowForm] = useState(false); + + const kanOppretteNyDeltakelse = alleDeltakelser.every((d) => !!d.periode && d.harSøkt); + + if (!kanOppretteNyDeltakelse) { + return null; + } + + return !showForm ? ( + + + + ) : ( + + + setShowForm(false)} + onDeltakelseRegistrert={onDeltakelseRegistrert} + /> + + + ); +}; + +const getMinFraOgMedDato = (alleDeltakelser: Deltakelse[]): Date | undefined => { + const perioder = (alleDeltakelser.map((d) => d.periode).filter((p) => p !== undefined) as DateRange[]).sort( + dateRangeUtils.sortDateRangeByToDate, + ); + return perioder.length === 0 ? undefined : perioder[perioder.length - 1].to; +}; + +export default NyDeltakelse; diff --git a/apps/ungdomsytelse-veileder/src/depr/hooks/useNyDeltakelse.ts b/apps/ungdomsytelse-veileder/src/depr/hooks/useNyDeltakelse.ts new file mode 100644 index 0000000000..221953f8af --- /dev/null +++ b/apps/ungdomsytelse-veileder/src/depr/hooks/useNyDeltakelse.ts @@ -0,0 +1,35 @@ +import { useState } from 'react'; +import { veilederService } from '../../api/services/veilederService'; +import { Deltakelse, Deltaker } from '../../api/types'; +import { DeltakelseFormValues } from '../../forms/ny-deltakelse-form/NyDeltakelseForm'; + +export const useNyDeltakelse = (deltaker: Deltaker, onDeltakelseOpprettet: (deltakelse: Deltakelse) => void) => { + const [pending, setPending] = useState(false); + const [error, setError] = useState(); + + const opprettDeltakelse = async (values: DeltakelseFormValues) => { + setError(undefined); + setPending(true); + + await veilederService + .meldInnDeltaker({ + deltakerIdent: deltaker.deltakerIdent, + startdato: values.fom, + }) + .catch((e) => { + setError(e.message); + }) + .then((r) => { + if (r) { + onDeltakelseOpprettet(r); + } + setPending(false); + }); + }; + + return { + pending, + error, + opprettDeltakelse, + }; +}; diff --git a/apps/ungdomsytelse-veileder/src/forms/HentDeltakerForm.tsx b/apps/ungdomsytelse-veileder/src/forms/HentDeltakerForm.tsx index 44c9d50268..304c6e5dfc 100644 --- a/apps/ungdomsytelse-veileder/src/forms/HentDeltakerForm.tsx +++ b/apps/ungdomsytelse-veileder/src/forms/HentDeltakerForm.tsx @@ -10,7 +10,7 @@ import { TextField, VStack, } from '@navikt/ds-react'; -import { useState } from 'react'; +import { ReactElement, useState } from 'react'; import { getFødselsnummerValidator } from '@navikt/sif-common-formik-ds/src/validation'; import { useEffectOnce } from '@navikt/sif-common-hooks'; import { isAxiosError } from 'axios'; @@ -31,7 +31,7 @@ const fnrValidator = getFødselsnummerValidator({ required: true, allowHnr: true const HentDeltakerForm = ({ onDeltakerFetched, onDeltakelseRegistrert }: Props) => { const [validationError, setValidationError] = useState(undefined); - const [error, setError] = useState(undefined); + const [error, setError] = useState(undefined); const [fnrValue, setFnrValue] = useState(); const [pending, setPending] = useState(false); const [nyDeltaker, setNyDeltaker] = useState(); diff --git "a/apps/ungdomsytelse-veileder/src/forms/MeldeInnDeltakerP\303\245NyttForm.tsx" "b/apps/ungdomsytelse-veileder/src/forms/MeldeInnDeltakerP\303\245NyttForm.tsx" deleted file mode 100644 index 510589d7ac..0000000000 --- "a/apps/ungdomsytelse-veileder/src/forms/MeldeInnDeltakerP\303\245NyttForm.tsx" +++ /dev/null @@ -1,27 +0,0 @@ -import { Heading, List } from '@navikt/ds-react'; - -interface Props { - deltakerFnr: string; -} - -const MeldeInnDeltakerPåNyttForm = ({}: Props) => ( - <> - - Params - - - - deltakelseId - - - startdato - - Ikke lørdag eller søndag - Etter innmeldingsdato - - - - -); - -export default MeldeInnDeltakerPåNyttForm; diff --git a/apps/ungdomsytelse-veileder/src/forms/avslutt-deltakelse-form/AvsluttDeltakelseForm.tsx b/apps/ungdomsytelse-veileder/src/forms/avslutt-deltakelse-form/AvsluttDeltakelseForm.tsx index 35db7f6c52..0e60e4dd9a 100644 --- a/apps/ungdomsytelse-veileder/src/forms/avslutt-deltakelse-form/AvsluttDeltakelseForm.tsx +++ b/apps/ungdomsytelse-veileder/src/forms/avslutt-deltakelse-form/AvsluttDeltakelseForm.tsx @@ -1,19 +1,19 @@ -import { Deltakelse } from '../../api/types'; -import { useState } from 'react'; -import { FormikDatepicker, TypedFormikForm, TypedFormikWrapper } from '@navikt/sif-common-formik-ds'; import { Alert, BodyShort, Button, Heading, HStack, VStack } from '@navikt/ds-react'; -import getIntlFormErrorHandler from '@navikt/sif-common-formik-ds/src/validation/intlFormErrorHandler'; +import { ReactElement, useState } from 'react'; import { useIntl } from 'react-intl'; +import { FormikDatepicker, TypedFormikForm, TypedFormikWrapper } from '@navikt/sif-common-formik-ds'; +import FormikCheckboxGroup from '@navikt/sif-common-formik-ds/src/components/formik-checkbox-group/FormikCheckboxGroup'; +import ConfirmationDialog from '@navikt/sif-common-formik-ds/src/components/helpers/confirmation-dialog/ConfirmationDialog'; import { DateValidationOptions, getCheckedValidator, getDateValidator, } from '@navikt/sif-common-formik-ds/src/validation'; -import { veilederService } from '../../api/services/veilederService'; -import dayjs from 'dayjs'; -import FormikCheckboxGroup from '@navikt/sif-common-formik-ds/src/components/formik-checkbox-group/FormikCheckboxGroup'; +import getIntlFormErrorHandler from '@navikt/sif-common-formik-ds/src/validation/intlFormErrorHandler'; import { isAxiosError } from 'axios'; -import ConfirmationDialog from '@navikt/sif-common-formik-ds/src/components/helpers/confirmation-dialog/ConfirmationDialog'; +import dayjs from 'dayjs'; +import { veilederService } from '../../api/services/veilederService'; +import { Deltakelse } from '../../api/types'; interface Props { deltakelse: Deltakelse; @@ -29,7 +29,7 @@ interface FormValues { const AvsluttDeltakelseForm = ({ deltakelse, onDeltakelseAvsluttet, onCancel }: Props) => { const [confirmationDialogVisible, setConfirmationDialogVisible] = useState(false); const [submitPending, setSubmitPending] = useState(false); - const [error, setError] = useState(undefined); + const [error, setError] = useState(undefined); const intl = useIntl(); const avsluttDeltakelse = async (values: Partial) => { diff --git a/apps/ungdomsytelse-veileder/src/forms/endre-deltakelse-form/EndreDeltakelseForm.tsx b/apps/ungdomsytelse-veileder/src/forms/endre-deltakelse-form/EndreDeltakelseForm.tsx index 918ee0047a..25d6b1080e 100644 --- a/apps/ungdomsytelse-veileder/src/forms/endre-deltakelse-form/EndreDeltakelseForm.tsx +++ b/apps/ungdomsytelse-veileder/src/forms/endre-deltakelse-form/EndreDeltakelseForm.tsx @@ -3,7 +3,7 @@ import { TypedFormikForm, TypedFormikWrapper } from '@navikt/sif-common-formik-d import { dateToISODate, ISODateToDate } from '@navikt/sif-common-utils'; import { Deltakelse } from '../../api/types'; -import PeriodeFormPart from './PeriodeFormPart'; +import PeriodeFormPart from '../periode-form-part/PeriodeFormPart'; import { useEndreDeltakelse } from '../../depr/hooks/useEndreDeltakelse'; export type DeltakelseFormValues = { @@ -41,7 +41,7 @@ const EndreDeltakelseForm = ({ deltakelse, deltakelser, onChange }: Props) => { const tomDate = values.tom ? ISODateToDate(values.tom) : undefined; return ( - + Endre deltakerperiode { /> diff --git a/apps/ungdomsytelse-veileder/src/forms/meld-inn-deltaker-form/MeldInnDeltakerForm.tsx b/apps/ungdomsytelse-veileder/src/forms/meld-inn-deltaker-form/MeldInnDeltakerForm.tsx index b07240d4ed..476b66f5b5 100644 --- a/apps/ungdomsytelse-veileder/src/forms/meld-inn-deltaker-form/MeldInnDeltakerForm.tsx +++ b/apps/ungdomsytelse-veileder/src/forms/meld-inn-deltaker-form/MeldInnDeltakerForm.tsx @@ -1,5 +1,5 @@ import dayjs from 'dayjs'; -import { Deltakelse, NyDeltaker } from '../../api/types'; +import { Deltakelse, Deltaker, NyDeltaker } from '../../api/types'; import { useState } from 'react'; import { FormikConfirmationCheckbox, @@ -15,23 +15,21 @@ import { PaperplaneIcon } from '@navikt/aksel-icons'; import { veilederService } from '../../api/services/veilederService'; interface Props { - deltaker: NyDeltaker; + deltaker: NyDeltaker | Deltaker; + minStartDato?: Date; onDeltakelseRegistrert: (deltakelse: Deltakelse) => void; onCancel: () => void; } const maxDate = dayjs().add(2, 'years').endOf('month').toDate(); const minDate = dayjs().subtract(2, 'years').startOf('month').toDate(); -// const maxDate = dayjs().add(1, 'month').endOf('month').toDate(); -// const minDate = dayjs().subtract(3, 'months').startOf('month').toDate(); interface FormValues { startDato: string; bekreftRegistrering: boolean; } -const MeldInnDeltakerForm = ({ deltaker, onCancel, onDeltakelseRegistrert: onDeltakerRegistrert }: Props) => { - const navn = deltaker.navn.fornavn; +const MeldInnDeltakerForm = ({ deltaker, minStartDato, onCancel, onDeltakelseRegistrert }: Props) => { const [submitPending, setSubmitPending] = useState(false); const intl = useIntl(); @@ -42,7 +40,7 @@ const MeldInnDeltakerForm = ({ deltaker, onCancel, onDeltakelseRegistrert: onDel startdato: values.startDato, }); setSubmitPending(false); - onDeltakerRegistrert(deltakelse); + onDeltakelseRegistrert(deltakelse); }; return ( @@ -57,14 +55,15 @@ const MeldInnDeltakerForm = ({ deltaker, onCancel, onDeltakelseRegistrert: onDel - Registrer ny deltaker + Registrer ny deltakelse void; +} + +const NyDeltakelseForm = ({ deltaker, deltakelser, onOpprettet }: Props) => { + const { pending, opprettDeltakelse } = useNyDeltakelse(deltaker, onOpprettet || (() => {})); + + return ( + + + initialValues={{ + fnr: deltaker.deltakerIdent, + }} + onSubmit={(values) => opprettDeltakelse(values)} + renderForm={({ values }) => { + const fomDate = values.fom ? ISODateToDate(values.fom) : undefined; + const tomDate = values.tom ? ISODateToDate(values.tom) : undefined; + return ( + + + Legg til ny deltakelseperiode + + + + + + + + + + + ); + }} + /> + + ); +}; + +export default NyDeltakelseForm; diff --git a/apps/ungdomsytelse-veileder/src/forms/endre-deltakelse-form/PeriodeFormPart.tsx b/apps/ungdomsytelse-veileder/src/forms/periode-form-part/PeriodeFormPart.tsx similarity index 100% rename from apps/ungdomsytelse-veileder/src/forms/endre-deltakelse-form/PeriodeFormPart.tsx rename to apps/ungdomsytelse-veileder/src/forms/periode-form-part/PeriodeFormPart.tsx diff --git a/apps/ungdomsytelse-veileder/src/versjoner/versjon-1/pages/deltaker-page/DeltakerPage.tsx b/apps/ungdomsytelse-veileder/src/versjoner/versjon-1/pages/deltaker-page/DeltakerPage.tsx deleted file mode 100644 index bd51ba6fd9..0000000000 --- a/apps/ungdomsytelse-veileder/src/versjoner/versjon-1/pages/deltaker-page/DeltakerPage.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { useParams } from 'react-router-dom'; -import { DeltakerProvider } from '../../../../context/DeltakerContext'; -import DeltakerPageHeader from '../../../../components/DeltakerPageHeader'; -import DeltakerPageContent from '../../../../components/DeltakerPageContent'; -import { VStack } from '@navikt/ds-react'; - -type DeltakerPageParams = { - deltakerId: string; -}; - -const DeltakerPage = () => { - const { deltakerId } = useParams(); - - return ( - - - - - - - ); -}; - -export default DeltakerPage; diff --git a/package.json b/package.json index b668b33f1b..f159d24a06 100644 --- a/package.json +++ b/package.json @@ -9,16 +9,16 @@ "url": "https://github.com/navikt/sif-brukerdialog/issues" }, "dependencies": { - "@changesets/cli": "^2.27.10", + "@changesets/cli": "^2.27.11", "turbo": "2.3.3" }, "devDependencies": { "@sif/eslint-config": "*", "config": "*", "husky": "9.1.7", - "lint-staged": "15.2.11", + "lint-staged": "15.3.0", "prettier": "3.4.2", - "typescript": "5.7.2" + "typescript": "5.7.3" }, "lint-staged": { "apps/**/*.{ts,tsx,js,jsx, css}": [ diff --git a/packages/appstatus-react-ds/package.json b/packages/appstatus-react-ds/package.json index 9263ab792c..516b42e397 100644 --- a/packages/appstatus-react-ds/package.json +++ b/packages/appstatus-react-ds/package.json @@ -10,15 +10,15 @@ "dependencies": { "@navikt/sif-common-hooks": "*", "@portabletext/react": "3.2.0", - "@sanity/client": "6.24.1" + "@sanity/client": "6.24.3" }, "devDependencies": { - "@navikt/ds-css": "7.8.0", - "@navikt/ds-react": "7.8.0", + "@navikt/ds-css": "7.9.1", + "@navikt/ds-react": "7.9.1", "@sif/eslint-config": "*", - "@types/node": "22.10.2", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/node": "22.10.5", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "config": "*", "copyfiles": "2.4.1", "postcss": "8.4.49", @@ -26,7 +26,7 @@ "react": "19.0.0", "react-dom": "19.0.0", "rimraf": "6.0.1", - "sass": "1.83.0" + "sass": "1.83.1" }, "scripts": { "lint:eslint": "eslint \"./src/**/*.{js,ts,tsx}\"", diff --git a/packages/appstatus-sanity-config/package.json b/packages/appstatus-sanity-config/package.json index 1871e31d8f..57e1eb6ea1 100644 --- a/packages/appstatus-sanity-config/package.json +++ b/packages/appstatus-sanity-config/package.json @@ -16,20 +16,20 @@ "sanity" ], "dependencies": { - "@sanity/vision": "3.67.1", + "@sanity/vision": "3.69.0", "react": "19.0.0", "react-dom": "19.0.0", - "sanity": "3.67.1", - "styled-components": "6.1.13" + "sanity": "3.69.0", + "styled-components": "6.1.14" }, "devDependencies": { - "@sanity/eslint-config-studio": "5.0.0", - "@types/react": "19.0.1", + "@sanity/eslint-config-studio": "5.0.1", + "@types/react": "19.0.6", "dayjs": "1.11.13", - "eslint": "9.17.0", + "eslint": "9.18.0", "prettier": "3.4.2", "react-is": "19.0.0", - "typescript": "5.7.2" + "typescript": "5.7.3" }, "prettier": { "useTabs": false, diff --git a/packages/config/package.json b/packages/config/package.json index 14b57856a5..5ab28e6d1b 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -4,19 +4,19 @@ "version": "0.10.28", "private": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "8.18.0", - "@typescript-eslint/parser": "8.18.0", + "@typescript-eslint/eslint-plugin": "8.19.1", + "@typescript-eslint/parser": "8.19.1", "autoprefixer": "10.4.20", - "eslint": "9.17.0", + "eslint": "9.18.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-prettier": "5.2.1", - "eslint-plugin-react": "7.37.2", + "eslint-plugin-react": "7.37.4", "eslint-plugin-react-hooks": "5.1.0", - "eslint-plugin-storybook": "0.11.1", + "eslint-plugin-storybook": "0.11.2", "postcss": "8.4.49", "prettier": "3.4.2", - "typescript": "5.7.2" + "typescript": "5.7.3" }, "files": [ "tsconfig-base.json" diff --git a/packages/eslint-config-sif/package.json b/packages/eslint-config-sif/package.json index ed3e3df99a..e0005648f7 100644 --- a/packages/eslint-config-sif/package.json +++ b/packages/eslint-config-sif/package.json @@ -4,16 +4,16 @@ "type": "module", "version": "1.1.25", "dependencies": { - "@eslint/js": "9.17.0", - "eslint": "9.17.0", + "@eslint/js": "9.18.0", + "eslint": "9.18.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-jsx-a11y": "6.10.2", - "eslint-plugin-react": "7.37.2", + "eslint-plugin-react": "7.37.4", "eslint-plugin-react-hooks": "5.1.0", "eslint-plugin-vitest": "0.5.4", - "globals": "15.13.0", - "typescript": "5.7.2", - "typescript-eslint": "8.18.0" + "globals": "15.14.0", + "typescript": "5.7.3", + "typescript-eslint": "8.19.1" }, "packageManager": "yarn@4.3.1" } diff --git a/packages/sif-app-register/package.json b/packages/sif-app-register/package.json index 96c1338864..3dd9cbece5 100644 --- a/packages/sif-app-register/package.json +++ b/packages/sif-app-register/package.json @@ -7,7 +7,7 @@ "devDependencies": { "@sif/eslint-config": "*", "copyfiles": "2.4.1", - "typescript": "5.7.2" + "typescript": "5.7.3" }, "scripts": { "lint:eslint": "eslint \"./src/**/*.{js,ts,tsx}\"", diff --git a/packages/sif-common-amplitude/package.json b/packages/sif-common-amplitude/package.json index bd4794a3da..811fde3228 100644 --- a/packages/sif-common-amplitude/package.json +++ b/packages/sif-common-amplitude/package.json @@ -11,18 +11,18 @@ "url": "https://github.com/navikt/sif-common-amplitude/issues" }, "dependencies": { - "@amplitude/analytics-browser": "2.11.9" + "@amplitude/analytics-browser": "2.11.11" }, "devDependencies": { "@sif/eslint-config": "*", - "@types/node": "22.10.2", - "@types/react": "19.0.1", + "@types/node": "22.10.5", + "@types/react": "19.0.6", "config": "*", "constate": "3.3.2", - "gh-pages": "6.2.0", + "gh-pages": "6.3.0", "react": "19.0.0", "rimraf": "6.0.1", - "typescript": "5.7.2" + "typescript": "5.7.3" }, "directories": { "lib": "lib" diff --git a/packages/sif-common-api/package.json b/packages/sif-common-api/package.json index 8f072178dd..e83f647f41 100644 --- a/packages/sif-common-api/package.json +++ b/packages/sif-common-api/package.json @@ -6,9 +6,9 @@ "private": true, "type": "module", "dependencies": { - "@navikt/ds-css": "7.8.0", + "@navikt/ds-css": "7.9.1", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "7.8.0", + "@navikt/ds-react": "7.9.1", "@navikt/sif-common-formik-ds": "*", "@navikt/sif-common-sentry": "*", "@navikt/sif-common-utils": "*", @@ -30,19 +30,19 @@ "@storybook/node-logger": "8.4.7", "@storybook/react": "8.4.7", "@storybook/testing-library": "0.2.2", - "@types/react": "19.0.1", + "@types/react": "19.0.6", "copyfiles": "2.4.1", "date-fns": "3.6.0", "dayjs": "1.11.13", - "globals": "15.13.0", + "globals": "15.14.0", "intl": "1.2.5", "less": "4.2.1", "postcss": "8.4.49", "react": "19.0.0", "react-dom": "19.0.0", - "react-intl": "7.0.4", + "react-intl": "7.1.0", "storybook": "8.4.7", - "typescript": "5.7.2", + "typescript": "5.7.3", "webpack": "5.97.1" }, "scripts": { diff --git a/packages/sif-common-core-ds/package.json b/packages/sif-common-core-ds/package.json index 9ec6d20e35..8b459f103e 100644 --- a/packages/sif-common-core-ds/package.json +++ b/packages/sif-common-core-ds/package.json @@ -17,7 +17,7 @@ "http-status-codes": "2.3.0", "i18n-iso-countries": "7.13.0", "pretty-bytes": "6.1.1", - "tailwindcss": "3.4.16" + "tailwindcss": "3.4.17" }, "devDependencies": { "@babel/core": "7.26.0", @@ -25,10 +25,10 @@ "@babel/preset-react": "7.26.3", "@babel/preset-typescript": "7.26.0", "@navikt/appstatus-react-ds": "*", - "@navikt/ds-css": "7.8.0", + "@navikt/ds-css": "7.9.1", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "7.8.0", - "@navikt/ds-tailwind": "7.8.0", + "@navikt/ds-react": "7.9.1", + "@navikt/ds-tailwind": "7.9.1", "@navikt/sif-common-formik-ds": "*", "@originjs/vite-plugin-commonjs": "1.0.3", "@sif/eslint-config": "*", @@ -42,29 +42,29 @@ "@storybook/react": "8.4.7", "@storybook/react-vite": "8.4.7", "@storybook/testing-library": "0.2.2", - "@types/node": "22.10.2", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/node": "22.10.5", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@vitejs/plugin-react": "4.3.4", "axios": "1.7.9", "config": "*", "copyfiles": "2.4.1", "formik": "2.4.6", - "msw": "2.6.9", + "msw": "2.7.0", "msw-storybook-addon": "2.0.4", "postcss": "8.4.49", "prop-types": "15.8.1", "react": "19.0.0", "react-day-picker": "8.10.1", "react-dom": "19.0.0", - "react-intl": "7.0.4", + "react-intl": "7.1.0", "react-responsive": "10.0.0", "react-syntax-highlighter": "15.6.1", "rimraf": "6.0.1", "storybook": "8.4.7", - "typescript": "5.7.2", - "uuid": "11.0.3", - "vite": "6.0.3", + "typescript": "5.7.3", + "uuid": "11.0.5", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8" }, diff --git a/packages/sif-common-core-ds/src/components/picture-scanning-guide/i18n/pictureScanningGuideMessages.tsx b/packages/sif-common-core-ds/src/components/picture-scanning-guide/i18n/pictureScanningGuideMessages.tsx index 9a09f3e01d..4da07990f1 100644 --- a/packages/sif-common-core-ds/src/components/picture-scanning-guide/i18n/pictureScanningGuideMessages.tsx +++ b/packages/sif-common-core-ds/src/components/picture-scanning-guide/i18n/pictureScanningGuideMessages.tsx @@ -24,7 +24,7 @@ const nb = { '@core.psg.good': 'Bra', '@core.psg.bad': 'Dårlig', '@core.psg.icon.label.good': 'Dokumentet fyller hele bildet', - '@core.psg.icon.label.keystone': 'Bildet er ikke tatt ovenfra', + '@core.psg.icon.label.keystone': 'Bildet er ikke tatt rett ovenfra', '@core.psg.icon.label.horizontal': 'Bildet har ikke riktig retning', '@core.psg.icon.label.shadow': 'Bildet har skygge på dokumentet', '@core.psg.lenkepanel.url': 'https://www.nav.no/brukerstotte#sende-soknad-pa-nett', @@ -33,7 +33,7 @@ const nb = { const nn: Record = { '@core.psg.expandable.tittel': 'Tips til deg som skal ta bilete av dokumentet', - '@core.psg.tittel': 'Noen tips når du skal ta bilete av dokumentet', + '@core.psg.tittel': 'Nokre tips når du skal ta bilete av dokumentet', '@core.psg.section1.tittel': 'Trygg bruk når du tek bilete', '@core.psg.section1.liste.1': 'Bruk kamerafunksjonen på mobilen din til å ta biletet, ikkje bruk Snapchat eller andre appar.', @@ -54,7 +54,7 @@ const nn: Record = { '@core.psg.good': 'Bra', '@core.psg.bad': 'Dårleg', '@core.psg.icon.label.good': 'Dokumentet fyller heile biletet', - '@core.psg.icon.label.keystone': 'Biletet er ikkje teke ovanfrå.', + '@core.psg.icon.label.keystone': 'Biletet er ikkje teke rett ovanfrå.', '@core.psg.icon.label.horizontal': 'Biletet har ikkje rett retning', '@core.psg.icon.label.shadow': 'Biletet har skugge oppå dokumentet', '@core.psg.lenkepanel.url': 'https://www.nav.no/brukerstotte#sende-soknad-pa-nett', diff --git a/packages/sif-common-core-ds/src/i18n/common.messages.tsx b/packages/sif-common-core-ds/src/i18n/common.messages.tsx index 08416397aa..8377bacb90 100644 --- a/packages/sif-common-core-ds/src/i18n/common.messages.tsx +++ b/packages/sif-common-core-ds/src/i18n/common.messages.tsx @@ -45,17 +45,17 @@ const nn: Record = { '@core.formikFileUpload.file-upload.error.fileType': 'Filformatet er ikkje støtta. Filformater du kan laste opp er JPG, JPEG, PNG og PDF.', '@core.formikFileUpload.file-upload.error.fileSize': 'Fila er større enn ${MAX_SIZE_MB} MB.', - '@core.formikFileUpload.file-upload.error.retry': 'Det oppstod ein feil under opplastinga..', - '@core.formikFileUpload.file-upload.error.unknown': 'Det oppstod en feil under opplastingen ({reason})', + '@core.formikFileUpload.file-upload.error.retry': 'Det oppstod ein feil under opplastinga.', + '@core.formikFileUpload.file-upload.error.unknown': 'Det oppstod en feil under opplastinga ({reason})', '@core.vedleggSummaryList.ingenVedlegg': 'Ingen dokument er lasta opp', '@core.formikVedleggList.validation.noVedleggUploaded': 'Ingen dokument er lasta opp', '@core.formikVedleggList.validation.tooManyVedlegg': 'For mange dokument er lasta opp', '@core.formikVedleggList.validation.maxTotalSizeExceeded': 'Total samla storleik for dokumenta du har lasta opp overstig grensa på 24 MB.', '@core.formik-vedlegg-form.alert.totalSize': - 'Du har lastet opp meir enn grensa på 24 MB. Det betyr at du må fjerne noko av det du har lastet opp. Om det betyr at du ikkje får plass til alt du vil sende no, kan du ettersende fleire dokument.', + 'Du har totalt lasta opp meir enn grensa på 24 MB. Det betyr at du må fjerne noko av det du har lasta opp. Om det betyr at du ikkje får plass til alt du vil sende no, kan du ettersende fleire dokument.', '@core.formik-vedlegg-form.alert.totalSize.noLink': - 'Du har totalt lastet opp meir enn grensa på 24 MB. Det betyr at du må fjerne noko av det du har lastet opp.', + 'Du har totalt lasta opp meir enn grensa på 24 MB. Det betyr at du må fjerne noko av det du har lasta opp.', ...pictureScanningGuideMessages.nn, }; diff --git a/packages/sif-common-env/package.json b/packages/sif-common-env/package.json index c2a256fb93..850bd558e5 100644 --- a/packages/sif-common-env/package.json +++ b/packages/sif-common-env/package.json @@ -6,7 +6,7 @@ "private": true, "type": "module", "devDependencies": { - "typescript": "5.7.2" + "typescript": "5.7.3" }, "scripts": { "lint:eslint": "eslint \"./src/**/*.{js,ts,tsx}\"", diff --git a/packages/sif-common-formik-ds/package.json b/packages/sif-common-formik-ds/package.json index 209b91d98c..2f9f8d98ee 100644 --- a/packages/sif-common-formik-ds/package.json +++ b/packages/sif-common-formik-ds/package.json @@ -16,15 +16,15 @@ "lodash": "4.17.21", "react-dropzone": "14.3.5", "react-fast-compare": "3.2.2", - "uuid": "11.0.3" + "uuid": "11.0.5" }, "devDependencies": { "@babel/core": "7.26.0", "@babel/preset-env": "7.26.0", "@babel/preset-react": "7.26.3", "@babel/preset-typescript": "7.26.0", - "@navikt/ds-css": "7.8.0", - "@navikt/ds-react": "7.8.0", + "@navikt/ds-css": "7.9.1", + "@navikt/ds-react": "7.9.1", "@navikt/fnrvalidator": "2.1.5", "@originjs/vite-plugin-commonjs": "1.0.3", "@sif/eslint-config": "*", @@ -39,12 +39,12 @@ "@storybook/preset-scss": "1.0.3", "@storybook/react": "8.4.7", "@storybook/react-vite": "8.4.7", - "@storybook/test-runner": "0.20.1", + "@storybook/test-runner": "0.21.0", "@storybook/testing-library": "0.2.2", "@types/jest": "29.5.14", - "@types/node": "22.10.2", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/node": "22.10.5", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@types/uuid": "10.0.0", "@vitejs/plugin-react": "4.3.4", "config": "*", @@ -58,14 +58,14 @@ "react": "19.0.0", "react-day-picker": "8.10.1", "react-dom": "19.0.0", - "react-intl": "7.0.4", + "react-intl": "7.1.0", "react-syntax-highlighter": "15.6.1", "rimraf": "6.0.1", "sass-loader": "16.0.4", "storybook": "8.4.7", "style-loader": "4.0.0", - "typescript": "5.7.2", - "vite": "6.0.3", + "typescript": "5.7.3", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8", "webpack": "5.97.1" diff --git a/packages/sif-common-formik-ds/src/components/formik-validation-error-summary/FormikValidationErrorSummary.tsx b/packages/sif-common-formik-ds/src/components/formik-validation-error-summary/FormikValidationErrorSummary.tsx index c3bde7b777..10715be0cb 100644 --- a/packages/sif-common-formik-ds/src/components/formik-validation-error-summary/FormikValidationErrorSummary.tsx +++ b/packages/sif-common-formik-ds/src/components/formik-validation-error-summary/FormikValidationErrorSummary.tsx @@ -1,4 +1,4 @@ -import React, { RefObject } from 'react'; +import React, { ReactElement, RefObject } from 'react'; import { useFormikContext } from 'formik'; import { getAllFieldsWithErrors, getErrorForField } from '../../utils/typedFormErrorUtils'; import ValidationSummary, { ValidationSummaryError } from '../helpers/ValidationSummary'; @@ -7,7 +7,7 @@ import { TypedFormikFormContext } from '../typed-formik-form/TypedFormikForm'; interface Props { heading?: string; summaryRef?: RefObject; - wrapper?: (errorSummary: JSX.Element) => JSX.Element; + wrapper?: (errorSummary: ReactElement) => ReactElement; } const FormikValidationErrorSummary: React.FunctionComponent = ({ heading, summaryRef, wrapper }) => { diff --git a/packages/sif-common-formik-ds/src/components/getTypedFormComponents.tsx b/packages/sif-common-formik-ds/src/components/getTypedFormComponents.tsx index ee86314ea6..f4abfdeced 100644 --- a/packages/sif-common-formik-ds/src/components/getTypedFormComponents.tsx +++ b/packages/sif-common-formik-ds/src/components/getTypedFormComponents.tsx @@ -1,3 +1,4 @@ +import { ReactElement } from 'react'; import FormikCheckboxGroup, { FormikCheckboxGroupProps } from './formik-checkbox-group/FormikCheckboxGroup'; import FormikCheckbox, { FormikCheckboxProps } from './formik-checkbox/FormikCheckbox'; import FormikConfirmationCheckbox, { @@ -7,10 +8,10 @@ import FormikCountrySelect, { FormikCountrySelectProps } from './formik-country- import FormikDateRangePicker, { FormikDateRangePickerProps } from './formik-date-range-picker/FormikDateRangePicker'; import FormikDatepicker, { FormikDatepickerProps } from './formik-datepicker/FormikDatepicker'; import FormikInputGroup, { FormikInputGroupProps } from './formik-input-group/FormikInputGroup'; +import FormikNumberInput, { FormikNumberInputProps } from './formik-number-input/FormikNumberInput'; import FormikRadioGroup, { FormikRadioGroupProps } from './formik-radio-group/FormikRadioGroup'; import FormikSelect, { FormikSelectProps } from './formik-select/FormikSelect'; import FormikTextField, { FormikTextFieldProps } from './formik-text-field/FormikTextField'; -import FormikNumberInput, { FormikNumberInputProps } from './formik-number-input/FormikNumberInput'; import FormikTextarea, { FormikTextareaProps } from './formik-textarea/FormikTextarea'; import FormikTimeInput, { FormikTimeInputProps } from './formik-time-input/FormikTimeInput'; import FormikYesOrNoQuestion, { FormikYesOrNoQuestionProps } from './formik-yes-or-no-question/FormikYesOrNoQuestion'; @@ -18,22 +19,22 @@ import TypedFormikForm, { TypedFormikFormProps } from './typed-formik-form/Typed import TypedFormikWrapper, { TypedFormikWrapperProps } from './typed-formik-wrapper/TypedFormikWrapper'; export interface TypedFormComponents { - Checkbox: (props: FormikCheckboxProps) => JSX.Element; - CheckboxGroup: (props: FormikCheckboxGroupProps) => JSX.Element; - ConfirmationCheckbox: (props: FormikConfirmationCheckboxProps) => JSX.Element; - CountrySelect: (props: FormikCountrySelectProps) => JSX.Element; - DatePicker: (props: FormikDatepickerProps) => JSX.Element; - DateRangePicker: (props: FormikDateRangePickerProps) => JSX.Element; - Form: (props: TypedFormikFormProps) => JSX.Element; - FormikWrapper: (props: TypedFormikWrapperProps) => JSX.Element; - TextField: (props: FormikTextFieldProps) => JSX.Element; - NumberInput: (props: FormikNumberInputProps) => JSX.Element; - InputGroup: (props: FormikInputGroupProps) => JSX.Element; - RadioGroup: (props: FormikRadioGroupProps) => JSX.Element; - Select: (props: FormikSelectProps) => JSX.Element; - Textarea: (props: FormikTextareaProps) => JSX.Element; - TimeInput: (props: FormikTimeInputProps) => JSX.Element; - YesOrNoQuestion: (props: FormikYesOrNoQuestionProps) => JSX.Element; + Checkbox: (props: FormikCheckboxProps) => ReactElement; + CheckboxGroup: (props: FormikCheckboxGroupProps) => ReactElement; + ConfirmationCheckbox: (props: FormikConfirmationCheckboxProps) => ReactElement; + CountrySelect: (props: FormikCountrySelectProps) => ReactElement; + DatePicker: (props: FormikDatepickerProps) => ReactElement; + DateRangePicker: (props: FormikDateRangePickerProps) => ReactElement; + Form: (props: TypedFormikFormProps) => ReactElement; + FormikWrapper: (props: TypedFormikWrapperProps) => ReactElement; + TextField: (props: FormikTextFieldProps) => ReactElement; + NumberInput: (props: FormikNumberInputProps) => ReactElement; + InputGroup: (props: FormikInputGroupProps) => ReactElement; + RadioGroup: (props: FormikRadioGroupProps) => ReactElement; + Select: (props: FormikSelectProps) => ReactElement; + Textarea: (props: FormikTextareaProps) => ReactElement; + TimeInput: (props: FormikTimeInputProps) => ReactElement; + YesOrNoQuestion: (props: FormikYesOrNoQuestionProps) => ReactElement; } export function getTypedFormComponents(): TypedFormComponents< diff --git a/packages/sif-common-forms-ds/package.json b/packages/sif-common-forms-ds/package.json index f4713c98e2..9615a7aa7a 100644 --- a/packages/sif-common-forms-ds/package.json +++ b/packages/sif-common-forms-ds/package.json @@ -21,9 +21,9 @@ "@babel/preset-env": "7.26.0", "@babel/preset-react": "7.26.3", "@babel/preset-typescript": "7.26.0", - "@formatjs/intl-pluralrules": "5.4.1", - "@navikt/ds-css": "7.8.0", - "@navikt/ds-react": "7.8.0", + "@formatjs/intl-pluralrules": "5.4.2", + "@navikt/ds-css": "7.9.1", + "@navikt/ds-react": "7.9.1", "@navikt/sif-common-core-ds": "*", "@navikt/sif-common-formik-ds": "*", "@navikt/sif-common-utils": "*", @@ -42,9 +42,9 @@ "@testing-library/dom": "10.4.0", "@testing-library/react": "16.1.0", "@testing-library/user-event": "14.5.2", - "@types/node": "22.10.2", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/node": "22.10.5", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@vitejs/plugin-react": "4.3.4", "axios": "1.7.9", "config": "*", @@ -52,19 +52,19 @@ "dayjs": "1.11.13", "flat": "6.0.1", "formik": "2.4.6", - "gh-pages": "6.2.0", + "gh-pages": "6.3.0", "intl": "1.2.5", "jsdom": "25.0.1", "react": "19.0.0", "react-day-picker": "8.10.1", "react-dom": "19.0.0", - "react-intl": "7.0.4", + "react-intl": "7.1.0", "react-json-view": "1.21.3", - "react-router-dom": "7.0.2", + "react-router-dom": "7.1.1", "rimraf": "6.0.1", "storybook": "8.4.7", - "typescript": "5.7.2", - "vite": "6.0.3", + "typescript": "5.7.3", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8" }, diff --git "a/packages/sif-common-forms-ds/src/forms/frav\303\246r/Frav\303\246rDagForm.tsx" "b/packages/sif-common-forms-ds/src/forms/frav\303\246r/Frav\303\246rDagForm.tsx" index 1fd47f8e70..0a2ed0dd89 100644 --- "a/packages/sif-common-forms-ds/src/forms/frav\303\246r/Frav\303\246rDagForm.tsx" +++ "b/packages/sif-common-forms-ds/src/forms/frav\303\246r/Frav\303\246rDagForm.tsx" @@ -1,3 +1,4 @@ +import { ReactElement } from 'react'; import { useIntl } from 'react-intl'; import Block from '@navikt/sif-common-core-ds/src/atoms/block/Block'; import FormBlock from '@navikt/sif-common-core-ds/src/atoms/form-block/FormBlock'; @@ -14,6 +15,7 @@ import getFormErrorHandler from '@navikt/sif-common-formik-ds/src/validation/int import { ValidationError } from '@navikt/sif-common-formik-ds/src/validation/types'; import { DateRange, getDateToday } from '@navikt/sif-common-utils'; import dayjs from 'dayjs'; +import { useFraværIntl } from './fraværMessages'; import FraværTimerSelect from './FraværTimerSelect'; import { isFraværDag, mapFormValuesToFraværDag, mapFraværDagToFormValues, toMaybeNumber } from './fraværUtilities'; import { @@ -23,7 +25,6 @@ import { validateNotHelgedag, } from './fraværValidationUtils'; import { FraværDag, FraværDagFormValues } from './types'; -import { useFraværIntl } from './fraværMessages'; export interface FraværDagFormLabels { tittel: string; @@ -36,12 +37,12 @@ export interface FraværDagFormLabels { interface Props { fraværDag?: Partial; - dagDescription?: JSX.Element; + dagDescription?: ReactElement; minDate: Date; maxDate: Date; dateRangesToDisable?: DateRange[]; helgedagerIkkeTillatt?: boolean; - headerContent?: JSX.Element; + headerContent?: ReactElement; maksArbeidstidPerDag?: number; onSubmit: (values: FraværDag) => void; onCancel: () => void; diff --git "a/packages/sif-common-forms-ds/src/forms/frav\303\246r/Frav\303\246rDagerListAndDialog.tsx" "b/packages/sif-common-forms-ds/src/forms/frav\303\246r/Frav\303\246rDagerListAndDialog.tsx" index bc9619eb36..a34e929518 100644 --- "a/packages/sif-common-forms-ds/src/forms/frav\303\246r/Frav\303\246rDagerListAndDialog.tsx" +++ "b/packages/sif-common-forms-ds/src/forms/frav\303\246r/Frav\303\246rDagerListAndDialog.tsx" @@ -1,3 +1,4 @@ +import { ReactElement } from 'react'; import { FormikModalFormAndList, ModalFormAndListLabels, @@ -13,9 +14,9 @@ interface Props extends TypedFormInputValidationProps; - periodeDescription?: JSX.Element; + periodeDescription?: ReactElement; minDate: Date; maxDate: Date; dateRangesToDisable?: DateRange[]; helgedagerIkkeTillat?: boolean; begrensTilSammeÅr?: boolean; begrensTilSammeÅrAlertStripeTekst?: string; - headerContent?: JSX.Element; + headerContent?: ReactElement; onSubmit: (values: FraværPeriode) => void; onCancel: () => void; } diff --git "a/packages/sif-common-forms-ds/src/forms/frav\303\246r/Frav\303\246rPerioderListAndDialog.tsx" "b/packages/sif-common-forms-ds/src/forms/frav\303\246r/Frav\303\246rPerioderListAndDialog.tsx" index 47b2f81ee0..dd50e6a198 100644 --- "a/packages/sif-common-forms-ds/src/forms/frav\303\246r/Frav\303\246rPerioderListAndDialog.tsx" +++ "b/packages/sif-common-forms-ds/src/forms/frav\303\246r/Frav\303\246rPerioderListAndDialog.tsx" @@ -1,21 +1,22 @@ +import { ReactElement } from 'react'; import { FormikModalFormAndList, ModalFormAndListLabels, TypedFormInputValidationProps, } from '@navikt/sif-common-formik-ds'; +import { ValidationError } from '@navikt/sif-common-formik-ds/src/validation/types'; +import { DateRange, sortMaybeDateRange } from '@navikt/sif-common-utils'; import FraværPeriodeForm from './FraværPeriodeForm'; import FraværPerioderList from './FraværPerioderList'; import { FraværPeriode } from './types'; -import { ValidationError } from '@navikt/sif-common-formik-ds/src/validation/types'; -import { sortMaybeDateRange, DateRange } from '@navikt/sif-common-utils'; interface Props extends TypedFormInputValidationProps { name: FieldNames; minDate: Date; maxDate: Date; labels: ModalFormAndListLabels; - periodeDescription?: JSX.Element; - formHeaderContent?: JSX.Element; + periodeDescription?: ReactElement; + formHeaderContent?: ReactElement; dateRangesToDisable?: DateRange[]; begrensTilSammeÅr?: boolean; helgedagerIkkeTillat?: boolean; diff --git a/packages/sif-common-hooks/package.json b/packages/sif-common-hooks/package.json index 9399fc3bd3..ea4c2dd0ed 100644 --- a/packages/sif-common-hooks/package.json +++ b/packages/sif-common-hooks/package.json @@ -6,7 +6,7 @@ "type": "module", "dependencies": { "react": "19.0.0", - "typescript": "5.7.2" + "typescript": "5.7.3" }, "devDependencies": { "@sif/eslint-config": "*", diff --git a/packages/sif-common-sentry/package.json b/packages/sif-common-sentry/package.json index b7395065da..c1cece0477 100644 --- a/packages/sif-common-sentry/package.json +++ b/packages/sif-common-sentry/package.json @@ -11,21 +11,21 @@ "url": "https://github.com/navikt/sif-common-sentry/issues" }, "dependencies": { - "@sentry/browser": "8.45.0", - "@sentry/react": "8.45.0", - "@sentry/types": "8.45.0" + "@sentry/browser": "8.48.0", + "@sentry/react": "8.48.0", + "@sentry/types": "8.48.0" }, "devDependencies": { "@sif/eslint-config": "*", - "@types/node": "22.10.2", + "@types/node": "22.10.5", "axios": "1.7.9", "config": "*", "copyfiles": "2.4.1", - "gh-pages": "6.2.0", + "gh-pages": "6.3.0", "react": "19.0.0", "react-dom": "19.0.0", "rimraf": "6.0.1", - "typescript": "5.7.2" + "typescript": "5.7.3" }, "directories": { "lib": "lib" diff --git a/packages/sif-common-soknad-ds/package.json b/packages/sif-common-soknad-ds/package.json index c258d09ec9..50f3ceeaab 100644 --- a/packages/sif-common-soknad-ds/package.json +++ b/packages/sif-common-soknad-ds/package.json @@ -17,12 +17,12 @@ "@navikt/sif-common-utils": "*" }, "dependencies": { - "@navikt/nav-dekoratoren-moduler": "3.1.1", + "@navikt/nav-dekoratoren-moduler": "3.1.3", "classnames": "2.5.1", "csp-header": "6.0.0", "date-fns": "3.6.0", "fp-ts": "2.16.9", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "io-ts": "2.2.22", "js-cookie": "3.0.5", "jsdom": "25.0.1", @@ -35,10 +35,10 @@ "@babel/preset-react": "7.26.3", "@babel/preset-typescript": "7.26.0", "@devexperts/remote-data-ts": "2.1.1", - "@formatjs/intl-pluralrules": "5.4.1", + "@formatjs/intl-pluralrules": "5.4.2", "@navikt/appstatus-react-ds": "*", - "@navikt/ds-css": "7.8.0", - "@navikt/ds-react": "7.8.0", + "@navikt/ds-css": "7.9.1", + "@navikt/ds-react": "7.9.1", "@navikt/sif-common-core-ds": "*", "@navikt/sif-common-formik-ds": "*", "@navikt/sif-common-hooks": "*", @@ -61,15 +61,15 @@ "@testing-library/react": "16.1.0", "@testing-library/user-event": "14.5.2", "@types/jest": "29.5.14", - "@types/node": "22.10.2", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/node": "22.10.5", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@vitejs/plugin-react": "4.3.4", "axios": "1.7.9", "copyfiles": "2.4.1", "dayjs": "1.11.13", "formik": "2.4.6", - "gh-pages": "6.2.0", + "gh-pages": "6.3.0", "intl": "1.2.5", "io-ts-types": "0.5.19", "jest": "29.7.0", @@ -79,15 +79,15 @@ "react": "19.0.0", "react-day-picker": "8.10.1", "react-dom": "19.0.0", - "react-intl": "7.0.4", - "react-router-dom": "7.0.2", + "react-intl": "7.1.0", + "react-router-dom": "7.1.1", "rimraf": "6.0.1", "sass-loader": "16.0.4", "storybook": "8.4.7", "style-loader": "4.0.0", - "typescript": "5.7.2", - "uuid": "11.0.3", - "vite": "6.0.3", + "typescript": "5.7.3", + "uuid": "11.0.5", + "vite": "6.0.7", "vite-plugin-checker": "0.8.0", "vitest": "2.1.8" }, diff --git a/packages/sif-common-soknad-ds/src/pages/error-page/ErrorPage.tsx b/packages/sif-common-soknad-ds/src/pages/error-page/ErrorPage.tsx index a948bb98a1..e3a4f90605 100644 --- a/packages/sif-common-soknad-ds/src/pages/error-page/ErrorPage.tsx +++ b/packages/sif-common-soknad-ds/src/pages/error-page/ErrorPage.tsx @@ -1,3 +1,4 @@ +import { ReactElement } from 'react'; import Block from '@navikt/sif-common-core-ds/src/atoms/block/Block'; import Page from '@navikt/sif-common-core-ds/src/components/page/Page'; import SoknadErrorMessages from '../../components/soknad-error-messages/SoknadErrorMessages'; @@ -7,7 +8,7 @@ import { useSoknadIntl } from '../../hooks/useSoknadIntl'; interface Props { pageTitle?: string; bannerTitle?: string; - contentRenderer?: () => JSX.Element; + contentRenderer?: () => ReactElement; } const ErrorPage = ({ contentRenderer, pageTitle, bannerTitle }: Props) => { const { text } = useSoknadIntl(); diff --git a/packages/sif-common-soknad-ds/src/setup/SoknadApplicationCommonRoutes.tsx b/packages/sif-common-soknad-ds/src/setup/SoknadApplicationCommonRoutes.tsx index 7661e19ff9..91ae61b75c 100644 --- a/packages/sif-common-soknad-ds/src/setup/SoknadApplicationCommonRoutes.tsx +++ b/packages/sif-common-soknad-ds/src/setup/SoknadApplicationCommonRoutes.tsx @@ -1,7 +1,7 @@ -import React from 'react'; +import React, { ReactElement } from 'react'; import { Route, Routes } from 'react-router-dom'; -import ErrorPage from '../pages/error-page/ErrorPage'; import SoknadErrorMessages from '../components/soknad-error-messages/SoknadErrorMessages'; +import ErrorPage from '../pages/error-page/ErrorPage'; export enum GlobalSoknadApplicationRoutes { error = '/feil', @@ -12,9 +12,9 @@ export enum GlobalSoknadApplicationRoutes { interface Props { contentRoutes: React.ReactNode[]; onReset?: () => void; - errorContentRenderer?: () => JSX.Element; - unavailableContentRenderer?: () => JSX.Element; - unknownRouteContentRenderer?: () => JSX.Element; + errorContentRenderer?: () => ReactElement; + unavailableContentRenderer?: () => ReactElement; + unknownRouteContentRenderer?: () => ReactElement; } const SoknadApplicationCommonRoutes = ({ diff --git a/packages/sif-common-ui/CHANGELOG.md b/packages/sif-common-ui/CHANGELOG.md index 9b9bdda34f..e22659dc08 100644 --- a/packages/sif-common-ui/CHANGELOG.md +++ b/packages/sif-common-ui/CHANGELOG.md @@ -1,5 +1,11 @@ # @navikt/sif-common-ui +## 0.9.1 + +### Patch Changes + +- Korrigering i intl-tekster som hadde feil nøkkelref til values + ## 0.9.0 ### Minor Changes diff --git a/packages/sif-common-ui/package.json b/packages/sif-common-ui/package.json index e87139eec4..0346e9baa4 100644 --- a/packages/sif-common-ui/package.json +++ b/packages/sif-common-ui/package.json @@ -1,13 +1,13 @@ { "name": "@navikt/sif-common-ui", "main": "src/index.ts", - "version": "0.9.0", + "version": "0.9.1", "private": true, "type": "module", "dependencies": { - "@navikt/ds-css": "7.8.0", + "@navikt/ds-css": "7.9.1", "@navikt/ds-icons": "3.4.3", - "@navikt/ds-react": "7.8.0", + "@navikt/ds-react": "7.9.1", "@navikt/sif-common-core-ds": "*", "@navikt/sif-common-formik-ds": "*", "@navikt/sif-common-utils": "*", @@ -26,19 +26,19 @@ "@storybook/node-logger": "8.4.7", "@storybook/react": "8.4.7", "@storybook/testing-library": "0.2.2", - "@types/react": "19.0.1", + "@types/react": "19.0.6", "copyfiles": "2.4.1", "date-fns": "3.6.0", "dayjs": "1.11.13", - "globals": "15.13.0", + "globals": "15.14.0", "intl": "1.2.5", "less": "4.2.1", "postcss": "8.4.49", "react": "19.0.0", "react-dom": "19.0.0", - "react-intl": "7.0.4", + "react-intl": "7.1.0", "storybook": "8.4.7", - "typescript": "5.7.2", + "typescript": "5.7.3", "webpack": "5.97.1" }, "scripts": { diff --git a/packages/sif-common-ui/src/components/duration-text/DurationText.tsx b/packages/sif-common-ui/src/components/duration-text/DurationText.tsx index a581549c2b..09fbc46afe 100644 --- a/packages/sif-common-ui/src/components/duration-text/DurationText.tsx +++ b/packages/sif-common-ui/src/components/duration-text/DurationText.tsx @@ -1,6 +1,7 @@ +import { ReactElement } from 'react'; import { IntlShape, useIntl } from 'react-intl'; -import { Duration, durationToDecimalDuration, ensureDuration } from '@navikt/sif-common-utils'; import intlHelper from '@navikt/sif-common-core-ds/src/utils/intlUtils'; +import { Duration, durationToDecimalDuration, ensureDuration } from '@navikt/sif-common-utils'; import { durationTextMessages } from './durationText.messages'; interface DurationTextProps { @@ -60,7 +61,7 @@ export const getDurationString = ( return intlHelper(intl, key, { hours, minutes }); }; -const DurationText = (props: DurationTextProps): JSX.Element => { +const DurationText = (props: DurationTextProps): ReactElement => { const { duration, hideEmptyValues = false, type, fullText } = props; const hours = duration.hours || '0'; diff --git a/packages/sif-common-ui/src/components/duration-text/durationText.messages.ts b/packages/sif-common-ui/src/components/duration-text/durationText.messages.ts index 5060ebd6e1..cfe65897e9 100644 --- a/packages/sif-common-ui/src/components/duration-text/durationText.messages.ts +++ b/packages/sif-common-ui/src/components/duration-text/durationText.messages.ts @@ -21,8 +21,9 @@ const nn: Record = { '@ui.durationText.full.digital': '{hours}:{minutes}', '@ui.durationText.full.decimal': '{time}', '@ui.durationText.full.hours': '{hours, plural, one {# time} other {# timar}}', - '@ui.durationText.full.minutes': '{minutes} minutt', - '@ui.durationText.full.hoursAndMinutes': '{hours, plural, one {# time} other {# timer}} {minutes} minutt', + '@ui.durationText.full.minutes': '{minutes, plural, one {# minutt} other {# minutt}}', + '@ui.durationText.full.hoursAndMinutes': + '{hours, plural, one {# time} other {# timar}} {minutes, plural, one {# minutt} other {# minutt}}', }; export const durationTextMessages = { diff --git a/packages/sif-common-ui/src/inputs/day-selector/daySelector.messages.ts b/packages/sif-common-ui/src/inputs/day-selector/daySelector.messages.ts index 1f852dc516..de6f846952 100644 --- a/packages/sif-common-ui/src/inputs/day-selector/daySelector.messages.ts +++ b/packages/sif-common-ui/src/inputs/day-selector/daySelector.messages.ts @@ -7,8 +7,8 @@ const nb = { const nn: Record = { '@ui.daySelector.antallValgteDager': 'Talet på valgte dagar:', - '@ui.daySelector.plural.dag': '{dager, plural, one {dag} other {dagar}}', - '@ui.daySelector.valgteDager': '{dager} {dager, plural, one {dag} other {dagar}} valgt', + '@ui.daySelector.plural.dag': '{dager, plural, one {dag} other {dager}}', + '@ui.daySelector.valgteDager': '{dager} {dager, plural, one {dag} other {dager}} valgt', '@ui.daySelector.ingenDagerValgt': 'Ingen dagar valgt', }; diff --git a/packages/sif-common-utils/package.json b/packages/sif-common-utils/package.json index 180e45c419..3b4a08b77f 100644 --- a/packages/sif-common-utils/package.json +++ b/packages/sif-common-utils/package.json @@ -10,24 +10,24 @@ "dayjs": "1.11.13", "iso8601-duration": "2.1.2", "lodash": "4.17.21", - "uuid": "11.0.3" + "uuid": "11.0.5" }, "devDependencies": { "@babel/core": "7.26.0", "@babel/preset-env": "7.26.0", "@babel/preset-react": "7.26.3", "@sif/eslint-config": "*", - "@types/node": "22.10.2", - "@types/react": "19.0.1", - "@types/react-dom": "19.0.2", + "@types/node": "22.10.5", + "@types/react": "19.0.6", + "@types/react-dom": "19.0.3", "@types/uuid": "10.0.0", "config": "*", - "globals": "15.13.0", + "globals": "15.14.0", "intl": "1.2.5", "react": "19.0.0", "react-dom": "19.0.0", - "react-intl": "7.0.4", - "typescript": "5.7.2", + "react-intl": "7.1.0", + "typescript": "5.7.3", "vitest": "2.1.8" }, "scripts": { diff --git a/server/package.json b/server/package.json index 73b1d8a19d..94e14b22e5 100644 --- a/server/package.json +++ b/server/package.json @@ -10,13 +10,13 @@ "build": "ncc build ./src/index.ts -o dist -t --no-cache" }, "dependencies": { - "@navikt/nav-dekoratoren-moduler": "3.1.1", + "@navikt/nav-dekoratoren-moduler": "3.1.3", "@navikt/oasis": "3.6.0", "@navikt/sif-common-env": "*", "cookie-parser": "1.4.7", "csp-header": "6.0.0", "express": "4.21.2", - "html-react-parser": "5.2.1", + "html-react-parser": "5.2.2", "http-proxy-middleware": "3.0.3", "jsdom": "25.0.1", "react": "19.0.0", @@ -26,12 +26,12 @@ "@types/cookie-parser": "1.4.8", "@types/express": "5.0.0", "@types/morgan": "1.9.9", - "@types/node": "22.10.2", + "@types/node": "22.10.5", "@vercel/ncc": "0.38.3", "axios": "1.7.9", "morgan": "1.10.0", "prettier": "3.4.2", - "typescript": "5.7.2", + "typescript": "5.7.3", "winston": "3.17.0" }, "packageManager": "yarn@4.5.0" diff --git a/yarn.lock b/yarn.lock index 07c65e0951..cb677beca8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,54 @@ __metadata: version: 8 cacheKey: 10 +"@actions/core@npm:^1.11.1": + version: 1.11.1 + resolution: "@actions/core@npm:1.11.1" + dependencies: + "@actions/exec": "npm:^1.1.1" + "@actions/http-client": "npm:^2.0.1" + checksum: 10/94f260e33607cc16567ce4c88014f069cd7da92baaa443b72cff80fdf4f1dcd18192e135df0d51ec29e8b82cfe214218715d482f2a7804efa5095737d1245f38 + languageName: node + linkType: hard + +"@actions/exec@npm:^1.1.1": + version: 1.1.1 + resolution: "@actions/exec@npm:1.1.1" + dependencies: + "@actions/io": "npm:^1.0.1" + checksum: 10/c04bd25191e522841c7e17862d70099de8db61278d2b4c744b69ac0197a48f85c75dba548e1c29c695c4cc5363d558846b4dcd3db9013463c18ba8cf36497c6d + languageName: node + linkType: hard + +"@actions/github@npm:^6.0.0": + version: 6.0.0 + resolution: "@actions/github@npm:6.0.0" + dependencies: + "@actions/http-client": "npm:^2.2.0" + "@octokit/core": "npm:^5.0.1" + "@octokit/plugin-paginate-rest": "npm:^9.0.0" + "@octokit/plugin-rest-endpoint-methods": "npm:^10.0.0" + checksum: 10/81831a78377175d8825fc0b94247ff366c0e87ad1dfa48df9b30b8659506f216dcf1e2d3124fcd318839b92c24ba20165e238b3cc11a34db89c69c40825e9ccf + languageName: node + linkType: hard + +"@actions/http-client@npm:^2.0.1, @actions/http-client@npm:^2.2.0": + version: 2.2.3 + resolution: "@actions/http-client@npm:2.2.3" + dependencies: + tunnel: "npm:^0.0.6" + undici: "npm:^5.25.4" + checksum: 10/0c0a540c79e50f795d214f696710bb9c50bdf5bb1458be288140f2aae3686adec73fdb464c43da5ef94f985ac7736273efef21cb5ba5a3b09e85b403d852c04b + languageName: node + linkType: hard + +"@actions/io@npm:^1.0.1": + version: 1.1.3 + resolution: "@actions/io@npm:1.1.3" + checksum: 10/4de44e8d428ba9f20049c844b37ecd486b589ed201f8cc8c5b550a9e4c72d1f594271ee2a7a6cfe8a42ebfb5dd527ef65016454656db391a353d41eab4f147e1 + languageName: node + linkType: hard + "@adobe/css-tools@npm:^4.4.0": version: 4.4.1 resolution: "@adobe/css-tools@npm:4.4.1" @@ -19,22 +67,22 @@ __metadata: languageName: node linkType: hard -"@amplitude/analytics-browser@npm:2.11.9": - version: 2.11.9 - resolution: "@amplitude/analytics-browser@npm:2.11.9" +"@amplitude/analytics-browser@npm:2.11.11": + version: 2.11.11 + resolution: "@amplitude/analytics-browser@npm:2.11.11" dependencies: - "@amplitude/analytics-client-common": "npm:^2.3.5" - "@amplitude/analytics-core": "npm:^2.5.4" + "@amplitude/analytics-client-common": "npm:^2.3.7" + "@amplitude/analytics-core": "npm:^2.5.5" "@amplitude/analytics-remote-config": "npm:^0.4.0" "@amplitude/analytics-types": "npm:^2.8.4" "@amplitude/plugin-autocapture-browser": "npm:^1.0.2" - "@amplitude/plugin-page-view-tracking-browser": "npm:^2.3.5" + "@amplitude/plugin-page-view-tracking-browser": "npm:^2.3.7" tslib: "npm:^2.4.1" - checksum: 10/26b8a1e4289548502fac8d3c51f4da707395c033f828711f02a004395eec5151918c35c24c83ad814cab2a296eb6983c40b6e4968a12ef18e8c771c080be2413 + checksum: 10/103f7117f5ac1254b17f6aa6a9434180269d786d95d572a04c6fc1210ae273c785f9a876fab1d00502fadd138dea2d0ef6bf55c2da84644a5ad8fca312904215 languageName: node linkType: hard -"@amplitude/analytics-client-common@npm:>=1 <3, @amplitude/analytics-client-common@npm:^2.3.5": +"@amplitude/analytics-client-common@npm:>=1 <3": version: 2.3.5 resolution: "@amplitude/analytics-client-common@npm:2.3.5" dependencies: @@ -46,6 +94,18 @@ __metadata: languageName: node linkType: hard +"@amplitude/analytics-client-common@npm:^2.3.7": + version: 2.3.7 + resolution: "@amplitude/analytics-client-common@npm:2.3.7" + dependencies: + "@amplitude/analytics-connector": "npm:^1.4.8" + "@amplitude/analytics-core": "npm:^2.5.5" + "@amplitude/analytics-types": "npm:^2.8.4" + tslib: "npm:^2.4.1" + checksum: 10/c1ecb7493bc5a7cd713180ea26f745865bf53589b0eef1f2792bb22e0075e6153871b09494d35e48c33e14a69fe7c05012dff69cc4015d954a7e7c08af23b832 + languageName: node + linkType: hard + "@amplitude/analytics-connector@npm:^1.4.8": version: 1.6.2 resolution: "@amplitude/analytics-connector@npm:1.6.2" @@ -65,6 +125,16 @@ __metadata: languageName: node linkType: hard +"@amplitude/analytics-core@npm:^2.5.5": + version: 2.5.5 + resolution: "@amplitude/analytics-core@npm:2.5.5" + dependencies: + "@amplitude/analytics-types": "npm:^2.8.4" + tslib: "npm:^2.4.1" + checksum: 10/c68e3fb614d44413914045ad604598a6cfcbf7e0d25df9c6a0f943b196436b45e01cf5a1fa0979bf8f3c05e9c284664c09e259718972929d1b0259ab59d8be01 + languageName: node + linkType: hard + "@amplitude/analytics-remote-config@npm:^0.4.0": version: 0.4.1 resolution: "@amplitude/analytics-remote-config@npm:0.4.1" @@ -105,14 +175,14 @@ __metadata: languageName: node linkType: hard -"@amplitude/plugin-page-view-tracking-browser@npm:^2.3.5": - version: 2.3.5 - resolution: "@amplitude/plugin-page-view-tracking-browser@npm:2.3.5" +"@amplitude/plugin-page-view-tracking-browser@npm:^2.3.7": + version: 2.3.7 + resolution: "@amplitude/plugin-page-view-tracking-browser@npm:2.3.7" dependencies: - "@amplitude/analytics-client-common": "npm:^2.3.5" + "@amplitude/analytics-client-common": "npm:^2.3.7" "@amplitude/analytics-types": "npm:^2.8.4" tslib: "npm:^2.4.1" - checksum: 10/83eaaea70e9ccd529be14c887c98d1f1e5be217eceaac0fe6bf8b5a307574a109e6c0b191efa5e4179e793fbea1dd0e65ce8d649b292fd3ff009fc60930f0cfa + checksum: 10/e07570e34238dc8be51b80288fbfb01234b34bc1d5c6c90f9724c5c17a5b7a56e47b256659dce56c7c0b02f8f26f71027589848fcdebe7eb1fcb908ccd704ac0 languageName: node linkType: hard @@ -293,7 +363,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.25.9": +"@babel/helper-module-imports@npm:^7.18.6, @babel/helper-module-imports@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-module-imports@npm:7.25.9" dependencies: @@ -1522,7 +1592,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:7.26.0, @babel/preset-typescript@npm:^7.23.3, @babel/preset-typescript@npm:^7.24.1": +"@babel/preset-typescript@npm:7.26.0, @babel/preset-typescript@npm:^7.23.3, @babel/preset-typescript@npm:^7.24.1, @babel/preset-typescript@npm:^7.26.0": version: 7.26.0 resolution: "@babel/preset-typescript@npm:7.26.0" dependencies: @@ -1632,11 +1702,11 @@ __metadata: languageName: node linkType: hard -"@changesets/apply-release-plan@npm:^7.0.6": - version: 7.0.6 - resolution: "@changesets/apply-release-plan@npm:7.0.6" +"@changesets/apply-release-plan@npm:^7.0.7": + version: 7.0.7 + resolution: "@changesets/apply-release-plan@npm:7.0.7" dependencies: - "@changesets/config": "npm:^3.0.4" + "@changesets/config": "npm:^3.0.5" "@changesets/get-version-range-type": "npm:^0.4.0" "@changesets/git": "npm:^3.0.2" "@changesets/should-skip-package": "npm:^0.1.1" @@ -1649,7 +1719,7 @@ __metadata: prettier: "npm:^2.7.1" resolve-from: "npm:^5.0.0" semver: "npm:^7.5.3" - checksum: 10/98e6d87eed744e26bbca9032bad225a9c29da2189fa37d2cc3fa877b9e7e4dbb1860b56259faf426af470db445471e888ac26978e1380d96e9e917ab0c54259f + checksum: 10/665490b0739075c50f037ae2bd4e8f7ea2c8815c120cafe91f56f15057f1e0a6f9088dc99e5e249e9c70502f072c8b93fca9f4f7173b9843c2e13a62b5931129 languageName: node linkType: hard @@ -1676,17 +1746,17 @@ __metadata: languageName: node linkType: hard -"@changesets/cli@npm:^2.27.10": - version: 2.27.10 - resolution: "@changesets/cli@npm:2.27.10" +"@changesets/cli@npm:^2.27.11": + version: 2.27.11 + resolution: "@changesets/cli@npm:2.27.11" dependencies: - "@changesets/apply-release-plan": "npm:^7.0.6" + "@changesets/apply-release-plan": "npm:^7.0.7" "@changesets/assemble-release-plan": "npm:^6.0.5" "@changesets/changelog-git": "npm:^0.2.0" - "@changesets/config": "npm:^3.0.4" + "@changesets/config": "npm:^3.0.5" "@changesets/errors": "npm:^0.2.0" "@changesets/get-dependents-graph": "npm:^2.1.2" - "@changesets/get-release-plan": "npm:^4.0.5" + "@changesets/get-release-plan": "npm:^4.0.6" "@changesets/git": "npm:^3.0.2" "@changesets/logger": "npm:^0.1.1" "@changesets/pre": "npm:^2.0.1" @@ -1697,7 +1767,7 @@ __metadata: "@manypkg/get-packages": "npm:^1.1.3" ansi-colors: "npm:^4.1.3" ci-info: "npm:^3.7.0" - enquirer: "npm:^2.3.0" + enquirer: "npm:^2.4.1" external-editor: "npm:^3.1.0" fs-extra: "npm:^7.0.1" mri: "npm:^1.2.0" @@ -1710,13 +1780,13 @@ __metadata: term-size: "npm:^2.1.0" bin: changeset: bin.js - checksum: 10/a0d95aa88f88e952c34aba8f6a36cbc7bdeba60bdfbfb30704532d74eecfa8c0d97ec5f0d16c4ca4cac9d9a1b5f3b34e29dafd3fb183013ce35ccc0840e707e3 + checksum: 10/9072efec5e23ce71095462c8b8cda5d44adbe04dca68d36d5fd3d8eedaf9de39bd386840f3a57dfef87d3e3ca065cabe2d0aaaf8cf47a9ed743340c723e451ac languageName: node linkType: hard -"@changesets/config@npm:^3.0.4": - version: 3.0.4 - resolution: "@changesets/config@npm:3.0.4" +"@changesets/config@npm:^3.0.5": + version: 3.0.5 + resolution: "@changesets/config@npm:3.0.5" dependencies: "@changesets/errors": "npm:^0.2.0" "@changesets/get-dependents-graph": "npm:^2.1.2" @@ -1725,7 +1795,7 @@ __metadata: "@manypkg/get-packages": "npm:^1.1.3" fs-extra: "npm:^7.0.1" micromatch: "npm:^4.0.8" - checksum: 10/dc59f640bca8e4c88f76f187c8ca9ebae4cdf152559473da9a2193bc5f2ebb9c3709560a8c381855a14858ece63d23000e043ff01c82572fe053f3d13481b797 + checksum: 10/ebb6e5660c26cfd9c499505fdf5c0289b238fa8f6a7ed68d9eae56283d9f661d302d759155bdaff273a8de870fb2cd2dbb9cef62a64c4b4a869745f0e12eae9d languageName: node linkType: hard @@ -1750,17 +1820,17 @@ __metadata: languageName: node linkType: hard -"@changesets/get-release-plan@npm:^4.0.5": - version: 4.0.5 - resolution: "@changesets/get-release-plan@npm:4.0.5" +"@changesets/get-release-plan@npm:^4.0.6": + version: 4.0.6 + resolution: "@changesets/get-release-plan@npm:4.0.6" dependencies: "@changesets/assemble-release-plan": "npm:^6.0.5" - "@changesets/config": "npm:^3.0.4" + "@changesets/config": "npm:^3.0.5" "@changesets/pre": "npm:^2.0.1" "@changesets/read": "npm:^0.6.2" "@changesets/types": "npm:^6.0.0" "@manypkg/get-packages": "npm:^1.1.3" - checksum: 10/f6e7c59d78a8f57f46843153b1113ff312e10fdc61930752b399a2862259c17ea69c44a67fff84961a9c73ac74a7a3ae0cd409da8b41e8f8ccb2d331884627e4 + checksum: 10/85ac96876d34e4f7830f07753c64309e2e2d07d7d5843f502c25f6bc3bd3f9b4e1d355d82a979b68fabe37b6efe664de85cdce241bfa374ef3439bbbb9f840a0 languageName: node linkType: hard @@ -1866,9 +1936,9 @@ __metadata: languageName: node linkType: hard -"@chromatic-com/storybook@npm:3.2.2": - version: 3.2.2 - resolution: "@chromatic-com/storybook@npm:3.2.2" +"@chromatic-com/storybook@npm:3.2.3, @chromatic-com/storybook@npm:^3.2.3": + version: 3.2.3 + resolution: "@chromatic-com/storybook@npm:3.2.3" dependencies: chromatic: "npm:^11.15.0" filesize: "npm:^10.0.12" @@ -1877,7 +1947,7 @@ __metadata: strip-ansi: "npm:^7.1.0" peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - checksum: 10/71338edf56cdbc855074c78981f2e1612b364cd864fa99bbda5c0aad147769b9f476de2fd76816102fd504efc5c0c54ba559d5ac9e3828d53278fe7000863d54 + checksum: 10/6aa32ff8a227c5ada0667457a36d5db1946f9d89b8fb64153150445c8b67f26647aa48a6afce21f6dc2cad4905418f37c2fd0b12d26c3a42a36edf45b52efb7b languageName: node linkType: hard @@ -2153,22 +2223,6 @@ __metadata: languageName: node linkType: hard -"@emotion/is-prop-valid@npm:^0.8.2": - version: 0.8.8 - resolution: "@emotion/is-prop-valid@npm:0.8.8" - dependencies: - "@emotion/memoize": "npm:0.7.4" - checksum: 10/e85bdeb9d9d23de422f271e0f5311a0142b15055bb7e610440dbf250f0cdfd049df88af72a49e2c6081954481f1cbeca9172e2116ff536b38229397dfbed8082 - languageName: node - linkType: hard - -"@emotion/memoize@npm:0.7.4": - version: 0.7.4 - resolution: "@emotion/memoize@npm:0.7.4" - checksum: 10/4e3920d4ec95995657a37beb43d3f4b7d89fed6caa2b173a4c04d10482d089d5c3ea50bbc96618d918b020f26ed6e9c4026bbd45433566576c1f7b056c3271dc - languageName: node - linkType: hard - "@emotion/memoize@npm:^0.8.1": version: 0.8.1 resolution: "@emotion/memoize@npm:0.8.1" @@ -2206,6 +2260,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/aix-ppc64@npm:0.24.2" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/android-arm64@npm:0.18.20" @@ -2227,6 +2288,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-arm64@npm:0.24.2" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/android-arm@npm:0.18.20" @@ -2248,6 +2316,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-arm@npm:0.24.2" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/android-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/android-x64@npm:0.18.20" @@ -2269,6 +2344,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-x64@npm:0.24.2" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "@esbuild/darwin-arm64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/darwin-arm64@npm:0.18.20" @@ -2290,6 +2372,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/darwin-arm64@npm:0.24.2" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/darwin-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/darwin-x64@npm:0.18.20" @@ -2311,6 +2400,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/darwin-x64@npm:0.24.2" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@esbuild/freebsd-arm64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/freebsd-arm64@npm:0.18.20" @@ -2332,6 +2428,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/freebsd-arm64@npm:0.24.2" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/freebsd-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/freebsd-x64@npm:0.18.20" @@ -2353,6 +2456,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/freebsd-x64@npm:0.24.2" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/linux-arm64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-arm64@npm:0.18.20" @@ -2374,6 +2484,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-arm64@npm:0.24.2" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/linux-arm@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-arm@npm:0.18.20" @@ -2395,6 +2512,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-arm@npm:0.24.2" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-ia32@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-ia32@npm:0.18.20" @@ -2416,6 +2540,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ia32@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-ia32@npm:0.24.2" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.14.54": version: 0.14.54 resolution: "@esbuild/linux-loong64@npm:0.14.54" @@ -2444,6 +2575,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-loong64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-loong64@npm:0.24.2" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + "@esbuild/linux-mips64el@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-mips64el@npm:0.18.20" @@ -2465,6 +2603,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-mips64el@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-mips64el@npm:0.24.2" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "@esbuild/linux-ppc64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-ppc64@npm:0.18.20" @@ -2486,6 +2631,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ppc64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-ppc64@npm:0.24.2" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/linux-riscv64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-riscv64@npm:0.18.20" @@ -2507,6 +2659,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-riscv64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-riscv64@npm:0.24.2" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "@esbuild/linux-s390x@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-s390x@npm:0.18.20" @@ -2528,6 +2687,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-s390x@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-s390x@npm:0.24.2" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "@esbuild/linux-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/linux-x64@npm:0.18.20" @@ -2549,6 +2715,20 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-x64@npm:0.24.2" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/netbsd-arm64@npm:0.24.2" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/netbsd-x64@npm:0.18.20" @@ -2570,6 +2750,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/netbsd-x64@npm:0.24.2" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/openbsd-arm64@npm:0.24.0": version: 0.24.0 resolution: "@esbuild/openbsd-arm64@npm:0.24.0" @@ -2577,6 +2764,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/openbsd-arm64@npm:0.24.2" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/openbsd-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/openbsd-x64@npm:0.18.20" @@ -2598,6 +2792,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/openbsd-x64@npm:0.24.2" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/sunos-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/sunos-x64@npm:0.18.20" @@ -2619,6 +2820,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/sunos-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/sunos-x64@npm:0.24.2" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + "@esbuild/win32-arm64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/win32-arm64@npm:0.18.20" @@ -2640,6 +2848,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-arm64@npm:0.24.2" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/win32-ia32@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/win32-ia32@npm:0.18.20" @@ -2661,6 +2876,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-ia32@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-ia32@npm:0.24.2" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/win32-x64@npm:0.18.20": version: 0.18.20 resolution: "@esbuild/win32-x64@npm:0.18.20" @@ -2682,6 +2904,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-x64@npm:0.24.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.1 resolution: "@eslint-community/eslint-utils@npm:4.4.1" @@ -2711,12 +2940,12 @@ __metadata: languageName: node linkType: hard -"@eslint/core@npm:^0.9.0": - version: 0.9.1 - resolution: "@eslint/core@npm:0.9.1" +"@eslint/core@npm:^0.10.0": + version: 0.10.0 + resolution: "@eslint/core@npm:0.10.0" dependencies: "@types/json-schema": "npm:^7.0.15" - checksum: 10/f2263f8f94fdf84fc34573e027de98f1fce6287120513ae672ddf0652c75b9fa77c314d565628fc58e0a6f959766acc34c8191f9b94f1757b910408ffa04adde + checksum: 10/de41d7fa5dc468b70fb15c72829096939fc0217c41b8519af4620bc1089cb42539a15325c4c3ee3832facac1836c8c944c4a0c4d0cc8b33ffd8e95962278ae14 languageName: node linkType: hard @@ -2737,10 +2966,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.17.0": - version: 9.17.0 - resolution: "@eslint/js@npm:9.17.0" - checksum: 10/1a89e62f5c50e75d44565b7f3b91701455a999132c991e10bac59c118fbb54bdd54be22b9bda1ac730f78a2e64604403d65ce5dd7726d80b2632982cfc3d84ac +"@eslint/js@npm:9.18.0": + version: 9.18.0 + resolution: "@eslint/js@npm:9.18.0" + checksum: 10/364a7d030dad9dbda1458d8dbcea0199fe7d48bcfefe4b49389df6c45cdc5a2449f70e5d8a794e46ed9fb34af3fe5a3f53e30020d306b6ee791e2a1b2b9fa25f languageName: node linkType: hard @@ -2751,12 +2980,20 @@ __metadata: languageName: node linkType: hard -"@eslint/plugin-kit@npm:^0.2.3": - version: 0.2.4 - resolution: "@eslint/plugin-kit@npm:0.2.4" +"@eslint/plugin-kit@npm:^0.2.5": + version: 0.2.5 + resolution: "@eslint/plugin-kit@npm:0.2.5" dependencies: + "@eslint/core": "npm:^0.10.0" levn: "npm:^0.4.1" - checksum: 10/e34d02ea1dccd716e51369620263a4b2167aff3c0510ed776e21336cc3ad7158087449a76931baf07cdc33810cb6919db375f2e9f409435d2c6e0dd5f4786b25 + checksum: 10/82d0142bc7054587bde4f75c2c517f477df7c320e4bdb47a4d5f766899a313ce65e9ce5d59428178d0be473a95292065053f69637042546b811ad89079781cbc + languageName: node + linkType: hard + +"@fastify/busboy@npm:^2.0.0": + version: 2.1.1 + resolution: "@fastify/busboy@npm:2.1.1" + checksum: 10/2bb8a7eca8289ed14c9eb15239bc1019797454624e769b39a0b90ed204d032403adc0f8ed0d2aef8a18c772205fa7808cf5a1b91f21c7bfc7b6032150b1062c5 languageName: node linkType: hard @@ -2819,84 +3056,84 @@ __metadata: languageName: node linkType: hard -"@formatjs/ecma402-abstract@npm:2.3.1": - version: 2.3.1 - resolution: "@formatjs/ecma402-abstract@npm:2.3.1" +"@formatjs/ecma402-abstract@npm:2.3.2": + version: 2.3.2 + resolution: "@formatjs/ecma402-abstract@npm:2.3.2" dependencies: - "@formatjs/fast-memoize": "npm:2.2.5" - "@formatjs/intl-localematcher": "npm:0.5.9" + "@formatjs/fast-memoize": "npm:2.2.6" + "@formatjs/intl-localematcher": "npm:0.5.10" decimal.js: "npm:10" tslib: "npm:2" - checksum: 10/b88814e060a6875994719d9795f79332017ddb8ee6a619e8e5292350ca1b7e98a7634fe7c427b0698228309a62d03381f1c4e4c5b1f00862353d5ace609ed0de + checksum: 10/db31d3d9b36033ea11ec905638ac0c1d2282f5bf53c9c06ee1d0ffd924f4bf64030702c92b56261756c4998dfa6235462689d8eda82d5913f2d7cf636a9416ae languageName: node linkType: hard -"@formatjs/fast-memoize@npm:2.2.5": - version: 2.2.5 - resolution: "@formatjs/fast-memoize@npm:2.2.5" +"@formatjs/fast-memoize@npm:2.2.6": + version: 2.2.6 + resolution: "@formatjs/fast-memoize@npm:2.2.6" dependencies: tslib: "npm:2" - checksum: 10/1009b9f782c7b8c0530cde86a68d174bc8055bbf3207eb662429016c2f793bef534e950a13d012861826860ec97d0240fd89eda619267a8191270f581c025f1b + checksum: 10/efa5601dddbd94412ee567d5d067dfd206afa2d08553435f6938e69acba3309b83b9b15021cd30550d5fb93817a53b7691098a11a73f621c2d9318efad49fd76 languageName: node linkType: hard -"@formatjs/icu-messageformat-parser@npm:2.9.7": - version: 2.9.7 - resolution: "@formatjs/icu-messageformat-parser@npm:2.9.7" +"@formatjs/icu-messageformat-parser@npm:2.9.8": + version: 2.9.8 + resolution: "@formatjs/icu-messageformat-parser@npm:2.9.8" dependencies: - "@formatjs/ecma402-abstract": "npm:2.3.1" - "@formatjs/icu-skeleton-parser": "npm:1.8.11" + "@formatjs/ecma402-abstract": "npm:2.3.2" + "@formatjs/icu-skeleton-parser": "npm:1.8.12" tslib: "npm:2" - checksum: 10/0182217e2fc25d66c104356b690c719996bd139a41c690f3237c530cb8a0cab117aceccc26f65a7280b643319966c17ca88fdbef67466fdf11f934be44347631 + checksum: 10/dbaf500676cb48ec4491b01d6688800e480f8f5c788ea658da06b6e56f83d54efbcafea1ca12ba83a5485a567c7ab393e36c04b59e6d194c0f6eba22aa44bc4c languageName: node linkType: hard -"@formatjs/icu-skeleton-parser@npm:1.8.11": - version: 1.8.11 - resolution: "@formatjs/icu-skeleton-parser@npm:1.8.11" +"@formatjs/icu-skeleton-parser@npm:1.8.12": + version: 1.8.12 + resolution: "@formatjs/icu-skeleton-parser@npm:1.8.12" dependencies: - "@formatjs/ecma402-abstract": "npm:2.3.1" + "@formatjs/ecma402-abstract": "npm:2.3.2" tslib: "npm:2" - checksum: 10/b42d61c6b6f448123307dbe8c5fadbf99dff08bc00241354cd7e0a6ab7dbbf87b2a240833a7cbfa59bb699f79b8d0190a258a0497e67df10401209a81be284db + checksum: 10/3026d45fc4edf1c1e934dfeec6c82bd60d6a9cf87416bb2d38a46d04956c835f456155295d138cceaaedd767bcff039f9041a1d45a55ec1ec2352f2d9db74fda languageName: node linkType: hard -"@formatjs/intl-localematcher@npm:0.5.9": - version: 0.5.9 - resolution: "@formatjs/intl-localematcher@npm:0.5.9" +"@formatjs/intl-localematcher@npm:0.5.10": + version: 0.5.10 + resolution: "@formatjs/intl-localematcher@npm:0.5.10" dependencies: tslib: "npm:2" - checksum: 10/79b0009dc997dab90619bc0c1405bc541c288eeac10eb5f1aef8d6526611fca71de789a4b62efe781c0c2ccafba9f0a1da4088af436b84e439681df9cd657d7c + checksum: 10/119e36974607d5d3586570db93358c1f316c0736b83acc81dce88468435a9519a9e58a5abe6ed3078ffe40d6b4ad4613c6371e2a39cd570c9b6f561372ffb14d languageName: node linkType: hard -"@formatjs/intl-pluralrules@npm:5.4.1": - version: 5.4.1 - resolution: "@formatjs/intl-pluralrules@npm:5.4.1" +"@formatjs/intl-pluralrules@npm:5.4.2": + version: 5.4.2 + resolution: "@formatjs/intl-pluralrules@npm:5.4.2" dependencies: - "@formatjs/ecma402-abstract": "npm:2.3.1" - "@formatjs/intl-localematcher": "npm:0.5.9" + "@formatjs/ecma402-abstract": "npm:2.3.2" + "@formatjs/intl-localematcher": "npm:0.5.10" decimal.js: "npm:10" tslib: "npm:2" - checksum: 10/4d78db05e3492093a661ed65516f3b2967890ad7ed9d81e3d6450d7f3fdc2ea8b48f82aae53eb13f21afcc9a742374a4b1eaedd5af41f30aeb6b186335ba0afc + checksum: 10/b9b8556cb22d16720264176f8b81315e2c1eb0418239ec2951870cbee66aa69a78d5204aa39547439cd01dd467d225b878787049b380bea38ebdfbb3d3e2717a languageName: node linkType: hard -"@formatjs/intl@npm:3.0.4": - version: 3.0.4 - resolution: "@formatjs/intl@npm:3.0.4" +"@formatjs/intl@npm:3.1.0": + version: 3.1.0 + resolution: "@formatjs/intl@npm:3.1.0" dependencies: - "@formatjs/ecma402-abstract": "npm:2.3.1" - "@formatjs/fast-memoize": "npm:2.2.5" - "@formatjs/icu-messageformat-parser": "npm:2.9.7" - intl-messageformat: "npm:10.7.10" + "@formatjs/ecma402-abstract": "npm:2.3.2" + "@formatjs/fast-memoize": "npm:2.2.6" + "@formatjs/icu-messageformat-parser": "npm:2.9.8" + intl-messageformat: "npm:10.7.11" tslib: "npm:2" peerDependencies: typescript: 5 peerDependenciesMeta: typescript: optional: true - checksum: 10/cbc8f8e340ea8ee74e99cf0a650ee6cd404412f4004310a8cc2d90e70701ae0ccdde3c98132a8c4f6f14f13a0216ab11610d638da9c20150b12c70695d5f3377 + checksum: 10/90aca0e739f77dc4ceba5466de355210cba8036deb41fa358500e48a74a7ca2041b2b2381051fac8e83ae0e6cd463fc8caa9c05b92fd0770f05479ca29aae0fd languageName: node linkType: hard @@ -2957,12 +3194,12 @@ __metadata: languageName: node linkType: hard -"@hookform/resolvers@npm:3.9.1": - version: 3.9.1 - resolution: "@hookform/resolvers@npm:3.9.1" +"@hookform/resolvers@npm:3.10.0": + version: 3.10.0 + resolution: "@hookform/resolvers@npm:3.10.0" peerDependencies: react-hook-form: ^7.0.0 - checksum: 10/4e7a24f79ead48db5c869c17b5f47412a7d628939f743bdc1248ea3a291b1a9dd777cd02f84326e91d258283a6351566f13bca5cb30f996e5a9db7ee490b5cc5 + checksum: 10/92d3601b2cedb4f52e9e086cc4bd6a20b493f59ecfb1af8b8e465057f0445aa83cf5a6d482a831cdf5d1321a73269173633222eefde0adb515d3820c1525b0cb languageName: node linkType: hard @@ -3603,6 +3840,15 @@ __metadata: languageName: node linkType: hard +"@keyv/serialize@npm:^1.0.2": + version: 1.0.2 + resolution: "@keyv/serialize@npm:1.0.2" + dependencies: + buffer: "npm:^6.0.3" + checksum: 10/6a42a5778a6b4542f6903ba7e6a17c5bd116441798d75c95fba9908c76c7606db527fad710b5c54abc6175e49b1bbaaafe3b836ad4b91e1af701394134f1d504 + languageName: node + linkType: hard + "@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.1.0, @lezer/common@npm:^1.2.0": version: 1.2.3 resolution: "@lezer/common@npm:1.2.3" @@ -3684,6 +3930,59 @@ __metadata: languageName: node linkType: hard +"@microsoft/api-extractor-model@npm:7.30.1": + version: 7.30.1 + resolution: "@microsoft/api-extractor-model@npm:7.30.1" + dependencies: + "@microsoft/tsdoc": "npm:~0.15.1" + "@microsoft/tsdoc-config": "npm:~0.17.1" + "@rushstack/node-core-library": "npm:5.10.1" + checksum: 10/c805be8aa4e1023da06caab5af5a931ab9b7d69522a7547df05dcb9c66083af1f68866b0bb2b734778801b0b6d342e2b64e24fe4bfae39137a29538cd4601dcc + languageName: node + linkType: hard + +"@microsoft/api-extractor@npm:7.48.1": + version: 7.48.1 + resolution: "@microsoft/api-extractor@npm:7.48.1" + dependencies: + "@microsoft/api-extractor-model": "npm:7.30.1" + "@microsoft/tsdoc": "npm:~0.15.1" + "@microsoft/tsdoc-config": "npm:~0.17.1" + "@rushstack/node-core-library": "npm:5.10.1" + "@rushstack/rig-package": "npm:0.5.3" + "@rushstack/terminal": "npm:0.14.4" + "@rushstack/ts-command-line": "npm:4.23.2" + lodash: "npm:~4.17.15" + minimatch: "npm:~3.0.3" + resolve: "npm:~1.22.1" + semver: "npm:~7.5.4" + source-map: "npm:~0.6.1" + typescript: "npm:5.4.2" + bin: + api-extractor: bin/api-extractor + checksum: 10/18b9dc1820d6489049d9e6db48f3eeee6028521ee90e067b155b42e38fe03e1048e914279fab0d0993e6f07f0c257579afa0b04a1145ec50b54e44f21ae9736a + languageName: node + linkType: hard + +"@microsoft/tsdoc-config@npm:0.17.1, @microsoft/tsdoc-config@npm:~0.17.1": + version: 0.17.1 + resolution: "@microsoft/tsdoc-config@npm:0.17.1" + dependencies: + "@microsoft/tsdoc": "npm:0.15.1" + ajv: "npm:~8.12.0" + jju: "npm:~1.4.0" + resolve: "npm:~1.22.2" + checksum: 10/19f57b752413916c7ad14466650f48ba1acaf674411b6a44065e93f762d391e501cb553eeb8ae3834f1f1f064ddc83a26bdbd8026c9b2c0c194fe90818078eb9 + languageName: node + linkType: hard + +"@microsoft/tsdoc@npm:0.15.1, @microsoft/tsdoc@npm:~0.15.1": + version: 0.15.1 + resolution: "@microsoft/tsdoc@npm:0.15.1" + checksum: 10/1a92612883088fe184dba596e7ba7a0daef0e6981caeca22bad6ad551d2247294f12e368537d0d8192525cf5743f7f15fcc2ad7b3b849f26a09a15ffdd89fd0c + languageName: node + linkType: hard + "@mswjs/data@npm:0.16.2": version: 0.16.2 resolution: "@mswjs/data@npm:0.16.2" @@ -3723,10 +4022,10 @@ __metadata: languageName: node linkType: hard -"@navikt/aksel-icons@npm:7.8.0, @navikt/aksel-icons@npm:^7.8.0": - version: 7.8.0 - resolution: "@navikt/aksel-icons@npm:7.8.0::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40navikt%2Faksel-icons%2F7.8.0%2F14f477c1a7b0ffff50549a31b46a372280e33393" - checksum: 10/4271a49d1a39cc1f7de969abdb98abb3e020698ddb9023863ce2ed3e8add51b2f1cbba6e326d5239124c2b348558954dfb8504779c02ccc252daea83aa205374 +"@navikt/aksel-icons@npm:7.9.1, @navikt/aksel-icons@npm:^7.9.1": + version: 7.9.1 + resolution: "@navikt/aksel-icons@npm:7.9.1::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40navikt%2Faksel-icons%2F7.9.1%2F10d623cfc6f0786e7ae238ddf73491be74afe282" + checksum: 10/c5ecda9e4c251cac74626fdf8406d82fd35b2a42087ce7de730082f885ed35e9b85e6946bd5088dcedb9bffc3ee5e2a7d8d70c71ef2886460f0af472679cf953 languageName: node linkType: hard @@ -3734,15 +4033,15 @@ __metadata: version: 0.0.0-use.local resolution: "@navikt/appstatus-react-ds@workspace:packages/appstatus-react-ds" dependencies: - "@navikt/ds-css": "npm:7.8.0" - "@navikt/ds-react": "npm:7.8.0" + "@navikt/ds-css": "npm:7.9.1" + "@navikt/ds-react": "npm:7.9.1" "@navikt/sif-common-hooks": "npm:*" "@portabletext/react": "npm:3.2.0" - "@sanity/client": "npm:6.24.1" + "@sanity/client": "npm:6.24.3" "@sif/eslint-config": "npm:*" - "@types/node": "npm:22.10.2" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/node": "npm:22.10.5" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" config: "npm:*" copyfiles: "npm:2.4.1" postcss: "npm:8.4.49" @@ -3750,7 +4049,7 @@ __metadata: react: "npm:19.0.0" react-dom: "npm:19.0.0" rimraf: "npm:6.0.1" - sass: "npm:1.83.0" + sass: "npm:1.83.1" languageName: unknown linkType: soft @@ -3762,11 +4061,11 @@ __metadata: "@grafana/faro-web-sdk": "npm:1.12.2" "@grafana/faro-web-tracing": "npm:1.12.2" "@navikt/appstatus-react-ds": "npm:*" - "@navikt/ds-css": "npm:7.8.0" + "@navikt/ds-css": "npm:7.9.1" "@navikt/ds-icons": "npm:3.4.3" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" - "@navikt/nav-dekoratoren-moduler": "npm:3.1.1" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" + "@navikt/nav-dekoratoren-moduler": "npm:3.1.3" "@navikt/next-logger": "npm:1.35.0" "@navikt/oasis": "npm:3.6.0" "@navikt/sif-app-register": "npm:*" @@ -3784,48 +4083,48 @@ __metadata: "@storybook/nextjs": "npm:8.4.7" "@storybook/react": "npm:8.4.7" "@storybook/test": "npm:8.4.7" - "@types/react": "npm:19.0.1" + "@types/react": "npm:19.0.6" axios: "npm:1.7.9" classnames: "npm:2.5.1" csp-header: "npm:6.0.0" date-fns: "npm:3.6.0" dayjs: "npm:1.11.13" - eslint: "npm:9.17.0" - eslint-plugin-storybook: "npm:0.11.1" + eslint: "npm:9.18.0" + eslint-plugin-storybook: "npm:0.11.2" formik: "npm:2.4.6" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" jest: "npm:29.7.0" jest-environment-jsdom: "npm:29.7.0" jsdom: "npm:25.0.1" lodash.sortby: "npm:4.7.0" lodash.uniq: "npm:4.5.0" - next: "npm:15.1.0" + next: "npm:15.1.4" next-logger: "npm:5.0.1" node-fetch: "npm:3.3.2" - pino: "npm:9.5.0" + pino: "npm:9.6.0" playwright-core: "npm:1.49.1" postcss: "npm:8.4.49" postcss-import: "npm:16.1.0" react: "npm:19.0.0" react-day-picker: "npm:8.10.1" react-dom: "npm:19.0.0" - react-intl: "npm:7.0.4" + react-intl: "npm:7.1.0" react-loading-skeleton: "npm:3.5.0" storybook: "npm:8.4.7" - swr: "npm:2.2.5" - tailwindcss: "npm:3.4.16" - typescript: "npm:5.7.2" - uuid: "npm:11.0.3" + swr: "npm:2.3.0" + tailwindcss: "npm:3.4.17" + typescript: "npm:5.7.3" + uuid: "npm:11.0.5" vitest: "npm:2.1.8" webpack: "npm:5.97.1" zod: "npm:3.24.1" languageName: unknown linkType: soft -"@navikt/ds-css@npm:7.8.0": - version: 7.8.0 - resolution: "@navikt/ds-css@npm:7.8.0::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40navikt%2Fds-css%2F7.8.0%2F83ea0bd43951a10294c1a14dd6ead3d7dc678ea5" - checksum: 10/c299084bdb749ac3ded46fd18f62ce57147780b1724cc370c45b7f21f852d4093ef242205a55a85c90ce128e6ce4e7d10d71323676e8bb34aa8cd055525ce4ca +"@navikt/ds-css@npm:7.9.1": + version: 7.9.1 + resolution: "@navikt/ds-css@npm:7.9.1::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40navikt%2Fds-css%2F7.9.1%2F84cf829697064562f0540cb0425ef890e46038ee" + checksum: 10/8613f64dc8497eb3c98b0b7db89525a96f293fd992ad534494719e2815596b3edf987eafb74050f9ff359f1cab9a743ba8849fa27b5ce2add2c658d09e7f54db languageName: node linkType: hard @@ -3839,35 +4138,35 @@ __metadata: languageName: node linkType: hard -"@navikt/ds-react@npm:7.8.0": - version: 7.8.0 - resolution: "@navikt/ds-react@npm:7.8.0::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40navikt%2Fds-react%2F7.8.0%2Ffb24f0fd5066d6cf9504ac9cb7c7a7aee5f6e5aa" +"@navikt/ds-react@npm:7.9.1": + version: 7.9.1 + resolution: "@navikt/ds-react@npm:7.9.1::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40navikt%2Fds-react%2F7.9.1%2F3f7ec76614c4e2a183b6ee557bea5cee1c4ac821" dependencies: "@floating-ui/react": "npm:0.25.4" "@floating-ui/react-dom": "npm:^2.0.9" - "@navikt/aksel-icons": "npm:^7.8.0" - "@navikt/ds-tokens": "npm:^7.8.0" + "@navikt/aksel-icons": "npm:^7.9.1" + "@navikt/ds-tokens": "npm:^7.9.1" clsx: "npm:^2.1.0" date-fns: "npm:^3.0.0" react-day-picker: "npm:8.10.1" peerDependencies: "@types/react": ">=17.0.30" react: ">=17.0.0 || >19.0.0-rc" - checksum: 10/b62f3ef4c046fe96057023de8d48f20d1640fcedd7d3b4c3b77d7f859d823c51e79eb90f4160fefc3b8f2a7f906ee759e634e973ff1b95afff92eb91aae78e90 + checksum: 10/de255231245892c77a5c10de4b267176bcf0982b024f99a1cdb018e5f3499925bd3dee08b1a2486c5caa7df223ee944cea4494059dcc37787d7ab1a3d78cfcb9 languageName: node linkType: hard -"@navikt/ds-tailwind@npm:7.8.0": - version: 7.8.0 - resolution: "@navikt/ds-tailwind@npm:7.8.0::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40navikt%2Fds-tailwind%2F7.8.0%2F842cc51dd966bcb7c173643b9fe393d773964526" - checksum: 10/98dae01264e37816a2f91530d620327b96a7bee4e7c7bc289bf7222ceb76fb7dfeb6baeb376b7d35b3f6df39676a138875f7cc6f7c541ed4346ee291d14e6ac8 +"@navikt/ds-tailwind@npm:7.9.1": + version: 7.9.1 + resolution: "@navikt/ds-tailwind@npm:7.9.1::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40navikt%2Fds-tailwind%2F7.9.1%2F8fc6ad80ceef5ad936fb06191857b5e3c0f16d3e" + checksum: 10/627f5fc8669e3e88ca3387c01edbb47fad09b2cecd2c6625537c7e4f1cdb3ae5cc5d402b303756fc6bade7e2dc374bca9da56895fbd75daf5f9a883153fc7b35 languageName: node linkType: hard -"@navikt/ds-tokens@npm:^7.8.0": - version: 7.8.0 - resolution: "@navikt/ds-tokens@npm:7.8.0::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40navikt%2Fds-tokens%2F7.8.0%2Fa80bf0c47ac30716094ad0ad18d5fc0ffbb00fcb" - checksum: 10/5d06ecb5327e2b70d5858c89a3329419bd3eb28ac881fce79d9c330115f60406571253b7e5d74a75374dd68dc46b46bc71b33f5a6513fc2c8fa5c8c908df5cfa +"@navikt/ds-tokens@npm:^7.9.1": + version: 7.9.1 + resolution: "@navikt/ds-tokens@npm:7.9.1::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40navikt%2Fds-tokens%2F7.9.1%2F78fb2d1aabb0a187cfe20a553344fb2d6ae16762" + checksum: 10/0f02394f5b2f63bbc0461d7a12162255633b7cbb53c802de88178c3583cd258392ab48635988ebb241a8b0fdf7e8a250815989bccc2a231962be526dfb1f4857 languageName: node linkType: hard @@ -3881,9 +4180,9 @@ __metadata: "@babel/plugin-transform-modules-commonjs": "npm:7.26.3" "@babel/preset-env": "npm:7.26.0" "@babel/preset-react": "npm:7.26.3" - "@navikt/ds-css": "npm:7.8.0" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" + "@navikt/ds-css": "npm:7.9.1" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" "@navikt/sif-app-register": "npm:*" "@navikt/sif-common-amplitude": "npm:*" "@navikt/sif-common-core-ds": "npm:*" @@ -3901,11 +4200,12 @@ __metadata: "@testing-library/dom": "npm:10.4.0" "@testing-library/react": "npm:16.1.0" "@types/object-hash": "npm:3.0.6" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@types/react-router-dom": "npm:5.3.3" axios: "npm:1.7.9" babel-polyfill: "npm:6.26.0" + chromatic: "npm:11.22.2" compression: "npm:1.7.5" cross-env: "npm:7.0.3" csp-header: "npm:6.0.0" @@ -3914,7 +4214,7 @@ __metadata: express: "npm:4.21.2" formik: "npm:2.4.6" helmet: "npm:8.0.0" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" http-proxy-middleware: "npm:3.0.3" jsdom: "npm:25.0.1" mustache-express: "npm:1.3.2" @@ -3923,12 +4223,12 @@ __metadata: react: "npm:19.0.0" react-dom: "npm:19.0.0" react-fast-compare: "npm:3.2.2" - react-intl: "npm:7.0.4" - react-router-dom: "npm:7.0.2" + react-intl: "npm:7.1.0" + react-router-dom: "npm:7.1.1" rimraf: "npm:6.0.1" storybook: "npm:8.4.7" - typescript: "npm:5.7.2" - vite: "npm:6.0.3" + typescript: "npm:5.7.3" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" vitest: "npm:2.1.8" languageName: unknown @@ -3946,11 +4246,11 @@ __metadata: "@babel/preset-react": "npm:7.26.3" "@babel/preset-typescript": "npm:7.26.0" "@mswjs/data": "npm:0.16.2" - "@navikt/ds-css": "npm:7.8.0" + "@navikt/ds-css": "npm:7.9.1" "@navikt/ds-icons": "npm:3.4.3" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" - "@navikt/nav-dekoratoren-moduler": "npm:3.1.1" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" + "@navikt/nav-dekoratoren-moduler": "npm:3.1.3" "@navikt/sif-common-amplitude": "npm:*" "@navikt/sif-common-core-ds": "npm:*" "@navikt/sif-common-env": "npm:*" @@ -3962,7 +4262,7 @@ __metadata: "@navikt/sif-common-ui": "npm:*" "@navikt/sif-common-utils": "npm:*" "@playwright/test": "npm:1.49.1" - "@sentry/vite-plugin": "npm:2.22.7" + "@sentry/vite-plugin": "npm:2.23.0" "@sif/eslint-config": "npm:*" "@storybook/addon-actions": "npm:8.4.7" "@storybook/addon-essentials": "npm:8.4.7" @@ -3977,9 +4277,9 @@ __metadata: "@types/intl": "npm:1.2.2" "@types/js-cookie": "npm:3.0.6" "@types/object-hash": "npm:3.0.6" - "@types/react": "npm:19.0.1" + "@types/react": "npm:19.0.6" "@types/react-document-title": "npm:2.0.10" - "@types/react-dom": "npm:19.0.2" + "@types/react-dom": "npm:19.0.3" "@types/react-router-dom": "npm:5.3.3" "@vitejs/plugin-react": "npm:4.3.4" axe-core: "npm:4.10.2" @@ -3994,13 +4294,13 @@ __metadata: express: "npm:4.21.2" flat: "npm:6.0.1" formik: "npm:2.4.6" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" http-proxy-middleware: "npm:3.0.3" intl: "npm:1.2.5" jsdom: "npm:25.0.1" lodash: "npm:4.17.21" mockdate: "npm:3.0.5" - msw: "npm:2.6.9" + msw: "npm:2.7.0" mustache-express: "npm:1.3.2" object-hash: "npm:3.0.0" playwright-core: "npm:1.49.1" @@ -4009,14 +4309,14 @@ __metadata: react: "npm:19.0.0" react-day-picker: "npm:8.10.1" react-dom: "npm:19.0.0" - react-intl: "npm:7.0.4" + react-intl: "npm:7.1.0" react-responsive: "npm:10.0.0" - react-router-dom: "npm:7.0.2" + react-router-dom: "npm:7.1.1" storybook: "npm:8.4.7" storybook-addon-mock: "npm:5.0.0" - tailwindcss: "npm:3.4.16" - typescript: "npm:5.7.2" - vite: "npm:6.0.3" + tailwindcss: "npm:3.4.17" + typescript: "npm:5.7.3" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" vitest: "npm:2.1.8" languageName: unknown @@ -4029,15 +4329,15 @@ __metadata: languageName: node linkType: hard -"@navikt/nav-dekoratoren-moduler@npm:3.1.1": - version: 3.1.1 - resolution: "@navikt/nav-dekoratoren-moduler@npm:3.1.1::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40navikt%2Fnav-dekoratoren-moduler%2F3.1.1%2Fb630f2cd32677c2fb0ab67655ee559951bd3d3d4" +"@navikt/nav-dekoratoren-moduler@npm:3.1.3": + version: 3.1.3 + resolution: "@navikt/nav-dekoratoren-moduler@npm:3.1.3::__archiveUrl=https%3A%2F%2Fnpm.pkg.github.com%2Fdownload%2F%40navikt%2Fnav-dekoratoren-moduler%2F3.1.3%2F5b4ff3c3727331eab2d8243ff96da8f8508dede0" peerDependencies: csp-header: ">=5.x" html-react-parser: ">=5.x" jsdom: ">=16.x" react: ">=17.x" - checksum: 10/96f747ab176497a5a7337d15527db50ca60c7d6684ddf9275bb7d2a276756fca7e0ddb07ad2c3746ac0e1bb4aadfae5b9cc13beba2ec160f1070be7ba85f4216 + checksum: 10/b101b408cc284613b2f38235d15f3fb1ad04c40385f9c5314ce1d69203d5ca261321f6ab1a247c10155973031c8750a59d5b454df915712ae09d54472f03c533 languageName: node linkType: hard @@ -4072,9 +4372,10 @@ __metadata: "@babel/plugin-transform-modules-commonjs": "npm:7.26.3" "@babel/preset-env": "npm:7.26.0" "@babel/preset-react": "npm:7.26.3" - "@navikt/ds-css": "npm:7.8.0" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" + "@chromatic-com/storybook": "npm:^3.2.3" + "@navikt/ds-css": "npm:7.9.1" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" "@navikt/sif-app-register": "npm:*" "@navikt/sif-common-amplitude": "npm:*" "@navikt/sif-common-core-ds": "npm:*" @@ -4089,15 +4390,23 @@ __metadata: "@navikt/sif-common-utils": "npm:*" "@playwright/test": "npm:1.49.1" "@sif/eslint-config": "npm:*" + "@storybook/addon-essentials": "npm:^8.4.7" + "@storybook/addon-interactions": "npm:^8.4.7" + "@storybook/addon-onboarding": "npm:^8.4.7" + "@storybook/blocks": "npm:^8.4.7" + "@storybook/react": "npm:^8.4.7" + "@storybook/react-vite": "npm:^8.4.7" + "@storybook/test": "npm:^8.4.7" "@testing-library/dom": "npm:10.4.0" "@testing-library/react": "npm:16.1.0" "@types/object-hash": "npm:3.0.6" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@types/react-router-dom": "npm:5.3.3" "@vitejs/plugin-react": "npm:4.3.4" axios: "npm:1.7.9" babel-polyfill: "npm:6.26.0" + chromatic: "npm:11.22.2" compression: "npm:1.7.5" cors: "npm:2.8.5" cross-env: "npm:7.0.3" @@ -4107,7 +4416,7 @@ __metadata: express: "npm:4.21.2" formik: "npm:2.4.6" helmet: "npm:8.0.0" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" http-proxy-middleware: "npm:3.0.3" jsdom: "npm:25.0.1" less: "npm:4.2.1" @@ -4117,11 +4426,12 @@ __metadata: react: "npm:19.0.0" react-dom: "npm:19.0.0" react-fast-compare: "npm:3.2.2" - react-intl: "npm:7.0.4" - react-router-dom: "npm:7.0.2" - typescript: "npm:5.7.2" - uuid: "npm:11.0.3" - vite: "npm:6.0.3" + react-intl: "npm:7.1.0" + react-router-dom: "npm:7.1.1" + storybook: "npm:^8.4.7" + typescript: "npm:5.7.3" + uuid: "npm:11.0.5" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" languageName: unknown linkType: soft @@ -4131,39 +4441,39 @@ __metadata: resolution: "@navikt/omsorgsdager-kalkulator@workspace:apps/omsorgsdager-kalkulator" dependencies: "@axe-core/playwright": "npm:4.10.1" - "@navikt/ds-css": "npm:7.8.0" + "@navikt/ds-css": "npm:7.9.1" "@navikt/ds-icons": "npm:3.4.3" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" - "@navikt/nav-dekoratoren-moduler": "npm:3.1.1" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" + "@navikt/nav-dekoratoren-moduler": "npm:3.1.3" "@playwright/test": "npm:1.49.1" - "@types/node": "npm:22.10.2" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/node": "npm:22.10.5" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@types/uuid": "npm:10.0.0" classnames: "npm:2.5.1" config: "npm:*" csp-header: "npm:6.0.0" date-fns: "npm:3.6.0" dayjs: "npm:1.11.13" - eslint: "npm:9.17.0" - eslint-config-next: "npm:15.1.0" + eslint: "npm:9.18.0" + eslint-config-next: "npm:15.1.4" formik: "npm:2.4.6" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" jest: "npm:29.7.0" jest-environment-jsdom: "npm:29.7.0" jsdom: "npm:25.0.1" - next: "npm:15.1.0" + next: "npm:15.1.4" node-fetch: "npm:3.3.2" playwright-core: "npm:1.49.1" postcss: "npm:8.4.49" react: "npm:19.0.0" react-day-picker: "npm:8.10.1" react-dom: "npm:19.0.0" - react-intl: "npm:7.0.4" - tailwindcss: "npm:3.4.16" - typescript: "npm:5.7.2" - uuid: "npm:11.0.3" + react-intl: "npm:7.1.0" + tailwindcss: "npm:3.4.17" + typescript: "npm:5.7.3" + uuid: "npm:11.0.5" languageName: unknown linkType: soft @@ -4175,11 +4485,11 @@ __metadata: "@babel/preset-env": "npm:7.26.0" "@babel/preset-react": "npm:7.26.3" "@babel/preset-typescript": "npm:7.26.0" - "@chromatic-com/storybook": "npm:3.2.2" - "@navikt/ds-css": "npm:7.8.0" + "@chromatic-com/storybook": "npm:3.2.3" + "@navikt/ds-css": "npm:7.9.1" "@navikt/ds-icons": "npm:3.4.3" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" "@navikt/sif-app-register": "npm:*" "@navikt/sif-common-amplitude": "npm:*" "@navikt/sif-common-api": "npm:*" @@ -4205,27 +4515,29 @@ __metadata: "@storybook/test": "npm:8.4.7" "@testing-library/dom": "npm:10.4.0" "@testing-library/react": "npm:16.1.0" - "@types/node": "npm:22.10.2" + "@types/node": "npm:22.10.5" "@types/object-hash": "npm:3.0.6" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@types/react-router-dom": "npm:5.3.3" "@vitejs/plugin-react": "npm:4.3.4" axios: "npm:1.7.9" babel-polyfill: "npm:6.26.0" busboy: "npm:1.6.0" + chromatic: "npm:11.22.2" compression: "npm:1.7.5" cross-env: "npm:7.0.3" csp-header: "npm:6.0.0" dayjs: "npm:1.11.13" dotenv: "npm:16.4.7" - eslint: "npm:9.17.0" - eslint-plugin-storybook: "npm:0.11.1" + eslint: "npm:9.18.0" + eslint-plugin-storybook: "npm:0.11.2" express: "npm:4.21.2" helmet: "npm:8.0.0" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" http-proxy-middleware: "npm:3.0.3" jsdom: "npm:25.0.1" + mockdate: "npm:3.0.5" mustache-express: "npm:1.3.2" object-hash: "npm:3.0.0" postcss: "npm:8.4.49" @@ -4233,15 +4545,15 @@ __metadata: react: "npm:19.0.0" react-dom: "npm:19.0.0" react-fast-compare: "npm:3.2.2" - react-intl: "npm:7.0.4" - react-router-dom: "npm:7.0.2" + react-intl: "npm:7.1.0" + react-router-dom: "npm:7.1.1" storybook: "npm:8.4.7" storybook-addon-mock: "npm:5.0.0" - tailwindcss: "npm:3.4.16" - typescript: "npm:5.7.2" + tailwindcss: "npm:3.4.17" + typescript: "npm:5.7.3" ulid: "npm:2.3.0" - uuid: "npm:11.0.3" - vite: "npm:6.0.3" + uuid: "npm:11.0.5" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" vitest: "npm:2.1.8" languageName: unknown @@ -4255,10 +4567,10 @@ __metadata: "@babel/preset-env": "npm:7.26.0" "@babel/preset-react": "npm:7.26.3" "@babel/preset-typescript": "npm:7.26.0" - "@navikt/ds-css": "npm:7.8.0" + "@navikt/ds-css": "npm:7.9.1" "@navikt/ds-icons": "npm:3.4.3" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" "@navikt/sif-app-register": "npm:*" "@navikt/sif-common-amplitude": "npm:*" "@navikt/sif-common-api": "npm:*" @@ -4283,24 +4595,25 @@ __metadata: "@storybook/test": "npm:8.4.7" "@testing-library/dom": "npm:10.4.0" "@testing-library/react": "npm:16.1.0" - "@types/node": "npm:22.10.2" + "@types/node": "npm:22.10.5" "@types/object-hash": "npm:3.0.6" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@types/react-router-dom": "npm:5.3.3" "@vitejs/plugin-react": "npm:4.3.4" axios: "npm:1.7.9" babel-polyfill: "npm:6.26.0" busboy: "npm:1.6.0" + chromatic: "npm:11.22.2" compression: "npm:1.7.5" cross-env: "npm:7.0.3" csp-header: "npm:6.0.0" dotenv: "npm:16.4.7" - eslint: "npm:9.17.0" - eslint-plugin-storybook: "npm:0.11.1" + eslint: "npm:9.18.0" + eslint-plugin-storybook: "npm:0.11.2" express: "npm:4.21.2" helmet: "npm:8.0.0" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" http-proxy-middleware: "npm:3.0.3" jsdom: "npm:25.0.1" lodash: "npm:4.17.21" @@ -4312,13 +4625,13 @@ __metadata: react: "npm:19.0.0" react-dom: "npm:19.0.0" react-fast-compare: "npm:3.2.2" - react-intl: "npm:7.0.4" - react-router-dom: "npm:7.0.2" + react-intl: "npm:7.1.0" + react-router-dom: "npm:7.1.1" storybook: "npm:8.4.7" - tailwindcss: "npm:3.4.16" - typescript: "npm:5.7.2" - uuid: "npm:11.0.3" - vite: "npm:6.0.3" + tailwindcss: "npm:3.4.17" + typescript: "npm:5.7.3" + uuid: "npm:11.0.5" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" vitest: "npm:2.1.8" languageName: unknown @@ -4333,10 +4646,10 @@ __metadata: "@babel/preset-env": "npm:7.26.0" "@babel/preset-react": "npm:7.26.3" "@babel/preset-typescript": "npm:7.26.0" - "@navikt/ds-css": "npm:7.8.0" + "@navikt/ds-css": "npm:7.9.1" "@navikt/ds-icons": "npm:3.4.3" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" "@navikt/sif-app-register": "npm:*" "@navikt/sif-common-amplitude": "npm:*" "@navikt/sif-common-core-ds": "npm:*" @@ -4361,15 +4674,15 @@ __metadata: "@testing-library/dom": "npm:10.4.0" "@testing-library/react": "npm:16.1.0" "@types/object-hash": "npm:3.0.6" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@types/react-router-dom": "npm:5.3.3" "@vitejs/plugin-react": "npm:4.3.4" axe-core: "npm:4.10.2" axios: "npm:1.7.9" babel-polyfill: "npm:6.26.0" busboy: "npm:1.6.0" - chromatic: "npm:11.20.2" + chromatic: "npm:11.22.2" compression: "npm:1.7.5" cors: "npm:2.8.5" cross-env: "npm:7.0.3" @@ -4379,7 +4692,7 @@ __metadata: express: "npm:4.21.2" formik: "npm:2.4.6" helmet: "npm:8.0.0" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" http-proxy-middleware: "npm:3.0.3" jsdom: "npm:25.0.1" lodash: "npm:4.17.21" @@ -4390,12 +4703,12 @@ __metadata: react: "npm:19.0.0" react-dom: "npm:19.0.0" react-fast-compare: "npm:3.2.2" - react-intl: "npm:7.0.4" - react-router-dom: "npm:7.0.2" + react-intl: "npm:7.1.0" + react-router-dom: "npm:7.1.1" storybook: "npm:8.4.7" - tailwindcss: "npm:3.4.16" - typescript: "npm:5.7.2" - vite: "npm:6.0.3" + tailwindcss: "npm:3.4.17" + typescript: "npm:5.7.3" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" vitest: "npm:2.1.8" languageName: unknown @@ -4409,10 +4722,10 @@ __metadata: "@babel/preset-env": "npm:7.26.0" "@babel/preset-react": "npm:7.26.3" "@babel/preset-typescript": "npm:7.26.0" - "@navikt/ds-css": "npm:7.8.0" + "@navikt/ds-css": "npm:7.9.1" "@navikt/ds-icons": "npm:3.4.3" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" "@navikt/sif-app-register": "npm:*" "@navikt/sif-common-amplitude": "npm:*" "@navikt/sif-common-core-ds": "npm:*" @@ -4436,34 +4749,34 @@ __metadata: "@storybook/test": "npm:8.4.7" "@testing-library/dom": "npm:10.4.0" "@testing-library/react": "npm:16.1.0" - "@types/node": "npm:22.10.2" + "@types/node": "npm:22.10.5" "@types/object-hash": "npm:3.0.6" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@types/react-router-dom": "npm:5.3.3" "@vitejs/plugin-react": "npm:4.3.4" axios: "npm:1.7.9" babel-polyfill: "npm:6.26.0" busboy: "npm:1.6.0" - chromatic: "npm:11.20.2" + chromatic: "npm:11.22.2" compression: "npm:1.7.5" cookie-parser: "npm:1.4.7" cross-env: "npm:7.0.3" csp-header: "npm:6.0.0" dayjs: "npm:1.11.13" dotenv: "npm:16.4.7" - eslint: "npm:9.17.0" - eslint-plugin-storybook: "npm:0.11.1" + eslint: "npm:9.18.0" + eslint-plugin-storybook: "npm:0.11.2" express: "npm:4.21.2" express-rate-limit: "npm:7.5.0" formik: "npm:2.4.6" helmet: "npm:8.0.0" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" http-proxy-middleware: "npm:3.0.3" jose: "npm:5.9.6" jsdom: "npm:25.0.1" lodash: "npm:4.17.21" - msw: "npm:2.6.9" + msw: "npm:2.7.0" mustache-express: "npm:1.3.2" object-hash: "npm:3.0.0" openid-client: "npm:6.1.7" @@ -4472,13 +4785,13 @@ __metadata: react: "npm:19.0.0" react-dom: "npm:19.0.0" react-fast-compare: "npm:3.2.2" - react-intl: "npm:7.0.4" - react-router-dom: "npm:7.0.2" + react-intl: "npm:7.1.0" + react-router-dom: "npm:7.1.1" storybook: "npm:8.4.7" - tailwindcss: "npm:3.4.16" - typescript: "npm:5.7.2" - uuid: "npm:11.0.3" - vite: "npm:6.0.3" + tailwindcss: "npm:3.4.17" + typescript: "npm:5.7.3" + uuid: "npm:11.0.5" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" vitest: "npm:2.1.8" zod: "npm:3.24.1" @@ -4494,11 +4807,11 @@ __metadata: "@babel/preset-env": "npm:7.26.0" "@babel/preset-react": "npm:7.26.3" "@babel/preset-typescript": "npm:7.26.0" - "@chromatic-com/storybook": "npm:3.2.2" - "@navikt/ds-css": "npm:7.8.0" + "@chromatic-com/storybook": "npm:3.2.3" + "@navikt/ds-css": "npm:7.9.1" "@navikt/ds-icons": "npm:3.4.3" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" "@navikt/sif-app-register": "npm:*" "@navikt/sif-common-amplitude": "npm:*" "@navikt/sif-common-api": "npm:*" @@ -4524,8 +4837,8 @@ __metadata: "@testing-library/dom": "npm:10.4.0" "@testing-library/react": "npm:16.1.0" "@types/object-hash": "npm:3.0.6" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@types/react-router-dom": "npm:5.3.3" axios: "npm:1.7.9" babel-polyfill: "npm:6.26.0" @@ -4536,12 +4849,12 @@ __metadata: csp-header: "npm:6.0.0" dayjs: "npm:1.11.13" dotenv: "npm:16.4.7" - eslint: "npm:9.17.0" - eslint-plugin-storybook: "npm:0.11.1" + eslint: "npm:9.18.0" + eslint-plugin-storybook: "npm:0.11.2" express: "npm:4.21.2" formik: "npm:2.4.6" helmet: "npm:8.0.0" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" http-proxy-middleware: "npm:3.0.3" jsdom: "npm:25.0.1" lodash: "npm:4.17.21" @@ -4552,13 +4865,13 @@ __metadata: react: "npm:19.0.0" react-dom: "npm:19.0.0" react-fast-compare: "npm:3.2.2" - react-intl: "npm:7.0.4" - react-router-dom: "npm:7.0.2" + react-intl: "npm:7.1.0" + react-router-dom: "npm:7.1.1" storybook: "npm:8.4.7" storybook-addon-mock: "npm:5.0.0" - typescript: "npm:5.7.2" - uuid: "npm:11.0.3" - vite: "npm:6.0.3" + typescript: "npm:5.7.3" + uuid: "npm:11.0.5" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" vitest: "npm:2.1.8" languageName: unknown @@ -4574,12 +4887,12 @@ __metadata: "@babel/plugin-transform-modules-commonjs": "npm:7.26.3" "@babel/preset-env": "npm:7.26.0" "@babel/preset-react": "npm:7.26.3" - "@chromatic-com/storybook": "npm:3.2.2" + "@chromatic-com/storybook": "npm:3.2.3" "@navikt/appstatus-react-ds": "npm:*" - "@navikt/ds-css": "npm:7.8.0" + "@navikt/ds-css": "npm:7.9.1" "@navikt/ds-icons": "npm:3.4.3" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/nav-dekoratoren-moduler": "npm:3.1.1" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/nav-dekoratoren-moduler": "npm:3.1.3" "@navikt/sif-app-register": "npm:*" "@navikt/sif-common-amplitude": "npm:*" "@navikt/sif-common-core-ds": "npm:*" @@ -4592,7 +4905,7 @@ __metadata: "@navikt/sif-common-ui": "npm:*" "@navikt/sif-common-utils": "npm:*" "@playwright/test": "npm:1.49.1" - "@sentry/vite-plugin": "npm:2.22.7" + "@sentry/vite-plugin": "npm:2.23.0" "@sif/eslint-config": "npm:*" "@storybook/addon-essentials": "npm:8.4.7" "@storybook/addon-interactions": "npm:8.4.7" @@ -4606,8 +4919,8 @@ __metadata: "@testing-library/react": "npm:16.1.0" "@testing-library/user-event": "npm:14.5.2" "@types/lodash.groupby": "npm:4.6.9" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@types/react-router-dom": "npm:5.3.3" "@vitejs/plugin-react": "npm:4.3.4" axe-core: "npm:4.10.2" @@ -4623,7 +4936,7 @@ __metadata: express: "npm:4.21.2" formik: "npm:2.4.6" helmet: "npm:8.0.0" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" http-proxy-middleware: "npm:3.0.3" http-status-codes: "npm:2.3.0" intl: "npm:1.2.5" @@ -4636,13 +4949,13 @@ __metadata: react: "npm:19.0.0" react-day-picker: "npm:8.10.1" react-dom: "npm:19.0.0" - react-intl: "npm:7.0.4" - react-router-dom: "npm:7.0.2" + react-intl: "npm:7.1.0" + react-router-dom: "npm:7.1.1" storybook: "npm:8.4.7" storybook-addon-mock: "npm:5.0.0" - typescript: "npm:5.7.2" - uuid: "npm:11.0.3" - vite: "npm:6.0.3" + typescript: "npm:5.7.3" + uuid: "npm:11.0.5" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" vitest: "npm:2.1.8" languageName: unknown @@ -4654,7 +4967,7 @@ __metadata: dependencies: "@sif/eslint-config": "npm:*" copyfiles: "npm:2.4.1" - typescript: "npm:5.7.2" + typescript: "npm:5.7.3" languageName: unknown linkType: soft @@ -4662,14 +4975,14 @@ __metadata: version: 0.0.0-use.local resolution: "@navikt/sif-brukerdialog@workspace:." dependencies: - "@changesets/cli": "npm:^2.27.10" + "@changesets/cli": "npm:^2.27.11" "@sif/eslint-config": "npm:*" config: "npm:*" husky: "npm:9.1.7" - lint-staged: "npm:15.2.11" + lint-staged: "npm:15.3.0" prettier: "npm:3.4.2" turbo: "npm:2.3.3" - typescript: "npm:5.7.2" + typescript: "npm:5.7.3" languageName: unknown linkType: soft @@ -4677,16 +4990,16 @@ __metadata: version: 0.0.0-use.local resolution: "@navikt/sif-common-amplitude@workspace:packages/sif-common-amplitude" dependencies: - "@amplitude/analytics-browser": "npm:2.11.9" + "@amplitude/analytics-browser": "npm:2.11.11" "@sif/eslint-config": "npm:*" - "@types/node": "npm:22.10.2" - "@types/react": "npm:19.0.1" + "@types/node": "npm:22.10.5" + "@types/react": "npm:19.0.6" config: "npm:*" constate: "npm:3.3.2" - gh-pages: "npm:6.2.0" + gh-pages: "npm:6.3.0" react: "npm:19.0.0" rimraf: "npm:6.0.1" - typescript: "npm:5.7.2" + typescript: "npm:5.7.3" peerDependencies: constate: 3.3.x react: 18.x @@ -4697,9 +5010,9 @@ __metadata: version: 0.0.0-use.local resolution: "@navikt/sif-common-api@workspace:packages/sif-common-api" dependencies: - "@navikt/ds-css": "npm:7.8.0" + "@navikt/ds-css": "npm:7.9.1" "@navikt/ds-icons": "npm:3.4.3" - "@navikt/ds-react": "npm:7.8.0" + "@navikt/ds-react": "npm:7.9.1" "@navikt/sif-common-formik-ds": "npm:*" "@navikt/sif-common-sentry": "npm:*" "@navikt/sif-common-utils": "npm:*" @@ -4714,22 +5027,22 @@ __metadata: "@storybook/node-logger": "npm:8.4.7" "@storybook/react": "npm:8.4.7" "@storybook/testing-library": "npm:0.2.2" - "@types/react": "npm:19.0.1" + "@types/react": "npm:19.0.6" axios: "npm:1.7.9" classnames: "npm:2.5.1" copyfiles: "npm:2.4.1" date-fns: "npm:3.6.0" dayjs: "npm:1.11.13" - globals: "npm:15.13.0" + globals: "npm:15.14.0" intl: "npm:1.2.5" less: "npm:4.2.1" postcss: "npm:8.4.49" react: "npm:19.0.0" react-day-picker: "npm:8.10.1" react-dom: "npm:19.0.0" - react-intl: "npm:7.0.4" + react-intl: "npm:7.1.0" storybook: "npm:8.4.7" - typescript: "npm:5.7.2" + typescript: "npm:5.7.3" webpack: "npm:5.97.1" zod: "npm:3.24.1" languageName: unknown @@ -4745,10 +5058,10 @@ __metadata: "@babel/preset-typescript": "npm:7.26.0" "@grafana/faro-web-sdk": "npm:1.12.2" "@navikt/appstatus-react-ds": "npm:*" - "@navikt/ds-css": "npm:7.8.0" + "@navikt/ds-css": "npm:7.9.1" "@navikt/ds-icons": "npm:3.4.3" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" "@navikt/sif-common-api": "npm:*" "@navikt/sif-common-env": "npm:*" "@navikt/sif-common-formik-ds": "npm:*" @@ -4765,9 +5078,9 @@ __metadata: "@storybook/react": "npm:8.4.7" "@storybook/react-vite": "npm:8.4.7" "@storybook/testing-library": "npm:0.2.2" - "@types/node": "npm:22.10.2" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/node": "npm:22.10.5" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@vitejs/plugin-react": "npm:4.3.4" axios: "npm:1.7.9" browser-image-compression: "npm:2.0.2" @@ -4779,7 +5092,7 @@ __metadata: formik: "npm:2.4.6" http-status-codes: "npm:2.3.0" i18n-iso-countries: "npm:7.13.0" - msw: "npm:2.6.9" + msw: "npm:2.7.0" msw-storybook-addon: "npm:2.0.4" postcss: "npm:8.4.49" pretty-bytes: "npm:6.1.1" @@ -4787,15 +5100,15 @@ __metadata: react: "npm:19.0.0" react-day-picker: "npm:8.10.1" react-dom: "npm:19.0.0" - react-intl: "npm:7.0.4" + react-intl: "npm:7.1.0" react-responsive: "npm:10.0.0" react-syntax-highlighter: "npm:15.6.1" rimraf: "npm:6.0.1" storybook: "npm:8.4.7" - tailwindcss: "npm:3.4.16" - typescript: "npm:5.7.2" - uuid: "npm:11.0.3" - vite: "npm:6.0.3" + tailwindcss: "npm:3.4.17" + typescript: "npm:5.7.3" + uuid: "npm:11.0.5" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" vitest: "npm:2.1.8" languageName: unknown @@ -4805,7 +5118,7 @@ __metadata: version: 0.0.0-use.local resolution: "@navikt/sif-common-env@workspace:packages/sif-common-env" dependencies: - typescript: "npm:5.7.2" + typescript: "npm:5.7.3" languageName: unknown linkType: soft @@ -4829,9 +5142,9 @@ __metadata: "@babel/preset-env": "npm:7.26.0" "@babel/preset-react": "npm:7.26.3" "@babel/preset-typescript": "npm:7.26.0" - "@navikt/ds-css": "npm:7.8.0" + "@navikt/ds-css": "npm:7.9.1" "@navikt/ds-icons": "npm:3.4.3" - "@navikt/ds-react": "npm:7.8.0" + "@navikt/ds-react": "npm:7.9.1" "@navikt/fnrvalidator": "npm:2.1.5" "@originjs/vite-plugin-commonjs": "npm:1.0.3" "@sif/eslint-config": "npm:*" @@ -4846,12 +5159,12 @@ __metadata: "@storybook/preset-scss": "npm:1.0.3" "@storybook/react": "npm:8.4.7" "@storybook/react-vite": "npm:8.4.7" - "@storybook/test-runner": "npm:0.20.1" + "@storybook/test-runner": "npm:0.21.0" "@storybook/testing-library": "npm:0.2.2" "@types/jest": "npm:29.5.14" - "@types/node": "npm:22.10.2" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/node": "npm:22.10.5" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@types/uuid": "npm:10.0.0" "@vitejs/plugin-react": "npm:4.3.4" classnames: "npm:2.5.1" @@ -4870,15 +5183,15 @@ __metadata: react-dom: "npm:19.0.0" react-dropzone: "npm:14.3.5" react-fast-compare: "npm:3.2.2" - react-intl: "npm:7.0.4" + react-intl: "npm:7.1.0" react-syntax-highlighter: "npm:15.6.1" rimraf: "npm:6.0.1" sass-loader: "npm:16.0.4" storybook: "npm:8.4.7" style-loader: "npm:4.0.0" - typescript: "npm:5.7.2" - uuid: "npm:11.0.3" - vite: "npm:6.0.3" + typescript: "npm:5.7.3" + uuid: "npm:11.0.5" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" vitest: "npm:2.1.8" webpack: "npm:5.97.1" @@ -4896,9 +5209,9 @@ __metadata: "@babel/preset-env": "npm:7.26.0" "@babel/preset-react": "npm:7.26.3" "@babel/preset-typescript": "npm:7.26.0" - "@formatjs/intl-pluralrules": "npm:5.4.1" - "@navikt/ds-css": "npm:7.8.0" - "@navikt/ds-react": "npm:7.8.0" + "@formatjs/intl-pluralrules": "npm:5.4.2" + "@navikt/ds-css": "npm:7.9.1" + "@navikt/ds-react": "npm:7.9.1" "@navikt/sif-common-core-ds": "npm:*" "@navikt/sif-common-formik-ds": "npm:*" "@navikt/sif-common-utils": "npm:*" @@ -4917,9 +5230,9 @@ __metadata: "@testing-library/dom": "npm:10.4.0" "@testing-library/react": "npm:16.1.0" "@testing-library/user-event": "npm:14.5.2" - "@types/node": "npm:22.10.2" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/node": "npm:22.10.5" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@vitejs/plugin-react": "npm:4.3.4" axios: "npm:1.7.9" config: "npm:*" @@ -4928,19 +5241,19 @@ __metadata: dayjs: "npm:1.11.13" flat: "npm:6.0.1" formik: "npm:2.4.6" - gh-pages: "npm:6.2.0" + gh-pages: "npm:6.3.0" intl: "npm:1.2.5" jsdom: "npm:25.0.1" react: "npm:19.0.0" react-day-picker: "npm:8.10.1" react-dom: "npm:19.0.0" - react-intl: "npm:7.0.4" + react-intl: "npm:7.1.0" react-json-view: "npm:1.21.3" - react-router-dom: "npm:7.0.2" + react-router-dom: "npm:7.1.1" rimraf: "npm:6.0.1" storybook: "npm:8.4.7" - typescript: "npm:5.7.2" - vite: "npm:6.0.3" + typescript: "npm:5.7.3" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" vitest: "npm:2.1.8" peerDependencies: @@ -4959,7 +5272,7 @@ __metadata: "@sif/eslint-config": "npm:*" copyfiles: "npm:2.4.1" react: "npm:19.0.0" - typescript: "npm:5.7.2" + typescript: "npm:5.7.3" languageName: unknown linkType: soft @@ -4967,19 +5280,19 @@ __metadata: version: 0.0.0-use.local resolution: "@navikt/sif-common-sentry@workspace:packages/sif-common-sentry" dependencies: - "@sentry/browser": "npm:8.45.0" - "@sentry/react": "npm:8.45.0" - "@sentry/types": "npm:8.45.0" + "@sentry/browser": "npm:8.48.0" + "@sentry/react": "npm:8.48.0" + "@sentry/types": "npm:8.48.0" "@sif/eslint-config": "npm:*" - "@types/node": "npm:22.10.2" + "@types/node": "npm:22.10.5" axios: "npm:1.7.9" config: "npm:*" copyfiles: "npm:2.4.1" - gh-pages: "npm:6.2.0" + gh-pages: "npm:6.3.0" react: "npm:19.0.0" react-dom: "npm:19.0.0" rimraf: "npm:6.0.1" - typescript: "npm:5.7.2" + typescript: "npm:5.7.3" peerDependencies: axios: ">=1.3.4" languageName: unknown @@ -4994,11 +5307,11 @@ __metadata: "@babel/preset-react": "npm:7.26.3" "@babel/preset-typescript": "npm:7.26.0" "@devexperts/remote-data-ts": "npm:2.1.1" - "@formatjs/intl-pluralrules": "npm:5.4.1" + "@formatjs/intl-pluralrules": "npm:5.4.2" "@navikt/appstatus-react-ds": "npm:*" - "@navikt/ds-css": "npm:7.8.0" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/nav-dekoratoren-moduler": "npm:3.1.1" + "@navikt/ds-css": "npm:7.9.1" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/nav-dekoratoren-moduler": "npm:3.1.3" "@navikt/sif-common-core-ds": "npm:*" "@navikt/sif-common-formik-ds": "npm:*" "@navikt/sif-common-hooks": "npm:*" @@ -5021,9 +5334,9 @@ __metadata: "@testing-library/react": "npm:16.1.0" "@testing-library/user-event": "npm:14.5.2" "@types/jest": "npm:29.5.14" - "@types/node": "npm:22.10.2" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/node": "npm:22.10.5" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@vitejs/plugin-react": "npm:4.3.4" axios: "npm:1.7.9" classnames: "npm:2.5.1" @@ -5033,8 +5346,8 @@ __metadata: dayjs: "npm:1.11.13" formik: "npm:2.4.6" fp-ts: "npm:2.16.9" - gh-pages: "npm:6.2.0" - html-react-parser: "npm:5.2.1" + gh-pages: "npm:6.3.0" + html-react-parser: "npm:5.2.2" intl: "npm:1.2.5" io-ts: "npm:2.2.22" io-ts-types: "npm:0.5.19" @@ -5047,15 +5360,15 @@ __metadata: react: "npm:19.0.0" react-day-picker: "npm:8.10.1" react-dom: "npm:19.0.0" - react-intl: "npm:7.0.4" - react-router-dom: "npm:7.0.2" + react-intl: "npm:7.1.0" + react-router-dom: "npm:7.1.1" rimraf: "npm:6.0.1" sass-loader: "npm:16.0.4" storybook: "npm:8.4.7" style-loader: "npm:4.0.0" - typescript: "npm:5.7.2" - uuid: "npm:11.0.3" - vite: "npm:6.0.3" + typescript: "npm:5.7.3" + uuid: "npm:11.0.5" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" vitest: "npm:2.1.8" webpack: "npm:5.97.1" @@ -5075,9 +5388,9 @@ __metadata: version: 0.0.0-use.local resolution: "@navikt/sif-common-ui@workspace:packages/sif-common-ui" dependencies: - "@navikt/ds-css": "npm:7.8.0" + "@navikt/ds-css": "npm:7.9.1" "@navikt/ds-icons": "npm:3.4.3" - "@navikt/ds-react": "npm:7.8.0" + "@navikt/ds-react": "npm:7.9.1" "@navikt/sif-common-core-ds": "npm:*" "@navikt/sif-common-formik-ds": "npm:*" "@navikt/sif-common-utils": "npm:*" @@ -5092,21 +5405,21 @@ __metadata: "@storybook/node-logger": "npm:8.4.7" "@storybook/react": "npm:8.4.7" "@storybook/testing-library": "npm:0.2.2" - "@types/react": "npm:19.0.1" + "@types/react": "npm:19.0.6" classnames: "npm:2.5.1" copyfiles: "npm:2.4.1" date-fns: "npm:3.6.0" dayjs: "npm:1.11.13" - globals: "npm:15.13.0" + globals: "npm:15.14.0" intl: "npm:1.2.5" less: "npm:4.2.1" postcss: "npm:8.4.49" react: "npm:19.0.0" react-day-picker: "npm:8.10.1" react-dom: "npm:19.0.0" - react-intl: "npm:7.0.4" + react-intl: "npm:7.1.0" storybook: "npm:8.4.7" - typescript: "npm:5.7.2" + typescript: "npm:5.7.3" webpack: "npm:5.97.1" languageName: unknown linkType: soft @@ -5119,21 +5432,21 @@ __metadata: "@babel/preset-env": "npm:7.26.0" "@babel/preset-react": "npm:7.26.3" "@sif/eslint-config": "npm:*" - "@types/node": "npm:22.10.2" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/node": "npm:22.10.5" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@types/uuid": "npm:10.0.0" config: "npm:*" dayjs: "npm:1.11.13" - globals: "npm:15.13.0" + globals: "npm:15.14.0" intl: "npm:1.2.5" iso8601-duration: "npm:2.1.2" lodash: "npm:4.17.21" react: "npm:19.0.0" react-dom: "npm:19.0.0" - react-intl: "npm:7.0.4" - typescript: "npm:5.7.2" - uuid: "npm:11.0.3" + react-intl: "npm:7.1.0" + typescript: "npm:5.7.3" + uuid: "npm:11.0.5" vitest: "npm:2.1.8" languageName: unknown linkType: soft @@ -5143,36 +5456,36 @@ __metadata: resolution: "@navikt/sif-demo-app@workspace:apps/sif-demo-app" dependencies: "@eslint/eslintrc": "npm:3.2.0" - "@eslint/js": "npm:9.17.0" - "@hookform/resolvers": "npm:3.9.1" - "@navikt/aksel-icons": "npm:7.8.0" - "@navikt/ds-css": "npm:7.8.0" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" - "@navikt/nav-dekoratoren-moduler": "npm:3.1.1" + "@eslint/js": "npm:9.18.0" + "@hookform/resolvers": "npm:3.10.0" + "@navikt/aksel-icons": "npm:7.9.1" + "@navikt/ds-css": "npm:7.9.1" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" + "@navikt/nav-dekoratoren-moduler": "npm:3.1.3" "@navikt/sif-common-api": "npm:*" "@navikt/sif-common-core-ds": "npm:*" "@navikt/sif-common-env": "npm:*" "@navikt/sif-common-forms-ds": "npm:*" "@navikt/sif-common-soknad-ds": "npm:*" "@navikt/sif-common-ui": "npm:*" - "@types/node": "npm:22.10.2" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" - "@typescript-eslint/parser": "npm:8.18.0" + "@types/node": "npm:22.10.5" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" + "@typescript-eslint/parser": "npm:8.19.1" "@vitejs/plugin-react": "npm:4.3.4" autoprefixer: "npm:10.4.20" clsx: "npm:2.1.1" compression: "npm:1.7.5" csp-header: "npm:6.0.0" date-fns: "npm:3.6.0" - eslint: "npm:9.17.0" + eslint: "npm:9.18.0" eslint-plugin-prettier: "npm:5.2.1" - eslint-plugin-react: "npm:7.37.2" + eslint-plugin-react: "npm:7.37.4" eslint-plugin-simple-import-sort: "npm:12.1.1" eslint-plugin-unicorn: "npm:56.0.1" express: "npm:4.21.2" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" http-proxy-middleware: "npm:3.0.3" jsdom: "npm:25.0.1" mustache-express: "npm:1.3.2" @@ -5182,12 +5495,12 @@ __metadata: prettier: "npm:3.4.2" react: "npm:19.0.0" react-dom: "npm:19.0.0" - react-hook-form: "npm:7.54.1" - stylelint: "npm:16.12.0" - tailwindcss: "npm:3.4.16" - typescript: "npm:5.7.2" - typescript-eslint: "npm:8.18.0" - vite: "npm:6.0.3" + react-hook-form: "npm:7.54.2" + stylelint: "npm:16.13.0" + tailwindcss: "npm:3.4.17" + typescript: "npm:5.7.3" + typescript-eslint: "npm:8.19.1" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" zod: "npm:3.24.1" languageName: unknown @@ -5201,11 +5514,11 @@ __metadata: "@babel/core": "npm:7.26.0" "@babel/preset-env": "npm:7.26.0" "@babel/preset-react": "npm:7.26.3" - "@navikt/ds-css": "npm:7.8.0" + "@navikt/ds-css": "npm:7.9.1" "@navikt/ds-icons": "npm:3.4.3" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" - "@navikt/nav-dekoratoren-moduler": "npm:3.1.1" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" + "@navikt/nav-dekoratoren-moduler": "npm:3.1.3" "@navikt/sif-app-register": "npm:*" "@navikt/sif-common-amplitude": "npm:*" "@navikt/sif-common-core-ds": "npm:*" @@ -5221,8 +5534,8 @@ __metadata: "@sif/eslint-config": "npm:*" "@testing-library/dom": "npm:10.4.0" "@testing-library/react": "npm:16.1.0" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" "@types/react-router-dom": "npm:5.3.3" "@types/uuid": "npm:10.0.0" "@vitejs/plugin-react": "npm:4.3.4" @@ -5239,9 +5552,9 @@ __metadata: dotenv: "npm:16.4.7" express: "npm:4.21.2" formik: "npm:2.4.6" - globals: "npm:15.13.0" + globals: "npm:15.14.0" helmet: "npm:8.0.0" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" http-proxy-middleware: "npm:3.0.3" jsdom: "npm:25.0.1" lodash: "npm:4.17.21" @@ -5251,12 +5564,12 @@ __metadata: react: "npm:19.0.0" react-day-picker: "npm:8.10.1" react-dom: "npm:19.0.0" - react-intl: "npm:7.0.4" - react-router-dom: "npm:7.0.2" - tailwindcss: "npm:3.4.16" - typescript: "npm:5.7.2" - uuid: "npm:11.0.3" - vite: "npm:6.0.3" + react-intl: "npm:7.1.0" + react-router-dom: "npm:7.1.1" + tailwindcss: "npm:3.4.17" + typescript: "npm:5.7.3" + uuid: "npm:11.0.5" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" vitest: "npm:2.1.8" zod: "npm:3.24.1" @@ -5267,25 +5580,25 @@ __metadata: version: 0.0.0-use.local resolution: "@navikt/sif-server@workspace:server" dependencies: - "@navikt/nav-dekoratoren-moduler": "npm:3.1.1" + "@navikt/nav-dekoratoren-moduler": "npm:3.1.3" "@navikt/oasis": "npm:3.6.0" "@navikt/sif-common-env": "npm:*" "@types/cookie-parser": "npm:1.4.8" "@types/express": "npm:5.0.0" "@types/morgan": "npm:1.9.9" - "@types/node": "npm:22.10.2" + "@types/node": "npm:22.10.5" "@vercel/ncc": "npm:0.38.3" axios: "npm:1.7.9" cookie-parser: "npm:1.4.7" csp-header: "npm:6.0.0" express: "npm:4.21.2" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" http-proxy-middleware: "npm:3.0.3" jsdom: "npm:25.0.1" morgan: "npm:1.10.0" prettier: "npm:3.4.2" react: "npm:19.0.0" - typescript: "npm:5.7.2" + typescript: "npm:5.7.3" winston: "npm:3.17.0" zod: "npm:3.24.1" languageName: unknown @@ -5296,12 +5609,12 @@ __metadata: resolution: "@navikt/ungdomsytelse-deltaker@workspace:apps/ungdomsytelse-deltaker" dependencies: "@eslint/eslintrc": "npm:3.2.0" - "@eslint/js": "npm:9.17.0" - "@navikt/aksel-icons": "npm:7.8.0" - "@navikt/ds-css": "npm:7.8.0" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" - "@navikt/nav-dekoratoren-moduler": "npm:3.1.1" + "@eslint/js": "npm:9.18.0" + "@navikt/aksel-icons": "npm:7.9.1" + "@navikt/ds-css": "npm:7.9.1" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" + "@navikt/nav-dekoratoren-moduler": "npm:3.1.3" "@navikt/sif-common-api": "npm:*" "@navikt/sif-common-core-ds": "npm:*" "@navikt/sif-common-env": "npm:*" @@ -5316,11 +5629,11 @@ __metadata: "@storybook/react": "npm:8.4.7" "@storybook/react-vite": "npm:8.4.7" "@storybook/test": "npm:8.4.7" - "@types/node": "npm:22.10.2" + "@types/node": "npm:22.10.5" "@types/object-hash": "npm:^3" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" - "@typescript-eslint/parser": "npm:8.18.0" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" + "@typescript-eslint/parser": "npm:8.19.1" "@vitejs/plugin-react": "npm:4.3.4" autoprefixer: "npm:10.4.20" axios: "npm:1.7.9" @@ -5328,14 +5641,14 @@ __metadata: compression: "npm:1.7.5" csp-header: "npm:6.0.0" dayjs: "npm:1.11.13" - eslint: "npm:9.17.0" + eslint: "npm:9.18.0" eslint-plugin-prettier: "npm:5.2.1" - eslint-plugin-react: "npm:7.37.2" + eslint-plugin-react: "npm:7.37.4" eslint-plugin-simple-import-sort: "npm:12.1.1" - eslint-plugin-storybook: "npm:0.11.1" + eslint-plugin-storybook: "npm:0.11.2" eslint-plugin-unicorn: "npm:56.0.1" express: "npm:4.21.2" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" http-proxy-middleware: "npm:3.0.3" jsdom: "npm:25.0.1" msw: "npm:^2.7.0" @@ -5347,17 +5660,17 @@ __metadata: prettier: "npm:3.4.2" react: "npm:19.0.0" react-dom: "npm:19.0.0" - react-hook-form: "npm:7.54.1" - react-intl: "npm:7.0.4" - react-router-dom: "npm:7.0.2" + react-hook-form: "npm:7.54.2" + react-intl: "npm:7.1.0" + react-router-dom: "npm:7.1.1" storybook: "npm:8.4.7" - stylelint: "npm:16.12.0" + stylelint: "npm:16.13.0" swr: "npm:^2.2.5" - tailwindcss: "npm:3.4.16" - typescript: "npm:5.7.2" - typescript-eslint: "npm:8.18.0" - uuid: "npm:11.0.3" - vite: "npm:6.0.3" + tailwindcss: "npm:3.4.17" + typescript: "npm:5.7.3" + typescript-eslint: "npm:8.19.1" + uuid: "npm:11.0.5" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" vitest: "npm:2.1.8" zod: "npm:3.24.1" @@ -5369,21 +5682,21 @@ __metadata: resolution: "@navikt/ungdomsytelse-veileder@workspace:apps/ungdomsytelse-veileder" dependencies: "@eslint/eslintrc": "npm:3.2.0" - "@eslint/js": "npm:9.17.0" - "@navikt/aksel-icons": "npm:7.8.0" - "@navikt/ds-css": "npm:7.8.0" - "@navikt/ds-react": "npm:7.8.0" - "@navikt/ds-tailwind": "npm:7.8.0" - "@navikt/nav-dekoratoren-moduler": "npm:3.1.1" + "@eslint/js": "npm:9.18.0" + "@navikt/aksel-icons": "npm:7.9.1" + "@navikt/ds-css": "npm:7.9.1" + "@navikt/ds-react": "npm:7.9.1" + "@navikt/ds-tailwind": "npm:7.9.1" + "@navikt/nav-dekoratoren-moduler": "npm:3.1.3" "@navikt/sif-common-api": "npm:*" "@navikt/sif-common-core-ds": "npm:*" "@navikt/sif-common-env": "npm:*" "@navikt/sif-common-formik-ds": "npm:*" "@navikt/sif-common-ui": "npm:*" - "@types/node": "npm:22.10.2" - "@types/react": "npm:19.0.1" - "@types/react-dom": "npm:19.0.2" - "@typescript-eslint/parser": "npm:8.18.0" + "@types/node": "npm:22.10.5" + "@types/react": "npm:19.0.6" + "@types/react-dom": "npm:19.0.3" + "@typescript-eslint/parser": "npm:8.19.1" "@vitejs/plugin-react": "npm:4.3.4" autoprefixer: "npm:10.4.20" axios: "npm:1.7.9" @@ -5391,14 +5704,14 @@ __metadata: compression: "npm:1.7.5" csp-header: "npm:6.0.0" date-fns: "npm:3.6.0" - eslint: "npm:9.17.0" + eslint: "npm:9.18.0" eslint-plugin-prettier: "npm:5.2.1" - eslint-plugin-react: "npm:7.37.2" + eslint-plugin-react: "npm:7.37.4" eslint-plugin-simple-import-sort: "npm:12.1.1" eslint-plugin-unicorn: "npm:56.0.1" express: "npm:4.21.2" formik: "npm:2.4.6" - html-react-parser: "npm:5.2.1" + html-react-parser: "npm:5.2.2" http-proxy-middleware: "npm:3.0.3" jsdom: "npm:25.0.1" mustache-express: "npm:1.3.2" @@ -5408,85 +5721,85 @@ __metadata: prettier: "npm:3.4.2" react: "npm:19.0.0" react-dom: "npm:19.0.0" - react-hook-form: "npm:7.54.1" - stylelint: "npm:16.12.0" - tailwindcss: "npm:3.4.16" - typescript: "npm:5.7.2" - typescript-eslint: "npm:8.18.0" - vite: "npm:6.0.3" + react-hook-form: "npm:7.54.2" + stylelint: "npm:16.13.0" + tailwindcss: "npm:3.4.17" + typescript: "npm:5.7.3" + typescript-eslint: "npm:8.19.1" + vite: "npm:6.0.7" vite-plugin-checker: "npm:0.8.0" zod: "npm:3.24.1" languageName: unknown linkType: soft -"@next/env@npm:15.1.0": - version: 15.1.0 - resolution: "@next/env@npm:15.1.0" - checksum: 10/96078055cfa1d37239f242efa051e05f3735b586e53cc8f20e416fe23f5fa9bd5b95e091e106e288e80cab71fa42e1e253198eea9af838ecc9c8cbee1787b814 +"@next/env@npm:15.1.4": + version: 15.1.4 + resolution: "@next/env@npm:15.1.4" + checksum: 10/b93e08227566191f0dff25f0a00bc6437e3be91afe12c371d3dcee5e4e1c2df41f51413d18068d2026b3b06b2f5586a5cb636a83bb9b78bf2e8fc8019747cfe8 languageName: node linkType: hard -"@next/eslint-plugin-next@npm:15.1.0": - version: 15.1.0 - resolution: "@next/eslint-plugin-next@npm:15.1.0" +"@next/eslint-plugin-next@npm:15.1.4": + version: 15.1.4 + resolution: "@next/eslint-plugin-next@npm:15.1.4" dependencies: fast-glob: "npm:3.3.1" - checksum: 10/70f9a32f2bf9daa063445a6afde15a9c4ea77ff2e44eac04804f378ca5aa7be8a9a9d7382a2d637c5cdc3549ca4054c2639141b2a0c71fde9032b689fb1eea4e + checksum: 10/71d3ddb238c6aa5a73c37e92c3550b803fa0c9fe5ab5893f4a9742667c1ec109b0fb8492dfcbc58fb99252d815fafce637e5e4efe7d85519ca777be2beda63d8 languageName: node linkType: hard -"@next/swc-darwin-arm64@npm:15.1.0": - version: 15.1.0 - resolution: "@next/swc-darwin-arm64@npm:15.1.0" +"@next/swc-darwin-arm64@npm:15.1.4": + version: 15.1.4 + resolution: "@next/swc-darwin-arm64@npm:15.1.4" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@next/swc-darwin-x64@npm:15.1.0": - version: 15.1.0 - resolution: "@next/swc-darwin-x64@npm:15.1.0" +"@next/swc-darwin-x64@npm:15.1.4": + version: 15.1.4 + resolution: "@next/swc-darwin-x64@npm:15.1.4" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@next/swc-linux-arm64-gnu@npm:15.1.0": - version: 15.1.0 - resolution: "@next/swc-linux-arm64-gnu@npm:15.1.0" +"@next/swc-linux-arm64-gnu@npm:15.1.4": + version: 15.1.4 + resolution: "@next/swc-linux-arm64-gnu@npm:15.1.4" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-arm64-musl@npm:15.1.0": - version: 15.1.0 - resolution: "@next/swc-linux-arm64-musl@npm:15.1.0" +"@next/swc-linux-arm64-musl@npm:15.1.4": + version: 15.1.4 + resolution: "@next/swc-linux-arm64-musl@npm:15.1.4" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@next/swc-linux-x64-gnu@npm:15.1.0": - version: 15.1.0 - resolution: "@next/swc-linux-x64-gnu@npm:15.1.0" +"@next/swc-linux-x64-gnu@npm:15.1.4": + version: 15.1.4 + resolution: "@next/swc-linux-x64-gnu@npm:15.1.4" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@next/swc-linux-x64-musl@npm:15.1.0": - version: 15.1.0 - resolution: "@next/swc-linux-x64-musl@npm:15.1.0" +"@next/swc-linux-x64-musl@npm:15.1.4": + version: 15.1.4 + resolution: "@next/swc-linux-x64-musl@npm:15.1.4" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@next/swc-win32-arm64-msvc@npm:15.1.0": - version: 15.1.0 - resolution: "@next/swc-win32-arm64-msvc@npm:15.1.0" +"@next/swc-win32-arm64-msvc@npm:15.1.4": + version: 15.1.4 + resolution: "@next/swc-win32-arm64-msvc@npm:15.1.4" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@next/swc-win32-x64-msvc@npm:15.1.0": - version: 15.1.0 - resolution: "@next/swc-win32-x64-msvc@npm:15.1.0" +"@next/swc-win32-x64-msvc@npm:15.1.4": + version: 15.1.4 + resolution: "@next/swc-win32-x64-msvc@npm:15.1.4" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -5556,78 +5869,198 @@ __metadata: languageName: node linkType: hard -"@open-draft/deferred-promise@npm:^2.2.0": - version: 2.2.0 - resolution: "@open-draft/deferred-promise@npm:2.2.0" - checksum: 10/bc3bb1668a555bb87b33383cafcf207d9561e17d2ca0d9e61b7ce88e82b66e36a333d3676c1d39eb5848022c03c8145331fcdc828ba297f88cb1de9c5cef6c19 +"@octokit/auth-token@npm:^4.0.0": + version: 4.0.0 + resolution: "@octokit/auth-token@npm:4.0.0" + checksum: 10/60e42701e341d700f73c518c7a35675d36d79fa9d5e838cc3ade96d147e49f5ba74db2e07b2337c2b95aaa540aa42088116df2122daa25633f9e70a2c8785c44 languageName: node linkType: hard -"@open-draft/logger@npm:^0.3.0": - version: 0.3.0 - resolution: "@open-draft/logger@npm:0.3.0" +"@octokit/core@npm:^5.0.1": + version: 5.2.0 + resolution: "@octokit/core@npm:5.2.0" dependencies: - is-node-process: "npm:^1.2.0" - outvariant: "npm:^1.4.0" - checksum: 10/7a280f170bcd4e91d3eedbefe628efd10c3bd06dd2461d06a7fdbced89ef457a38785847f88cc630fb4fd7dfa176d6f77aed17e5a9b08000baff647433b5ff78 + "@octokit/auth-token": "npm:^4.0.0" + "@octokit/graphql": "npm:^7.1.0" + "@octokit/request": "npm:^8.3.1" + "@octokit/request-error": "npm:^5.1.0" + "@octokit/types": "npm:^13.0.0" + before-after-hook: "npm:^2.2.0" + universal-user-agent: "npm:^6.0.0" + checksum: 10/2e40baf0b5c6949922436a653c213be43befd9690c43dd89872f669f3ac23117ae8ae5e5d6c18094813756c71c3f4fbedd575a891f0b89e12f58b2c38b7f3c13 languageName: node linkType: hard -"@open-draft/until@npm:^2.0.0, @open-draft/until@npm:^2.1.0": - version: 2.1.0 - resolution: "@open-draft/until@npm:2.1.0" - checksum: 10/622be42950afc8e89715d0fd6d56cbdcd13e36625e23b174bd3d9f06f80e25f9adf75d6698af93bca1e1bf465b9ce00ec05214a12189b671fb9da0f58215b6f4 +"@octokit/endpoint@npm:^9.0.1": + version: 9.0.5 + resolution: "@octokit/endpoint@npm:9.0.5" + dependencies: + "@octokit/types": "npm:^13.1.0" + universal-user-agent: "npm:^6.0.0" + checksum: 10/212122f653bf076ec37dd7de44bd54db74aa3cd16be4c395c91444488331becd83351e26b30248168e2cc28fc07b1a96e8f74adbbab02826f76de92e069f391f languageName: node linkType: hard -"@opentelemetry/api-logs@npm:0.53.0": - version: 0.53.0 - resolution: "@opentelemetry/api-logs@npm:0.53.0" +"@octokit/graphql@npm:^7.1.0": + version: 7.1.0 + resolution: "@octokit/graphql@npm:7.1.0" dependencies: - "@opentelemetry/api": "npm:^1.0.0" - checksum: 10/347b4554d6ee01afb29bd39e8f9cbbccd80abb0883fe6a84e3bcce8ab4dbfe357a2729246d2f66de0de6272846fd1bb2d71e286e18ad2690d9e7f46f02f00f73 + "@octokit/request": "npm:^8.3.0" + "@octokit/types": "npm:^13.0.0" + universal-user-agent: "npm:^6.0.0" + checksum: 10/da6857a69dc93cd20a11d3a905db4214d269d246a6aaee1d8734f922024b08ffdef0b3cba2ac79917633043b4f50464242b0bd92a265c960083dfff5b833dbbe languageName: node linkType: hard -"@opentelemetry/api@npm:^1.0.0, @opentelemetry/api@npm:^1.4.0, @opentelemetry/api@npm:^1.9.0": - version: 1.9.0 - resolution: "@opentelemetry/api@npm:1.9.0" - checksum: 10/a607f0eef971893c4f2ee2a4c2069aade6ec3e84e2a1f5c2aac19f65c5d9eeea41aa72db917c1029faafdd71789a1a040bdc18f40d63690e22ccae5d7070f194 +"@octokit/openapi-types@npm:^20.0.0": + version: 20.0.0 + resolution: "@octokit/openapi-types@npm:20.0.0" + checksum: 10/9f60572af1201dd92626c412253d83d986b8ab1956250b95f417013ee8e7baf25870eeb801d16672cabc2c420544bc9c2f0a979e07603ff5997eff038c71a8c3 languageName: node linkType: hard -"@opentelemetry/context-zone-peer-dep@npm:1.26.0": - version: 1.26.0 - resolution: "@opentelemetry/context-zone-peer-dep@npm:1.26.0" - peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" - zone.js: ^0.10.2 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 - checksum: 10/aed06016c380001418656810f80d24b68d05ce8d8138ed278fd27ed7990961b02dc4f3e1e75511662eb97afcfb4b7f96be2dfd28894eba3edff375be8908749a +"@octokit/openapi-types@npm:^22.2.0": + version: 22.2.0 + resolution: "@octokit/openapi-types@npm:22.2.0" + checksum: 10/0471b0c789fada5aa2390e6f82ba477738228ef7d2d986dda9aab0cb625d1562bd178ba0ba4d2655ce841079cd5efff9e58ece2077c27e569ea22109ea301830 languageName: node linkType: hard -"@opentelemetry/context-zone@npm:1.26.0": - version: 1.26.0 - resolution: "@opentelemetry/context-zone@npm:1.26.0" +"@octokit/plugin-paginate-rest@npm:^9.0.0": + version: 9.2.1 + resolution: "@octokit/plugin-paginate-rest@npm:9.2.1" dependencies: - "@opentelemetry/context-zone-peer-dep": "npm:1.26.0" - zone.js: "npm:^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0" - checksum: 10/16ddaa1129e818a6950db15f5f2c254e7d3216f2e7deb93ecb5b11496d4a68ea043cc469ac0f426840b797a21ad9162daabe74b5311ac3d0661fc6b64c51fff6 + "@octokit/types": "npm:^12.6.0" + peerDependencies: + "@octokit/core": 5 + checksum: 10/1528ab17eedb6705e30ad8576493f06b40f29a87c920a4affeb9715fe5f386e064b79eadd401c0cd1e7ec22287a461da4f5353a4ee57bc614fd890b0aa139d77 languageName: node linkType: hard -"@opentelemetry/core@npm:1.26.0": - version: 1.26.0 - resolution: "@opentelemetry/core@npm:1.26.0" +"@octokit/plugin-rest-endpoint-methods@npm:^10.0.0": + version: 10.4.1 + resolution: "@octokit/plugin-rest-endpoint-methods@npm:10.4.1" dependencies: - "@opentelemetry/semantic-conventions": "npm:1.27.0" + "@octokit/types": "npm:^12.6.0" peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10/474b6bcf42cd2825d56f915eb0d6e6cdcb37777a11fc2618fc2fa50754f4b9b5df23944f3aab186cb3ab930db5c3a81efa3183362802314a966930110346e6a4 + "@octokit/core": 5 + checksum: 10/1090fc5a1bebb7b48c512e178f8ad69a3ef8332e583274972f3a3035e9be9200093e22a5dbfe0f71aa1a7a8817e54bb915af3c2a3f88db1311a2873cef176552 languageName: node linkType: hard -"@opentelemetry/core@npm:1.29.0, @opentelemetry/core@npm:^1.26.0": +"@octokit/request-error@npm:^5.1.0": + version: 5.1.0 + resolution: "@octokit/request-error@npm:5.1.0" + dependencies: + "@octokit/types": "npm:^13.1.0" + deprecation: "npm:^2.0.0" + once: "npm:^1.4.0" + checksum: 10/d03f9f7a408af673cd991eeb450b6f4a5cee6c368f6349eb0211dfc0404fddfcff8b5225ef186020a2a1829adba0aa8c9174155b49ab2ed00a94fb9a886a1dd3 + languageName: node + linkType: hard + +"@octokit/request@npm:^8.3.0, @octokit/request@npm:^8.3.1": + version: 8.4.0 + resolution: "@octokit/request@npm:8.4.0" + dependencies: + "@octokit/endpoint": "npm:^9.0.1" + "@octokit/request-error": "npm:^5.1.0" + "@octokit/types": "npm:^13.1.0" + universal-user-agent: "npm:^6.0.0" + checksum: 10/176cd83c68bde87111a01d50e2d21cf12ec362c1a30b33649eb8771d37397f6d6dd0b0844aab8d59b16d74c825252e39cadd52e37a4b1669d6facd1cb2cdc995 + languageName: node + linkType: hard + +"@octokit/types@npm:^12.6.0": + version: 12.6.0 + resolution: "@octokit/types@npm:12.6.0" + dependencies: + "@octokit/openapi-types": "npm:^20.0.0" + checksum: 10/19b77a8d25af2a5df4561f8750f807edfc9fca5b07cfa9fb21dce4665e1b188c966688f5ed5e08089404428100dfe44ad353f8d8532f1d30fe47e61c5faa1440 + languageName: node + linkType: hard + +"@octokit/types@npm:^13.0.0, @octokit/types@npm:^13.1.0": + version: 13.6.2 + resolution: "@octokit/types@npm:13.6.2" + dependencies: + "@octokit/openapi-types": "npm:^22.2.0" + checksum: 10/8e614796f3554d28dfb77c570e80ef52d68ef311bdd4614ec263f8ea2266b9c06d4f7963fe2989f32cbfe4ea0c05e13eba9a64a6e0f64afb997cd975af154d52 + languageName: node + linkType: hard + +"@open-draft/deferred-promise@npm:^2.2.0": + version: 2.2.0 + resolution: "@open-draft/deferred-promise@npm:2.2.0" + checksum: 10/bc3bb1668a555bb87b33383cafcf207d9561e17d2ca0d9e61b7ce88e82b66e36a333d3676c1d39eb5848022c03c8145331fcdc828ba297f88cb1de9c5cef6c19 + languageName: node + linkType: hard + +"@open-draft/logger@npm:^0.3.0": + version: 0.3.0 + resolution: "@open-draft/logger@npm:0.3.0" + dependencies: + is-node-process: "npm:^1.2.0" + outvariant: "npm:^1.4.0" + checksum: 10/7a280f170bcd4e91d3eedbefe628efd10c3bd06dd2461d06a7fdbced89ef457a38785847f88cc630fb4fd7dfa176d6f77aed17e5a9b08000baff647433b5ff78 + languageName: node + linkType: hard + +"@open-draft/until@npm:^2.0.0, @open-draft/until@npm:^2.1.0": + version: 2.1.0 + resolution: "@open-draft/until@npm:2.1.0" + checksum: 10/622be42950afc8e89715d0fd6d56cbdcd13e36625e23b174bd3d9f06f80e25f9adf75d6698af93bca1e1bf465b9ce00ec05214a12189b671fb9da0f58215b6f4 + languageName: node + linkType: hard + +"@opentelemetry/api-logs@npm:0.53.0": + version: 0.53.0 + resolution: "@opentelemetry/api-logs@npm:0.53.0" + dependencies: + "@opentelemetry/api": "npm:^1.0.0" + checksum: 10/347b4554d6ee01afb29bd39e8f9cbbccd80abb0883fe6a84e3bcce8ab4dbfe357a2729246d2f66de0de6272846fd1bb2d71e286e18ad2690d9e7f46f02f00f73 + languageName: node + linkType: hard + +"@opentelemetry/api@npm:^1.0.0, @opentelemetry/api@npm:^1.4.0, @opentelemetry/api@npm:^1.9.0": + version: 1.9.0 + resolution: "@opentelemetry/api@npm:1.9.0" + checksum: 10/a607f0eef971893c4f2ee2a4c2069aade6ec3e84e2a1f5c2aac19f65c5d9eeea41aa72db917c1029faafdd71789a1a040bdc18f40d63690e22ccae5d7070f194 + languageName: node + linkType: hard + +"@opentelemetry/context-zone-peer-dep@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/context-zone-peer-dep@npm:1.26.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + zone.js: ^0.10.2 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 + checksum: 10/aed06016c380001418656810f80d24b68d05ce8d8138ed278fd27ed7990961b02dc4f3e1e75511662eb97afcfb4b7f96be2dfd28894eba3edff375be8908749a + languageName: node + linkType: hard + +"@opentelemetry/context-zone@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/context-zone@npm:1.26.0" + dependencies: + "@opentelemetry/context-zone-peer-dep": "npm:1.26.0" + zone.js: "npm:^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0" + checksum: 10/16ddaa1129e818a6950db15f5f2c254e7d3216f2e7deb93ecb5b11496d4a68ea043cc469ac0f426840b797a21ad9162daabe74b5311ac3d0661fc6b64c51fff6 + languageName: node + linkType: hard + +"@opentelemetry/core@npm:1.26.0": + version: 1.26.0 + resolution: "@opentelemetry/core@npm:1.26.0" + dependencies: + "@opentelemetry/semantic-conventions": "npm:1.27.0" + peerDependencies: + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10/474b6bcf42cd2825d56f915eb0d6e6cdcb37777a11fc2618fc2fa50754f4b9b5df23944f3aab186cb3ab930db5c3a81efa3183362802314a966930110346e6a4 + languageName: node + linkType: hard + +"@opentelemetry/core@npm:1.29.0, @opentelemetry/core@npm:^1.26.0": version: 1.29.0 resolution: "@opentelemetry/core@npm:1.29.0" dependencies: @@ -5841,6 +6274,28 @@ __metadata: languageName: node linkType: hard +"@optimize-lodash/rollup-plugin@npm:5.0.0": + version: 5.0.0 + resolution: "@optimize-lodash/rollup-plugin@npm:5.0.0" + dependencies: + "@optimize-lodash/transform": "npm:3.0.4" + "@rollup/pluginutils": "npm:^5.1.0" + peerDependencies: + rollup: ">= 4.x" + checksum: 10/c5ea9fbc2dda4c2587ed6a435ce611ab1911e7c2196189116524805785313e11d9f2463bd62e66cd6ef9339687515c6da0c8ae927293d064a2f8ff56e2fa02a1 + languageName: node + linkType: hard + +"@optimize-lodash/transform@npm:3.0.4": + version: 3.0.4 + resolution: "@optimize-lodash/transform@npm:3.0.4" + dependencies: + estree-walker: "npm:^2.0.2" + magic-string: "npm:~0.30.11" + checksum: 10/645b36058459e8e102004a2e48c2ad3eda6bb4d46f93dac78e2fd8da5fb5f51228cb061dedd0f336313c588494112d32a0de05bbe0ff44f507bccb6640f7e2f6 + languageName: node + linkType: hard + "@originjs/vite-plugin-commonjs@npm:1.0.3": version: 1.0.3 resolution: "@originjs/vite-plugin-commonjs@npm:1.0.3" @@ -6056,40 +6511,66 @@ __metadata: languageName: node linkType: hard -"@portabletext/editor@npm:^1.15.3": - version: 1.16.0 - resolution: "@portabletext/editor@npm:1.16.0" +"@pnpm/config.env-replace@npm:^1.1.0": + version: 1.1.0 + resolution: "@pnpm/config.env-replace@npm:1.1.0" + checksum: 10/fabe35cede1b72ad12877b8bed32f7c2fcd89e94408792c4d69009b886671db7988a2132bc18b7157489d2d0fd4266a06c9583be3d2e10c847bf06687420cb2a + languageName: node + linkType: hard + +"@pnpm/network.ca-file@npm:^1.0.1": + version: 1.0.2 + resolution: "@pnpm/network.ca-file@npm:1.0.2" + dependencies: + graceful-fs: "npm:4.2.10" + checksum: 10/d8d0884646500576bd5390464d13db1bb9a62e32a1069293e5bddb2ad8354b354b7e2d2a35e12850025651e795e6a80ce9e601c66312504667b7e3ee7b52becc + languageName: node + linkType: hard + +"@pnpm/npm-conf@npm:^2.1.0": + version: 2.3.1 + resolution: "@pnpm/npm-conf@npm:2.3.1" dependencies: - "@portabletext/patches": "npm:1.1.0" - "@xstate/react": "npm:^5.0.0" + "@pnpm/config.env-replace": "npm:^1.1.0" + "@pnpm/network.ca-file": "npm:^1.0.1" + config-chain: "npm:^1.1.11" + checksum: 10/44fbb0b166eee3e3631ef0e92b1bed6489aa6975e3e722c16577cc0181b81374f5ae90c6e4da183c8160f996e6b4863325525b00542f42d1b757b51ef62bc4e7 + languageName: node + linkType: hard + +"@portabletext/editor@npm:^1.20.0": + version: 1.21.1 + resolution: "@portabletext/editor@npm:1.21.1" + dependencies: + "@portabletext/patches": "npm:1.1.1" + "@xstate/react": "npm:^5.0.1" debug: "npm:^4.3.4" get-random-values-esm: "npm:^1.0.2" lodash: "npm:^4.17.21" lodash.startcase: "npm:^4.4.0" - react-compiler-runtime: "npm:19.0.0-beta-37ed2a7-20241206" + react-compiler-runtime: "npm:19.0.0-beta-55955c9-20241229" slate: "npm:0.112.0" slate-dom: "npm:^0.111.0" slate-react: "npm:0.112.0" use-effect-event: "npm:^1.0.2" - xstate: "npm:^5.19.0" + xstate: "npm:^5.19.1" peerDependencies: - "@sanity/block-tools": ^3.67.1 - "@sanity/schema": ^3.67.1 - "@sanity/types": ^3.67.1 + "@sanity/block-tools": ^3.69.0 + "@sanity/schema": ^3.69.0 + "@sanity/types": ^3.69.0 react: ^16.9 || ^17 || ^18 || ^19 rxjs: ^7.8.1 - styled-components: ^6.1.13 - checksum: 10/5341cf9624a0b09feb827d49a532ae083273ee7e04db6c2ca1e87f4e2836ffc812f87b095642725b1ce40412b010c35fdb7c40bd91cf687b64db7ce3d2098bb1 + checksum: 10/24a412dc926e5369a74573959f580e281146c8cf5d1c404bf59b802f9569aee69456603568a9078b665ad7d5ace9945b32e3a859d0b2f3cd5ae177ee3442b462 languageName: node linkType: hard -"@portabletext/patches@npm:1.1.0": - version: 1.1.0 - resolution: "@portabletext/patches@npm:1.1.0" +"@portabletext/patches@npm:1.1.1": + version: 1.1.1 + resolution: "@portabletext/patches@npm:1.1.1" dependencies: - "@sanity/diff-match-patch": "npm:^3.1.1" + "@sanity/diff-match-patch": "npm:^3.1.2" lodash: "npm:^4.17.21" - checksum: 10/eee0f3fe943308f83de2b0734bc3ccf41f851d0c607522204657d842bb3fb4e2729d7133c793e330c6f4c4aba35c6b3584911ace0d6f214678fe70c2b63ca2d2 + checksum: 10/7f306457d18ce5bf8de87d792e46bcbcbe767b909d77150b7f4ea8d7be9e03c8d626def26706d14d78c4894a274c380f845992f86f1e6dbe31e6789dc54464c7 languageName: node linkType: hard @@ -6915,34 +7396,143 @@ __metadata: languageName: node linkType: hard -"@rexxars/react-json-inspector@npm:^8.0.1": - version: 8.0.1 - resolution: "@rexxars/react-json-inspector@npm:8.0.1" +"@rexxars/react-json-inspector@npm:^9.0.1": + version: 9.0.1 + resolution: "@rexxars/react-json-inspector@npm:9.0.1" dependencies: - create-react-class: "npm:^15.6.0" - debounce: "npm:1.0.0" + debounce: "npm:^1.0.0" md5-o-matic: "npm:^0.1.1" peerDependencies: - react: ^15 || ^16 || ^17 || ^18 - checksum: 10/dc899461462e8a1a64670e22833aee91360fc3fa978e4f2da0e8a55447c3b74d4a8ca60b6346d514ac35c25b20ec71589e74f2cf0ebdfc2ef55d4262e661df81 + react: ^18 || ^19 + checksum: 10/7bd8275d8b5a2c90478307d6459d5e15cc40ee0b7b8c3b8c60bb21d814ab31ed51e13404389932eaec5373b4c663768ccc122af350b1865a253661b7aee55909 languageName: node linkType: hard -"@rexxars/react-split-pane@npm:^0.1.93": - version: 0.1.93 - resolution: "@rexxars/react-split-pane@npm:0.1.93" +"@rexxars/react-split-pane@npm:^1.0.0": + version: 1.0.0 + resolution: "@rexxars/react-split-pane@npm:1.0.0" + peerDependencies: + react: ^18 || ^19 + react-dom: ^18 || ^19 + checksum: 10/60094d230fd0fabc3511f4e861618deda51e448533e7cb037606b0cc33ee5487db03dc5ab06a3f95b9b9fbdf0c269aca84ca08aed95783408cea9d346810ad79 + languageName: node + linkType: hard + +"@rollup/plugin-alias@npm:^5.1.1": + version: 5.1.1 + resolution: "@rollup/plugin-alias@npm:5.1.1" + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10/1f1ab178aa2726c81e2ae1709f73b3688491f14655b97c54d43bea35ac3f783f8855d701d1e5eac234e3ffe89fef56ce975726b036a97049fefa9b514686e55c + languageName: node + linkType: hard + +"@rollup/plugin-babel@npm:^6.0.4": + version: 6.0.4 + resolution: "@rollup/plugin-babel@npm:6.0.4" dependencies: - prop-types: "npm:^15.7.2" - react-lifecycles-compat: "npm:^3.0.4" - react-style-proptype: "npm:^3.2.2" + "@babel/helper-module-imports": "npm:^7.18.6" + "@rollup/pluginutils": "npm:^5.0.1" peerDependencies: - react: ^18 - react-dom: ^18 - checksum: 10/2ca1aa628225cb6c48012be8a004b41477d8e847263f415bc5905b16a0aaccd4569081ff38a4e914cce28e8ed458cd348608fbdba87cb2c462b237c8b4cdc3f1 + "@babel/core": ^7.0.0 + "@types/babel__core": ^7.1.9 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + "@types/babel__core": + optional: true + rollup: + optional: true + checksum: 10/89210c8c597b41fd4c561749505c85827697d8d0918c492270f522bd85fac8db3af701cf05480a9e594fcc0df9be42fb7ab025b02a272bde74bb2f63c8c39de2 languageName: node linkType: hard -"@rollup/pluginutils@npm:^5.0.2": +"@rollup/plugin-commonjs@npm:^28.0.2": + version: 28.0.2 + resolution: "@rollup/plugin-commonjs@npm:28.0.2" + dependencies: + "@rollup/pluginutils": "npm:^5.0.1" + commondir: "npm:^1.0.1" + estree-walker: "npm:^2.0.2" + fdir: "npm:^6.2.0" + is-reference: "npm:1.2.1" + magic-string: "npm:^0.30.3" + picomatch: "npm:^4.0.2" + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10/07365e28628e65bacae714dc6ebfbadaa11bdd8291ec27f6633bf5a20f73faa9e6b4b0c6f65a05e3deac0d42f61c83174f8d5a38e4cb93e83112a1fca4d60a09 + languageName: node + linkType: hard + +"@rollup/plugin-json@npm:^6.1.0": + version: 6.1.0 + resolution: "@rollup/plugin-json@npm:6.1.0" + dependencies: + "@rollup/pluginutils": "npm:^5.1.0" + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10/cc018d20c80242a2b8b44fae61a968049cf31bb8406218187cc7cda35747616594e79452dd65722e7da6dd825b392e90d4599d43cd4461a02fefa2865945164e + languageName: node + linkType: hard + +"@rollup/plugin-node-resolve@npm:^16.0.0": + version: 16.0.0 + resolution: "@rollup/plugin-node-resolve@npm:16.0.0" + dependencies: + "@rollup/pluginutils": "npm:^5.0.1" + "@types/resolve": "npm:1.20.2" + deepmerge: "npm:^4.2.2" + is-module: "npm:^1.0.0" + resolve: "npm:^1.22.1" + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10/018a97667d68bd78d6b1de5597680dcc5785f9339a936984a5715ad2cd7c6f2c85fb9448552b94e6903db35e2d3b218b54e5e9ca048257f2d3bdea2e05d886c7 + languageName: node + linkType: hard + +"@rollup/plugin-replace@npm:^6.0.2": + version: 6.0.2 + resolution: "@rollup/plugin-replace@npm:6.0.2" + dependencies: + "@rollup/pluginutils": "npm:^5.0.1" + magic-string: "npm:^0.30.3" + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10/819d2b8eed0368908a79a518ab72115343ebc01e2c6029fcab21a0b644ddf51a2764de6273659de42d7693ea04e74fae56d5b09ef423c42d00a10a1a36d1c110 + languageName: node + linkType: hard + +"@rollup/plugin-terser@npm:^0.4.4": + version: 0.4.4 + resolution: "@rollup/plugin-terser@npm:0.4.4" + dependencies: + serialize-javascript: "npm:^6.0.1" + smob: "npm:^1.0.0" + terser: "npm:^5.17.4" + peerDependencies: + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + checksum: 10/a5e066ddea55fc8c32188bc8b484cca619713516f10e3a06801881ec98bf37459ca24e5fe8711f93a5fa7f26a6e9132a47bc1a61c01e0b513dfd79a96cdc6eb7 + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.0.2, @rollup/pluginutils@npm:^5.0.5, @rollup/pluginutils@npm:^5.1.0": version: 5.1.4 resolution: "@rollup/pluginutils@npm:5.1.4" dependencies: @@ -6965,6 +7555,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm-eabi@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.30.1" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@rollup/rollup-android-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-android-arm64@npm:4.28.1" @@ -6972,6 +7569,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-android-arm64@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-android-arm64@npm:4.30.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-darwin-arm64@npm:4.28.1" @@ -6979,6 +7583,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-arm64@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-darwin-arm64@npm:4.30.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-darwin-x64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-darwin-x64@npm:4.28.1" @@ -6986,6 +7597,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-darwin-x64@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-darwin-x64@npm:4.30.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-arm64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-freebsd-arm64@npm:4.28.1" @@ -6993,6 +7611,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-arm64@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.30.1" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-freebsd-x64@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-freebsd-x64@npm:4.28.1" @@ -7000,6 +7625,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-freebsd-x64@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-freebsd-x64@npm:4.30.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.28.1" @@ -7007,6 +7639,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-gnueabihf@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.30.1" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.28.1" @@ -7014,6 +7653,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm-musleabihf@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.30.1" + conditions: os=linux & cpu=arm & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.28.1" @@ -7021,6 +7667,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-gnu@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.30.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-arm64-musl@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-arm64-musl@npm:4.28.1" @@ -7028,6 +7681,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-arm64-musl@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.30.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.28.1" @@ -7035,6 +7695,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-loongarch64-gnu@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.30.1" + conditions: os=linux & cpu=loong64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.28.1" @@ -7042,6 +7709,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.30.1" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.28.1" @@ -7049,6 +7723,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-riscv64-gnu@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.30.1" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-s390x-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.28.1" @@ -7056,6 +7737,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-s390x-gnu@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.30.1" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-gnu@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-x64-gnu@npm:4.28.1" @@ -7063,6 +7751,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-gnu@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.30.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + "@rollup/rollup-linux-x64-musl@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-linux-x64-musl@npm:4.28.1" @@ -7070,6 +7765,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-linux-x64-musl@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.30.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + "@rollup/rollup-win32-arm64-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.28.1" @@ -7077,6 +7779,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-arm64-msvc@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.30.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@rollup/rollup-win32-ia32-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.28.1" @@ -7084,6 +7793,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-ia32-msvc@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.30.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@rollup/rollup-win32-x64-msvc@npm:4.28.1": version: 4.28.1 resolution: "@rollup/rollup-win32-x64-msvc@npm:4.28.1" @@ -7091,6 +7807,13 @@ __metadata: languageName: node linkType: hard +"@rollup/rollup-win32-x64-msvc@npm:4.30.1": + version: 4.30.1 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.30.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@rtsao/scc@npm:^1.1.0": version: 1.1.0 resolution: "@rtsao/scc@npm:1.1.0" @@ -7105,6 +7828,64 @@ __metadata: languageName: node linkType: hard +"@rushstack/node-core-library@npm:5.10.1": + version: 5.10.1 + resolution: "@rushstack/node-core-library@npm:5.10.1" + dependencies: + ajv: "npm:~8.13.0" + ajv-draft-04: "npm:~1.0.0" + ajv-formats: "npm:~3.0.1" + fs-extra: "npm:~7.0.1" + import-lazy: "npm:~4.0.0" + jju: "npm:~1.4.0" + resolve: "npm:~1.22.1" + semver: "npm:~7.5.4" + peerDependencies: + "@types/node": "*" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10/440aade872d13c4b39eeaa762bdfca713fea60d34c72f7b869db345ef9e9aed62c7f9fb175bc90684cf0d1f46e1e5cd778941baf43b01f2ee576a51f2ba2cce7 + languageName: node + linkType: hard + +"@rushstack/rig-package@npm:0.5.3": + version: 0.5.3 + resolution: "@rushstack/rig-package@npm:0.5.3" + dependencies: + resolve: "npm:~1.22.1" + strip-json-comments: "npm:~3.1.1" + checksum: 10/b58a3925a41d7a0e79f4fde7c400a379683cc7b0073c447aba6d36231529a37e7d2f4559f459be785ad862ecb01b618b2d0ff60661046e5223437356155ccb14 + languageName: node + linkType: hard + +"@rushstack/terminal@npm:0.14.4": + version: 0.14.4 + resolution: "@rushstack/terminal@npm:0.14.4" + dependencies: + "@rushstack/node-core-library": "npm:5.10.1" + supports-color: "npm:~8.1.1" + peerDependencies: + "@types/node": "*" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10/aede44b4255225777acd7887b1adba7b8cca578fe9adf4283c5591a0f28dbd45fb38f6b5f04a56973828e28da6a9d951da046bcb4f576d5fa360c8893cac6861 + languageName: node + linkType: hard + +"@rushstack/ts-command-line@npm:4.23.2": + version: 4.23.2 + resolution: "@rushstack/ts-command-line@npm:4.23.2" + dependencies: + "@rushstack/terminal": "npm:0.14.4" + "@types/argparse": "npm:1.0.38" + argparse: "npm:~1.0.9" + string-argv: "npm:~0.3.1" + checksum: 10/583cd23d2d3e3e9772184764a1a7e50dcb863fe1c6affefe196a935a69c64aaaa32cc71aa3fb55fb2dfbd353cc25db3f0b9999b79bbe13b75ee476a51cb48717 + languageName: node + linkType: hard + "@sanity/asset-utils@npm:^2.0.6": version: 2.2.1 resolution: "@sanity/asset-utils@npm:2.2.1" @@ -7122,27 +7903,36 @@ __metadata: languageName: node linkType: hard -"@sanity/block-tools@npm:3.67.1": - version: 3.67.1 - resolution: "@sanity/block-tools@npm:3.67.1" +"@sanity/block-tools@npm:3.69.0": + version: 3.69.0 + resolution: "@sanity/block-tools@npm:3.69.0" dependencies: - "@sanity/types": "npm:3.67.1" - "@types/react": "npm:^18.3.5" + "@sanity/types": "npm:3.69.0" get-random-values-esm: "npm:1.0.2" lodash: "npm:^4.17.21" - checksum: 10/c5c384249e3a4e0e6c86c6dfb084446c1300c6c66b3ef0bfbaede1962d04ae941329bb5a861adcef14ab6f6d97672d18b60c142f6b91bdfd3e9a480be6490b22 + peerDependencies: + "@types/react": 18 || 19 + checksum: 10/60020827b77c2943ee5abc43b0ac74d94b77becdc25e6343a8e671ae0eaed83a5d9dea3d2a298dd3503f120be2773878027f61c91636b5987e38fb935b95104c languageName: node linkType: hard -"@sanity/cli@npm:3.67.1": - version: 3.67.1 - resolution: "@sanity/cli@npm:3.67.1" +"@sanity/browserslist-config@npm:^1.0.5": + version: 1.0.5 + resolution: "@sanity/browserslist-config@npm:1.0.5" + checksum: 10/4f464519d624ece585bbf2da37dd07e9d70e1fabf04fa6ff4b58c2524f6dec602ad8cfd6c7f00c830bbe84aaee2c6fd6390042ef829abb05036f979d91d3d898 + languageName: node + linkType: hard + +"@sanity/cli@npm:3.69.0": + version: 3.69.0 + resolution: "@sanity/cli@npm:3.69.0" dependencies: "@babel/traverse": "npm:^7.23.5" "@sanity/client": "npm:^6.24.1" - "@sanity/codegen": "npm:3.67.1" + "@sanity/codegen": "npm:3.69.0" "@sanity/telemetry": "npm:^0.7.7" - "@sanity/util": "npm:3.67.1" + "@sanity/template-validator": "npm:^2.0.0" + "@sanity/util": "npm:3.69.0" chalk: "npm:^4.1.2" debug: "npm:^4.3.4" decompress: "npm:^4.2.0" @@ -7153,16 +7943,25 @@ __metadata: pkg-dir: "npm:^5.0.0" prettier: "npm:^3.3.0" semver: "npm:^7.3.5" - silver-fleece: "npm:1.1.0" validate-npm-package-name: "npm:^3.0.0" - yaml: "npm:^2.6.1" bin: sanity: ./bin/sanity - checksum: 10/0e4ecc8e6f85ea0c762b43e6b2b9ae4850a4e43c40392be45a45aa46915023b1785eea48f63ea20b4e4007c1ddabd302cad36154bb62ac29d5300e1937bdc74b + checksum: 10/0896c40c44a38d0ef961e7131f13251bb0e60a3bd2b852b76e034c87f136c5d689e49f224c866ff16cb181e547eb99a61427902f94ad62df4255f6484764247d languageName: node linkType: hard -"@sanity/client@npm:6.24.1, @sanity/client@npm:^6.15.11, @sanity/client@npm:^6.15.20, @sanity/client@npm:^6.22.3, @sanity/client@npm:^6.24.1": +"@sanity/client@npm:6.24.3": + version: 6.24.3 + resolution: "@sanity/client@npm:6.24.3" + dependencies: + "@sanity/eventsource": "npm:^5.0.2" + get-it: "npm:^8.6.5" + rxjs: "npm:^7.0.0" + checksum: 10/41df837ed060d806de6ab2c8397996b8a42e5889fce73a75fc2558497a08bf47f8b046b157806df8b2c8496e87722817175872e988394cabb1d4fb92e2ba900b + languageName: node + linkType: hard + +"@sanity/client@npm:^6.22.3, @sanity/client@npm:^6.24.1": version: 6.24.1 resolution: "@sanity/client@npm:6.24.1" dependencies: @@ -7173,9 +7972,9 @@ __metadata: languageName: node linkType: hard -"@sanity/codegen@npm:3.67.1": - version: 3.67.1 - resolution: "@sanity/codegen@npm:3.67.1" +"@sanity/codegen@npm:3.69.0": + version: 3.69.0 + resolution: "@sanity/codegen@npm:3.69.0" dependencies: "@babel/core": "npm:^7.23.9" "@babel/generator": "npm:^7.23.6" @@ -7187,12 +7986,12 @@ __metadata: "@babel/types": "npm:^7.23.9" debug: "npm:^4.3.4" globby: "npm:^11.1.0" - groq: "npm:3.67.1" + groq: "npm:3.69.0" groq-js: "npm:^1.14.2" json5: "npm:^2.2.3" tsconfig-paths: "npm:^4.2.0" zod: "npm:^3.22.4" - checksum: 10/d8f2ad70a435f3d179607735baf20b838d1ec9fa6341ff247ea920d28a64aaf9e18482f1e7d74b328fde3b44d2c11601f792f7cb615839269896093396226e7f + checksum: 10/bbbcdb9400687e6cafcc44c37f7f6b22e2b21c75a738f2c7bda4eafeacab5cd41923ebbb8b28ec26ad91f2ca39771abf5a4c7fe983356bee05aa0d843b7837fe languageName: node linkType: hard @@ -7203,14 +8002,14 @@ __metadata: languageName: node linkType: hard -"@sanity/comlink@npm:2.0.1": - version: 2.0.1 - resolution: "@sanity/comlink@npm:2.0.1" +"@sanity/comlink@npm:2.0.4": + version: 2.0.4 + resolution: "@sanity/comlink@npm:2.0.4" dependencies: rxjs: "npm:^7.8.1" - uuid: "npm:^10.0.0" - xstate: "npm:^5.19.0" - checksum: 10/27b49a6e6f15af93944f5f29514af9733c31d2ba2815ebd4eac1ec4be1d631d78c684c6959925b45cfa71231b516ec24dc304f35fb20af0cc8eebddd8351b550 + uuid: "npm:^11.0.4" + xstate: "npm:^5.19.1" + checksum: 10/b6760e9f0dce8416749e936372bf1dab16ed34dccb11f0e8198c2c74bc951cbaeb8145955d9c90c24c5c0e5661fce68eb1a08ea040b1872db1fed0490a0e318b languageName: node linkType: hard @@ -7221,18 +8020,25 @@ __metadata: languageName: node linkType: hard -"@sanity/diff@npm:3.67.1": - version: 3.67.1 - resolution: "@sanity/diff@npm:3.67.1" +"@sanity/diff-match-patch@npm:^3.1.2": + version: 3.1.2 + resolution: "@sanity/diff-match-patch@npm:3.1.2" + checksum: 10/b8d1c890b7b0931262da65d9ff5e3590a65195593cc88adb088549ab621b12c54e0a7c3fcd288cd6eb563fbc84935be436a1ffa99b2dd5521ecfc5a243dd7f04 + languageName: node + linkType: hard + +"@sanity/diff@npm:3.69.0": + version: 3.69.0 + resolution: "@sanity/diff@npm:3.69.0" dependencies: "@sanity/diff-match-patch": "npm:^3.1.1" - checksum: 10/820e71cc2cb80d0c9cfb9c9c64409cda2807db8d149313728b470082d097cee90ce8846c87bed29d633deace4bebb52c77c39254a1d86559e3ac4e62f7ef90bf + checksum: 10/1f5ada3703e96c8cc31c4e92af11cc00c89d1a2c90d7e2fda9e86b9ea730894da8ec78ca8b2e5895df7b8218ada5cac6e25a82fe911eac21079f2c7f8c716a92 languageName: node linkType: hard -"@sanity/eslint-config-studio@npm:5.0.0": - version: 5.0.0 - resolution: "@sanity/eslint-config-studio@npm:5.0.0" +"@sanity/eslint-config-studio@npm:5.0.1": + version: 5.0.1 + resolution: "@sanity/eslint-config-studio@npm:5.0.1" dependencies: "@babel/core": "npm:^7.26.0" "@babel/eslint-parser": "npm:^7.25.9" @@ -7244,7 +8050,7 @@ __metadata: typescript-eslint: "npm:^8.17.0" peerDependencies: eslint: ^9.0.0 - checksum: 10/22722b51e158786fba3124a23868b7b0ee6fddedb75ff8e3a401e138c17b9dd6a1cdb87c3055db766852e2a5fe5f56897d824cb10869dd443f16bd5b8ab1f879 + checksum: 10/f23399450af7ee371888e18bf875637512e1be3c1ff2ea475dadfede9f0f0cfee8609fd4af6454a98ed74c90ba6213b8631ae9fafae0b661b9ed9adbe96c1127 languageName: node linkType: hard @@ -7260,15 +8066,16 @@ __metadata: languageName: node linkType: hard -"@sanity/export@npm:^3.41.1": - version: 3.41.1 - resolution: "@sanity/export@npm:3.41.1" +"@sanity/export@npm:^3.42.2": + version: 3.42.2 + resolution: "@sanity/export@npm:3.42.2" dependencies: - "@sanity/client": "npm:^6.15.20" - "@sanity/util": "npm:3.37.2" + "@sanity/client": "npm:^6.24.1" + "@sanity/util": "npm:3.68.3" archiver: "npm:^7.0.0" debug: "npm:^4.3.4" get-it: "npm:^8.6.2" + json-stream-stringify: "npm:^2.0.2" lodash: "npm:^4.17.21" mississippi: "npm:^4.0.0" p-queue: "npm:^2.3.0" @@ -7276,7 +8083,7 @@ __metadata: split2: "npm:^4.2.0" tar: "npm:^7.0.1" yaml: "npm:^2.4.2" - checksum: 10/9b6ef5e10d39ef34ac5d5527ee970ef3966f67e1768440dea786bb0266f9add54f8c045796317f7b16e57a64140e78f681331494698109093b8fcbaceef83fb7 + checksum: 10/f3aecbe3bb6359415c2ea77d1373566469402f100219a204acd02d376e408cdb18b3e31f5032b6518bf508fc8c5b06a39e1b20747a1748bcdf74d3a17c883591 languageName: node linkType: hard @@ -7287,14 +8094,12 @@ __metadata: languageName: node linkType: hard -"@sanity/icons@npm:^3.5.0, @sanity/icons@npm:^3.5.2": - version: 3.5.2 - resolution: "@sanity/icons@npm:3.5.2" - dependencies: - react-compiler-runtime: "npm:19.0.0-beta-37ed2a7-20241206" +"@sanity/icons@npm:^3.5.5, @sanity/icons@npm:^3.5.7": + version: 3.5.7 + resolution: "@sanity/icons@npm:3.5.7" peerDependencies: react: ^18.3 || ^19.0.0-0 - checksum: 10/531818fb4c22ce3067fb737d105727e9a71f95d9b0a754bd711ad5a447686f42b58a731d43908cfb4db3f4a9975cc293368963d3175e15e9473a1743598e94de + checksum: 10/b84e8b323674fe33608bcf1205ca919644e902afdc3f90c8e525d78864c1712e9c937370ccc26ce56b99b8cc065204d44b64b4064ca474230446e6f1aa72f512 languageName: node linkType: hard @@ -7336,19 +8141,19 @@ __metadata: languageName: node linkType: hard -"@sanity/insert-menu@npm:1.0.16": - version: 1.0.16 - resolution: "@sanity/insert-menu@npm:1.0.16" +"@sanity/insert-menu@npm:1.0.18": + version: 1.0.18 + resolution: "@sanity/insert-menu@npm:1.0.18" dependencies: - "@sanity/icons": "npm:^3.5.0" - "@sanity/ui": "npm:^2.9.0" + "@sanity/icons": "npm:^3.5.5" + "@sanity/ui": "npm:^2.10.12" lodash: "npm:^4.17.21" peerDependencies: "@sanity/types": "*" react: ^18.3 || >=19.0.0-rc react-dom: ^18.3 || >=19.0.0-rc react-is: ^18.3 || >=19.0.0-rc - checksum: 10/d73f4dca8bc4db215cb9ec41f3ff08bba2c70df50446bf522bcaf051706793c08a4e43cf029331f83bf014a2c7854499aa8e8f837927b40d53d68f100ef2770e + checksum: 10/fe6e27d20c72cef66c5b96dc735b9e5b74bb983ddac7525855f0503fd7b8ee101be217aee627b3a057d21ca6d8671b0a1267ba9fa6bb0ee0b0d50d3625594e06 languageName: node linkType: hard @@ -7362,20 +8167,20 @@ __metadata: languageName: node linkType: hard -"@sanity/migrate@npm:3.67.1": - version: 3.67.1 - resolution: "@sanity/migrate@npm:3.67.1" +"@sanity/migrate@npm:3.69.0": + version: 3.69.0 + resolution: "@sanity/migrate@npm:3.69.0" dependencies: "@sanity/client": "npm:^6.24.1" "@sanity/mutate": "npm:^0.11.1" - "@sanity/types": "npm:3.67.1" - "@sanity/util": "npm:3.67.1" + "@sanity/types": "npm:3.69.0" + "@sanity/util": "npm:3.69.0" arrify: "npm:^2.0.1" debug: "npm:^4.3.4" fast-fifo: "npm:^1.3.2" groq-js: "npm:^1.14.2" p-map: "npm:^7.0.1" - checksum: 10/3920910364b96cbe476cc08cfbfa9a7f5f48d273d3f1ae121ab67a2d37915cef71fc05056366566babf131af423786419b616bfd6d1a1ceecf9b4cbbf5b8fcff + checksum: 10/a0eab95d67301676fa4755b05ca82d0bccd53946bed6d3e1d7667d9055ef806c294155dfa4cff97d81aaa0f70618eedab7c253cc87b0c42b4adee4367e9ce34a languageName: node linkType: hard @@ -7394,7 +8199,20 @@ __metadata: languageName: node linkType: hard -"@sanity/mutator@npm:3.67.1, @sanity/mutator@npm:^3.59.1": +"@sanity/mutator@npm:3.69.0": + version: 3.69.0 + resolution: "@sanity/mutator@npm:3.69.0" + dependencies: + "@sanity/diff-match-patch": "npm:^3.1.1" + "@sanity/types": "npm:3.69.0" + "@sanity/uuid": "npm:^3.0.1" + debug: "npm:^4.3.4" + lodash: "npm:^4.17.21" + checksum: 10/976af612d3ddb53c84345a6b39f52d974fed00eaa3f8d5d95a04542b749f4ea74ffbe002f184edd8707a17c67cfdc098aff5b58b0b64f88e7103b315919c1009 + languageName: node + linkType: hard + +"@sanity/mutator@npm:^3.59.1": version: 3.67.1 resolution: "@sanity/mutator@npm:3.67.1" dependencies: @@ -7407,28 +8225,86 @@ __metadata: languageName: node linkType: hard -"@sanity/presentation@npm:1.19.8": - version: 1.19.8 - resolution: "@sanity/presentation@npm:1.19.8" +"@sanity/pkg-utils@npm:^6.12.2": + version: 6.13.4 + resolution: "@sanity/pkg-utils@npm:6.13.4" + dependencies: + "@babel/core": "npm:^7.26.0" + "@babel/preset-typescript": "npm:^7.26.0" + "@babel/types": "npm:^7.26.3" + "@microsoft/api-extractor": "npm:7.48.1" + "@microsoft/tsdoc-config": "npm:0.17.1" + "@optimize-lodash/rollup-plugin": "npm:5.0.0" + "@rollup/plugin-alias": "npm:^5.1.1" + "@rollup/plugin-babel": "npm:^6.0.4" + "@rollup/plugin-commonjs": "npm:^28.0.2" + "@rollup/plugin-json": "npm:^6.1.0" + "@rollup/plugin-node-resolve": "npm:^16.0.0" + "@rollup/plugin-replace": "npm:^6.0.2" + "@rollup/plugin-terser": "npm:^0.4.4" + "@sanity/browserslist-config": "npm:^1.0.5" + browserslist: "npm:^4.24.4" + cac: "npm:^6.7.14" + chalk: "npm:^4.1.2" + chokidar: "npm:^4.0.3" + esbuild: "npm:^0.24.2" + esbuild-register: "npm:^3.6.0" + find-config: "npm:^1.0.0" + get-latest-version: "npm:^5.1.0" + git-url-parse: "npm:^16.0.0" + globby: "npm:^11.1.0" + jsonc-parser: "npm:^3.3.1" + mkdirp: "npm:^3.0.1" + outdent: "npm:^0.8.0" + parse-git-config: "npm:^3.0.0" + pkg-up: "npm:^3.1.0" + prettier: "npm:^3.4.2" + pretty-bytes: "npm:^5.6.0" + prompts: "npm:^2.4.2" + recast: "npm:0.23.9" + rimraf: "npm:^4.4.1" + rollup: "npm:^4.30.1" + rollup-plugin-esbuild: "npm:^6.1.1" + rxjs: "npm:^7.8.1" + treeify: "npm:^1.1.0" + uuid: "npm:^11.0.4" + zod: "npm:3.24.1" + zod-validation-error: "npm:3.4.0" + peerDependencies: + babel-plugin-react-compiler: "*" + typescript: 5.4.x || 5.5.x || 5.6.x || 5.7.x + peerDependenciesMeta: + babel-plugin-react-compiler: + optional: true + bin: + pkg: bin/pkg-utils.cjs + pkg-utils: bin/pkg-utils.cjs + checksum: 10/000a8193fa99bc2945af4bc1bb45c4d5b8dea9af90469c77f29f2961cf97b6d272edbdfbf2f22559c752b2e81fe93c605b969f1665686bb385f343b9541fd93a + languageName: node + linkType: hard + +"@sanity/presentation@npm:1.20.1": + version: 1.20.1 + resolution: "@sanity/presentation@npm:1.20.1" dependencies: "@sanity/client": "npm:^6.24.1" - "@sanity/comlink": "npm:2.0.1" - "@sanity/icons": "npm:^3.5.0" + "@sanity/comlink": "npm:2.0.4" + "@sanity/icons": "npm:^3.5.7" "@sanity/logos": "npm:^2.1.13" "@sanity/preview-url-secret": "npm:2.0.5" - "@sanity/ui": "npm:^2.9.1" + "@sanity/ui": "npm:^2.11.0" "@sanity/uuid": "npm:3.0.2" fast-deep-equal: "npm:3.1.3" - framer-motion: "npm:11.0.8" + framer-motion: "npm:^11.16.0" lodash: "npm:^4.17.21" mendoza: "npm:3.0.8" mnemonist: "npm:0.39.8" path-to-regexp: "npm:^6.3.0" - react-compiler-runtime: "npm:19.0.0-beta-37ed2a7-20241206" + react-compiler-runtime: "npm:19.0.0-beta-55955c9-20241229" rxjs: "npm:^7.8.1" suspend-react: "npm:0.1.3" use-effect-event: "npm:^1.0.2" - checksum: 10/d54fb50de54a26e25717a8f3eb1715444385e929af662d2761c7d5bc28c621cd3c458f3cda6ac1b466250ad638c6b96fb79f7c796f9216253c82ecc066b663b9 + checksum: 10/099051ad7da46ac1aa8d477805482fe3752cd4dee7ef3d095f57acef10011711d9c645133c844d5472be7b44939c2acc13e1fa1b2dcc4959113239cf48f6a099 languageName: node linkType: hard @@ -7443,19 +8319,19 @@ __metadata: languageName: node linkType: hard -"@sanity/schema@npm:3.67.1": - version: 3.67.1 - resolution: "@sanity/schema@npm:3.67.1" +"@sanity/schema@npm:3.69.0": + version: 3.69.0 + resolution: "@sanity/schema@npm:3.69.0" dependencies: "@sanity/generate-help-url": "npm:^3.0.0" - "@sanity/types": "npm:3.67.1" - arrify: "npm:^1.0.1" + "@sanity/types": "npm:3.69.0" + arrify: "npm:^2.0.1" groq-js: "npm:^1.14.2" humanize-list: "npm:^1.0.1" leven: "npm:^3.1.0" lodash: "npm:^4.17.21" object-inspect: "npm:^1.13.1" - checksum: 10/f087395e8f9f36eccf3ee410c40266cdc8f14808cf9529ebb3e880d97f05b03f051f9c6db01426c6d8b491ed14690af94d3ed63ab46ed6a38f68116a011a99ec + checksum: 10/30e67340a998ae0c16f82cf04bf99a5b61e1ee4922e924c288915f819200f770bb4b3a03717841210fd445384b8a1a3cf67e8554b6244567340cffdf76cd4eda languageName: node linkType: hard @@ -7472,13 +8348,18 @@ __metadata: languageName: node linkType: hard -"@sanity/types@npm:3.37.2": - version: 3.37.2 - resolution: "@sanity/types@npm:3.37.2" +"@sanity/template-validator@npm:^2.0.0": + version: 2.3.2 + resolution: "@sanity/template-validator@npm:2.3.2" dependencies: - "@sanity/client": "npm:^6.15.11" - "@types/react": "npm:^18.0.25" - checksum: 10/04e4cc351191aa7188a21a856c4220f9491c0e465d563ef45438a3a61a878e3489f7430588f95d7baef9d6e472aa9f9306ca90650dec79ddf343852126b37486 + "@actions/core": "npm:^1.11.1" + "@actions/github": "npm:^6.0.0" + "@sanity/pkg-utils": "npm:^6.12.2" + yaml: "npm:^2.6.1" + bin: + sanity-template-validate: dist/cli.cjs + template-validator: dist/cli.cjs + checksum: 10/fd70e8548e9beb681af9d0b3a6abd75c6df42e0d23bc56c8b0c383146fa2d453dc48d98fd8ee453b6393b0984c5c4427e6e373654d00309650c6e1d9cbde39e2 languageName: node linkType: hard @@ -7492,16 +8373,38 @@ __metadata: languageName: node linkType: hard -"@sanity/ui@npm:^2.10.7, @sanity/ui@npm:^2.9.0, @sanity/ui@npm:^2.9.1": - version: 2.10.9 - resolution: "@sanity/ui@npm:2.10.9" +"@sanity/types@npm:3.68.3": + version: 3.68.3 + resolution: "@sanity/types@npm:3.68.3" + dependencies: + "@sanity/client": "npm:^6.24.1" + peerDependencies: + "@types/react": 18 || 19 + checksum: 10/3fa5df2e1c389e734cec9cc024d0476d9f676ed506c6e30368f0d5ec01dffa35257165d067f95876826c505d50f34d6558a2ca510de59021f28e6555c254b228 + languageName: node + linkType: hard + +"@sanity/types@npm:3.69.0": + version: 3.69.0 + resolution: "@sanity/types@npm:3.69.0" + dependencies: + "@sanity/client": "npm:^6.24.1" + peerDependencies: + "@types/react": 18 || 19 + checksum: 10/f9544a4abc2c68e96e3263bbd042ea6971bb0ab9ee272aa59da3b813f45ed6f78a8dc695ce570f168d33fce56a47a026704ba49941848e3fab1030a14634c574 + languageName: node + linkType: hard + +"@sanity/ui@npm:^2.10.12, @sanity/ui@npm:^2.11.0, @sanity/ui@npm:^2.11.1": + version: 2.11.1 + resolution: "@sanity/ui@npm:2.11.1" dependencies: "@floating-ui/react-dom": "npm:^2.1.2" "@sanity/color": "npm:^3.0.6" - "@sanity/icons": "npm:^3.5.2" + "@sanity/icons": "npm:^3.5.7" csstype: "npm:^3.1.3" - framer-motion: "npm:^11.13.5" - react-compiler-runtime: "npm:19.0.0-beta-37ed2a7-20241206" + framer-motion: "npm:^11.16.0" + react-compiler-runtime: "npm:19.0.0-beta-55955c9-20241229" react-refractor: "npm:^2.2.0" use-effect-event: "npm:^1.0.2" peerDependencies: @@ -7509,33 +8412,33 @@ __metadata: react-dom: ^18 || >=19.0.0-0 react-is: ^18 || >=19.0.0-0 styled-components: ^5.2 || ^6 - checksum: 10/d05038915c29416920360dac2cd20488c1e78763f6b2b6bbeb763ed129b08743e67a278d577b15481981f36f920ff3976f06a56b3dfd2ddf04c5a0f92c77090e + checksum: 10/b3275c393b86b842dcde7e728edea5832eadfe85b52fb8e27e88c16f4cc19ed588dbcede375dc9c0e9539863dd179b59ff301c2fae62aaaa84dfb3109bb2d5e0 languageName: node linkType: hard -"@sanity/util@npm:3.37.2": - version: 3.37.2 - resolution: "@sanity/util@npm:3.37.2" +"@sanity/util@npm:3.68.3": + version: 3.68.3 + resolution: "@sanity/util@npm:3.68.3" dependencies: - "@sanity/client": "npm:^6.15.11" - "@sanity/types": "npm:3.37.2" + "@sanity/client": "npm:^6.24.1" + "@sanity/types": "npm:3.68.3" get-random-values-esm: "npm:1.0.2" - moment: "npm:^2.29.4" + moment: "npm:^2.30.1" rxjs: "npm:^7.8.1" - checksum: 10/a73d6a6f0f28b4fd88301337e686b3ec3f2a9b80b55f6fb717088247a3a5da12bc4268ea66de9a803379d07633d03729bf99f28a25d8bd7f6c93ac751e5681b8 + checksum: 10/1e7a690eb9674af1837c9c612c26720ac3f908125e12dc7390142a4537c8dc8109c535558c879fa5e3b19f03e1e0891d4c9ecc7561ddb32bb08e01f59b61164d languageName: node linkType: hard -"@sanity/util@npm:3.67.1": - version: 3.67.1 - resolution: "@sanity/util@npm:3.67.1" +"@sanity/util@npm:3.69.0": + version: 3.69.0 + resolution: "@sanity/util@npm:3.69.0" dependencies: "@sanity/client": "npm:^6.24.1" - "@sanity/types": "npm:3.67.1" + "@sanity/types": "npm:3.69.0" get-random-values-esm: "npm:1.0.2" moment: "npm:^2.30.1" rxjs: "npm:^7.8.1" - checksum: 10/a9c77630109561685f66342f9730bae621f99989a586852f67ac1bdea555a437201862412cf86f4c554f8a771a56905fe9f582da040e613070ba0e0028c0cdc0 + checksum: 10/3217310c4563ed855dcfa96a5422eb5fe3715e5edadf861c90739d56233f203a7611713442af30182afcb426293d0803d00c704383eefb941a16190baaa7cfb1 languageName: node linkType: hard @@ -7549,9 +8452,9 @@ __metadata: languageName: node linkType: hard -"@sanity/vision@npm:3.67.1": - version: 3.67.1 - resolution: "@sanity/vision@npm:3.67.1" +"@sanity/vision@npm:3.69.0": + version: 3.69.0 + resolution: "@sanity/vision@npm:3.69.0" dependencies: "@codemirror/autocomplete": "npm:^6.1.0" "@codemirror/commands": "npm:^6.0.1" @@ -7562,22 +8465,22 @@ __metadata: "@codemirror/view": "npm:^6.1.1" "@juggle/resize-observer": "npm:^3.3.1" "@lezer/highlight": "npm:^1.0.0" - "@rexxars/react-json-inspector": "npm:^8.0.1" - "@rexxars/react-split-pane": "npm:^0.1.93" + "@rexxars/react-json-inspector": "npm:^9.0.1" + "@rexxars/react-split-pane": "npm:^1.0.0" "@sanity/color": "npm:^3.0.0" - "@sanity/icons": "npm:^3.5.2" - "@sanity/ui": "npm:^2.10.7" + "@sanity/icons": "npm:^3.5.7" + "@sanity/ui": "npm:^2.11.1" "@uiw/react-codemirror": "npm:^4.11.4" is-hotkey-esm: "npm:^1.0.0" json-2-csv: "npm:^5.5.1" json5: "npm:^2.2.3" lodash: "npm:^4.17.21" quick-lru: "npm:^5.1.1" - react-compiler-runtime: "npm:19.0.0-beta-37ed2a7-20241206" + react-compiler-runtime: "npm:19.0.0-beta-55955c9-20241229" peerDependencies: react: ^18 || ^19.0.0 styled-components: ^6.1 - checksum: 10/2dbf6943735f085aa98ca5782fac6b447ff34db3a8ada209de0d9989afe594a4d15c3dee18a5cbc811e5fdb895e52648a018b291d961463d4bd1d8beb037ca0f + checksum: 10/09e5c3fd6419fbbfc9cae1fe76b6efeee19255082c4adacd2f56c452966e2e2d6d8ca01bb3ce5e58fa2127c4386cbe0860e9c183eba7e0f8027cdbb52b44f066 languageName: node linkType: hard @@ -7590,6 +8493,15 @@ __metadata: languageName: node linkType: hard +"@sentry-internal/browser-utils@npm:8.48.0": + version: 8.48.0 + resolution: "@sentry-internal/browser-utils@npm:8.48.0" + dependencies: + "@sentry/core": "npm:8.48.0" + checksum: 10/49feb55a2ba2ed8317b35b8ed7440a9bec6800270387c990d98db35ef0958f6b46640378a9384e5cb657fbef093b7de7b6633c4cd96078f5b820102811fe7c8e + languageName: node + linkType: hard + "@sentry-internal/feedback@npm:8.45.0": version: 8.45.0 resolution: "@sentry-internal/feedback@npm:8.45.0" @@ -7599,6 +8511,15 @@ __metadata: languageName: node linkType: hard +"@sentry-internal/feedback@npm:8.48.0": + version: 8.48.0 + resolution: "@sentry-internal/feedback@npm:8.48.0" + dependencies: + "@sentry/core": "npm:8.48.0" + checksum: 10/50dbe4c6a1eff4c961be0a63966d874c8194e00652fdf7a544dfd1a46a27e2780ce7f21bc27f4a47f05985624fa2a43f676f67db06ae6dc7405775459efd46e2 + languageName: node + linkType: hard + "@sentry-internal/replay-canvas@npm:8.45.0": version: 8.45.0 resolution: "@sentry-internal/replay-canvas@npm:8.45.0" @@ -7609,6 +8530,16 @@ __metadata: languageName: node linkType: hard +"@sentry-internal/replay-canvas@npm:8.48.0": + version: 8.48.0 + resolution: "@sentry-internal/replay-canvas@npm:8.48.0" + dependencies: + "@sentry-internal/replay": "npm:8.48.0" + "@sentry/core": "npm:8.48.0" + checksum: 10/c7965bb5a66eada623872e0fef896a3267f344819d155a5f0c3d24057eaacf2c22c582c62de7cec1b67517837e6c4e352d67f96493527cd7844491d31c831437 + languageName: node + linkType: hard + "@sentry-internal/replay@npm:8.45.0": version: 8.45.0 resolution: "@sentry-internal/replay@npm:8.45.0" @@ -7619,10 +8550,20 @@ __metadata: languageName: node linkType: hard -"@sentry/babel-plugin-component-annotate@npm:2.22.7": - version: 2.22.7 - resolution: "@sentry/babel-plugin-component-annotate@npm:2.22.7" - checksum: 10/20862d90185499fc9b0aa0644f890d7ba822c282d742f9adfce0ed0dcbec37af9cc47abf3a0da0a08c4bb259fa633e5c68879c944f9b59adddad42cea668e4bf +"@sentry-internal/replay@npm:8.48.0": + version: 8.48.0 + resolution: "@sentry-internal/replay@npm:8.48.0" + dependencies: + "@sentry-internal/browser-utils": "npm:8.48.0" + "@sentry/core": "npm:8.48.0" + checksum: 10/be7560dc7d82ab716a310ed47076009ba53a3b6ce9a4d0bfdd987da9256edef56afda9f4c2833a808cad935a47b2e3b8e2f97e2bd36975bf82eb2b4be17c00f6 + languageName: node + linkType: hard + +"@sentry/babel-plugin-component-annotate@npm:2.23.0": + version: 2.23.0 + resolution: "@sentry/babel-plugin-component-annotate@npm:2.23.0" + checksum: 10/2c64d06fd20c641a1d80b53f5dfaca5467fbf7d6108f85517a5555fe1cad7bdd731abd58ab3ed14cedaf6698f323945cfd7c63471a0392e61e4f6c6e62aee13b languageName: node linkType: hard @@ -7639,19 +8580,32 @@ __metadata: languageName: node linkType: hard -"@sentry/bundler-plugin-core@npm:2.22.7": - version: 2.22.7 - resolution: "@sentry/bundler-plugin-core@npm:2.22.7" +"@sentry/browser@npm:8.48.0": + version: 8.48.0 + resolution: "@sentry/browser@npm:8.48.0" + dependencies: + "@sentry-internal/browser-utils": "npm:8.48.0" + "@sentry-internal/feedback": "npm:8.48.0" + "@sentry-internal/replay": "npm:8.48.0" + "@sentry-internal/replay-canvas": "npm:8.48.0" + "@sentry/core": "npm:8.48.0" + checksum: 10/5dd74755df73d766be792b2a0b8534f529bb1ebfab7d4111c9ce343a97d9f2015b7bcf9868618e0696d190fb73a9e17bc592252bf3d06121f3cc1472d9921b93 + languageName: node + linkType: hard + +"@sentry/bundler-plugin-core@npm:2.23.0": + version: 2.23.0 + resolution: "@sentry/bundler-plugin-core@npm:2.23.0" dependencies: "@babel/core": "npm:^7.18.5" - "@sentry/babel-plugin-component-annotate": "npm:2.22.7" + "@sentry/babel-plugin-component-annotate": "npm:2.23.0" "@sentry/cli": "npm:2.39.1" dotenv: "npm:^16.3.1" find-up: "npm:^5.0.0" glob: "npm:^9.3.2" magic-string: "npm:0.30.8" unplugin: "npm:1.0.1" - checksum: 10/c9fd63c496504a770ea7280d14b3593a85df71d381fab0eb0ad47669dcd9b9872dadbb4f10fe11161f50cb5a0e51ff05a627a654b8f57dac7cf5e67aa4976ffe + checksum: 10/de369d98cea0a7586ea63ef6c912988529eaed82337add3f41a44d862f97db969f84bccc68fb45f3a2c5ee0e8a1ccb115a4f99838e0095d31358823330e942f3 languageName: node linkType: hard @@ -7748,7 +8702,27 @@ __metadata: languageName: node linkType: hard -"@sentry/react@npm:8.45.0, @sentry/react@npm:^8.33.0": +"@sentry/core@npm:8.48.0": + version: 8.48.0 + resolution: "@sentry/core@npm:8.48.0" + checksum: 10/1fff8fc1e0681459240ceda5a3b2a7402f7ac73da9fa72e3d6e57e8f994ac246b240739ee0f224d48646bf410980aac4213c3e334e1dcbbd806ed5f496c7bb3c + languageName: node + linkType: hard + +"@sentry/react@npm:8.48.0": + version: 8.48.0 + resolution: "@sentry/react@npm:8.48.0" + dependencies: + "@sentry/browser": "npm:8.48.0" + "@sentry/core": "npm:8.48.0" + hoist-non-react-statics: "npm:^3.3.2" + peerDependencies: + react: ^16.14.0 || 17.x || 18.x || 19.x + checksum: 10/d0fe2252171106025d82c4eca2331de3942f83f81aaee7716286de4a424ece92e52b220bc38496c0f900286e47e4be7a44ea307743696ac61bb160a86a4eb696 + languageName: node + linkType: hard + +"@sentry/react@npm:^8.33.0": version: 8.45.0 resolution: "@sentry/react@npm:8.45.0" dependencies: @@ -7761,22 +8735,22 @@ __metadata: languageName: node linkType: hard -"@sentry/types@npm:8.45.0": - version: 8.45.0 - resolution: "@sentry/types@npm:8.45.0" +"@sentry/types@npm:8.48.0": + version: 8.48.0 + resolution: "@sentry/types@npm:8.48.0" dependencies: - "@sentry/core": "npm:8.45.0" - checksum: 10/aa89db9ce5ab4c83ccc444c1147efb0e59efc0e808a1022d3e0445f4cc6554aed95ec24c3ed5ace7dcd8093abf4d8d456cf3ad085f95cd85491fc250aff8c7ee + "@sentry/core": "npm:8.48.0" + checksum: 10/6a7391d3fb5d5ade1c6b7ab4d7a75223966f96e8471083c5d4136630f5848fb53d732b97050d15382c53025dff48651ce582d6b995dda9b6fcdb68b73355a5ea languageName: node linkType: hard -"@sentry/vite-plugin@npm:2.22.7": - version: 2.22.7 - resolution: "@sentry/vite-plugin@npm:2.22.7" +"@sentry/vite-plugin@npm:2.23.0": + version: 2.23.0 + resolution: "@sentry/vite-plugin@npm:2.23.0" dependencies: - "@sentry/bundler-plugin-core": "npm:2.22.7" + "@sentry/bundler-plugin-core": "npm:2.23.0" unplugin: "npm:1.0.1" - checksum: 10/73e3af5d97fa879259e9061ab81f21ac32ae61822f98eef7fa6ed47588b1f6342938091bbdf3a260626863ebfe31cca3d36e1e97981e97262bd833c9c91cce12 + checksum: 10/34b3b93a5e20e4e629602eb137bfda98d22deb0f170d9ae538f1f2687feb7533199b71cecc08ac7df6c1e5bcea2889d12aac8690577cd5fcc3ac5dd01a9e047f languageName: node linkType: hard @@ -7807,16 +8781,16 @@ __metadata: version: 0.0.0-use.local resolution: "@sif/eslint-config@workspace:packages/eslint-config-sif" dependencies: - "@eslint/js": "npm:9.17.0" - eslint: "npm:9.17.0" + "@eslint/js": "npm:9.18.0" + eslint: "npm:9.18.0" eslint-config-prettier: "npm:9.1.0" eslint-plugin-jsx-a11y: "npm:6.10.2" - eslint-plugin-react: "npm:7.37.2" + eslint-plugin-react: "npm:7.37.4" eslint-plugin-react-hooks: "npm:5.1.0" eslint-plugin-vitest: "npm:0.5.4" - globals: "npm:15.13.0" - typescript: "npm:5.7.2" - typescript-eslint: "npm:8.18.0" + globals: "npm:15.14.0" + typescript: "npm:5.7.3" + typescript-eslint: "npm:8.19.1" languageName: unknown linkType: soft @@ -7922,7 +8896,7 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-essentials@npm:8.4.7": +"@storybook/addon-essentials@npm:8.4.7, @storybook/addon-essentials@npm:^8.4.7": version: 8.4.7 resolution: "@storybook/addon-essentials@npm:8.4.7" dependencies: @@ -7953,7 +8927,7 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-interactions@npm:8.4.7": +"@storybook/addon-interactions@npm:8.4.7, @storybook/addon-interactions@npm:^8.4.7": version: 8.4.7 resolution: "@storybook/addon-interactions@npm:8.4.7" dependencies: @@ -7997,7 +8971,7 @@ __metadata: languageName: node linkType: hard -"@storybook/addon-onboarding@npm:8.4.7": +"@storybook/addon-onboarding@npm:8.4.7, @storybook/addon-onboarding@npm:^8.4.7": version: 8.4.7 resolution: "@storybook/addon-onboarding@npm:8.4.7" dependencies: @@ -8095,7 +9069,7 @@ __metadata: languageName: node linkType: hard -"@storybook/blocks@npm:8.4.7, @storybook/blocks@npm:^8.0.8": +"@storybook/blocks@npm:8.4.7, @storybook/blocks@npm:^8.0.8, @storybook/blocks@npm:^8.4.7": version: 8.4.7 resolution: "@storybook/blocks@npm:8.4.7" dependencies: @@ -8590,7 +9564,7 @@ __metadata: languageName: node linkType: hard -"@storybook/react-vite@npm:8.4.7": +"@storybook/react-vite@npm:8.4.7, @storybook/react-vite@npm:^8.4.7": version: 8.4.7 resolution: "@storybook/react-vite@npm:8.4.7" dependencies: @@ -8612,7 +9586,7 @@ __metadata: languageName: node linkType: hard -"@storybook/react@npm:8.4.7": +"@storybook/react@npm:8.4.7, @storybook/react@npm:^8.4.7": version: 8.4.7 resolution: "@storybook/react@npm:8.4.7" dependencies: @@ -8648,9 +9622,9 @@ __metadata: languageName: node linkType: hard -"@storybook/test-runner@npm:0.20.1": - version: 0.20.1 - resolution: "@storybook/test-runner@npm:0.20.1" +"@storybook/test-runner@npm:0.21.0": + version: 0.21.0 + resolution: "@storybook/test-runner@npm:0.21.0" dependencies: "@babel/core": "npm:^7.22.5" "@babel/generator": "npm:^7.22.5" @@ -8675,11 +9649,11 @@ __metadata: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 bin: test-storybook: dist/test-storybook.js - checksum: 10/f48f37de8360fdabb6007694ccff843d0334421b9606b5af5fbecff071e2f502c0ed95bded50673f3b890dff0a91e7cc3d17654372d66532844402bfa0c72970 + checksum: 10/45c008b7c3bbd687c674e5c1fd3f90dd4efec5c6627beeb836030c9454f22de995da358200bc0271c5ddc5d561478f3f0fe8cf0564b7febbdfda1eda76b3a3de languageName: node linkType: hard -"@storybook/test@npm:8.4.7": +"@storybook/test@npm:8.4.7, @storybook/test@npm:^8.4.7": version: 8.4.7 resolution: "@storybook/test@npm:8.4.7" dependencies: @@ -8910,14 +9884,15 @@ __metadata: languageName: node linkType: hard -"@tanstack/react-virtual@npm:3.0.0-beta.54": - version: 3.0.0-beta.54 - resolution: "@tanstack/react-virtual@npm:3.0.0-beta.54" +"@tanstack/react-virtual@npm:^3.11.2": + version: 3.11.2 + resolution: "@tanstack/react-virtual@npm:3.11.2" dependencies: - "@tanstack/virtual-core": "npm:3.0.0-beta.54" + "@tanstack/virtual-core": "npm:3.11.2" peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10/a154d30d92506b181ba8a95c7e0123491a66bf8b368f83358e83d5cf3875b6cf7f04e93fa0b1faa07adddb993f8230e8a5c08219dba47f317246a3d57d1e7da0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10/a1136da0ec4c2ecbd4f996d8b84f228f0b8d851b15806e01049a160ad1d9b2eef0e0a491035fe017c6f84a0e125334f69ea23b32c180df23614ea4a8eeb7490c languageName: node linkType: hard @@ -8928,10 +9903,10 @@ __metadata: languageName: node linkType: hard -"@tanstack/virtual-core@npm:3.0.0-beta.54": - version: 3.0.0-beta.54 - resolution: "@tanstack/virtual-core@npm:3.0.0-beta.54" - checksum: 10/e0149a9af07baf36c9a62b243f35dfa62e85b206f130fa5e3dcceb57b344646ee16fc0be58e0b834fec1860a5acf27be14867e222ae0a008e85b99a479c07ccd +"@tanstack/virtual-core@npm:3.11.2": + version: 3.11.2 + resolution: "@tanstack/virtual-core@npm:3.11.2" + checksum: 10/8433044a5c801052ba2e4cdda098cdc8e32adfd3a76ba31af7064bbdda60062fe221a3558096987baa66cd94f528855e887c282cb0f9eb99d3751457c2a62872 languageName: node linkType: hard @@ -9033,6 +10008,13 @@ __metadata: languageName: node linkType: hard +"@types/argparse@npm:1.0.38": + version: 1.0.38 + resolution: "@types/argparse@npm:1.0.38" + checksum: 10/26ed7e3f1e3595efdb883a852f5205f971b798e4c28b7e30a32c5298eee596e8b45834ce831f014d250b9730819ab05acff5b31229666d3af4ba465b4697d0eb + languageName: node + linkType: hard + "@types/aria-query@npm:^5.0.1": version: 5.0.4 resolution: "@types/aria-query@npm:5.0.4" @@ -9440,7 +10422,7 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:22.10.2, @types/node@npm:>=13.7.0, @types/node@npm:^22.0.0": +"@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:^22.0.0": version: 22.10.2 resolution: "@types/node@npm:22.10.2" dependencies: @@ -9449,6 +10431,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:22.10.5": + version: 22.10.5 + resolution: "@types/node@npm:22.10.5" + dependencies: + undici-types: "npm:~6.20.0" + checksum: 10/a5366961ffa9921e8f15435bc18ea9f8b7a7bb6b3d92dd5e93ebcd25e8af65708872bd8e6fee274b4655bab9ca80fbff9f0e42b5b53857790f13cf68cf4cbbfc + languageName: node + linkType: hard + "@types/node@npm:^12.7.1": version: 12.20.55 resolution: "@types/node@npm:12.20.55" @@ -9486,6 +10477,13 @@ __metadata: languageName: node linkType: hard +"@types/parse-path@npm:^7.0.0": + version: 7.0.3 + resolution: "@types/parse-path@npm:7.0.3" + checksum: 10/21a12c228d38f5a75659dfd7cb127dc2001ed3f6acbd1b2e0575d1348c735594c0bab06a97fe849c151438384829f20ea5971cb045f7ecd37d53c76a9fcb9de3 + languageName: node + linkType: hard + "@types/pluralize@npm:^0.0.29": version: 0.0.29 resolution: "@types/pluralize@npm:0.0.29" @@ -9530,15 +10528,6 @@ __metadata: languageName: node linkType: hard -"@types/react-copy-to-clipboard@npm:^5.0.2": - version: 5.0.7 - resolution: "@types/react-copy-to-clipboard@npm:5.0.7" - dependencies: - "@types/react": "npm:*" - checksum: 10/adc2970c8756e648daa06e294c422df3dc076a784344ab2ecb78a17ebd7e8e3dfd7f31e68c24267de4815cdeec573a743d952a308b45b8380f6b7912a9a8b911 - languageName: node - linkType: hard - "@types/react-document-title@npm:2.0.10": version: 2.0.10 resolution: "@types/react-document-title@npm:2.0.10" @@ -9548,21 +10537,21 @@ __metadata: languageName: node linkType: hard -"@types/react-dom@npm:19.0.2": - version: 19.0.2 - resolution: "@types/react-dom@npm:19.0.2" +"@types/react-dom@npm:19.0.3": + version: 19.0.3 + resolution: "@types/react-dom@npm:19.0.3" peerDependencies: "@types/react": ^19.0.0 - checksum: 10/d2ae81ec0b8eee7a4bf31918796fdaa34e8db68f69682163bc212d759de76783e6ffcc02c02722dcf508429067148841e6da81414cc730ca2a28c9c2b350c880 + checksum: 10/815907f7adaa078acbf1d1ae7b6bf69cebe86bd301b8b9744e392bc0f16feb31bfb9fe0bfa2681d7d86678c83d52dedba5ed9bc7776736d4050cdd426b8b2d2b languageName: node linkType: hard -"@types/react-is@npm:^18.3.0": - version: 18.3.1 - resolution: "@types/react-is@npm:18.3.1" +"@types/react-is@npm:^19.0.0": + version: 19.0.0 + resolution: "@types/react-is@npm:19.0.0" dependencies: - "@types/react": "npm:^18" - checksum: 10/ccb79d6e196a5232cde8ccb255ec97e062801a3dafeff3816130fb5ad6b9a87f7c0806ab35bc00890a229773228ef217d0390839b68c705d3add2f798b5fcf82 + "@types/react": "npm:*" + checksum: 10/c56e39e88558a71bc0b1deaa84cce9d5c84d6522057b73690d099b0763898203ec29a91563431e83b5086c49ac64a239fe993c50a4f008d6fbfc551587db5895 languageName: node linkType: hard @@ -9587,7 +10576,7 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:16 || 17 || 18 || 19, @types/react@npm:19.0.1": +"@types/react@npm:*": version: 19.0.1 resolution: "@types/react@npm:19.0.1" dependencies: @@ -9596,7 +10585,26 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:^18, @types/react@npm:^18.0.25, @types/react@npm:^18.3.5": +"@types/react@npm:16 || 17 || 18": + version: 18.3.18 + resolution: "@types/react@npm:18.3.18" + dependencies: + "@types/prop-types": "npm:*" + csstype: "npm:^3.0.2" + checksum: 10/7fdd8b853e0d291d4138133f93f8d5c333da918e5804afcea61a923aab4bdfc9bb15eb21a5640959b452972b8715ddf10ffb12b3bd071898b9e37738636463f2 + languageName: node + linkType: hard + +"@types/react@npm:19.0.6": + version: 19.0.6 + resolution: "@types/react@npm:19.0.6" + dependencies: + csstype: "npm:^3.0.2" + checksum: 10/dc7604e4a0ee338447acaf6fded732e3a9528c4411ad8d6a2504ffb45c3613d5347a02a426d0b314015673317010977e3db01f69bb0257219cacda1884ce31f4 + languageName: node + linkType: hard + +"@types/react@npm:^18.3.5": version: 18.3.16 resolution: "@types/react@npm:18.3.16" dependencies: @@ -9606,6 +10614,13 @@ __metadata: languageName: node linkType: hard +"@types/resolve@npm:1.20.2": + version: 1.20.2 + resolution: "@types/resolve@npm:1.20.2" + checksum: 10/1bff0d3875e7e1557b6c030c465beca9bf3b1173ebc6937cac547654b0af3bb3ff0f16470e9c4d7c5dc308ad9ac8627c38dbff24ef698b66673ff5bd4ead7f7e + languageName: node + linkType: hard + "@types/resolve@npm:^1.20.2": version: 1.20.6 resolution: "@types/resolve@npm:1.20.6" @@ -9706,6 +10721,13 @@ __metadata: languageName: node linkType: hard +"@types/trusted-types@npm:^2.0.7": + version: 2.0.7 + resolution: "@types/trusted-types@npm:2.0.7" + checksum: 10/8e4202766a65877efcf5d5a41b7dd458480b36195e580a3b1085ad21e948bc417d55d6f8af1fd2a7ad008015d4117d5fdfe432731157da3c68678487174e4ba3 + languageName: node + linkType: hard + "@types/unist@npm:^2, @types/unist@npm:^2.0.0": version: 2.0.11 resolution: "@types/unist@npm:2.0.11" @@ -9796,6 +10818,27 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/eslint-plugin@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/eslint-plugin@npm:8.19.1" + dependencies: + "@eslint-community/regexpp": "npm:^4.10.0" + "@typescript-eslint/scope-manager": "npm:8.19.1" + "@typescript-eslint/type-utils": "npm:8.19.1" + "@typescript-eslint/utils": "npm:8.19.1" + "@typescript-eslint/visitor-keys": "npm:8.19.1" + graphemer: "npm:^1.4.0" + ignore: "npm:^5.3.1" + natural-compare: "npm:^1.4.0" + ts-api-utils: "npm:^2.0.0" + peerDependencies: + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/c9a6d3181ec01068075b85ad3ac454910b4452281d60c775cc7229827f6d6a076b7336f5f07a7ad89bf08b3224f6a49aa20342b9438702393bee0aa7315d23b2 + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:8.18.0, @typescript-eslint/parser@npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": version: 8.18.0 resolution: "@typescript-eslint/parser@npm:8.18.0" @@ -9812,6 +10855,22 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/parser@npm:8.19.1" + dependencies: + "@typescript-eslint/scope-manager": "npm:8.19.1" + "@typescript-eslint/types": "npm:8.19.1" + "@typescript-eslint/typescript-estree": "npm:8.19.1" + "@typescript-eslint/visitor-keys": "npm:8.19.1" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/da3db63ff655cf0fb91745ba8e52d853386f601cf6106d36f4541efcb9e2c6c3b82c6743b15680eff9eafeccaf31c9b26191a955e66ae19de9172f67335463ab + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/scope-manager@npm:7.18.0" @@ -9832,6 +10891,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/scope-manager@npm:8.19.1" + dependencies: + "@typescript-eslint/types": "npm:8.19.1" + "@typescript-eslint/visitor-keys": "npm:8.19.1" + checksum: 10/6ffc78b15367f211eb6650459ca2bb6bfe4c1fa95a3474adc08ee9a20c250b2e0e02fd99be36bd3dad74967ecd9349e792b5d818d85735cba40f1b5c236074d1 + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:8.18.0": version: 8.18.0 resolution: "@typescript-eslint/type-utils@npm:8.18.0" @@ -9847,6 +10916,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/type-utils@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/type-utils@npm:8.19.1" + dependencies: + "@typescript-eslint/typescript-estree": "npm:8.19.1" + "@typescript-eslint/utils": "npm:8.19.1" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^2.0.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/123ecda88b057d6a4b68226701f435661440a420fda88cba60b49d7fb3e4f49483164ff174f259e28c0beabb0ed04500462a20faefd78331ba202bf54b01e3ef + languageName: node + linkType: hard + "@typescript-eslint/types@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/types@npm:7.18.0" @@ -9861,6 +10945,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/types@npm:8.19.1" + checksum: 10/5833a5f8fdac4a490dd3906a0243a0713fbf138fabb451870c70b0b089c539a9624b467b0913ddc0a225a8284342e7fd31cd506dec53c1a6d8f3c8c8902b9cae + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/typescript-estree@npm:7.18.0" @@ -9898,6 +10989,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/typescript-estree@npm:8.19.1" + dependencies: + "@typescript-eslint/types": "npm:8.19.1" + "@typescript-eslint/visitor-keys": "npm:8.19.1" + debug: "npm:^4.3.4" + fast-glob: "npm:^3.3.2" + is-glob: "npm:^4.0.3" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^2.0.0" + peerDependencies: + typescript: ">=4.8.4 <5.8.0" + checksum: 10/5de467452d5ef1a380d441b06cd0134652a0c98cdb4ce31b93eb589f7dc75ef60364d03fd80ca0a48d0c8b268f7258d4f6528b16fe1b89442d60a4bc960fe5f5 + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:8.18.0, @typescript-eslint/utils@npm:^8.8.1": version: 8.18.0 resolution: "@typescript-eslint/utils@npm:8.18.0" @@ -9913,6 +11022,21 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/utils@npm:8.19.1" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.4.0" + "@typescript-eslint/scope-manager": "npm:8.19.1" + "@typescript-eslint/types": "npm:8.19.1" + "@typescript-eslint/typescript-estree": "npm:8.19.1" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/bb92116a53fe143ee87e830941afb21d4222a64ca3f2b6dac5c2d9984f981408e60e52b04c32d95208896075ac222fb4ee631c5b0c4826b87d4bd8091c421ab1 + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:^7.7.1": version: 7.18.0 resolution: "@typescript-eslint/utils@npm:7.18.0" @@ -9947,6 +11071,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:8.19.1": + version: 8.19.1 + resolution: "@typescript-eslint/visitor-keys@npm:8.19.1" + dependencies: + "@typescript-eslint/types": "npm:8.19.1" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10/510eb196e7b7d59d3981d672a75454615159e931fe78e2a64b09607c3cfa45110709b0eb5ac3dd271d757a0d98cf4868ad2f45bf9193f96e9efec3efa92a19c1 + languageName: node + linkType: hard + "@uiw/codemirror-extensions-basic-setup@npm:4.23.7": version: 4.23.7 resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.23.7" @@ -10292,19 +11426,19 @@ __metadata: languageName: node linkType: hard -"@xstate/react@npm:^5.0.0": - version: 5.0.0 - resolution: "@xstate/react@npm:5.0.0" +"@xstate/react@npm:^5.0.1": + version: 5.0.1 + resolution: "@xstate/react@npm:5.0.1" dependencies: use-isomorphic-layout-effect: "npm:^1.1.2" use-sync-external-store: "npm:^1.2.0" peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-0 - xstate: ^5.19.0 + xstate: ^5.19.1 peerDependenciesMeta: xstate: optional: true - checksum: 10/1f2c8e18c192da935e9d28d57c527530fccf3f24a62c5cab3b8e2fd3c280a93baeffdc558bce9d65420770160f8a01c74a4a915b03c6be2cb0b629c9747e3c8d + checksum: 10/970e64e323b0ef56ca95d029ebcfe5668cf5898190ff0aacf1f7c08a29502e9fe9c8597cba29a11aca89a6a6e48cf51f0bc927b85c08531b727be3acd4209d2e languageName: node linkType: hard @@ -10437,6 +11571,18 @@ __metadata: languageName: node linkType: hard +"ajv-draft-04@npm:~1.0.0": + version: 1.0.0 + resolution: "ajv-draft-04@npm:1.0.0" + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 10/3f11fa0e7f7359bef6608657f02ab78e9cc62b1fb7bdd860db0d00351b3863a1189c1a23b72466d2d82726cab4eb20725c76f5e7c134a89865e2bfd0e6828137 + languageName: node + linkType: hard + "ajv-formats@npm:^2.1.1": version: 2.1.1 resolution: "ajv-formats@npm:2.1.1" @@ -10451,6 +11597,20 @@ __metadata: languageName: node linkType: hard +"ajv-formats@npm:~3.0.1": + version: 3.0.1 + resolution: "ajv-formats@npm:3.0.1" + dependencies: + ajv: "npm:^8.0.0" + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + checksum: 10/5679b9f9ced9d0213a202a37f3aa91efcffe59a6de1a6e3da5c873344d3c161820a1f11cc29899661fee36271fd2895dd3851b6461c902a752ad661d1c1e8722 + languageName: node + linkType: hard + "ajv-keywords@npm:^3.5.2": version: 3.5.2 resolution: "ajv-keywords@npm:3.5.2" @@ -10495,6 +11655,30 @@ __metadata: languageName: node linkType: hard +"ajv@npm:~8.12.0": + version: 8.12.0 + resolution: "ajv@npm:8.12.0" + dependencies: + fast-deep-equal: "npm:^3.1.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + uri-js: "npm:^4.2.2" + checksum: 10/b406f3b79b5756ac53bfe2c20852471b08e122bc1ee4cde08ae4d6a800574d9cd78d60c81c69c63ff81e4da7cd0b638fafbb2303ae580d49cf1600b9059efb85 + languageName: node + linkType: hard + +"ajv@npm:~8.13.0": + version: 8.13.0 + resolution: "ajv@npm:8.13.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + uri-js: "npm:^4.4.1" + checksum: 10/4ada268c9a6e44be87fd295df0f0a91267a7bae8dbc8a67a2d5799c3cb459232839c99d18b035597bb6e3ffe88af6979f7daece854f590a81ebbbc2dfa80002c + languageName: node + linkType: hard + "ansi-colors@npm:^4.1.1, ansi-colors@npm:^4.1.3": version: 4.1.3 resolution: "ansi-colors@npm:4.1.3" @@ -10628,18 +11812,18 @@ __metadata: version: 0.0.0-use.local resolution: "appstatus-sanity-config@workspace:packages/appstatus-sanity-config" dependencies: - "@sanity/eslint-config-studio": "npm:5.0.0" - "@sanity/vision": "npm:3.67.1" - "@types/react": "npm:19.0.1" + "@sanity/eslint-config-studio": "npm:5.0.1" + "@sanity/vision": "npm:3.69.0" + "@types/react": "npm:19.0.6" dayjs: "npm:1.11.13" - eslint: "npm:9.17.0" + eslint: "npm:9.18.0" prettier: "npm:3.4.2" react: "npm:19.0.0" react-dom: "npm:19.0.0" react-is: "npm:19.0.0" - sanity: "npm:3.67.1" - styled-components: "npm:6.1.13" - typescript: "npm:5.7.2" + sanity: "npm:3.69.0" + styled-components: "npm:6.1.14" + typescript: "npm:5.7.3" languageName: unknown linkType: soft @@ -10687,7 +11871,7 @@ __metadata: languageName: node linkType: hard -"argparse@npm:^1.0.7": +"argparse@npm:^1.0.7, argparse@npm:~1.0.9": version: 1.0.10 resolution: "argparse@npm:1.0.10" dependencies: @@ -10747,6 +11931,16 @@ __metadata: languageName: node linkType: hard +"array-buffer-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "array-buffer-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + is-array-buffer: "npm:^3.0.5" + checksum: 10/0ae3786195c3211b423e5be8dd93357870e6fb66357d81da968c2c39ef43583ef6eece1f9cb1caccdae4806739c65dea832b44b8593414313cd76a89795fca63 + languageName: node + linkType: hard + "array-flatten@npm:1.1.1": version: 1.1.1 resolution: "array-flatten@npm:1.1.1" @@ -10815,7 +12009,7 @@ __metadata: languageName: node linkType: hard -"array.prototype.flatmap@npm:^1.3.2": +"array.prototype.flatmap@npm:^1.3.2, array.prototype.flatmap@npm:^1.3.3": version: 1.3.3 resolution: "array.prototype.flatmap@npm:1.3.3" dependencies: @@ -11219,6 +12413,13 @@ __metadata: languageName: node linkType: hard +"before-after-hook@npm:^2.2.0": + version: 2.2.3 + resolution: "before-after-hook@npm:2.2.3" + checksum: 10/e676f769dbc4abcf4b3317db2fd2badb4a92c0710e0a7da12cf14b59c3482d4febf835ad7de7874499060fd4e13adf0191628e504728b3c5bb4ec7a878c09940 + languageName: node + linkType: hard + "better-opn@npm:^3.0.2": version: 3.0.2 resolution: "better-opn@npm:3.0.2" @@ -11478,6 +12679,20 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.24.4": + version: 4.24.4 + resolution: "browserslist@npm:4.24.4" + dependencies: + caniuse-lite: "npm:^1.0.30001688" + electron-to-chromium: "npm:^1.5.73" + node-releases: "npm:^2.0.19" + update-browserslist-db: "npm:^1.1.1" + bin: + browserslist: cli.js + checksum: 10/11fda105e803d891311a21a1f962d83599319165faf471c2d70e045dff82a12128f5b50b1fcba665a2352ad66147aaa248a9d2355a80aadc3f53375eb3de2e48 + languageName: node + linkType: hard + "bser@npm:2.1.1": version: 2.1.1 resolution: "bser@npm:2.1.1" @@ -11623,6 +12838,16 @@ __metadata: languageName: node linkType: hard +"cacheable@npm:^1.8.7": + version: 1.8.7 + resolution: "cacheable@npm:1.8.7" + dependencies: + hookified: "npm:^1.6.0" + keyv: "npm:^5.2.3" + checksum: 10/dce96e947c5b879a58ce024fd2d08a4c44ee328e8406cd6243da2d0e3a17579d63108c80e9272f64190d2d2f00e26a307b3e3ff65b6665abc70956714442897b + languageName: node + linkType: hard + "caching-transform@npm:^4.0.0": version: 4.0.0 resolution: "caching-transform@npm:4.0.0" @@ -11781,13 +13006,20 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^5.2.0, chalk@npm:~5.3.0": +"chalk@npm:^5.2.0": version: 5.3.0 resolution: "chalk@npm:5.3.0" checksum: 10/6373caaab21bd64c405bfc4bd9672b145647fc9482657b5ea1d549b3b2765054e9d3d928870cdf764fb4aad67555f5061538ff247b8310f110c5c888d92397ea languageName: node linkType: hard +"chalk@npm:~5.4.1": + version: 5.4.1 + resolution: "chalk@npm:5.4.1" + checksum: 10/29df3ffcdf25656fed6e95962e2ef86d14dfe03cd50e7074b06bad9ffbbf6089adbb40f75c00744d843685c8d008adaf3aed31476780312553caf07fa86e5bc7 + languageName: node + linkType: hard + "char-regex@npm:^1.0.2": version: 1.0.2 resolution: "char-regex@npm:1.0.2" @@ -11872,6 +13104,15 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:^4.0.3": + version: 4.0.3 + resolution: "chokidar@npm:4.0.3" + dependencies: + readdirp: "npm:^4.0.1" + checksum: 10/bf2a575ea5596000e88f5db95461a9d59ad2047e939d5a4aac59dd472d126be8f1c1ff3c7654b477cf532d18f42a97279ef80ee847972fd2a25410bf00b80b59 + languageName: node + linkType: hard + "chownr@npm:^1.1.1": version: 1.1.4 resolution: "chownr@npm:1.1.4" @@ -11886,7 +13127,26 @@ __metadata: languageName: node linkType: hard -"chromatic@npm:11.20.2, chromatic@npm:^11.15.0": +"chromatic@npm:11.22.2": + version: 11.22.2 + resolution: "chromatic@npm:11.22.2" + peerDependencies: + "@chromatic-com/cypress": ^0.*.* || ^1.0.0 + "@chromatic-com/playwright": ^0.*.* || ^1.0.0 + peerDependenciesMeta: + "@chromatic-com/cypress": + optional: true + "@chromatic-com/playwright": + optional: true + bin: + chroma: dist/bin.js + chromatic: dist/bin.js + chromatic-cli: dist/bin.js + checksum: 10/60d4889bf0630f741ea8f0c490debe0c59895daac3c58c8c82c0b86a335b81641f2c2e85fc221c5c113ef53761df0866667f86a99b1a55e26ab8d67e893edd2b + languageName: node + linkType: hard + +"chromatic@npm:^11.15.0": version: 11.20.2 resolution: "chromatic@npm:11.20.2" peerDependencies: @@ -12220,10 +13480,10 @@ __metadata: languageName: node linkType: hard -"commander@npm:^11.0.0": - version: 11.1.0 - resolution: "commander@npm:11.1.0" - checksum: 10/66bd2d8a0547f6cb1d34022efb25f348e433b0e04ad76a65279b1b09da108f59a4d3001ca539c60a7a46ea38bcf399fc17d91adad76a8cf43845d8dcbaf5cda1 +"commander@npm:^13.0.0": + version: 13.0.0 + resolution: "commander@npm:13.0.0" + checksum: 10/e89d5bf61e84e65e0cfdfcfb740049cf6bcaba63fc32a610375957a2a57373d42f7b00fc64bec5bdde0e547593fa184f869dfabe8a415bc4fd4482edf2fb5ca8 languageName: node linkType: hard @@ -12346,23 +13606,33 @@ __metadata: languageName: node linkType: hard +"config-chain@npm:^1.1.11": + version: 1.1.13 + resolution: "config-chain@npm:1.1.13" + dependencies: + ini: "npm:^1.3.4" + proto-list: "npm:~1.2.1" + checksum: 10/83d22cabf709e7669f6870021c4d552e4fc02e9682702b726be94295f42ce76cfed00f70b2910ce3d6c9465d9758e191e28ad2e72ff4e3331768a90da6c1ef03 + languageName: node + linkType: hard + "config@npm:*, config@workspace:packages/config": version: 0.0.0-use.local resolution: "config@workspace:packages/config" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.18.0" - "@typescript-eslint/parser": "npm:8.18.0" + "@typescript-eslint/eslint-plugin": "npm:8.19.1" + "@typescript-eslint/parser": "npm:8.19.1" autoprefixer: "npm:10.4.20" - eslint: "npm:9.17.0" + eslint: "npm:9.18.0" eslint-config-prettier: "npm:9.1.0" eslint-plugin-jsx-a11y: "npm:6.10.2" eslint-plugin-prettier: "npm:5.2.1" - eslint-plugin-react: "npm:7.37.2" + eslint-plugin-react: "npm:7.37.4" eslint-plugin-react-hooks: "npm:5.1.0" - eslint-plugin-storybook: "npm:0.11.1" + eslint-plugin-storybook: "npm:0.11.2" postcss: "npm:8.4.49" prettier: "npm:3.4.2" - typescript: "npm:5.7.2" + typescript: "npm:5.7.3" languageName: unknown linkType: soft @@ -12489,15 +13759,6 @@ __metadata: languageName: node linkType: hard -"copy-to-clipboard@npm:^3.3.1": - version: 3.3.3 - resolution: "copy-to-clipboard@npm:3.3.3" - dependencies: - toggle-selection: "npm:^1.0.6" - checksum: 10/e0a325e39b7615108e6c1c8ac110ae7b829cdc4ee3278b1df6a0e4228c490442cc86444cd643e2da344fbc424b3aab8909e2fec82f8bc75e7e5b190b7c24eecf - languageName: node - linkType: hard - "copyfiles@npm:2.4.1": version: 2.4.1 resolution: "copyfiles@npm:2.4.1" @@ -12676,16 +13937,6 @@ __metadata: languageName: node linkType: hard -"create-react-class@npm:^15.6.0": - version: 15.7.0 - resolution: "create-react-class@npm:15.7.0" - dependencies: - loose-envify: "npm:^1.3.1" - object-assign: "npm:^4.1.1" - checksum: 10/e845cb275c6b59c1fc4c4037e3d5caf4f42a258ef21f5cd9c86cd7ef476f933998f5c363a9e4b36970f682c30b122637d41474742abc85d8b931aef8041da8a3 - languageName: node - linkType: hard - "crelt@npm:^1.0.5": version: 1.0.6 resolution: "crelt@npm:1.0.6" @@ -12882,7 +14133,7 @@ __metadata: languageName: node linkType: hard -"css-tree@npm:^3.0.1": +"css-tree@npm:^3.1.0": version: 3.1.0 resolution: "css-tree@npm:3.1.0" dependencies: @@ -13024,6 +14275,17 @@ __metadata: languageName: node linkType: hard +"data-view-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-buffer@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.2" + checksum: 10/c10b155a4e93999d3a215d08c23eea95f865e1f510b2e7748fcae1882b776df1afe8c99f483ace7fc0e5a3193ab08da138abebc9829d12003746c5a338c4d644 + languageName: node + linkType: hard + "data-view-byte-length@npm:^1.0.1": version: 1.0.1 resolution: "data-view-byte-length@npm:1.0.1" @@ -13035,14 +14297,36 @@ __metadata: languageName: node linkType: hard +"data-view-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.2" + checksum: 10/2a47055fcf1ab3ec41b00b6f738c6461a841391a643c9ed9befec1117c1765b4d492661d97fb7cc899200c328949dca6ff189d2c6537d96d60e8a02dfe3c95f7 + languageName: node + linkType: hard + "data-view-byte-offset@npm:^1.0.0": version: 1.0.0 resolution: "data-view-byte-offset@npm:1.0.0" dependencies: - call-bind: "npm:^1.0.6" + call-bind: "npm:^1.0.6" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10/96f34f151bf02affb7b9f98762fb7aca1dd5f4553cb57b80bce750ca609c15d33ca659568ef1d422f7e35680736cbccb893a3d4b012760c758c1446bbdc4c6db + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-offset@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" es-errors: "npm:^1.3.0" is-data-view: "npm:^1.0.1" - checksum: 10/96f34f151bf02affb7b9f98762fb7aca1dd5f4553cb57b80bce750ca609c15d33ca659568ef1d422f7e35680736cbccb893a3d4b012760c758c1446bbdc4c6db + checksum: 10/fa3bdfa0968bea6711ee50375094b39f561bce3f15f9e558df59de9c25f0bdd4cddc002d9c1d70ac7772ebd36854a7e22d1761e7302a934e6f1c2263bcf44aa2 languageName: node linkType: hard @@ -13069,13 +14353,6 @@ __metadata: languageName: node linkType: hard -"date-now@npm:1.0.1": - version: 1.0.1 - resolution: "date-now@npm:1.0.1" - checksum: 10/6e824ea77f84122368e7621ff155035de06b9bb9f66220d4284bec42c293c0a3eaf3c03a6794a987371ae9bc48e9592c427f768ac0897f00579f760582ec49b7 - languageName: node - linkType: hard - "dayjs@npm:1.11.13": version: 1.11.13 resolution: "dayjs@npm:1.11.13" @@ -13083,12 +14360,10 @@ __metadata: languageName: node linkType: hard -"debounce@npm:1.0.0": - version: 1.0.0 - resolution: "debounce@npm:1.0.0" - dependencies: - date-now: "npm:1.0.1" - checksum: 10/d12be7d1a35df0cc8213bf40c4c88c32c52b2726c2bad15e44045ec6f72d6970350ec1067439f8d0d95bd6d640cd4b615fd9c621c7fabfd4b9c3a9a2f557e044 +"debounce@npm:^1.0.0": + version: 1.2.1 + resolution: "debounce@npm:1.2.1" + checksum: 10/0b95b2a9d80ed69117d890f8dab8c0f2d6066f8d20edd1d810ae51f8f366a6d4c8b1d56e97dcb9304e93d57de4d5db440d34a03def7dad50403fc3f22bf16808 languageName: node linkType: hard @@ -13277,6 +14552,13 @@ __metadata: languageName: node linkType: hard +"deep-extend@npm:^0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 10/7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 + languageName: node + linkType: hard + "deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" @@ -13359,6 +14641,13 @@ __metadata: languageName: node linkType: hard +"deprecation@npm:^2.0.0": + version: 2.3.1 + resolution: "deprecation@npm:2.3.1" + checksum: 10/f56a05e182c2c195071385455956b0c4106fe14e36245b00c689ceef8e8ab639235176a96977ba7c74afb173317fac2e0ec6ec7a1c6d1e6eaa401c586c714132 + languageName: node + linkType: hard + "dequal@npm:^2.0.2, dequal@npm:^2.0.3": version: 2.0.3 resolution: "dequal@npm:2.0.3" @@ -13637,6 +14926,18 @@ __metadata: languageName: node linkType: hard +"dompurify@npm:^3.2.3": + version: 3.2.3 + resolution: "dompurify@npm:3.2.3" + dependencies: + "@types/trusted-types": "npm:^2.0.7" + dependenciesMeta: + "@types/trusted-types": + optional: true + checksum: 10/aad472bcdff40afdbb307fd02abbca86acefee9c39cb35e9634ebbc5e047750a7eeb021b02cd66894d60cf75ad021f69394de2e9e8786b0dd91c5832f497a9af + languageName: node + linkType: hard + "domutils@npm:^1.5.1": version: 1.7.0 resolution: "domutils@npm:1.7.0" @@ -13658,7 +14959,7 @@ __metadata: languageName: node linkType: hard -"domutils@npm:^3.0.1, domutils@npm:^3.1.0": +"domutils@npm:^3.0.1": version: 3.1.0 resolution: "domutils@npm:3.1.0" dependencies: @@ -13669,6 +14970,17 @@ __metadata: languageName: node linkType: hard +"domutils@npm:^3.2.1": + version: 3.2.1 + resolution: "domutils@npm:3.2.1" + dependencies: + dom-serializer: "npm:^2.0.0" + domelementtype: "npm:^2.3.0" + domhandler: "npm:^5.0.3" + checksum: 10/5d206a47be0713ed652f22a65d595dcc499009a05029148956a675867af339f1b216abd6d0da5e852fbcbb7d2d2aba387b35402193211dc8166060ad50e00897 + languageName: node + linkType: hard + "dot-case@npm:^3.0.4": version: 3.0.4 resolution: "dot-case@npm:3.0.4" @@ -13713,6 +15025,17 @@ __metadata: languageName: node linkType: hard +"dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10/5add88a3d68d42d6e6130a0cac450b7c2edbe73364bbd2fc334564418569bea97c6943a8fcd70e27130bf32afc236f30982fc4905039b703f23e9e0433c29934 + languageName: node + linkType: hard + "duplexify@npm:^3.5.0, duplexify@npm:^3.6.0": version: 3.7.1 resolution: "duplexify@npm:3.7.1" @@ -13875,7 +15198,7 @@ __metadata: languageName: node linkType: hard -"enquirer@npm:^2.3.0": +"enquirer@npm:^2.4.1": version: 2.4.1 resolution: "enquirer@npm:2.4.1" dependencies: @@ -13906,6 +15229,13 @@ __metadata: languageName: node linkType: hard +"entities@npm:^6.0.0": + version: 6.0.0 + resolution: "entities@npm:6.0.0" + checksum: 10/cf37a4aad887ba8573532346da1c78349dccd5b510a9bbddf92fe59b36b18a8b26fe619a862de4e7fd3b8addc6d5e0969261198bbeb690da87297011a61b7066 + languageName: node + linkType: hard + "env-paths@npm:^2.2.0, env-paths@npm:^2.2.1": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -14012,6 +15342,65 @@ __metadata: languageName: node linkType: hard +"es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9": + version: 1.23.9 + resolution: "es-abstract@npm:1.23.9" + dependencies: + array-buffer-byte-length: "npm:^1.0.2" + arraybuffer.prototype.slice: "npm:^1.0.4" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + data-view-buffer: "npm:^1.0.2" + data-view-byte-length: "npm:^1.0.2" + data-view-byte-offset: "npm:^1.0.1" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + es-set-tostringtag: "npm:^2.1.0" + es-to-primitive: "npm:^1.3.0" + function.prototype.name: "npm:^1.1.8" + get-intrinsic: "npm:^1.2.7" + get-proto: "npm:^1.0.0" + get-symbol-description: "npm:^1.1.0" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + internal-slot: "npm:^1.1.0" + is-array-buffer: "npm:^3.0.5" + is-callable: "npm:^1.2.7" + is-data-view: "npm:^1.0.2" + is-regex: "npm:^1.2.1" + is-shared-array-buffer: "npm:^1.0.4" + is-string: "npm:^1.1.1" + is-typed-array: "npm:^1.1.15" + is-weakref: "npm:^1.1.0" + math-intrinsics: "npm:^1.1.0" + object-inspect: "npm:^1.13.3" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.7" + own-keys: "npm:^1.0.1" + regexp.prototype.flags: "npm:^1.5.3" + safe-array-concat: "npm:^1.1.3" + safe-push-apply: "npm:^1.0.0" + safe-regex-test: "npm:^1.1.0" + set-proto: "npm:^1.0.0" + string.prototype.trim: "npm:^1.2.10" + string.prototype.trimend: "npm:^1.0.9" + string.prototype.trimstart: "npm:^1.0.8" + typed-array-buffer: "npm:^1.0.3" + typed-array-byte-length: "npm:^1.0.3" + typed-array-byte-offset: "npm:^1.0.4" + typed-array-length: "npm:^1.0.7" + unbox-primitive: "npm:^1.1.0" + which-typed-array: "npm:^1.1.18" + checksum: 10/31a321966d760d88fc2ed984104841b42f4f24fc322b246002b9be0af162e03803ee41fcc3cf8be89e07a27ba3033168f877dd983703cb81422ffe5322a27582 + languageName: node + linkType: hard + "es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": version: 1.0.1 resolution: "es-define-property@npm:1.0.1" @@ -14066,6 +15455,30 @@ __metadata: languageName: node linkType: hard +"es-iterator-helpers@npm:^1.2.1": + version: 1.2.1 + resolution: "es-iterator-helpers@npm:1.2.1" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.6" + es-errors: "npm:^1.3.0" + es-set-tostringtag: "npm:^2.0.3" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.6" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + internal-slot: "npm:^1.1.0" + iterator.prototype: "npm:^1.1.4" + safe-array-concat: "npm:^1.1.3" + checksum: 10/802e0e8427a05ff4a5b0c70c7fdaaeff37cdb81a28694aeb7bfb831c6ab340d8f3deeb67b96732ff9e9699ea240524d5ea8a9a6a335fcd15aa3983b27b06113f + languageName: node + linkType: hard + "es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.5.0, es-module-lexer@npm:^1.5.4": version: 1.5.4 resolution: "es-module-lexer@npm:1.5.4" @@ -14073,6 +15486,13 @@ __metadata: languageName: node linkType: hard +"es-module-lexer@npm:^1.3.1": + version: 1.6.0 + resolution: "es-module-lexer@npm:1.6.0" + checksum: 10/807ee7020cc46a9c970c78cad1f2f3fc139877e5ebad7f66dbfbb124d451189ba1c48c1c632bd5f8ce1b8af2caef3fca340ba044a410fa890d17b080a59024bb + languageName: node + linkType: hard + "es-object-atoms@npm:^1.0.0": version: 1.0.0 resolution: "es-object-atoms@npm:1.0.0" @@ -14093,6 +15513,18 @@ __metadata: languageName: node linkType: hard +"es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" + dependencies: + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10/86814bf8afbcd8966653f731415888019d4bc4aca6b6c354132a7a75bb87566751e320369654a101d23a91c87a85c79b178bcf40332839bd347aff437c4fb65f + languageName: node + linkType: hard + "es-shim-unscopables@npm:^1.0.2": version: 1.0.2 resolution: "es-shim-unscopables@npm:1.0.2" @@ -14232,7 +15664,7 @@ __metadata: languageName: node linkType: hard -"esbuild-register@npm:^3.5.0": +"esbuild-register@npm:^3.5.0, esbuild-register@npm:^3.6.0": version: 3.6.0 resolution: "esbuild-register@npm:3.6.0" dependencies: @@ -14502,7 +15934,7 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0, esbuild@npm:^0.24.0": +"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0": version: 0.24.0 resolution: "esbuild@npm:0.24.0" dependencies: @@ -14585,6 +16017,92 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:^0.24.2": + version: 0.24.2 + resolution: "esbuild@npm:0.24.2" + dependencies: + "@esbuild/aix-ppc64": "npm:0.24.2" + "@esbuild/android-arm": "npm:0.24.2" + "@esbuild/android-arm64": "npm:0.24.2" + "@esbuild/android-x64": "npm:0.24.2" + "@esbuild/darwin-arm64": "npm:0.24.2" + "@esbuild/darwin-x64": "npm:0.24.2" + "@esbuild/freebsd-arm64": "npm:0.24.2" + "@esbuild/freebsd-x64": "npm:0.24.2" + "@esbuild/linux-arm": "npm:0.24.2" + "@esbuild/linux-arm64": "npm:0.24.2" + "@esbuild/linux-ia32": "npm:0.24.2" + "@esbuild/linux-loong64": "npm:0.24.2" + "@esbuild/linux-mips64el": "npm:0.24.2" + "@esbuild/linux-ppc64": "npm:0.24.2" + "@esbuild/linux-riscv64": "npm:0.24.2" + "@esbuild/linux-s390x": "npm:0.24.2" + "@esbuild/linux-x64": "npm:0.24.2" + "@esbuild/netbsd-arm64": "npm:0.24.2" + "@esbuild/netbsd-x64": "npm:0.24.2" + "@esbuild/openbsd-arm64": "npm:0.24.2" + "@esbuild/openbsd-x64": "npm:0.24.2" + "@esbuild/sunos-x64": "npm:0.24.2" + "@esbuild/win32-arm64": "npm:0.24.2" + "@esbuild/win32-ia32": "npm:0.24.2" + "@esbuild/win32-x64": "npm:0.24.2" + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 10/95425071c9f24ff88bf61e0710b636ec0eb24ddf8bd1f7e1edef3044e1221104bbfa7bbb31c18018c8c36fa7902c5c0b843f829b981ebc89160cf5eebdaa58f4 + languageName: node + linkType: hard + "escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" @@ -14638,11 +16156,11 @@ __metadata: languageName: node linkType: hard -"eslint-config-next@npm:15.1.0": - version: 15.1.0 - resolution: "eslint-config-next@npm:15.1.0" +"eslint-config-next@npm:15.1.4": + version: 15.1.4 + resolution: "eslint-config-next@npm:15.1.4" dependencies: - "@next/eslint-plugin-next": "npm:15.1.0" + "@next/eslint-plugin-next": "npm:15.1.4" "@rushstack/eslint-patch": "npm:^1.10.3" "@typescript-eslint/eslint-plugin": "npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" "@typescript-eslint/parser": "npm:^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0" @@ -14658,7 +16176,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10/44051878b4bfefe75339cacacc446b31d017a12835ca1ca01d86686f9bb792b2cd1c024960afe107c37225ea90ce8fbfccf26919321d79c5456dd202563941f2 + checksum: 10/0b0ffa584083acfa276b2fb22a2f1d6bbb23aba5158ebe0a6309ad879bc9e727a1bc800cd6cd50e1e5eb3b9ca20ed3743a546839a57720d7b19bf2da2bed2aa5 languageName: node linkType: hard @@ -14804,7 +16322,35 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react@npm:7.37.2, eslint-plugin-react@npm:^7.37.0, eslint-plugin-react@npm:^7.37.2": +"eslint-plugin-react@npm:7.37.4": + version: 7.37.4 + resolution: "eslint-plugin-react@npm:7.37.4" + dependencies: + array-includes: "npm:^3.1.8" + array.prototype.findlast: "npm:^1.2.5" + array.prototype.flatmap: "npm:^1.3.3" + array.prototype.tosorted: "npm:^1.1.4" + doctrine: "npm:^2.1.0" + es-iterator-helpers: "npm:^1.2.1" + estraverse: "npm:^5.3.0" + hasown: "npm:^2.0.2" + jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" + minimatch: "npm:^3.1.2" + object.entries: "npm:^1.1.8" + object.fromentries: "npm:^2.0.8" + object.values: "npm:^1.2.1" + prop-types: "npm:^15.8.1" + resolve: "npm:^2.0.0-next.5" + semver: "npm:^6.3.1" + string.prototype.matchall: "npm:^4.0.12" + string.prototype.repeat: "npm:^1.0.0" + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: 10/c538c10665c87cb90a0bcc4efe53a758570db10997d079d31474a9760116ef5584648fa22403d889ca672df8071bda10b40434ea0499e5ee8360bc5c8aba1679 + languageName: node + linkType: hard + +"eslint-plugin-react@npm:^7.37.0, eslint-plugin-react@npm:^7.37.2": version: 7.37.2 resolution: "eslint-plugin-react@npm:7.37.2" dependencies: @@ -14841,16 +16387,16 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-storybook@npm:0.11.1": - version: 0.11.1 - resolution: "eslint-plugin-storybook@npm:0.11.1" +"eslint-plugin-storybook@npm:0.11.2": + version: 0.11.2 + resolution: "eslint-plugin-storybook@npm:0.11.2" dependencies: "@storybook/csf": "npm:^0.1.11" "@typescript-eslint/utils": "npm:^8.8.1" ts-dedent: "npm:^2.2.0" peerDependencies: - eslint: ">=6" - checksum: 10/3a8757e403227665566a9ee35a735bf72529a8eb2d6ba270c99e6df140601984b43e7fcf274ebee601fe3d946c76edfeefcce4200077da53edc26212ba5bd03c + eslint: ">=8" + checksum: 10/104c2d329f2c2bf1819015adc8d0e67c0216ed5b284b4524f968412424106c97c4056720e3c26a6fc50016f872acb80c156a68009409898fe5ae40909eeafe47 languageName: node linkType: hard @@ -14938,17 +16484,17 @@ __metadata: languageName: node linkType: hard -"eslint@npm:9.17.0": - version: 9.17.0 - resolution: "eslint@npm:9.17.0" +"eslint@npm:9.18.0": + version: 9.18.0 + resolution: "eslint@npm:9.18.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.12.1" "@eslint/config-array": "npm:^0.19.0" - "@eslint/core": "npm:^0.9.0" + "@eslint/core": "npm:^0.10.0" "@eslint/eslintrc": "npm:^3.2.0" - "@eslint/js": "npm:9.17.0" - "@eslint/plugin-kit": "npm:^0.2.3" + "@eslint/js": "npm:9.18.0" + "@eslint/plugin-kit": "npm:^0.2.5" "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" "@humanwhocodes/retry": "npm:^0.4.1" @@ -14983,7 +16529,7 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10/a48ee67dd4e737974bbb49ca5d12d0ce35bcd874507807599e3655bb398320ab27c9deed1aad508a963967815e626c21208f52158c2fc0796d0cc8186528efeb + checksum: 10/85f22991aab4b0809fdfc557ec2bd309062e7211b631674e71827a73c45e44febaa80dedda35150154e331a2d372c3a25e8e5dd4a99dc8a982fe8f7d645d859f languageName: node linkType: hard @@ -15351,6 +16897,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:^3.3.3": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.8" + checksum: 10/dcc6432b269762dd47381d8b8358bf964d8f4f60286ac6aa41c01ade70bda459ff2001b516690b96d5365f68a49242966112b5d5cc9cd82395fa8f9d017c90ad + languageName: node + linkType: hard + "fast-json-parse@npm:^1.0.3": version: 1.0.3 resolution: "fast-json-parse@npm:1.0.3" @@ -15460,7 +17019,7 @@ __metadata: languageName: node linkType: hard -"fdir@npm:^6.4.2": +"fdir@npm:^6.2.0, fdir@npm:^6.4.2": version: 6.4.2 resolution: "fdir@npm:6.4.2" peerDependencies: @@ -15489,6 +17048,15 @@ __metadata: languageName: node linkType: hard +"file-entry-cache@npm:^10.0.5": + version: 10.0.5 + resolution: "file-entry-cache@npm:10.0.5" + dependencies: + flat-cache: "npm:^6.1.5" + checksum: 10/57439b39635e75aa900ccdaad9167b85a500a559dd8f0902509189849784e9255d43cd3d8307f918dbd19f48b02562b5e354bcf7bfa23afe3985485504eb7a5e + languageName: node + linkType: hard + "file-entry-cache@npm:^8.0.0": version: 8.0.0 resolution: "file-entry-cache@npm:8.0.0" @@ -15498,15 +17066,6 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^9.1.0": - version: 9.1.0 - resolution: "file-entry-cache@npm:9.1.0" - dependencies: - flat-cache: "npm:^5.0.0" - checksum: 10/fd67a9552f272ac4a1731c545e1350bd135e208659144cc5311baac6b8bbf55da7c8c3a0bf25c71ed78eff2bdd26d2a3a8f9ba3d8bec968fe8d1eeba6ab14a96 - languageName: node - linkType: hard - "file-selector@npm:^2.1.0": version: 2.1.2 resolution: "file-selector@npm:2.1.2" @@ -15649,6 +17208,15 @@ __metadata: languageName: node linkType: hard +"find-config@npm:^1.0.0": + version: 1.0.0 + resolution: "find-config@npm:1.0.0" + dependencies: + user-home: "npm:^2.0.0" + checksum: 10/e0a8da19988c343b5dfc229faec6698a20bc040d91b4760daf3b481b8148fddb2754e8823b054ff2649b8c839ba5bfeaf7ffe2691e5d06e9128ffd7eb2848038 + languageName: node + linkType: hard + "find-file-up@npm:^0.1.2": version: 0.1.3 resolution: "find-file-up@npm:0.1.3" @@ -15741,13 +17309,14 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^5.0.0": - version: 5.0.0 - resolution: "flat-cache@npm:5.0.0" +"flat-cache@npm:^6.1.5": + version: 6.1.5 + resolution: "flat-cache@npm:6.1.5" dependencies: - flatted: "npm:^3.3.1" - keyv: "npm:^4.5.4" - checksum: 10/42570762052b17a1dec221d73a1e417d0ba07137de6debaabb51389cac265a12a027a895dc84e1725bc5cdde04fe8b706ad836860b05488e9a04bda9301d2529 + cacheable: "npm:^1.8.7" + flatted: "npm:^3.3.2" + hookified: "npm:^1.6.0" + checksum: 10/c98d7635316ceee08b74c1dd3f05eda6a5f2f073688af927de68193ca992ab09eb9f0ee7d5fac40f53280844f11cf368b90dc43f73fee358165dc84e13828674 languageName: node linkType: hard @@ -15760,7 +17329,7 @@ __metadata: languageName: node linkType: hard -"flatted@npm:^3.2.9, flatted@npm:^3.3.1": +"flatted@npm:^3.2.9, flatted@npm:^3.3.2": version: 3.3.2 resolution: "flatted@npm:3.3.2" checksum: 10/ac3c159742e01d0e860a861164bcfd35bb567ccbebb8a0dd041e61cf3c64a435b917dd1e7ed1c380c2ebca85735fb16644485ec33665bc6aafc3b316aa1eed44 @@ -15933,33 +17502,34 @@ __metadata: languageName: node linkType: hard -"framer-motion@npm:11.0.8": - version: 11.0.8 - resolution: "framer-motion@npm:11.0.8" +"framer-motion@npm:^11.15.0": + version: 11.15.0 + resolution: "framer-motion@npm:11.15.0" dependencies: - "@emotion/is-prop-valid": "npm:^0.8.2" + motion-dom: "npm:^11.14.3" + motion-utils: "npm:^11.14.3" tslib: "npm:^2.4.0" peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 - dependenciesMeta: + "@emotion/is-prop-valid": "*" + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: "@emotion/is-prop-valid": optional: true - peerDependenciesMeta: react: optional: true react-dom: optional: true - checksum: 10/6a9db8568dc40e2394398e832995909f39ee3a9be855c4987b5ef94675cf3f6875058f9d79e50c6fd33077b7694a64804d7ffcdccde4f4eff82a87ceda4b5f2d + checksum: 10/e31b03fb5c91095279452a8aff2c483d8a379c79a05c2c5d38520923d083168d1f21507185f47b3372adf6b5e2043dd1ccf08d747734747453b1754c7da7a3b1 languageName: node linkType: hard -"framer-motion@npm:^11.13.5": - version: 11.14.4 - resolution: "framer-motion@npm:11.14.4" +"framer-motion@npm:^11.16.0": + version: 11.17.0 + resolution: "framer-motion@npm:11.17.0" dependencies: - motion-dom: "npm:^11.14.3" - motion-utils: "npm:^11.14.3" + motion-dom: "npm:^11.16.4" + motion-utils: "npm:^11.16.0" tslib: "npm:^2.4.0" peerDependencies: "@emotion/is-prop-valid": "*" @@ -15972,7 +17542,7 @@ __metadata: optional: true react-dom: optional: true - checksum: 10/303e996fb309bddf7b3fc220d0d4c07186b397a38589ed7d35175e03c1ea96243a2182780403d0dd7f5a510720ab9f08955b45b7ef5913ad05915ffea388219e + checksum: 10/d1a37f72c1657b7401f1f516b0e7cc54b9c2671226cde968d03da2d25aaa2715f9b9b5c9855ee2b8a8ea51b45f989d4f0090187dec401974a573a934bd4bee04 languageName: node linkType: hard @@ -16047,7 +17617,7 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^7.0.1": +"fs-extra@npm:^7.0.1, fs-extra@npm:~7.0.1": version: 7.0.1 resolution: "fs-extra@npm:7.0.1" dependencies: @@ -16160,6 +17730,20 @@ __metadata: languageName: node linkType: hard +"function.prototype.name@npm:^1.1.8": + version: 1.1.8 + resolution: "function.prototype.name@npm:1.1.8" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + functions-have-names: "npm:^1.2.3" + hasown: "npm:^2.0.2" + is-callable: "npm:^1.2.7" + checksum: 10/25b9e5bea936732a6f0c0c08db58cc0d609ac1ed458c6a07ead46b32e7b9bf3fe5887796c3f83d35994efbc4fdde81c08ac64135b2c399b8f2113968d44082bc + languageName: node + linkType: hard + "functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" @@ -16206,7 +17790,25 @@ __metadata: languageName: node linkType: hard -"get-it@npm:^8.4.21, get-it@npm:^8.6.2, get-it@npm:^8.6.5": +"get-intrinsic@npm:^1.2.7": + version: 1.2.7 + resolution: "get-intrinsic@npm:1.2.7" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + function-bind: "npm:^1.1.2" + get-proto: "npm:^1.0.0" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: 10/4f7149c9a826723f94c6d49f70bcb3df1d3f9213994fab3668f12f09fa72074681460fb29ebb6f135556ec6372992d63802386098791a8f09cfa6f27090fa67b + languageName: node + linkType: hard + +"get-it@npm:^8.0.9, get-it@npm:^8.4.21, get-it@npm:^8.6.2, get-it@npm:^8.6.5": version: 8.6.5 resolution: "get-it@npm:8.6.5" dependencies: @@ -16221,6 +17823,18 @@ __metadata: languageName: node linkType: hard +"get-latest-version@npm:^5.1.0": + version: 5.1.0 + resolution: "get-latest-version@npm:5.1.0" + dependencies: + get-it: "npm:^8.0.9" + registry-auth-token: "npm:^5.0.2" + registry-url: "npm:^5.1.0" + semver: "npm:^7.3.8" + checksum: 10/31f46c39463fd160563d5b03d9e492bd9bdf4885f3d7ddb34550ffad554c713923796404ed7155e8fe211f4fee64e4fc885b57ba6d64edb024500957b4b0b576 + languageName: node + linkType: hard + "get-nonce@npm:^1.0.0": version: 1.0.1 resolution: "get-nonce@npm:1.0.1" @@ -16235,6 +17849,16 @@ __metadata: languageName: node linkType: hard +"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10/4fc96afdb58ced9a67558698b91433e6b037aaa6f1493af77498d7c85b141382cf223c0e5946f334fb328ee85dfe6edd06d218eaf09556f4bc4ec6005d7f5f7b + languageName: node + linkType: hard + "get-random-values-esm@npm:1.0.2, get-random-values-esm@npm:^1.0.2": version: 1.0.2 resolution: "get-random-values-esm@npm:1.0.2" @@ -16297,7 +17921,18 @@ __metadata: languageName: node linkType: hard -"get-tsconfig@npm:^4.7.5": +"get-symbol-description@npm:^1.1.0": + version: 1.1.0 + resolution: "get-symbol-description@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + checksum: 10/a353e3a9595a74720b40fb5bae3ba4a4f826e186e83814d93375182384265676f59e49998b9cdfac4a2225ce95a3d32a68f502a2c5619303987f1c183ab80494 + languageName: node + linkType: hard + +"get-tsconfig@npm:^4.7.2, get-tsconfig@npm:^4.7.5": version: 4.8.1 resolution: "get-tsconfig@npm:4.8.1" dependencies: @@ -16320,12 +17955,12 @@ __metadata: languageName: node linkType: hard -"gh-pages@npm:6.2.0": - version: 6.2.0 - resolution: "gh-pages@npm:6.2.0" +"gh-pages@npm:6.3.0": + version: 6.3.0 + resolution: "gh-pages@npm:6.3.0" dependencies: async: "npm:^3.2.4" - commander: "npm:^11.0.0" + commander: "npm:^13.0.0" email-addresses: "npm:^5.0.0" filenamify: "npm:^4.3.0" find-cache-dir: "npm:^3.3.1" @@ -16334,7 +17969,33 @@ __metadata: bin: gh-pages: bin/gh-pages.js gh-pages-clean: bin/gh-pages-clean.js - checksum: 10/c86b99aa6f63de073c2ea0f8b8d0890dcb4e941fb57eade119386460fb870f23a0edfc26addd90cd5de92d04796c39d8c70c62fb3bdf2a191b739ea7cbdbdcae + checksum: 10/43b0cb353306419e270a7a7e62fa39dc202b63bf01690fb722728e196d6ab73efbead9f639f14d893a6c9d32bc8c5ae806bf0a30c6731a4071f200732403ff08 + languageName: node + linkType: hard + +"git-config-path@npm:^2.0.0": + version: 2.0.0 + resolution: "git-config-path@npm:2.0.0" + checksum: 10/f67bee619b76a339d39dee6094c4db914512e3ca7e5ec0a05421b81a6ad0221d6fccfcc0b1c5127cf5af4ed3a49184279bde91b61c003f1cff58ac61e7139cfc + languageName: node + linkType: hard + +"git-up@npm:^8.0.0": + version: 8.0.0 + resolution: "git-up@npm:8.0.0" + dependencies: + is-ssh: "npm:^1.4.0" + parse-url: "npm:^9.2.0" + checksum: 10/c611cb02399c3ceca99861d6774942738fa8a115cf594e1f98fb9ab321e10e7529084139f64fb007dbc967df6946e1a9510bb6686106aff5e799b68a213727a1 + languageName: node + linkType: hard + +"git-url-parse@npm:^16.0.0": + version: 16.0.0 + resolution: "git-url-parse@npm:16.0.0" + dependencies: + git-up: "npm:^8.0.0" + checksum: 10/fa154d067ae53dff3020c1985237643ab95dd9c6c455150b482df4ba46afec98c258a2eee6001f33e30dd8e18e5d29606689ec41c71bde2b10d4637effcb7fa8 languageName: node linkType: hard @@ -16409,7 +18070,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^9.3.2": +"glob@npm:^9.2.0, glob@npm:^9.3.2": version: 9.3.5 resolution: "glob@npm:9.3.5" dependencies: @@ -16473,10 +18134,10 @@ __metadata: languageName: node linkType: hard -"globals@npm:15.13.0, globals@npm:^15.9.0": - version: 15.13.0 - resolution: "globals@npm:15.13.0" - checksum: 10/ba84d0612d516bcc1dabdd9ce66667956e1a87401fb53be6c379f8f6a04f8e6ce415b584801ae2689a90e788e89bb38adfafc854a8a50ae8e322bb4dd35a2105 +"globals@npm:15.14.0": + version: 15.14.0 + resolution: "globals@npm:15.14.0" + checksum: 10/e35ffbdbc024d6381efca906f67211a7bbf935db2af8c14a65155785479e28b3e475950e5933bb6b296eed54b6dcd924e25b26dbc8579b1bde9d5d25916e1c5f languageName: node linkType: hard @@ -16494,6 +18155,13 @@ __metadata: languageName: node linkType: hard +"globals@npm:^15.9.0": + version: 15.13.0 + resolution: "globals@npm:15.13.0" + checksum: 10/ba84d0612d516bcc1dabdd9ce66667956e1a87401fb53be6c379f8f6a04f8e6ce415b584801ae2689a90e788e89bb38adfafc854a8a50ae8e322bb4dd35a2105 + languageName: node + linkType: hard + "globalthis@npm:^1.0.4": version: 1.0.4 resolution: "globalthis@npm:1.0.4" @@ -16532,6 +18200,13 @@ __metadata: languageName: node linkType: hard +"graceful-fs@npm:4.2.10": + version: 4.2.10 + resolution: "graceful-fs@npm:4.2.10" + checksum: 10/0c83c52b62c68a944dcfb9d66b0f9f10f7d6e3d081e8067b9bfdc9e5f3a8896584d576036f82915773189eec1eba599397fc620e75c03c0610fb3d67c6713c1a + languageName: node + linkType: hard + "graceful-fs@npm:^4.1.10, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" @@ -16562,10 +18237,10 @@ __metadata: languageName: node linkType: hard -"groq@npm:3.67.1": - version: 3.67.1 - resolution: "groq@npm:3.67.1" - checksum: 10/1a208440d0ccd5bf845b27d5a1be8abb00d0fbe9a8e65d37fb8ea45e71718911100fa5203afefe83c284832f9d28911899ebb32223d3b14418becba902be3bb3 +"groq@npm:3.69.0": + version: 3.69.0 + resolution: "groq@npm:3.69.0" + checksum: 10/c60242adc2c63b590bd705a5cf8dc899e6e720e24f75bd7d3bb2b389f07a9610ed682bb9593e33aca3df4565d25fcea20093a1fddb3c306e2c8e81db0d469eee languageName: node linkType: hard @@ -16810,6 +18485,13 @@ __metadata: languageName: node linkType: hard +"hookified@npm:^1.6.0": + version: 1.6.0 + resolution: "hookified@npm:1.6.0" + checksum: 10/42a99086582b1a83961456e2d0f67d8a75a37f7105e47ae8a8f9b6bacdd007682b85663899065db07518269a3732c42b1dec1b65c947fbb933a81c5672f8c003 + languageName: node + linkType: hard + "hosted-git-info@npm:^2.1.4": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" @@ -16833,13 +18515,13 @@ __metadata: languageName: node linkType: hard -"html-dom-parser@npm:5.0.12": - version: 5.0.12 - resolution: "html-dom-parser@npm:5.0.12" +"html-dom-parser@npm:5.0.13": + version: 5.0.13 + resolution: "html-dom-parser@npm:5.0.13" dependencies: domhandler: "npm:5.0.3" - htmlparser2: "npm:9.1.0" - checksum: 10/02df27cde08800b32e635a952ab692db1b2cff464f93b32331610e09e08f689f6ae09dc24a4af19f969999074f031778fd9e0a4b209dea68ea9f242d663a5e1e + htmlparser2: "npm:10.0.0" + checksum: 10/886929ca33dbf98d980b6f9443a13ee0d95212857e81f8ec71296a5beb7f27883061c70090e516a3f5079f3e83b81839988938ffe2ad6655b0743c4358a2c9e6 languageName: node linkType: hard @@ -16901,12 +18583,12 @@ __metadata: languageName: node linkType: hard -"html-react-parser@npm:5.2.1": - version: 5.2.1 - resolution: "html-react-parser@npm:5.2.1" +"html-react-parser@npm:5.2.2": + version: 5.2.2 + resolution: "html-react-parser@npm:5.2.2" dependencies: domhandler: "npm:5.0.3" - html-dom-parser: "npm:5.0.12" + html-dom-parser: "npm:5.0.13" react-property: "npm:2.0.2" style-to-js: "npm:1.1.16" peerDependencies: @@ -16915,7 +18597,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10/f33cb4af321e32de432c720e10ecea253b762ecb694b926ddd34cd3cf9a8c41186e022552f4aff1c6ee739311f9f76add2d4396c68144fd282b891fc4b974ed1 + checksum: 10/ac5f0e6fbd7ba566e886687deb838853ff1e4134804b4953f97af34747450156d059242e9213c4bef7b2735c014134083f561980538ffd0b3d8f27027a2b1298 languageName: node linkType: hard @@ -16947,15 +18629,15 @@ __metadata: languageName: node linkType: hard -"htmlparser2@npm:9.1.0": - version: 9.1.0 - resolution: "htmlparser2@npm:9.1.0" +"htmlparser2@npm:10.0.0": + version: 10.0.0 + resolution: "htmlparser2@npm:10.0.0" dependencies: domelementtype: "npm:^2.3.0" domhandler: "npm:^5.0.3" - domutils: "npm:^3.1.0" - entities: "npm:^4.5.0" - checksum: 10/6352fa2a5495781fa9a02c9049908334cd068ff36d753870d30cd13b841e99c19646717567a2f9e9c44075bbe43d364e102f9d013a731ce962226d63746b794f + domutils: "npm:^3.2.1" + entities: "npm:^6.0.0" + checksum: 10/768870f0e020dca19dc45df206cb6ac466c5dba6566c8fca4ca880347eed409f9977028d08644ac516bca8628ac9c7ded5a3847dc3ee1c043f049abf9e817154 languageName: node linkType: hard @@ -17188,10 +18870,10 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^6.0.2": - version: 6.0.2 - resolution: "ignore@npm:6.0.2" - checksum: 10/af39e49996cd989763920e445eff897d0ae1e36b5f27b0e09e14a4fd2df89b362f92e720ecf06ef729056842366527db8561d310e904718810b92ffbcd23056d +"ignore@npm:^7.0.0": + version: 7.0.0 + resolution: "ignore@npm:7.0.0" + checksum: 10/4033102404784e8f8e53e737021996d25d8d41b0abf021645ad50699c531cc176e91addf703231f43583b00cfa8b87bec363ea8e2f21602d75909c5b957b3acd languageName: node linkType: hard @@ -17251,6 +18933,13 @@ __metadata: languageName: node linkType: hard +"import-lazy@npm:~4.0.0": + version: 4.0.0 + resolution: "import-lazy@npm:4.0.0" + checksum: 10/943309cc8eb01ada12700448c288b0384f77a1bc33c7e00fa4cb223c665f467a13ce9aaceb8d2e4cf586b07c1d2828040263dcc069873ce63cfc2ac6fd087971 + languageName: node + linkType: hard + "import-local@npm:^3.0.2": version: 3.2.0 resolution: "import-local@npm:3.2.0" @@ -17294,7 +18983,7 @@ __metadata: languageName: node linkType: hard -"ini@npm:^1.3.4, ini@npm:^1.3.5": +"ini@npm:^1.3.4, ini@npm:^1.3.5, ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" checksum: 10/314ae176e8d4deb3def56106da8002b462221c174ddb7ce0c49ee72c8cd1f9044f7b10cc555a7d8850982c3b9ca96fc212122749f5234bc2b6fb05fb942ed566 @@ -17319,15 +19008,15 @@ __metadata: languageName: node linkType: hard -"intl-messageformat@npm:10.7.10": - version: 10.7.10 - resolution: "intl-messageformat@npm:10.7.10" +"intl-messageformat@npm:10.7.11": + version: 10.7.11 + resolution: "intl-messageformat@npm:10.7.11" dependencies: - "@formatjs/ecma402-abstract": "npm:2.3.1" - "@formatjs/fast-memoize": "npm:2.2.5" - "@formatjs/icu-messageformat-parser": "npm:2.9.7" + "@formatjs/ecma402-abstract": "npm:2.3.2" + "@formatjs/fast-memoize": "npm:2.2.6" + "@formatjs/icu-messageformat-parser": "npm:2.9.8" tslib: "npm:2" - checksum: 10/194783c50b45bd73f3e40041652274222d44e7c0bf39269b42dd95eedf6021558f257333e3ce4ca59356d39fbf72b5adf8142fde47232978e39f8153b192d6d9 + checksum: 10/0f1ad856725984bc141fa41b43104393634dec6344375b3566786eabc141b26c4bed1e9df6464f056a7b02d59d998208b65419a878d72b2486b16b35174ffc20 languageName: node linkType: hard @@ -17413,6 +19102,17 @@ __metadata: languageName: node linkType: hard +"is-array-buffer@npm:^3.0.5": + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10/ef1095c55b963cd0dcf6f88a113e44a0aeca91e30d767c475e7d746d28d1195b10c5076b94491a7a0cd85020ca6a4923070021d74651d093dc909e9932cf689b + languageName: node + linkType: hard + "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" @@ -17655,6 +19355,13 @@ __metadata: languageName: node linkType: hard +"is-module@npm:^1.0.0": + version: 1.0.0 + resolution: "is-module@npm:1.0.0" + checksum: 10/8cd5390730c7976fb4e8546dd0b38865ee6f7bacfa08dfbb2cc07219606755f0b01709d9361e01f13009bbbd8099fa2927a8ed665118a6105d66e40f1b838c3f + languageName: node + linkType: hard + "is-nan@npm:^1.3.2": version: 1.3.2 resolution: "is-nan@npm:1.3.2" @@ -17740,6 +19447,15 @@ __metadata: languageName: node linkType: hard +"is-reference@npm:1.2.1": + version: 1.2.1 + resolution: "is-reference@npm:1.2.1" + dependencies: + "@types/estree": "npm:*" + checksum: 10/e7b48149f8abda2c10849ea51965904d6a714193d68942ad74e30522231045acf06cbfae5a4be2702fede5d232e61bf50b3183acdc056e6e3afe07fcf4f4b2bc + languageName: node + linkType: hard + "is-regex@npm:^1.1.4, is-regex@npm:^1.2.1": version: 1.2.1 resolution: "is-regex@npm:1.2.1" @@ -17775,6 +19491,24 @@ __metadata: languageName: node linkType: hard +"is-shared-array-buffer@npm:^1.0.4": + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10/0380d7c60cc692856871526ffcd38a8133818a2ee42d47bb8008248a0cd2121d8c8b5f66b6da3cac24bc5784553cacb6faaf678f66bc88c6615b42af2825230e + languageName: node + linkType: hard + +"is-ssh@npm:^1.4.0": + version: 1.4.0 + resolution: "is-ssh@npm:1.4.0" + dependencies: + protocols: "npm:^2.0.1" + checksum: 10/e2d17d74a19b4368cc06ce5c76d4f625952442da337098d670a9840e1db5334c646aa0a6ed3a01e9d396901e22c755174ce64e74c3139bb10e5df03d5a6fb3fa + languageName: node + linkType: hard + "is-stream@npm:^1.1.0": version: 1.1.0 resolution: "is-stream@npm:1.1.0" @@ -17842,6 +19576,15 @@ __metadata: languageName: node linkType: hard +"is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" + dependencies: + which-typed-array: "npm:^1.1.16" + checksum: 10/e8cf60b9ea85667097a6ad68c209c9722cfe8c8edf04d6218366469e51944c5cc25bae45ffb845c23f811d262e4314d3b0168748eb16711aa34d12724cdf0735 + languageName: node + linkType: hard + "is-typedarray@npm:^1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" @@ -17961,6 +19704,16 @@ __metadata: languageName: node linkType: hard +"isomorphic-dompurify@npm:^2.19.0": + version: 2.19.0 + resolution: "isomorphic-dompurify@npm:2.19.0" + dependencies: + dompurify: "npm:^3.2.3" + jsdom: "npm:^25.0.1" + checksum: 10/42fb8a4d5e88b51f0081993733d2babb9bf8793ef7ec0b1baf387fbaeab58f3b3f749d084222f13ed72018d6dbf4ffacc2e8335e63aaa204a01d4dd02ef59222 + languageName: node + linkType: hard + "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.2 resolution: "istanbul-lib-coverage@npm:3.2.2" @@ -18075,6 +19828,20 @@ __metadata: languageName: node linkType: hard +"iterator.prototype@npm:^1.1.4": + version: 1.1.5 + resolution: "iterator.prototype@npm:1.1.5" + dependencies: + define-data-property: "npm:^1.1.4" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.6" + get-proto: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" + set-function-name: "npm:^2.0.2" + checksum: 10/352bcf333f42189e65cc8cb2dcb94a5c47cf0a9110ce12aba788d405a980b5f5f3a06c79bf915377e1d480647169babd842ded0d898bed181bf6686e8e6823f6 + languageName: node + linkType: hard + "jackspeak@npm:^3.1.2": version: 3.4.3 resolution: "jackspeak@npm:3.4.3" @@ -18693,6 +20460,13 @@ __metadata: languageName: node linkType: hard +"jju@npm:~1.4.0": + version: 1.4.0 + resolution: "jju@npm:1.4.0" + checksum: 10/1067ff8ce02221faac5a842116ed0ec79a53312a111d0bf8342a80bd02c0a3fdf0b8449694a65947db0a3e8420e8b326dffb489c7dd5866efc380c0d1708a707 + languageName: node + linkType: hard + "joi@npm:^17.11.0": version: 17.13.3 resolution: "joi@npm:17.13.3" @@ -18787,7 +20561,7 @@ __metadata: languageName: node linkType: hard -"jsdom@npm:25.0.1": +"jsdom@npm:25.0.1, jsdom@npm:^25.0.1": version: 25.0.1 resolution: "jsdom@npm:25.0.1" dependencies: @@ -18980,6 +20754,13 @@ __metadata: languageName: node linkType: hard +"json-stream-stringify@npm:^2.0.2": + version: 2.0.4 + resolution: "json-stream-stringify@npm:2.0.4" + checksum: 10/d86cf41c50239ff27e6807121dff797b11c8ac06d5d26ac00036233254cd5dcb60d82f661384a7d15d7b56cd08d8d8c95a7f76b87a316da5757cb470cb85a316 + languageName: node + linkType: hard + "json5@npm:^1.0.2": version: 1.0.2 resolution: "json5@npm:1.0.2" @@ -19000,7 +20781,7 @@ __metadata: languageName: node linkType: hard -"jsonc-parser@npm:^3.2.0": +"jsonc-parser@npm:^3.2.0, jsonc-parser@npm:^3.3.1": version: 3.3.1 resolution: "jsonc-parser@npm:3.3.1" checksum: 10/9b0dc391f20b47378f843ef1e877e73ec652a5bdc3c5fa1f36af0f119a55091d147a86c1ee86a232296f55c929bba174538c2bf0312610e0817a22de131cc3f4 @@ -19053,6 +20834,15 @@ __metadata: languageName: node linkType: hard +"keyv@npm:^5.2.3": + version: 5.2.3 + resolution: "keyv@npm:5.2.3" + dependencies: + "@keyv/serialize": "npm:^1.0.2" + checksum: 10/47b4e9deb33e6a80e5ea79f3022ed3a14bc9fe553b7527ffff0a70b10c7a6c1a5d7e49b9bcfdbd8e8b9fb4632d68baa19d09e82628bcf853103e750e56d49a9e + languageName: node + linkType: hard + "kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" @@ -19193,11 +20983,11 @@ __metadata: languageName: node linkType: hard -"lint-staged@npm:15.2.11": - version: 15.2.11 - resolution: "lint-staged@npm:15.2.11" +"lint-staged@npm:15.3.0": + version: 15.3.0 + resolution: "lint-staged@npm:15.3.0" dependencies: - chalk: "npm:~5.3.0" + chalk: "npm:~5.4.1" commander: "npm:~12.1.0" debug: "npm:~4.4.0" execa: "npm:~8.0.1" @@ -19209,7 +20999,7 @@ __metadata: yaml: "npm:~2.6.1" bin: lint-staged: bin/lint-staged.js - checksum: 10/b3fa66401fee667c39b28ed8d0dc28213e6c23d5cb88ca599e030e1eb7fd4ed199f2e3c4b02ae65ded9f5a30e0168a4c3cf3a3cf12959f195864962dba37e917 + checksum: 10/b19ce450641f6cc76be8399658423f0dfa9f9a471aaa427c10bef6a1de2017f1c2547e293de908a57b9202ee20a19fd2305aec3e435cb1d4cfc1d03ace843e9f languageName: node linkType: hard @@ -19366,7 +21156,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:4.17.21, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21": +"lodash@npm:4.17.21, lodash@npm:^4.17.15, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:~4.17.15": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532 @@ -19426,7 +21216,7 @@ __metadata: languageName: node linkType: hard -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.3.1, loose-envify@npm:^1.4.0": +"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" dependencies: @@ -19522,7 +21312,7 @@ __metadata: languageName: node linkType: hard -"magic-string@npm:^0.30.0, magic-string@npm:^0.30.12, magic-string@npm:^0.30.5": +"magic-string@npm:^0.30.0, magic-string@npm:^0.30.12, magic-string@npm:^0.30.3, magic-string@npm:^0.30.5, magic-string@npm:~0.30.11": version: 0.30.17 resolution: "magic-string@npm:0.30.17" dependencies: @@ -19633,6 +21423,13 @@ __metadata: languageName: node linkType: hard +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10/11df2eda46d092a6035479632e1ec865b8134bdfc4bd9e571a656f4191525404f13a283a515938c3a8de934dbfd9c09674d9da9fa831e6eb7e22b50b197d2edd + languageName: node + linkType: hard + "mathml-tag-names@npm:^2.1.3": version: 2.1.3 resolution: "mathml-tag-names@npm:2.1.3" @@ -19927,6 +21724,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:~3.0.3": + version: 3.0.8 + resolution: "minimatch@npm:3.0.8" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10/6df5373cb1ea79020beb6887ff5576c58cfabcfd32c5a65c2cf58f326e4ee8eae84f129e5fa50b8a4347fa1d1e583f931285c9fb3040d984bdfb5109ef6607ec + languageName: node + linkType: hard + "minimist-options@npm:4.1.0": version: 4.1.0 resolution: "minimist-options@npm:4.1.0" @@ -20109,7 +21915,7 @@ __metadata: languageName: node linkType: hard -"moment@npm:^2.29.4, moment@npm:^2.30.1": +"moment@npm:^2.30.1": version: 2.30.1 resolution: "moment@npm:2.30.1" checksum: 10/ae42d876d4ec831ef66110bdc302c0657c664991e45cf2afffc4b0f6cd6d251dde11375c982a5c0564ccc0fa593fc564576ddceb8c8845e87c15f58aa6baca69 @@ -20145,6 +21951,15 @@ __metadata: languageName: node linkType: hard +"motion-dom@npm:^11.16.4": + version: 11.16.4 + resolution: "motion-dom@npm:11.16.4" + dependencies: + motion-utils: "npm:^11.16.0" + checksum: 10/f7ec325dd197741eb4035d9f14ee4aee6ddd59a3167f05bf6c04925d20b7f52194fff342f07578ad20a9a9a22d031cf0f57dae13be69e9b5e5effb10e93ea10e + languageName: node + linkType: hard + "motion-utils@npm:^11.14.3": version: 11.14.3 resolution: "motion-utils@npm:11.14.3" @@ -20152,6 +21967,13 @@ __metadata: languageName: node linkType: hard +"motion-utils@npm:^11.16.0": + version: 11.16.0 + resolution: "motion-utils@npm:11.16.0" + checksum: 10/b15bbba72e2a7ff4e83032e47aa50c1ec28ad3a9655681fd2e173fd49b0e864bac0bd3eea5c1d7a2dca09bbf789ff41c25c0d4cff3280b079e5a7f05ba6a6862 + languageName: node + linkType: hard + "mri@npm:^1.2.0": version: 1.2.0 resolution: "mri@npm:1.2.0" @@ -20184,9 +22006,9 @@ __metadata: languageName: node linkType: hard -"msw@npm:2.6.9, msw@npm:^2.0.8": - version: 2.6.9 - resolution: "msw@npm:2.6.9" +"msw@npm:2.7.0, msw@npm:^2.7.0": + version: 2.7.0 + resolution: "msw@npm:2.7.0" dependencies: "@bundled-es-modules/cookie": "npm:^2.0.1" "@bundled-es-modules/statuses": "npm:^1.0.1" @@ -20197,12 +22019,12 @@ __metadata: "@open-draft/until": "npm:^2.1.0" "@types/cookie": "npm:^0.6.0" "@types/statuses": "npm:^2.0.4" - chalk: "npm:^4.1.2" graphql: "npm:^16.8.1" headers-polyfill: "npm:^4.0.2" is-node-process: "npm:^1.2.0" outvariant: "npm:^1.4.3" path-to-regexp: "npm:^6.3.0" + picocolors: "npm:^1.1.1" strict-event-emitter: "npm:^0.5.1" type-fest: "npm:^4.26.1" yargs: "npm:^17.7.2" @@ -20213,13 +22035,13 @@ __metadata: optional: true bin: msw: cli/index.js - checksum: 10/20a74a5e49b780567aa3430c0de9f27830208f931d6109087a24566fcb3e68f058ff51b022891bfe6fe0f320afad22b4039593722b928aa9c4ab5b05c2746c4a + checksum: 10/165ccf37d90da0d5271fdb8e01f89f48f7a60fb810038ff73d18c0e5e5ddfdb1266002d19cde61b9ae689ef37c39499b10d9d07e0d16662a31630ce9adce1d77 languageName: node linkType: hard -"msw@npm:^2.7.0": - version: 2.7.0 - resolution: "msw@npm:2.7.0" +"msw@npm:^2.0.8": + version: 2.6.9 + resolution: "msw@npm:2.6.9" dependencies: "@bundled-es-modules/cookie": "npm:^2.0.1" "@bundled-es-modules/statuses": "npm:^1.0.1" @@ -20230,12 +22052,12 @@ __metadata: "@open-draft/until": "npm:^2.1.0" "@types/cookie": "npm:^0.6.0" "@types/statuses": "npm:^2.0.4" + chalk: "npm:^4.1.2" graphql: "npm:^16.8.1" headers-polyfill: "npm:^4.0.2" is-node-process: "npm:^1.2.0" outvariant: "npm:^1.4.3" path-to-regexp: "npm:^6.3.0" - picocolors: "npm:^1.1.1" strict-event-emitter: "npm:^0.5.1" type-fest: "npm:^4.26.1" yargs: "npm:^17.7.2" @@ -20246,7 +22068,7 @@ __metadata: optional: true bin: msw: cli/index.js - checksum: 10/165ccf37d90da0d5271fdb8e01f89f48f7a60fb810038ff73d18c0e5e5ddfdb1266002d19cde61b9ae689ef37c39499b10d9d07e0d16662a31630ce9adce1d77 + checksum: 10/20a74a5e49b780567aa3430c0de9f27830208f931d6109087a24566fcb3e68f058ff51b022891bfe6fe0f320afad22b4039593722b928aa9c4ab5b05c2746c4a languageName: node linkType: hard @@ -20388,19 +22210,19 @@ __metadata: languageName: node linkType: hard -"next@npm:15.1.0": - version: 15.1.0 - resolution: "next@npm:15.1.0" - dependencies: - "@next/env": "npm:15.1.0" - "@next/swc-darwin-arm64": "npm:15.1.0" - "@next/swc-darwin-x64": "npm:15.1.0" - "@next/swc-linux-arm64-gnu": "npm:15.1.0" - "@next/swc-linux-arm64-musl": "npm:15.1.0" - "@next/swc-linux-x64-gnu": "npm:15.1.0" - "@next/swc-linux-x64-musl": "npm:15.1.0" - "@next/swc-win32-arm64-msvc": "npm:15.1.0" - "@next/swc-win32-x64-msvc": "npm:15.1.0" +"next@npm:15.1.4": + version: 15.1.4 + resolution: "next@npm:15.1.4" + dependencies: + "@next/env": "npm:15.1.4" + "@next/swc-darwin-arm64": "npm:15.1.4" + "@next/swc-darwin-x64": "npm:15.1.4" + "@next/swc-linux-arm64-gnu": "npm:15.1.4" + "@next/swc-linux-arm64-musl": "npm:15.1.4" + "@next/swc-linux-x64-gnu": "npm:15.1.4" + "@next/swc-linux-x64-musl": "npm:15.1.4" + "@next/swc-win32-arm64-msvc": "npm:15.1.4" + "@next/swc-win32-x64-msvc": "npm:15.1.4" "@swc/counter": "npm:0.1.3" "@swc/helpers": "npm:0.5.15" busboy: "npm:1.6.0" @@ -20445,7 +22267,7 @@ __metadata: optional: true bin: next: dist/bin/next - checksum: 10/8d4ab4c6c8f5998f092f6e07504c6fc3be47ea6ee4737c250d44aa2ff59c8f5cdcf9c6ffe32b067532075311311e6caff4a86653adf0204d71f0e4d6a2a56c87 + checksum: 10/c486ba1b4cae0e11c6ad233d1ec72d0b045be9c9215aaff9f518f4f58a7c47354682f24bf7e7419a892371bc29dd077f8a71ae95e0163ee6d708922b6bcab277 languageName: node linkType: hard @@ -20798,6 +22620,20 @@ __metadata: languageName: node linkType: hard +"object.assign@npm:^4.1.7": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" + object-keys: "npm:^1.1.1" + checksum: 10/3fe28cdd779f2a728a9a66bd688679ba231a2b16646cd1e46b528fe7c947494387dda4bc189eff3417f3717ef4f0a8f2439347cf9a9aa3cef722fbfd9f615587 + languageName: node + linkType: hard + "object.entries@npm:^1.1.8": version: 1.1.8 resolution: "object.entries@npm:1.1.8" @@ -20843,6 +22679,18 @@ __metadata: languageName: node linkType: hard +"object.values@npm:^1.2.1": + version: 1.2.1 + resolution: "object.values@npm:1.2.1" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10/f5ec9eccdefeaaa834b089c525663436812a65ff13de7964a1c3a9110f32054f2d58aa476a645bb14f75a79f3fe1154fb3e7bfdae7ac1e80affe171b2ef74bce + languageName: node + linkType: hard + "objectorarray@npm:^1.0.5": version: 1.0.5 resolution: "objectorarray@npm:1.0.5" @@ -21028,7 +22876,7 @@ __metadata: languageName: node linkType: hard -"os-homedir@npm:^1.0.1": +"os-homedir@npm:^1.0.0, os-homedir@npm:^1.0.1": version: 1.0.2 resolution: "os-homedir@npm:1.0.2" checksum: 10/af609f5a7ab72de2f6ca9be6d6b91a599777afc122ac5cad47e126c1f67c176fe9b52516b9eeca1ff6ca0ab8587fe66208bc85e40a3940125f03cdb91408e9d2 @@ -21049,6 +22897,13 @@ __metadata: languageName: node linkType: hard +"outdent@npm:^0.8.0": + version: 0.8.0 + resolution: "outdent@npm:0.8.0" + checksum: 10/a556c5c308705ad4e3441be435f2b2cf014cb5f9753a24cbd080eadc473b988c77d0d529a6a9a57c3931fb4178e5a81d668cc4bc49892b668191a5d0ba3df76e + languageName: node + linkType: hard + "outvariant@npm:^1.2.1, outvariant@npm:^1.4.0, outvariant@npm:^1.4.3": version: 1.4.3 resolution: "outvariant@npm:1.4.3" @@ -21056,6 +22911,17 @@ __metadata: languageName: node linkType: hard +"own-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "own-keys@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.2.6" + object-keys: "npm:^1.1.1" + safe-push-apply: "npm:^1.0.0" + checksum: 10/ab4bb3b8636908554fc19bf899e225444195092864cb61503a0d048fdaf662b04be2605b636a4ffeaf6e8811f6fcfa8cbb210ec964c0eb1a41eb853e1d5d2f41 + languageName: node + linkType: hard + "p-filter@npm:^2.1.0": version: 2.1.0 resolution: "p-filter@npm:2.1.0" @@ -21277,6 +23143,16 @@ __metadata: languageName: node linkType: hard +"parse-git-config@npm:^3.0.0": + version: 3.0.0 + resolution: "parse-git-config@npm:3.0.0" + dependencies: + git-config-path: "npm:^2.0.0" + ini: "npm:^1.3.5" + checksum: 10/7e193380fc9dd501ede7dc44baf151ac70bddad57e7f6ad3082a726f557c86ca1d97f566e7421bedf2458bb6782a6349bbb9933a1a6430e49be77ba21fc7f70d + languageName: node + linkType: hard + "parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" @@ -21310,6 +23186,25 @@ __metadata: languageName: node linkType: hard +"parse-path@npm:^7.0.0": + version: 7.0.0 + resolution: "parse-path@npm:7.0.0" + dependencies: + protocols: "npm:^2.0.0" + checksum: 10/2e6eadae5aff97a8b6373c1c08440bfeed814f65452674a139dc606c7c410e8e48b7983fe451aedc59802a2814121b40415ca00675c1546ff75cb73ad0c1df5a + languageName: node + linkType: hard + +"parse-url@npm:^9.2.0": + version: 9.2.0 + resolution: "parse-url@npm:9.2.0" + dependencies: + "@types/parse-path": "npm:^7.0.0" + parse-path: "npm:^7.0.0" + checksum: 10/d2746f0dbcd34d39df966a0726c00ede272aa34d825513baca721ad95480786c664f91ab22cf4e79cdb130468056e41834f6c9cc912b9180539f73aa5bafa982 + languageName: node + linkType: hard + "parse5@npm:^7.0.0, parse5@npm:^7.1.1, parse5@npm:^7.1.2": version: 7.2.1 resolution: "parse5@npm:7.2.1" @@ -21568,9 +23463,9 @@ __metadata: languageName: node linkType: hard -"pino@npm:9.5.0": - version: 9.5.0 - resolution: "pino@npm:9.5.0" +"pino@npm:9.6.0": + version: 9.6.0 + resolution: "pino@npm:9.6.0" dependencies: atomic-sleep: "npm:^1.0.0" fast-redact: "npm:^3.1.1" @@ -21585,7 +23480,7 @@ __metadata: thread-stream: "npm:^3.0.0" bin: pino: bin.js - checksum: 10/e2dba79524be133e2a0800ad0424bbf2c4c94c46f028a81e514d40951666f3dcec76c582fd5ce6f6155df0f5a9d6d0257924fdf043fe285236d36c76509a59dd + checksum: 10/0a36125718dc2350bbaff243e4856108a80805dc1b305da1e246460cd22396d11a8b3a78b39b0b270cce4fb8ae6aa6e584f5387f6c2ee47348aae5db49d919e6 languageName: node linkType: hard @@ -21632,6 +23527,15 @@ __metadata: languageName: node linkType: hard +"pkg-up@npm:^3.1.0": + version: 3.1.0 + resolution: "pkg-up@npm:3.1.0" + dependencies: + find-up: "npm:^3.0.0" + checksum: 10/5bac346b7c7c903613c057ae3ab722f320716199d753f4a7d053d38f2b5955460f3e6ab73b4762c62fd3e947f58e04f1343e92089e7bb6091c90877406fcd8c8 + languageName: node + linkType: hard + "playwright-core@npm:1.49.1, playwright-core@npm:>=1.2.0": version: 1.49.1 resolution: "playwright-core@npm:1.49.1" @@ -21955,7 +23859,7 @@ __metadata: languageName: node linkType: hard -"prettier@npm:3.4.2, prettier@npm:^3.3.0": +"prettier@npm:3.4.2, prettier@npm:^3.3.0, prettier@npm:^3.4.2": version: 3.4.2 resolution: "prettier@npm:3.4.2" bin: @@ -21980,6 +23884,13 @@ __metadata: languageName: node linkType: hard +"pretty-bytes@npm:^5.6.0": + version: 5.6.0 + resolution: "pretty-bytes@npm:5.6.0" + checksum: 10/9c082500d1e93434b5b291bd651662936b8bd6204ec9fa17d563116a192d6d86b98f6d328526b4e8d783c07d5499e2614a807520249692da9ec81564b2f439cd + languageName: node + linkType: hard + "pretty-error@npm:^4.0.0": version: 4.0.0 resolution: "pretty-error@npm:4.0.0" @@ -22137,7 +24048,7 @@ __metadata: languageName: node linkType: hard -"prompts@npm:^2.0.1, prompts@npm:^2.4.1": +"prompts@npm:^2.0.1, prompts@npm:^2.4.1, prompts@npm:^2.4.2": version: 2.4.2 resolution: "prompts@npm:2.4.2" dependencies: @@ -22147,7 +24058,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:15.8.1, prop-types@npm:^15.5.4, prop-types@npm:^15.6.1, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": +"prop-types@npm:15.8.1, prop-types@npm:^15.6.1, prop-types@npm:^15.6.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -22167,6 +24078,13 @@ __metadata: languageName: node linkType: hard +"proto-list@npm:~1.2.1": + version: 1.2.4 + resolution: "proto-list@npm:1.2.4" + checksum: 10/9cc3b46d613fa0d637033b225db1bc98e914c3c05864f7adc9bee728192e353125ef2e49f71129a413f6333951756000b0e54f299d921f02d3e9e370cc994100 + languageName: node + linkType: hard + "protobufjs@npm:^7.3.0": version: 7.4.0 resolution: "protobufjs@npm:7.4.0" @@ -22187,6 +24105,13 @@ __metadata: languageName: node linkType: hard +"protocols@npm:^2.0.0, protocols@npm:^2.0.1": + version: 2.0.1 + resolution: "protocols@npm:2.0.1" + checksum: 10/0cd08a55b9cb7cc96fed7a528255320428a7c86fd5f3f35965845285436433b7836178893168f80584efdf86391cd7c0a837b6f6bc5ddac3029c76be61118ba5 + languageName: node + linkType: hard + "proxy-addr@npm:~2.0.7": version: 2.0.7 resolution: "proxy-addr@npm:2.0.7" @@ -22423,6 +24348,20 @@ __metadata: languageName: node linkType: hard +"rc@npm:^1.2.8": + version: 1.2.8 + resolution: "rc@npm:1.2.8" + dependencies: + deep-extend: "npm:^0.6.0" + ini: "npm:~1.3.0" + minimist: "npm:^1.2.0" + strip-json-comments: "npm:~2.0.1" + bin: + rc: ./cli.js + checksum: 10/5c4d72ae7eec44357171585938c85ce066da8ca79146b5635baf3d55d74584c92575fa4e2c9eac03efbed3b46a0b2e7c30634c012b4b4fa40d654353d3c163eb + languageName: node + linkType: hard + "react-base16-styling@npm:^0.6.0": version: 0.6.0 resolution: "react-base16-styling@npm:0.6.0" @@ -22446,12 +24385,12 @@ __metadata: languageName: node linkType: hard -"react-compiler-runtime@npm:19.0.0-beta-37ed2a7-20241206": - version: 19.0.0-beta-37ed2a7-20241206 - resolution: "react-compiler-runtime@npm:19.0.0-beta-37ed2a7-20241206" +"react-compiler-runtime@npm:19.0.0-beta-55955c9-20241229": + version: 19.0.0-beta-55955c9-20241229 + resolution: "react-compiler-runtime@npm:19.0.0-beta-55955c9-20241229" peerDependencies: - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10/d95b8f2f6897174911ebe77fd0247e85f06a5791c6e759cae0d961df217d6af5b822621e4dbab41acb0c69c006dbeec89cd874fe2af076bbade066f5ab4a741d + react: ^17.0.0 || ^18.0.0 || ^19.0.0 || ^0.0.0-experimental + checksum: 10/1dae2092f7039a7195de46b6d8382ee020d75b12e7429e92a372a15458ff418df17453c34bd4f15cd523065da87b65c896b5e391bb55acaed38cc0ab91637853 languageName: node linkType: hard @@ -22466,18 +24405,6 @@ __metadata: languageName: node linkType: hard -"react-copy-to-clipboard@npm:^5.0.4": - version: 5.1.0 - resolution: "react-copy-to-clipboard@npm:5.1.0" - dependencies: - copy-to-clipboard: "npm:^3.3.1" - prop-types: "npm:^15.8.1" - peerDependencies: - react: ^15.3.0 || 16 || 17 || 18 - checksum: 10/56a8b11a268a19d4e4ec409327f1c17d68c4f13a54330b9c0e3271acb44bb6886b72e04d77399c9945968851e8532dd192bbccffd1b2f8b010f4bb47e5743b3b - languageName: node - linkType: hard - "react-day-picker@npm:8.10.1": version: 8.10.1 resolution: "react-day-picker@npm:8.10.1" @@ -22565,7 +24492,7 @@ __metadata: languageName: node linkType: hard -"react-focus-lock@npm:^2.8.1": +"react-focus-lock@npm:^2.13.5": version: 2.13.5 resolution: "react-focus-lock@npm:2.13.5" dependencies: @@ -22585,12 +24512,12 @@ __metadata: languageName: node linkType: hard -"react-hook-form@npm:7.54.1": - version: 7.54.1 - resolution: "react-hook-form@npm:7.54.1" +"react-hook-form@npm:7.54.2": + version: 7.54.2 + resolution: "react-hook-form@npm:7.54.2" peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 - checksum: 10/64060da8960a50584002bd5549f59dcb4d9c9b223b21ced1096a539ac520a3d9b65a8eb08c62d7f00b751f421ac133e3f82f23e01292dd2775d93f85791fd2f3 + checksum: 10/b156d15b6246c76d0275e5722d9056014693e014d0e3dec06e44bf2672ee549aaba4366de5144d18c4cab29e631f3b2b84269d4fd5727ca17aad9b970fde6960 languageName: node linkType: hard @@ -22612,25 +24539,25 @@ __metadata: languageName: node linkType: hard -"react-intl@npm:7.0.4": - version: 7.0.4 - resolution: "react-intl@npm:7.0.4" +"react-intl@npm:7.1.0": + version: 7.1.0 + resolution: "react-intl@npm:7.1.0" dependencies: - "@formatjs/ecma402-abstract": "npm:2.3.1" - "@formatjs/icu-messageformat-parser": "npm:2.9.7" - "@formatjs/intl": "npm:3.0.4" + "@formatjs/ecma402-abstract": "npm:2.3.2" + "@formatjs/icu-messageformat-parser": "npm:2.9.8" + "@formatjs/intl": "npm:3.1.0" "@types/hoist-non-react-statics": "npm:3" - "@types/react": "npm:16 || 17 || 18 || 19" + "@types/react": "npm:16 || 17 || 18" hoist-non-react-statics: "npm:3" - intl-messageformat: "npm:10.7.10" + intl-messageformat: "npm:10.7.11" tslib: "npm:2" peerDependencies: - react: ^16.6.0 || 17 || 18 || 19 + react: ^16.6.0 || 17 || 18 typescript: 5 peerDependenciesMeta: typescript: optional: true - checksum: 10/d6c8efe86315777bf7a66d0e3bacc0339800c40baee8ea7edab549e71997d41fc1279bbd1c191e40351961659ab7e7d58f5d09de5b36c114ed5c314362339f66 + checksum: 10/eca46c8497540402a809a59dd77c1046a6bae45a91671b0692cfb29697d52c1eea87fd1ec08df15d2f1bd553d2fa8d334e2bda6b3d7fe50985fe71c9f7c9e9c4 languageName: node linkType: hard @@ -22769,21 +24696,21 @@ __metadata: languageName: node linkType: hard -"react-router-dom@npm:7.0.2": - version: 7.0.2 - resolution: "react-router-dom@npm:7.0.2" +"react-router-dom@npm:7.1.1": + version: 7.1.1 + resolution: "react-router-dom@npm:7.1.1" dependencies: - react-router: "npm:7.0.2" + react-router: "npm:7.1.1" peerDependencies: react: ">=18" react-dom: ">=18" - checksum: 10/7b7768c91bc19018278d05b7be2e959c4e47ffadfb81aeaa450efbd0dabc15bb3004e0c938da2a01eb4839c9f8decb5e42b85d81ee85584f47b5cbd4d958c112 + checksum: 10/d7b978959f89051cf6705cdc0907d92167e39f2835b20b78508cc69e46ebecdbb0b7b95c4d2f954b60c01cdfc70ffc842ee261c0b7b22507a51990e4cebc41ee languageName: node linkType: hard -"react-router@npm:7.0.2": - version: 7.0.2 - resolution: "react-router@npm:7.0.2" +"react-router@npm:7.1.1": + version: 7.1.1 + resolution: "react-router@npm:7.1.1" dependencies: "@types/cookie": "npm:^0.6.0" cookie: "npm:^1.0.1" @@ -22795,30 +24722,21 @@ __metadata: peerDependenciesMeta: react-dom: optional: true - checksum: 10/f8bf5f7810388d4da81444d5e816135306aadd0340a26d645eb171e2b4c4a6d7f5a810f1d27e25ae0f006b949f7cf66fcf399f2af79f48341752a6651b2b30cb + checksum: 10/f12e229d79bd6de561e697b64556959361365610450c12bfd89116fccca8428728d7c372a096eff570a917ef02473ef4f5145beb6a2881d6935f69fe25bebcfd languageName: node linkType: hard -"react-rx@npm:^4.1.8": - version: 4.1.8 - resolution: "react-rx@npm:4.1.8" +"react-rx@npm:^4.1.12": + version: 4.1.12 + resolution: "react-rx@npm:4.1.12" dependencies: observable-callback: "npm:^1.0.3" - react-compiler-runtime: "npm:19.0.0-beta-37ed2a7-20241206" + react-compiler-runtime: "npm:19.0.0-beta-55955c9-20241229" use-effect-event: "npm:^1.0.2" peerDependencies: react: ^18.3 || >=19.0.0-0 rxjs: ^7 - checksum: 10/abe8923515df9f1baac2415e24bf56e0198f7cd3c72e0e54f0f8f7fcfe2137e5f68e62c5a81f0987877e449dea0d71d3fd5abde194505caef806325670e76b05 - languageName: node - linkType: hard - -"react-style-proptype@npm:^3.2.2": - version: 3.2.2 - resolution: "react-style-proptype@npm:3.2.2" - dependencies: - prop-types: "npm:^15.5.4" - checksum: 10/c068f10a639f743b311b3a6dd8bdd1b87436ab8d30a10ff4f30840a89decdd2e2eea33a2cefb504274ff58b624680d27f29daefece0f7435cfc8efae070d4e8d + checksum: 10/4699c73c466f430834145af29bab19fac999afe9171ef042309cdd9666de6b67b0114dc2dfe6ad7276ee261ab934d24c162b97730bc1d8f4515c74ea518cbe1e languageName: node linkType: hard @@ -23022,7 +24940,7 @@ __metadata: languageName: node linkType: hard -"recast@npm:^0.23.5": +"recast@npm:0.23.9, recast@npm:^0.23.5": version: 0.23.9 resolution: "recast@npm:0.23.9" dependencies: @@ -23061,6 +24979,22 @@ __metadata: languageName: node linkType: hard +"reflect.getprototypeof@npm:^1.0.9": + version: 1.0.10 + resolution: "reflect.getprototypeof@npm:1.0.10" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.9" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.7" + get-proto: "npm:^1.0.1" + which-builtin-type: "npm:^1.2.1" + checksum: 10/80a4e2be716f4fe46a89a08ccad0863b47e8ce0f49616cab2d65dab0fbd53c6fdba0f52935fd41d37a2e4e22355c272004f920d63070de849f66eea7aeb4a081 + languageName: node + linkType: hard + "refractor@npm:^3.6.0": version: 3.6.0 resolution: "refractor@npm:3.6.0" @@ -23160,6 +25094,24 @@ __metadata: languageName: node linkType: hard +"registry-auth-token@npm:^5.0.2": + version: 5.0.3 + resolution: "registry-auth-token@npm:5.0.3" + dependencies: + "@pnpm/npm-conf": "npm:^2.1.0" + checksum: 10/5976f822d6a55267319b011dd4c64ef037ffee038c97529d09ea619835afe59cf89d545ec6b393098de4d7ba7a44664ce740bc1820215a2a90c7d66a1e676f9f + languageName: node + linkType: hard + +"registry-url@npm:^5.1.0": + version: 5.1.0 + resolution: "registry-url@npm:5.1.0" + dependencies: + rc: "npm:^1.2.8" + checksum: 10/bcea86c84a0dbb66467b53187fadebfea79017cddfb4a45cf27530d7275e49082fe9f44301976eb0164c438e395684bcf3dae4819b36ff9d1640d8cc60c73df9 + languageName: node + linkType: hard + "regjsgen@npm:^0.8.0": version: 0.8.0 resolution: "regjsgen@npm:0.8.0" @@ -23343,6 +25295,19 @@ __metadata: languageName: node linkType: hard +"resolve@npm:~1.22.1, resolve@npm:~1.22.2": + version: 1.22.10 + resolution: "resolve@npm:1.22.10" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10/0a398b44da5c05e6e421d70108822c327675febb880eebe905587628de401854c61d5df02866ff34fc4cb1173a51c9f0e84a94702738df3611a62e2acdc68181 + languageName: node + linkType: hard + "resolve@patch:resolve@npm%3A^1.1.7#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin": version: 1.22.9 resolution: "resolve@patch:resolve@npm%3A1.22.9#optional!builtin::version=1.22.9&hash=c3c19d" @@ -23369,6 +25334,19 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@npm%3A~1.22.1#optional!builtin, resolve@patch:resolve@npm%3A~1.22.2#optional!builtin": + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10/d4d878bfe3702d215ea23e75e0e9caf99468e3db76f5ca100d27ebdc527366fee3877e54bce7d47cc72ca8952fc2782a070d238bfa79a550eeb0082384c3b81a + languageName: node + linkType: hard + "restore-cursor@npm:^3.1.0": version: 3.1.0 resolution: "restore-cursor@npm:3.1.0" @@ -23433,6 +25411,17 @@ __metadata: languageName: node linkType: hard +"rimraf@npm:^4.4.1": + version: 4.4.1 + resolution: "rimraf@npm:4.4.1" + dependencies: + glob: "npm:^9.2.0" + bin: + rimraf: dist/cjs/src/bin.js + checksum: 10/218ef9122145ccce9d0a71124d36a3894537de46600b37fae7dba26ccff973251eaa98aa63c2c5855a05fa04bca7cbbd7a92d4b29f2875d2203e72530ecf6ede + languageName: node + linkType: hard + "rimraf@npm:^5.0.10, rimraf@npm:^5.0.5": version: 5.0.10 resolution: "rimraf@npm:5.0.10" @@ -23454,6 +25443,21 @@ __metadata: languageName: node linkType: hard +"rollup-plugin-esbuild@npm:^6.1.1": + version: 6.1.1 + resolution: "rollup-plugin-esbuild@npm:6.1.1" + dependencies: + "@rollup/pluginutils": "npm:^5.0.5" + debug: "npm:^4.3.4" + es-module-lexer: "npm:^1.3.1" + get-tsconfig: "npm:^4.7.2" + peerDependencies: + esbuild: ">=0.18.0" + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + checksum: 10/bba2d1dfb92a193823ac9dd1cdd44a8fd8cd9f25868e9a22ca077e1b7445feb4eaaf6df051148e367fc902d7d59c9f50efab49086c24c367972f05c86f3a656d + languageName: node + linkType: hard + "rollup@npm:^4.20.0, rollup@npm:^4.23.0": version: 4.28.1 resolution: "rollup@npm:4.28.1" @@ -23526,6 +25530,78 @@ __metadata: languageName: node linkType: hard +"rollup@npm:^4.30.1": + version: 4.30.1 + resolution: "rollup@npm:4.30.1" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.30.1" + "@rollup/rollup-android-arm64": "npm:4.30.1" + "@rollup/rollup-darwin-arm64": "npm:4.30.1" + "@rollup/rollup-darwin-x64": "npm:4.30.1" + "@rollup/rollup-freebsd-arm64": "npm:4.30.1" + "@rollup/rollup-freebsd-x64": "npm:4.30.1" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.30.1" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.30.1" + "@rollup/rollup-linux-arm64-gnu": "npm:4.30.1" + "@rollup/rollup-linux-arm64-musl": "npm:4.30.1" + "@rollup/rollup-linux-loongarch64-gnu": "npm:4.30.1" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.30.1" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.30.1" + "@rollup/rollup-linux-s390x-gnu": "npm:4.30.1" + "@rollup/rollup-linux-x64-gnu": "npm:4.30.1" + "@rollup/rollup-linux-x64-musl": "npm:4.30.1" + "@rollup/rollup-win32-arm64-msvc": "npm:4.30.1" + "@rollup/rollup-win32-ia32-msvc": "npm:4.30.1" + "@rollup/rollup-win32-x64-msvc": "npm:4.30.1" + "@types/estree": "npm:1.0.6" + fsevents: "npm:~2.3.2" + dependenciesMeta: + "@rollup/rollup-android-arm-eabi": + optional: true + "@rollup/rollup-android-arm64": + optional: true + "@rollup/rollup-darwin-arm64": + optional: true + "@rollup/rollup-darwin-x64": + optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true + "@rollup/rollup-linux-arm-gnueabihf": + optional: true + "@rollup/rollup-linux-arm-musleabihf": + optional: true + "@rollup/rollup-linux-arm64-gnu": + optional: true + "@rollup/rollup-linux-arm64-musl": + optional: true + "@rollup/rollup-linux-loongarch64-gnu": + optional: true + "@rollup/rollup-linux-powerpc64le-gnu": + optional: true + "@rollup/rollup-linux-riscv64-gnu": + optional: true + "@rollup/rollup-linux-s390x-gnu": + optional: true + "@rollup/rollup-linux-x64-gnu": + optional: true + "@rollup/rollup-linux-x64-musl": + optional: true + "@rollup/rollup-win32-arm64-msvc": + optional: true + "@rollup/rollup-win32-ia32-msvc": + optional: true + "@rollup/rollup-win32-x64-msvc": + optional: true + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: 10/f5d240a76a8c3cd7918f7dc97b7eaec5d97d27b3901e3843f74e18b4e9195c77abe8aa61575cd64ad7897f6a6dea6c68a7ad1a8073e3cf3139529e9fa7d06c2b + languageName: node + linkType: hard + "rrweb-cssom@npm:^0.6.0": version: 0.6.0 resolution: "rrweb-cssom@npm:0.6.0" @@ -23594,6 +25670,16 @@ __metadata: languageName: node linkType: hard +"safe-push-apply@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-push-apply@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + isarray: "npm:^2.0.5" + checksum: 10/2bd4e53b6694f7134b9cf93631480e7fafc8637165f0ee91d5a4af5e7f33d37de9562d1af5021178dd4217d0230cde8d6530fa28cfa1ebff9a431bf8fff124b4 + languageName: node + linkType: hard + "safe-regex-test@npm:^1.0.3, safe-regex-test@npm:^1.1.0": version: 1.1.0 resolution: "safe-regex-test@npm:1.1.0" @@ -23628,54 +25714,53 @@ __metadata: languageName: node linkType: hard -"sanity@npm:3.67.1": - version: 3.67.1 - resolution: "sanity@npm:3.67.1" +"sanity@npm:3.69.0": + version: 3.69.0 + resolution: "sanity@npm:3.69.0" dependencies: "@dnd-kit/core": "npm:^6.0.5" "@dnd-kit/modifiers": "npm:^6.0.0" "@dnd-kit/sortable": "npm:^7.0.1" "@dnd-kit/utilities": "npm:^3.2.0" "@juggle/resize-observer": "npm:^3.3.1" - "@portabletext/editor": "npm:^1.15.3" + "@portabletext/editor": "npm:^1.20.0" "@portabletext/react": "npm:^3.0.0" - "@rexxars/react-json-inspector": "npm:^8.0.1" + "@rexxars/react-json-inspector": "npm:^9.0.1" "@sanity/asset-utils": "npm:^2.0.6" "@sanity/bifur-client": "npm:^0.4.1" - "@sanity/block-tools": "npm:3.67.1" - "@sanity/cli": "npm:3.67.1" + "@sanity/block-tools": "npm:3.69.0" + "@sanity/cli": "npm:3.69.0" "@sanity/client": "npm:^6.24.1" "@sanity/color": "npm:^3.0.0" - "@sanity/diff": "npm:3.67.1" + "@sanity/diff": "npm:3.69.0" "@sanity/diff-match-patch": "npm:^3.1.1" "@sanity/eventsource": "npm:^5.0.0" - "@sanity/export": "npm:^3.41.1" - "@sanity/icons": "npm:^3.5.2" + "@sanity/export": "npm:^3.42.2" + "@sanity/icons": "npm:^3.5.7" "@sanity/image-url": "npm:^1.0.2" "@sanity/import": "npm:^3.37.9" - "@sanity/insert-menu": "npm:1.0.16" + "@sanity/insert-menu": "npm:1.0.18" "@sanity/logos": "npm:^2.1.4" - "@sanity/migrate": "npm:3.67.1" - "@sanity/mutator": "npm:3.67.1" - "@sanity/presentation": "npm:1.19.8" - "@sanity/schema": "npm:3.67.1" + "@sanity/migrate": "npm:3.69.0" + "@sanity/mutator": "npm:3.69.0" + "@sanity/presentation": "npm:1.20.1" + "@sanity/schema": "npm:3.69.0" "@sanity/telemetry": "npm:^0.7.7" - "@sanity/types": "npm:3.67.1" - "@sanity/ui": "npm:^2.10.7" - "@sanity/util": "npm:3.67.1" + "@sanity/types": "npm:3.69.0" + "@sanity/ui": "npm:^2.11.1" + "@sanity/util": "npm:3.69.0" "@sanity/uuid": "npm:^3.0.1" "@sentry/react": "npm:^8.33.0" "@tanstack/react-table": "npm:^8.16.0" - "@tanstack/react-virtual": "npm:3.0.0-beta.54" - "@types/react-copy-to-clipboard": "npm:^5.0.2" - "@types/react-is": "npm:^18.3.0" + "@tanstack/react-virtual": "npm:^3.11.2" + "@types/react-is": "npm:^19.0.0" "@types/shallow-equals": "npm:^1.0.0" "@types/speakingurl": "npm:^13.0.3" "@types/tar-stream": "npm:^3.1.3" "@types/use-sync-external-store": "npm:^0.0.6" "@vitejs/plugin-react": "npm:^4.3.4" archiver: "npm:^7.0.0" - arrify: "npm:^1.0.1" + arrify: "npm:^2.0.1" async-mutex: "npm:^0.4.1" chalk: "npm:^4.1.2" chokidar: "npm:^3.5.3" @@ -23691,7 +25776,7 @@ __metadata: execa: "npm:^2.0.0" exif-component: "npm:^1.0.1" form-data: "npm:^4.0.0" - framer-motion: "npm:11.0.8" + framer-motion: "npm:^11.15.0" get-it: "npm:^8.6.5" get-random-values-esm: "npm:1.0.2" groq-js: "npm:^1.14.2" @@ -23699,6 +25784,7 @@ __metadata: i18next: "npm:^23.2.7" import-fresh: "npm:^3.3.0" is-hotkey-esm: "npm:^1.0.0" + isomorphic-dompurify: "npm:^2.19.0" jsdom: "npm:^23.0.1" jsdom-global: "npm:^3.0.2" json-lexer: "npm:^1.2.0" @@ -23721,14 +25807,13 @@ __metadata: pretty-ms: "npm:^7.0.1" quick-lru: "npm:^5.1.1" raf: "npm:^3.4.1" - react-compiler-runtime: "npm:19.0.0-beta-37ed2a7-20241206" - react-copy-to-clipboard: "npm:^5.0.4" + react-compiler-runtime: "npm:19.0.0-beta-55955c9-20241229" react-fast-compare: "npm:^3.2.0" - react-focus-lock: "npm:^2.8.1" + react-focus-lock: "npm:^2.13.5" react-i18next: "npm:14.0.2" react-is: "npm:^18.2.0" react-refractor: "npm:^2.1.6" - react-rx: "npm:^4.1.8" + react-rx: "npm:^4.1.12" read-pkg-up: "npm:^7.0.1" refractor: "npm:^3.6.0" resolve-from: "npm:^5.0.0" @@ -23744,6 +25829,7 @@ __metadata: tar-fs: "npm:^2.1.1" tar-stream: "npm:^3.1.7" use-device-pixel-ratio: "npm:^1.1.0" + use-effect-event: "npm:^1.0.2" use-hot-module-reload: "npm:^2.0.0" use-sync-external-store: "npm:^1.2.0" vite: "npm:^5.4.11" @@ -23754,7 +25840,7 @@ __metadata: styled-components: ^6.1 bin: sanity: ./bin/sanity - checksum: 10/d147350ed073ae2f32d47ed577c1bba93b33a082bc4662a6af992641f7e6fbfe49399f8dfee2d5247ca5d3e61ae304ae4c435fcd49e9e16a2a5adbd07c98fa5d + checksum: 10/8d15d90daec86e5a25653e9f467f949bf10f565aa97ca89597b3252d310a016145a24ee7494ac24490d70c9169c23e3044e586a44e3c9408313bb4f58599b038 languageName: node linkType: hard @@ -23808,9 +25894,9 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.83.0": - version: 1.83.0 - resolution: "sass@npm:1.83.0" +"sass@npm:1.83.1": + version: 1.83.1 + resolution: "sass@npm:1.83.1" dependencies: "@parcel/watcher": "npm:^2.4.1" chokidar: "npm:^4.0.0" @@ -23821,7 +25907,7 @@ __metadata: optional: true bin: sass: sass.js - checksum: 10/cae7c489ffeb1324ac7e766dda60206a6d7a318d0689b490290a32a6414ef1fd0f376f92d45fb1610e507baa6f6594f1a61d4d706df2f105122ff9a83d2a28e1 + checksum: 10/ee4ea5573faddeed375479eda6ac87a6f34dc6fc5391c6cc2743993f24827f4709f950fba6ef1ad0694215a1df40d43f4ed9006327daa3743c8e3ad1979d3c32 languageName: node linkType: hard @@ -23919,7 +26005,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2, semver@npm:^7.6.3": +"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.2, semver@npm:^7.6.3": version: 7.6.3 resolution: "semver@npm:7.6.3" bin: @@ -23928,6 +26014,17 @@ __metadata: languageName: node linkType: hard +"semver@npm:~7.5.4": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: "npm:^6.0.0" + bin: + semver: bin/semver.js + checksum: 10/985dec0d372370229a262c737063860fabd4a1c730662c1ea3200a2f649117761a42184c96df62a0e885e76fbd5dace41087d6c1ac0351b13c0df5d6bcb1b5ac + languageName: node + linkType: hard + "send@npm:0.19.0": version: 0.19.0 resolution: "send@npm:0.19.0" @@ -23949,7 +26046,7 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:^6.0.2": +"serialize-javascript@npm:^6.0.1, serialize-javascript@npm:^6.0.2": version: 6.0.2 resolution: "serialize-javascript@npm:6.0.2" dependencies: @@ -24010,6 +26107,17 @@ __metadata: languageName: node linkType: hard +"set-proto@npm:^1.0.0": + version: 1.0.0 + resolution: "set-proto@npm:1.0.0" + dependencies: + dunder-proto: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10/b87f8187bca595ddc3c0721ece4635015fd9d7cb294e6dd2e394ce5186a71bbfa4dc8a35010958c65e43ad83cde09642660e61a952883c24fd6b45ead15f045c + languageName: node + linkType: hard + "setimmediate@npm:^1.0.4, setimmediate@npm:^1.0.5": version: 1.0.5 resolution: "setimmediate@npm:1.0.5" @@ -24227,13 +26335,6 @@ __metadata: languageName: node linkType: hard -"silver-fleece@npm:1.1.0": - version: 1.1.0 - resolution: "silver-fleece@npm:1.1.0" - checksum: 10/77cd14c909e910def33429950a54406b5811ad3230e3701f435a6b171ad10a2c1faf9e1b7d48a31a276bdc7ab28821eec010dcdcac2c9c82913d86cd3f829273 - languageName: node - linkType: hard - "simple-swizzle@npm:^0.2.2": version: 0.2.2 resolution: "simple-swizzle@npm:0.2.2" @@ -24357,6 +26458,13 @@ __metadata: languageName: node linkType: hard +"smob@npm:^1.0.0": + version: 1.5.0 + resolution: "smob@npm:1.5.0" + checksum: 10/a1ea453bcea89989062626ea30a1fcb42c62e96255619c8641ffa1d7ab42baf415975c67c718127036901b9e487d8bf4c46219e50cec54295412c1227700b8fe + languageName: node + linkType: hard + "socks-proxy-agent@npm:^8.0.3": version: 8.0.5 resolution: "socks-proxy-agent@npm:8.0.5" @@ -24646,7 +26754,7 @@ __metadata: languageName: node linkType: hard -"storybook@npm:8.4.7, storybook@npm:^8.0.8": +"storybook@npm:8.4.7, storybook@npm:^8.0.8, storybook@npm:^8.4.7": version: 8.4.7 resolution: "storybook@npm:8.4.7" dependencies: @@ -24732,7 +26840,7 @@ __metadata: languageName: node linkType: hard -"string-argv@npm:~0.3.2": +"string-argv@npm:~0.3.1, string-argv@npm:~0.3.2": version: 0.3.2 resolution: "string-argv@npm:0.3.2" checksum: 10/f9d3addf887026b4b5f997a271149e93bf71efc8692e7dc0816e8807f960b18bcb9787b45beedf0f97ff459575ee389af3f189d8b649834cac602f2e857e75af @@ -24823,6 +26931,27 @@ __metadata: languageName: node linkType: hard +"string.prototype.matchall@npm:^4.0.12": + version: 4.0.12 + resolution: "string.prototype.matchall@npm:4.0.12" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.6" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.6" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + internal-slot: "npm:^1.1.0" + regexp.prototype.flags: "npm:^1.5.3" + set-function-name: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10/e4ab34b9e7639211e6c5e9759adb063028c5c5c4fc32ad967838b2bd1e5ce83a66ae8ec755d24a79302849f090b59194571b2c33471e86e7821b21c0f56df316 + languageName: node + linkType: hard + "string.prototype.repeat@npm:^1.0.0": version: 1.0.0 resolution: "string.prototype.repeat@npm:1.0.0" @@ -24969,13 +27098,20 @@ __metadata: languageName: node linkType: hard -"strip-json-comments@npm:^3.1.1": +"strip-json-comments@npm:^3.1.1, strip-json-comments@npm:~3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" checksum: 10/492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443 languageName: node linkType: hard +"strip-json-comments@npm:~2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: 10/1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 + languageName: node + linkType: hard + "strip-outer@npm:^1.0.1": version: 1.0.1 resolution: "strip-outer@npm:1.0.1" @@ -25028,9 +27164,9 @@ __metadata: languageName: node linkType: hard -"styled-components@npm:6.1.13": - version: 6.1.13 - resolution: "styled-components@npm:6.1.13" +"styled-components@npm:6.1.14": + version: 6.1.14 + resolution: "styled-components@npm:6.1.14" dependencies: "@emotion/is-prop-valid": "npm:1.2.2" "@emotion/unitless": "npm:0.8.1" @@ -25044,7 +27180,7 @@ __metadata: peerDependencies: react: ">= 16.8.0" react-dom: ">= 16.8.0" - checksum: 10/8be7bcb156945e876f560b1bef4f2e5a6a214e53fa6e7f98cd7294c83f3cfb2d712c4561d175abcd6d331a65ef5b9b2004c916aa035ddec9633f0661d9c8205c + checksum: 10/de26960b8e2b8d9430e8a02a22a7fa1ae764d914064525008257fb5d469cbddb4ef9b8b5b5e4baaabd236bd77c84fdad9a8d5f0d2fd05ff39ff55d80a71ff9de languageName: node linkType: hard @@ -25064,9 +27200,9 @@ __metadata: languageName: node linkType: hard -"stylelint@npm:16.12.0": - version: 16.12.0 - resolution: "stylelint@npm:16.12.0" +"stylelint@npm:16.13.0": + version: 16.13.0 + resolution: "stylelint@npm:16.13.0" dependencies: "@csstools/css-parser-algorithms": "npm:^3.0.4" "@csstools/css-tokenizer": "npm:^3.0.3" @@ -25077,16 +27213,16 @@ __metadata: colord: "npm:^2.9.3" cosmiconfig: "npm:^9.0.0" css-functions-list: "npm:^3.2.3" - css-tree: "npm:^3.0.1" + css-tree: "npm:^3.1.0" debug: "npm:^4.3.7" - fast-glob: "npm:^3.3.2" + fast-glob: "npm:^3.3.3" fastest-levenshtein: "npm:^1.0.16" - file-entry-cache: "npm:^9.1.0" + file-entry-cache: "npm:^10.0.5" global-modules: "npm:^2.0.0" globby: "npm:^11.1.0" globjoin: "npm:^0.1.4" html-tags: "npm:^3.3.1" - ignore: "npm:^6.0.2" + ignore: "npm:^7.0.0" imurmurhash: "npm:^0.1.4" is-plain-object: "npm:^5.0.0" known-css-properties: "npm:^0.35.0" @@ -25108,7 +27244,7 @@ __metadata: write-file-atomic: "npm:^5.0.1" bin: stylelint: bin/stylelint.mjs - checksum: 10/8ab174441f3909a79b84efe62b99061db42ef232262abf0af50ab2458822c39781886171912362eb018a293b70c33bd20b8ff7194ef64af4aee4541787aee2e9 + checksum: 10/4d814457e5f94d64f552aa9f38f6a7ca51ad0fd68fb37aea294d7452b5d517000de72744fa2661ba5c1d868f661f1d8a8a0341c8c6455a42740d3a2cc71d96af languageName: node linkType: hard @@ -25155,7 +27291,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^8.0.0": +"supports-color@npm:^8.0.0, supports-color@npm:~8.1.1": version: 8.1.1 resolution: "supports-color@npm:8.1.1" dependencies: @@ -25197,7 +27333,19 @@ __metadata: languageName: node linkType: hard -"swr@npm:2.2.5, swr@npm:^2.2.5": +"swr@npm:2.3.0": + version: 2.3.0 + resolution: "swr@npm:2.3.0" + dependencies: + dequal: "npm:^2.0.3" + use-sync-external-store: "npm:^1.4.0" + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10/9f09a68a0dcd354915c7098b000197190aa5faa39c6caec7b91c3b9b682de79173abd5b733cd07cc3e79ee8a1eb294f7d2162716c515d1e4d7c1283d4342fda8 + languageName: node + linkType: hard + +"swr@npm:^2.2.5": version: 2.2.5 resolution: "swr@npm:2.2.5" dependencies: @@ -25253,9 +27401,9 @@ __metadata: languageName: node linkType: hard -"tailwindcss@npm:3.4.16": - version: 3.4.16 - resolution: "tailwindcss@npm:3.4.16" +"tailwindcss@npm:3.4.17": + version: 3.4.17 + resolution: "tailwindcss@npm:3.4.17" dependencies: "@alloc/quick-lru": "npm:^5.2.0" arg: "npm:^5.0.2" @@ -25282,7 +27430,7 @@ __metadata: bin: tailwind: lib/cli.js tailwindcss: lib/cli.js - checksum: 10/d84b3d9bd8f3d53021b6754e3d7efa704cf32f72714dea2036d955fe46ea4154180d2c47593881a9c524229f9efc13fa924fa6347fc8969427036329ee8a9338 + checksum: 10/b0e00533ae3800223b5b71af9cb1dd9bfea5ef5ffa01300f1ced99de9511487aa41e03106173e4168c56c8f6600ee21c98c1d75a5def23cddf9b39b4ad71210d languageName: node linkType: hard @@ -25405,7 +27553,7 @@ __metadata: languageName: node linkType: hard -"terser@npm:^5.10.0, terser@npm:^5.31.1": +"terser@npm:^5.10.0, terser@npm:^5.17.4, terser@npm:^5.31.1": version: 5.37.0 resolution: "terser@npm:5.37.0" dependencies: @@ -25625,13 +27773,6 @@ __metadata: languageName: node linkType: hard -"toggle-selection@npm:^1.0.6": - version: 1.0.6 - resolution: "toggle-selection@npm:1.0.6" - checksum: 10/9a0ed0ecbaac72b4944888dacd79fe0a55eeea76120a4c7e46b3bb3d85b24f086e90560bb22f5a965654a25ab43d79ec47dfdb3f1850ba740b14c5a50abc7040 - languageName: node - linkType: hard - "toidentifier@npm:1.0.1": version: 1.0.1 resolution: "toidentifier@npm:1.0.1" @@ -25694,6 +27835,13 @@ __metadata: languageName: node linkType: hard +"treeify@npm:^1.1.0": + version: 1.1.0 + resolution: "treeify@npm:1.1.0" + checksum: 10/5241976a751168fb9894a12d031299f1f6337b7f2cbd3eff22ee86e6777620352a69a1cab0d4709251317ff307eeda0dc45918850974fc44f4c7fc50e623b990 + languageName: node + linkType: hard + "trim-newlines@npm:^3.0.0": version: 3.0.1 resolution: "trim-newlines@npm:3.0.1" @@ -25726,6 +27874,15 @@ __metadata: languageName: node linkType: hard +"ts-api-utils@npm:^2.0.0": + version: 2.0.0 + resolution: "ts-api-utils@npm:2.0.0" + peerDependencies: + typescript: ">=4.8.4" + checksum: 10/485bdf8bbba98d58712243d958f4fd44742bbe49e559cd77882fb426d866eec6dd05c67ef91935dc4f8a3c776f235859735e1f05be399e4dc9e7ffd580120974 + languageName: node + linkType: hard + "ts-dedent@npm:^2.0.0, ts-dedent@npm:^2.2.0": version: 2.2.0 resolution: "ts-dedent@npm:2.2.0" @@ -25815,6 +27972,13 @@ __metadata: languageName: node linkType: hard +"tunnel@npm:^0.0.6": + version: 0.0.6 + resolution: "tunnel@npm:0.0.6" + checksum: 10/cf1ffed5e67159b901a924dbf94c989f20b2b3b65649cfbbe4b6abb35955ce2cf7433b23498bdb2c5530ab185b82190fce531597b3b4a649f06a907fc8702405 + languageName: node + linkType: hard + "turbo-darwin-64@npm:2.3.3": version: 2.3.3 resolution: "turbo-darwin-64@npm:2.3.3" @@ -25979,6 +28143,17 @@ __metadata: languageName: node linkType: hard +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.14" + checksum: 10/3fb91f0735fb413b2bbaaca9fabe7b8fc14a3fa5a5a7546bab8a57e755be0e3788d893195ad9c2b842620592de0e68d4c077d4c2c41f04ec25b8b5bb82fa9a80 + languageName: node + linkType: hard + "typed-array-byte-length@npm:^1.0.1": version: 1.0.1 resolution: "typed-array-byte-length@npm:1.0.1" @@ -25992,6 +28167,19 @@ __metadata: languageName: node linkType: hard +"typed-array-byte-length@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-byte-length@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.8" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.14" + checksum: 10/269dad101dda73e3110117a9b84db86f0b5c07dad3a9418116fd38d580cab7fc628a4fc167e29b6d7c39da2f53374b78e7cb578b3c5ec7a556689d985d193519 + languageName: node + linkType: hard + "typed-array-byte-offset@npm:^1.0.3": version: 1.0.3 resolution: "typed-array-byte-offset@npm:1.0.3" @@ -26007,6 +28195,21 @@ __metadata: languageName: node linkType: hard +"typed-array-byte-offset@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-byte-offset@npm:1.0.4" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.15" + reflect.getprototypeof: "npm:^1.0.9" + checksum: 10/c2869aa584cdae24ecfd282f20a0f556b13a49a9d5bca1713370bb3c89dff0ccbc5ceb45cb5b784c98f4579e5e3e2a07e438c3a5b8294583e2bd4abbd5104fb5 + languageName: node + linkType: hard + "typed-array-length@npm:^1.0.7": version: 1.0.7 resolution: "typed-array-length@npm:1.0.7" @@ -26046,7 +28249,21 @@ __metadata: languageName: node linkType: hard -"typescript-eslint@npm:8.18.0, typescript-eslint@npm:^8.17.0": +"typescript-eslint@npm:8.19.1": + version: 8.19.1 + resolution: "typescript-eslint@npm:8.19.1" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.19.1" + "@typescript-eslint/parser": "npm:8.19.1" + "@typescript-eslint/utils": "npm:8.19.1" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.8.0" + checksum: 10/3e7861bcd47c0bea962662d5f18a9f9214270057c082f2e3839ee2f681a42018395755216005d2408447de5b96892b6a18cc794daf8663bba1753def48e6756c + languageName: node + linkType: hard + +"typescript-eslint@npm:^8.17.0": version: 8.18.0 resolution: "typescript-eslint@npm:8.18.0" dependencies: @@ -26060,7 +28277,27 @@ __metadata: languageName: node linkType: hard -"typescript@npm:5.7.2, typescript@npm:^5.6.3": +"typescript@npm:5.4.2": + version: 5.4.2 + resolution: "typescript@npm:5.4.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/f8cfdc630ab1672f004e9561eb2916935b2d267792d07ce93e97fc601c7a65191af32033d5e9c0169b7dc37da7db9bf320f7432bc84527cb7697effaa4e4559d + languageName: node + linkType: hard + +"typescript@npm:5.7.3": + version: 5.7.3 + resolution: "typescript@npm:5.7.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/6a7e556de91db3d34dc51cd2600e8e91f4c312acd8e52792f243c7818dfadb27bae677175fad6947f9c81efb6c57eb6b2d0c736f196a6ee2f1f7d57b74fc92fa + languageName: node + linkType: hard + +"typescript@npm:^5.6.3": version: 5.7.2 resolution: "typescript@npm:5.7.2" bin: @@ -26070,7 +28307,27 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A5.7.2#optional!builtin, typescript@patch:typescript@npm%3A^5.6.3#optional!builtin": +"typescript@patch:typescript@npm%3A5.4.2#optional!builtin": + version: 5.4.2 + resolution: "typescript@patch:typescript@npm%3A5.4.2#optional!builtin::version=5.4.2&hash=5adc0c" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/f5f9a4133c2670761f0166eae5b3bafbc4a3fc24f0f42a93c9c893d9e9d6e66ea066969c5e7483fa66b4ae0e99125592553f3b92fd3599484de8be13b0615176 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A5.7.3#optional!builtin": + version: 5.7.3 + resolution: "typescript@patch:typescript@npm%3A5.7.3#optional!builtin::version=5.7.3&hash=5786d5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10/dc58d777eb4c01973f7fbf1fd808aad49a0efdf545528dab9b07d94fdcb65b8751742804c3057e9619a4627f2d9cc85547fdd49d9f4326992ad0181b49e61d81 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A^5.6.3#optional!builtin": version: 5.7.2 resolution: "typescript@patch:typescript@npm%3A5.7.2#optional!builtin::version=5.7.2&hash=5786d5" bin: @@ -26107,7 +28364,7 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.0.2": +"unbox-primitive@npm:^1.0.2, unbox-primitive@npm:^1.1.0": version: 1.1.0 resolution: "unbox-primitive@npm:1.1.0" dependencies: @@ -26143,6 +28400,15 @@ __metadata: languageName: node linkType: hard +"undici@npm:^5.25.4": + version: 5.28.4 + resolution: "undici@npm:5.28.4" + dependencies: + "@fastify/busboy": "npm:^2.0.0" + checksum: 10/a666a9f5ac4270c659fafc33d78b6b5039a0adbae3e28f934774c85dcc66ea91da907896f12b414bd6f578508b44d5dc206fa636afa0e49a4e1c9e99831ff065 + languageName: node + linkType: hard + "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.1 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.1" @@ -26227,6 +28493,13 @@ __metadata: languageName: node linkType: hard +"universal-user-agent@npm:^6.0.0": + version: 6.0.1 + resolution: "universal-user-agent@npm:6.0.1" + checksum: 10/fdc8e1ae48a05decfc7ded09b62071f571c7fe0bd793d700704c80cea316101d4eac15cc27ed2bb64f4ce166d2684777c3198b9ab16034f547abea0d3aa1c93c + languageName: node + linkType: hard + "universalify@npm:^0.1.0": version: 0.1.2 resolution: "universalify@npm:0.1.2" @@ -26298,7 +28571,7 @@ __metadata: languageName: node linkType: hard -"uri-js@npm:^4.2.2": +"uri-js@npm:^4.2.2, uri-js@npm:^4.4.1": version: 4.4.1 resolution: "uri-js@npm:4.4.1" dependencies: @@ -26435,7 +28708,7 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:^1.2.0": +"use-sync-external-store@npm:^1.2.0, use-sync-external-store@npm:^1.4.0": version: 1.4.0 resolution: "use-sync-external-store@npm:1.4.0" peerDependencies: @@ -26444,6 +28717,15 @@ __metadata: languageName: node linkType: hard +"user-home@npm:^2.0.0": + version: 2.0.0 + resolution: "user-home@npm:2.0.0" + dependencies: + os-homedir: "npm:^1.0.0" + checksum: 10/a3329faa959fcd9e3e01a03347ca974f7f6b8896e6a634f29c61d8d5b61557d853c6fc5a6dff1a28e2da85b400d0e4490368a28de452ba8c41a2bf3a92cb110a + languageName: node + linkType: hard + "util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -26478,21 +28760,12 @@ __metadata: languageName: node linkType: hard -"uuid@npm:11.0.3": - version: 11.0.3 - resolution: "uuid@npm:11.0.3" +"uuid@npm:11.0.5, uuid@npm:^11.0.4": + version: 11.0.5 + resolution: "uuid@npm:11.0.5" bin: uuid: dist/esm/bin/uuid - checksum: 10/251385563195709eb0697c74a834764eef28e1656d61174e35edbd129288acb4d95a43f4ce8a77b8c2fc128e2b55924296a0945f964b05b9173469d045625ff2 - languageName: node - linkType: hard - -"uuid@npm:^10.0.0": - version: 10.0.0 - resolution: "uuid@npm:10.0.0" - bin: - uuid: dist/bin/uuid - checksum: 10/35aa60614811a201ff90f8ca5e9ecb7076a75c3821e17f0f5ff72d44e36c2d35fcbc2ceee9c4ac7317f4cc41895da30e74f3885e30313bee48fda6338f250538 + checksum: 10/0594ecdff3051e15d4a2c614b4c72e73af373bde0a5d156512353c01156975295d024ae8d7151846d7bd4d22ccd251b16ed51b4318fa71505fb20ad984102dc1 languageName: node linkType: hard @@ -26634,11 +28907,11 @@ __metadata: languageName: node linkType: hard -"vite@npm:6.0.3": - version: 6.0.3 - resolution: "vite@npm:6.0.3" +"vite@npm:6.0.7": + version: 6.0.7 + resolution: "vite@npm:6.0.7" dependencies: - esbuild: "npm:^0.24.0" + esbuild: "npm:^0.24.2" fsevents: "npm:~2.3.3" postcss: "npm:^8.4.49" rollup: "npm:^4.23.0" @@ -26682,7 +28955,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10/eca0949b8cbc887e78977515d8fc22eaa2d03425d60a0a422f2db1da9d26bd1b431b2815a273c798e8e3fe176a99e105c3d87b0ba615ca19b8bf19e0334d807a + checksum: 10/bf76b3647983cb3d76c0db90d1f72cd4f6e80864a112145405ac0046cedfb14814cc4d9c1acbd9c53da8749c3a2fa80570971f7c44c0524b71974981065e9388 languageName: node linkType: hard @@ -27130,7 +29403,7 @@ __metadata: languageName: node linkType: hard -"which-builtin-type@npm:^1.2.0": +"which-builtin-type@npm:^1.2.0, which-builtin-type@npm:^1.2.1": version: 1.2.1 resolution: "which-builtin-type@npm:1.2.1" dependencies: @@ -27183,6 +29456,20 @@ __metadata: languageName: node linkType: hard +"which-typed-array@npm:^1.1.18": + version: 1.1.18 + resolution: "which-typed-array@npm:1.1.18" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + checksum: 10/11eed801b2bd08cdbaecb17aff381e0fb03526532f61acc06e6c7b9370e08062c33763a51f27825f13fdf34aabd0df6104007f4e8f96e6eaef7db0ce17a26d6e + languageName: node + linkType: hard + "which@npm:^1.2.12, which@npm:^1.3.1": version: 1.3.1 resolution: "which@npm:1.3.1" @@ -27412,10 +29699,10 @@ __metadata: languageName: node linkType: hard -"xstate@npm:^5.19.0": - version: 5.19.0 - resolution: "xstate@npm:5.19.0" - checksum: 10/8139ed434f2c3fe82d96ce2f30096290dd0aa19ecab647f8f5b03327968e61423358be5aa023868697a77b5ac669c2dd60a866310fe2fafff3d8002b9c5ecabc +"xstate@npm:^5.19.1": + version: 5.19.1 + resolution: "xstate@npm:5.19.1" + checksum: 10/2e4e9c569d010248abd5184cb2b4e9a02d772f496d37ba640f36ba7c7a3f1505b341f312ae96ef4a51923cd77de73cf147007f8c5b18f2be7064034f55a59297 languageName: node linkType: hard @@ -27592,6 +29879,15 @@ __metadata: languageName: node linkType: hard +"zod-validation-error@npm:3.4.0": + version: 3.4.0 + resolution: "zod-validation-error@npm:3.4.0" + peerDependencies: + zod: ^3.18.0 + checksum: 10/b98b1bbba14a3bb31649a1566c8c5a5213ec70dcaa2cbb1e89db00d56648a446225b35a8f6768471730d7013f4f141cd70c2b9740d69e6433ebfa148aecdac2f + languageName: node + linkType: hard + "zod@npm:3.24.1, zod@npm:^3.22.4": version: 3.24.1 resolution: "zod@npm:3.24.1"