optimized-react-component-library-xyz123 0.21.2 → 0.22.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +55 -45
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +55 -45
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/css/darkMode.css +5 -0
- package/src/css/questions.css +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.tsx","../src/components/input-components/RadioMultipleStandard/RadioMultipleStandard.tsx","../src/components/input-components/MultipleCheckboxesStandard/MultipleCheckboxesStandard.tsx","../src/components/input-components/CheckboxGroupStandard/CheckboxGroupStandard.tsx","../src/components/input-components/TextAreaStandard/TextAreaStandard.tsx","../src/components/input-components/TextFieldStandard/TextFieldStandard.tsx","../src/components/input-components/AddFilesStandard/AddFilesStandard.tsx","../src/components/input-components/AddFilesStandard/DropFilesStandard.tsx","../src/components/input-components/AddFilesStandard/ExploreFilesStandard.tsx","../src/components/input-components/AddFilesStandard/ScreenReaderErrors.tsx","../src/components/input-components/AddFilesStandard/SelectedFilesStandard.tsx","../src/components/input-components/AddFilesStandard/IndicatorStandard.tsx","../src/components/input-components/SingleCheckboxStandard/SingleCheckboxStandard.tsx","../src/helpers/hasQuestionValidationError/hasQuestionValidationError.tsx","../src/helpers/createApiDataObject/createApiDataObject.tsx","../src/helpers/preparePreviewData/preparePreviewData.ts","../src/helpers/isQuestionDependencySatisfied/isQuestionDependencySatisfied.ts","../src/helpers/updateQuestionsAndCategoriesVisibilityAndErrors/updateQuestionsAndCategoriesVisibilityAndErrors.ts","../src/helpers/findVisibleQuestionsWithValidationErrors/findVisibleQuestionsWithValidationErrors.ts","../src/helpers/buildStepCategoryGroupQuestionStructure/buildStepCategoryGroupQuestionStructure.ts","../src/state/globalLanguageSlice/globalLanguageSlice.ts","../src/state/formSlice/formSlice.ts","../src/helpers/cookieHandler/cookieHandler.ts","../src/helpers/scriptHandler/scriptHandler.ts","../src/helpers/focusElement/focusElement.ts","../src/helpers/getGroupCheckIds/getGroupCheckIds.ts","../src/hooks/useFormStatusModal/useFormStatusModal.ts","../src/hooks/usePTSPageTitle/usePTSPageTitle.ts","../src/hooks/useInputMethodDetection/useInputMethodDetection.ts","../src/hooks/useCookieConsent/useCookieConsent.ts","../src/components/question-rendering/QuestionRenderer/QuestionRenderer.tsx","../src/components/question-rendering/QuestionGroup/QuestionGroup.tsx","../src/components/layout/CookieBanner/CookieBanner.tsx","../src/components/layout/FooterStandard/FooterStandard.tsx","../src/components/layout/HeaderStandard/Icons.tsx","../src/components/layout/HeaderStandard/HeaderStandard.tsx","../src/components/layout/ModalStandard/ModalStandard.tsx","../src/components/layout/SkipLinkStandard/SkipLinkStandard.tsx","../src/components/text-blocks/TextHeadlineAndBodyStandard/TextHeadlineAndBodyStandard.tsx","../src/components/text-blocks/PrincipleOfPublicityStandard/PrincipleOfPublicityStandard.tsx","../src/components/text-blocks/TextBody/TextBody.tsx","../src/components/stepper/EditPreviewLinkStandard/EditPreviewLinkStandard.tsx","../src/components/stepper/StartApplicationButton/StartApplicationButton.tsx","../src/components/stepper/StepperButtonsStandard/StepperButtonsStandard.tsx","../src/components/stepper/StepperStandard/StepperStandard.tsx","../src/components/validation-and-status/ValidationErrorSummaryList/ValidationErrorSummaryList.tsx","../src/components/validation-and-status/FormStatusMessagesScreenReader/FormStatusMessagesScreenReader.tsx"],"sourcesContent":["//import './global.css';\r\n\r\nexport * from './components/input-components';\r\nexport * from './helpers';\r\nexport * from './components/question-rendering';\r\nexport * from './types';\r\nexport * from './components';\r\nexport * from './state';\r\n","import React, { FC } from 'react';\r\nimport { IQuestion } from '../../../types/TypesStandard.types';\r\nimport { RadioProps } from './RadioMultipleStandard.types';\r\n\r\nconst InputRadio: FC<RadioProps> = ({\r\n question,\r\n handleQuestionInputChange,\r\n showPreview = false,\r\n}) => {\r\n const questionId = `question-${question.id}`;\r\n const groupId = `radio-group-${question.id}`;\r\n const errorId = `error-${question.id}`;\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const e = { target: { value: event.target.value } };\r\n handleQuestionInputChange(e, question);\r\n };\r\n\r\n return (\r\n <>\r\n {!showPreview && question.visible && (\r\n <div className=\"pts-root-question pts-radioMultiple-container\" id={questionId}>\r\n <fieldset\r\n aria-required={question.isQuestionMandatory}\r\n aria-invalid={question.hasValidationError ? question.hasValidationError : undefined}\r\n aria-errormessage={question.hasValidationError ? errorId : undefined}\r\n >\r\n <legend id={`label-${groupId}`}>\r\n {question.questionLabel}{' '}\r\n {question.isQuestionMandatory && (\r\n <span aria-hidden={true} className=\"pts-root-mandatoryAsterisk\">\r\n *\r\n </span>\r\n )}\r\n </legend>\r\n\r\n {question.options?.map((option: any, index) => (\r\n <div key={index} className=\"pts-radio-option\">\r\n <input\r\n type=\"radio\"\r\n name={`name-${question.id}`}\r\n id={`${groupId}-option-${index}`}\r\n value={option.value}\r\n checked={question.answer === option.value}\r\n onChange={handleInputChange}\r\n />\r\n <label htmlFor={`${groupId}-option-${index}`}>{option.label}</label>{' '}\r\n </div>\r\n ))}\r\n\r\n {question.hasValidationError && (\r\n <div className=\"pts-root-error\" id={errorId}>\r\n <span aria-hidden={true} className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"sr-only\">Valideringsfel</span>\r\n\r\n <span className=\"errorText\">{question.validationDefaultMessesege}</span>\r\n </div>\r\n )}\r\n </fieldset>\r\n </div>\r\n )}\r\n {showPreview && <PreviewRadio question={question} />}\r\n </>\r\n );\r\n};\r\n\r\nexport default InputRadio;\r\n\r\ninterface PreviewRadioProps {\r\n question: IQuestion;\r\n}\r\n\r\nconst PreviewRadio = ({ question }: PreviewRadioProps) => {\r\n const previewId = `preview-${question.id}`;\r\n\r\n return (\r\n <>\r\n <dt id={`question-${previewId}`}>{question.previewLabel ?? question.questionLabel}</dt>\r\n\r\n {question.answer?.trim() ? (\r\n <dd className=\"pts-radioMultiple-preview pts-root-answer\" id={`answer-${previewId}`}>\r\n {question.answer}\r\n </dd>\r\n ) : (\r\n <dd\r\n className=\"pts-radioMultiple-preview pts-root-answer no-answer-preview-page\"\r\n id={`answer-${previewId}`}\r\n >\r\n Inget svar\r\n </dd>\r\n )}\r\n </>\r\n );\r\n};\r\n","import { FC, useEffect, useState } from 'react';\r\nimport React from 'react';\r\nimport { MultipleCheckboxesProps } from './MultiplesCheckboxesStandard.types';\r\nimport { IQuestion } from '../../../types/TypesStandard.types';\r\n\r\nconst MultipleCheckboxes: FC<MultipleCheckboxesProps> = ({\r\n question,\r\n handleQuestionInputChange,\r\n showPreview = false,\r\n activatedLanguage = 'sv',\r\n}) => {\r\n const questionId = `question-${question.id}`;\r\n const [checkedValues, setCheckedValues] = useState<string[]>([]);\r\n\r\n useEffect(() => {\r\n const initialValues =\r\n question.options\r\n ?.filter((option: any) => question.answer?.includes(option.label))\r\n .map((option: any) => option.label) || [];\r\n\r\n console.log('Initial values:', initialValues);\r\n setCheckedValues(initialValues);\r\n }, [question.answer, question.options]);\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>, optionValue: string) => {\r\n let updatedValues = [...checkedValues];\r\n\r\n if (updatedValues.includes(optionValue)) {\r\n updatedValues = updatedValues.filter((val) => val !== optionValue);\r\n } else {\r\n updatedValues.push(optionValue);\r\n }\r\n\r\n setCheckedValues(updatedValues);\r\n\r\n const e = { target: { value: updatedValues.toString() } };\r\n handleQuestionInputChange(e, question);\r\n };\r\n\r\n return (\r\n <>\r\n {!showPreview && question.visible && (\r\n <div id={questionId} className=\"pts-root-question pts-multipleCheckboxes-container\">\r\n <fieldset>\r\n <legend className=\"multipleCheckboxes-legend\" id={`label-${questionId}`}>\r\n {question.questionLabel}{' '}\r\n {question.isQuestionMandatory && (\r\n <span aria-hidden={true} className=\"pts-root-mandatoryAsterisk\">\r\n *\r\n </span>\r\n )}{' '}\r\n </legend>\r\n <ul>\r\n {question.options?.map((option: any, index: number) => (\r\n <li key={index}>\r\n <>\r\n {' '}\r\n <input\r\n type=\"checkbox\"\r\n name={`${question.id}-option`}\r\n id={`${question.id}-option-${index}`}\r\n value={option.label}\r\n checked={checkedValues.includes(option.label)}\r\n onChange={(e) => handleInputChange(e, option.label)}\r\n className={\r\n question.hasValidationError\r\n ? 'pts-root-question-input-error-border'\r\n : undefined\r\n }\r\n />\r\n <label htmlFor={`${question.id}-option-${index}`}>{option.label}</label>\r\n </>\r\n </li>\r\n ))}\r\n </ul>\r\n </fieldset>\r\n </div>\r\n )}{' '}\r\n {showPreview && (\r\n <PrevieMultipleCheckboxes activatedLanguage={activatedLanguage} question={question} />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default MultipleCheckboxes;\r\n\r\nconst PrevieMultipleCheckboxes = ({\r\n question,\r\n activatedLanguage,\r\n}: {\r\n activatedLanguage: MultipleCheckboxesProps['activatedLanguage'];\r\n question: IQuestion;\r\n}) => {\r\n const previewId = `preview-${question.id}`;\r\n\r\n return (\r\n <>\r\n <dt id={`question-${previewId}`}>{question.previewLabel ?? question.questionLabel}</dt>\r\n {question.answer ? (\r\n question.options && question.options.length === 1 ? (\r\n <dd>{question.options[0].label}</dd>\r\n ) : (\r\n <dd>\r\n <ul className=\"pts-preview-answer-list\">\r\n {question.options\r\n ?.filter((option: any) => question.answer?.includes(option.label))\r\n .map((option: any, index) => (\r\n <li key={index}>{option.label}</li>\r\n ))}\r\n </ul>\r\n </dd>\r\n )\r\n ) : (\r\n <dd className=\"no-answer-preview-page\">\r\n {activatedLanguage === 'en' ? 'No Answer' : 'Inget svar'}\r\n </dd>\r\n )}{' '}\r\n </>\r\n );\r\n};\r\n","import { FC, useEffect, useState } from 'react';\r\nimport React from 'react';\r\nimport { CheckboxGroupProps } from './CheckboxGroupStandard.types'\r\nimport { IQuestion } from '../../../types/TypesStandard.types';\r\n\r\nconst CheckboxGroup: FC<CheckboxGroupProps> = ({\r\n question,\r\n handleQuestionInputChange,\r\n showPreview = false,\r\n activatedLanguage = 'sv',\r\n}) => {\r\n const questionId = `question-${question.id}`;\r\n const errorId = `error-${question.id}`;\r\n const groupId = `checkbox-group-${question.id}`;\r\n \r\n const [checkedValues, setCheckedValues] = useState<string[]>([]);\r\n\r\n useEffect(() => {\r\n const initialValues =\r\n question.options\r\n ?.filter((option: any) => question.answer?.includes(option.label))\r\n .map((option: any) => option.label) || [];\r\n\r\n setCheckedValues(initialValues);\r\n }, [question.answer, question.options]);\r\n \r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>, optionValue: string) => {\r\n let updatedValues = [...checkedValues];\r\n\r\n if (updatedValues.includes(optionValue)) {\r\n updatedValues = updatedValues.filter((val) => val !== optionValue);\r\n } else {\r\n updatedValues.push(optionValue);\r\n }\r\n\r\n setCheckedValues(updatedValues);\r\n\r\n const e = { target: { value: updatedValues.toString() } };\r\n handleQuestionInputChange(e, question);\r\n };\r\n\r\n return (\r\n <>\r\n {!showPreview && question.visible && (\r\n <div id={questionId} className=\"pts-root-question pts-checkboxGroup-container\">\r\n <fieldset\r\n aria-required={question.isQuestionMandatory}\r\n aria-invalid={question.hasValidationError ? question.hasValidationError : undefined}\r\n aria-errormessage={question.hasValidationError ? errorId : undefined}\r\n >\r\n <legend className=\"pts-checkboxGroup-legend\" id={`label-${groupId}`}>\r\n {question.questionLabel}{' '}\r\n {question.isQuestionMandatory && (\r\n <span aria-hidden={true} className=\"pts-root-mandatoryAsterisk\">\r\n *\r\n </span>\r\n )}\r\n </legend>\r\n\r\n {question.options?.map((option: any, index: number) => (\r\n <div className=\"pts-checkboxGroup-options\" key={index}>\r\n <input\r\n type=\"checkbox\"\r\n name={`name-${question.id}`}\r\n id={`${groupId}-option-${index}`}\r\n value={option.label}\r\n checked={checkedValues.includes(option.label)}\r\n onChange={(e) => handleInputChange(e, option.label)}\r\n className={\r\n question.hasValidationError\r\n ? 'pts-root-question-input-error-border'\r\n : undefined\r\n }\r\n />\r\n <label htmlFor={`${groupId}-option-${index}`}>{option.label}</label>\r\n </div>\r\n ))}\r\n\r\n {question.hasValidationError && (\r\n <div className=\"pts-root-error\" id={errorId}>\r\n <span aria-hidden={true} className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"sr-only\">Valideringsfel</span>\r\n\r\n <span className=\"errorText\">\r\n {question.validationDefaultMessesege}</span>\r\n </div>\r\n )}\r\n </fieldset>\r\n </div>\r\n )}\r\n {showPreview && (\r\n <PreviewCheckboxGroup activatedLanguage={activatedLanguage} question={question} />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default CheckboxGroup;\r\n\r\nconst PreviewCheckboxGroup = ({\r\n question,\r\n activatedLanguage,\r\n}: {\r\n activatedLanguage: CheckboxGroupProps['activatedLanguage'];\r\n question: IQuestion;\r\n}) => {\r\n const previewId = `preview-${question.id}`;\r\n\r\n return (\r\n <>\r\n <dt id={`question-${previewId}`}>{question.previewLabel ?? question.questionLabel}</dt>\r\n {question.answer ? (\r\n question.options && question.options.length === 1 ? (\r\n <dd>{question.options[0].label}</dd>\r\n ) : (\r\n <dd>\r\n <ul className=\"pts-preview-answer-list\">\r\n {question.options\r\n ?.filter((option: any) => question.answer?.includes(option.label))\r\n .map((option: any, index) => (\r\n <li key={index}>{option.label}</li>\r\n ))}\r\n </ul>\r\n </dd>\r\n )\r\n ) : (\r\n <dd className=\"no-answer-preview-page\">\r\n {activatedLanguage === 'en' ? 'No Answer' : 'Inget svar'}\r\n </dd>\r\n )}{' '}\r\n </>\r\n );\r\n};\r\n","import React, { FC } from 'react';\r\nimport { IQuestion } from '../../../types/TypesStandard.types';\r\nimport { TextAreaProps } from './TextAreaStandard.types';\r\nimport DOMPurify from 'dompurify';\r\n\r\nconst InputTextarea: FC<TextAreaProps> = ({\r\n question,\r\n handleQuestionInputChange,\r\n showPreview = false,\r\n activatedLanguage,\r\n}) => {\r\n const questionId = `question-${question.id}`;\r\n const inputId = `textarea-${question.id}`;\r\n const aboutId = `about-${question.id}`;\r\n const errorId = `error-${question.id}`;\r\n const defaultMaxLength = 1000;\r\n\r\n return (\r\n <>\r\n {!showPreview && question.visible && (\r\n <div\r\n id={questionId}\r\n className={`pts-root-question pts-textArea-container${\r\n question.aboutText ? ' pts-question-hasAbout' : ''\r\n }`}\r\n >\r\n <label htmlFor={inputId}>\r\n {question.questionLabel}{' '}\r\n {question.isQuestionMandatory && (\r\n <span className=\"pts-root-mandatoryAsterisk\" aria-hidden=\"true\">\r\n *\r\n </span>\r\n )}\r\n </label>\r\n\r\n {question.aboutText && (\r\n <div\r\n id={aboutId}\r\n className=\"pts-about\"\r\n dangerouslySetInnerHTML={{\r\n __html: DOMPurify.sanitize(question.aboutText),\r\n }}\r\n />\r\n )}\r\n\r\n <textarea\r\n className={\r\n question.hasValidationError ? 'pts-root-question-input-error-border' : undefined\r\n }\r\n onChange={(e) => handleQuestionInputChange(e, question)}\r\n value={question.answer}\r\n required={question.isQuestionMandatory}\r\n aria-required={question.isQuestionMandatory}\r\n aria-invalid={question.hasValidationError}\r\n maxLength={question.questionExtraAttribute?.answerMaxLength || defaultMaxLength}\r\n aria-describedby={\r\n [question.aboutText ? aboutId : null, question.hasValidationError ? errorId : null]\r\n .filter(Boolean)\r\n .join(' ') || undefined\r\n }\r\n id={inputId}\r\n />\r\n <div className=\"pts-textarea-counter-error-container\">\r\n {question.hasValidationError && (\r\n <div className=\"pts-root-error\" id={errorId}>\r\n <span aria-label=\"Felmeddelande.\" className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"errorText\">{question.validationDefaultMessesege}</span>\r\n </div>\r\n )}\r\n {!question.questionExtraAttribute?.hideTextCounter && (\r\n <div\r\n className={`pts-character-counter ${\r\n question.answer &&\r\n (question.questionExtraAttribute?.answerMaxLength || defaultMaxLength) &&\r\n question.answer.length >\r\n (question.questionExtraAttribute?.answerMaxLength || defaultMaxLength)\r\n ? 'error'\r\n : ''\r\n }`}\r\n >\r\n {question.answer ? question.answer.length : 0} av{' '}\r\n {question.questionExtraAttribute?.answerMaxLength || defaultMaxLength} tecken\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n {showPreview && <PreviewTextarea activatedLanguage={activatedLanguage} question={question} />}\r\n </>\r\n );\r\n};\r\n\r\nexport default InputTextarea;\r\n\r\nconst PreviewTextarea = ({\r\n question,\r\n activatedLanguage,\r\n}: {\r\n activatedLanguage: TextAreaProps['activatedLanguage'];\r\n question: IQuestion;\r\n}) => {\r\n const previewId = `preview-${question.id}`;\r\n\r\n return (\r\n <>\r\n <dt id={`question-${previewId}`}>{question.previewLabel ?? question.questionLabel}</dt>\r\n\r\n {question.answer?.trim() ? (\r\n <dd className=\"pts-textArea-preview pts-root-answer\" id={`answer-${previewId}`}>\r\n {question.answer}\r\n </dd>\r\n ) : (\r\n <dd\r\n className=\"pts-textArea-preview pts-root-answer no-answer-preview-page\"\r\n id={`answer-${previewId}`}\r\n >\r\n {activatedLanguage === 'en' ? 'No Answer' : 'Inget svar'}\r\n </dd>\r\n )}\r\n </>\r\n );\r\n};\r\n","import React, { FC } from 'react';\r\nimport { IQuestion } from '../../../types/TypesStandard.types';\r\nimport { TextFieldStandardProps } from './TextFieldStandard.types';\r\nimport DOMPurify from 'dompurify';\r\n\r\nconst TextFieldStandard: FC<TextFieldStandardProps> = ({\r\n question,\r\n handleQuestionInputChange,\r\n showPreview = false,\r\n activatedLanguage,\r\n}) => {\r\n const questionId = `question-${question.id}`;\r\n const inputId = `textField-${question.id}`;\r\n const aboutId = `about-${question.id}`;\r\n const errorId = `error-${question.id}`;\r\n const defaultMaxLength = 1000;\r\n\r\n return (\r\n <>\r\n {!showPreview && question.visible && (\r\n <div\r\n id={questionId}\r\n className={`pts-root-question pts-textField-container${\r\n question.questionExtraAttribute?.disabled ? ' pts-textField-disabled' : ''\r\n }${question.aboutText ? ' pts-question-hasAbout' : ''}`.trim()}\r\n >\r\n <label htmlFor={inputId}>\r\n {question.questionLabel}{' '}\r\n {question.isQuestionMandatory && (\r\n <span aria-hidden=\"true\" className=\"pts-root-mandatoryAsterisk\">\r\n *\r\n </span>\r\n )}\r\n </label>\r\n\r\n {question.aboutText && (\r\n <div\r\n id={aboutId}\r\n className=\"pts-about\"\r\n dangerouslySetInnerHTML={{\r\n __html: DOMPurify.sanitize(question.aboutText),\r\n }}\r\n />\r\n )}\r\n\r\n <input\r\n type={question.questionExtraAttribute?.inputType ?? 'text'}\r\n autoComplete={question.questionExtraAttribute?.autoComplete ?? undefined}\r\n inputMode={question.questionExtraAttribute?.inputMode ?? undefined}\r\n name={`question-name-${question.id}`}\r\n className={\r\n question.hasValidationError ? 'pts-root-question-input-error-border' : undefined\r\n }\r\n onChange={(e) => handleQuestionInputChange(e, question)}\r\n value={question.answer}\r\n maxLength={question.questionExtraAttribute?.answerMaxLength || defaultMaxLength}\r\n id={inputId}\r\n disabled={question.questionExtraAttribute?.disabled}\r\n required={question.isQuestionMandatory}\r\n aria-required={question.isQuestionMandatory}\r\n aria-describedby={\r\n [question.aboutText ? aboutId : null].filter(Boolean).join(' ') || undefined\r\n }\r\n aria-invalid={question.hasValidationError}\r\n aria-errormessage={question.hasValidationError ? errorId : undefined}\r\n spellCheck={question.questionExtraAttribute?.spellCheck ?? undefined}\r\n autoCapitalize={question.questionExtraAttribute?.autoCapitalize ?? undefined}\r\n />\r\n\r\n {question.hasValidationError && (\r\n <div className=\"pts-root-error\" id={errorId}>\r\n <span aria-hidden={true} className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"sr-only\">Valideringsfel</span>\r\n\r\n <span className=\"errorText\">{question.validationDefaultMessesege}</span>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n {showPreview && (\r\n <PreviewTextField activatedLanguage={activatedLanguage} question={question} />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default TextFieldStandard;\r\n\r\nconst PreviewTextField = ({\r\n question,\r\n activatedLanguage,\r\n}: {\r\n activatedLanguage: TextFieldStandardProps['activatedLanguage'];\r\n question: IQuestion;\r\n}) => {\r\n const previewId = `preview-${question.id}`;\r\n return (\r\n <>\r\n <dt id={`question-${previewId}`}>{question.previewLabel ?? question.questionLabel}</dt>\r\n\r\n {question.answer?.trim() ? (\r\n <dd className=\"pts-textField-preview pts-root-answer\" id={`answer-${previewId}`}>\r\n {question.answer}\r\n </dd>\r\n ) : (\r\n <dd\r\n className=\"pts-textField-preview pts-root-answer no-answer-preview-page\"\r\n id={`answer-${previewId}`}\r\n >\r\n {activatedLanguage === 'en' ? 'No Answer' : 'Inget svar'}\r\n </dd>\r\n )}\r\n </>\r\n );\r\n};\r\n","import React, { FC, useCallback, useEffect, useState } from 'react';\r\nimport clsx from 'clsx';\r\nimport DropFiles from './DropFilesStandard';\r\nimport ExploreFiles from './ExploreFilesStandard';\r\nimport SelectedFiles from './SelectedFilesStandard';\r\nimport { AddFilesProps } from './AddFilesStandard.types';\r\n\r\nconst AddFiles: FC<AddFilesProps> = ({\r\n questionObject,\r\n handleQuestionInputChange = (\r\n e: { target: { value: string; files: Array<any> } },\r\n questionObject: any,\r\n ) => {\r\n alert('no function');\r\n },\r\n visible,\r\n activatedLanguage = 'sv',\r\n showPreview = false,\r\n allowedFileTypes = [],\r\n allowedNumberOfFiles = 5,\r\n allowedTotalFileSize = 20971520, // 20MB = (1024 * 1024) * 20\r\n}) => {\r\n if (allowedFileTypes.length < 1) {\r\n allowedFileTypes = [\r\n 'pdf',\r\n 'doc',\r\n 'docx',\r\n 'xls',\r\n 'xlsx',\r\n 'txt',\r\n 'rtf',\r\n 'ppt',\r\n 'pptx',\r\n 'jpg',\r\n 'jpeg',\r\n 'png',\r\n 'tif',\r\n 'tiff',\r\n 'csv',\r\n ];\r\n }\r\n\r\n const inputId = `input-${questionObject.id}`;\r\n const aboutId = `about-${questionObject.id}`;\r\n const errorId = `error-${questionObject.id}`;\r\n const labelId = `label-${questionObject.id}`;\r\n const maxSizeMB = Math.round(allowedTotalFileSize / 1048576);\r\n const [numberOfFiles, setNumberOfFiles] = useState(0);\r\n const [totalFileSize, setTotalFileSize] = useState(0);\r\n const [errorMessageAddingFile, setErrorMessageAddingFile] = useState([] as object[]);\r\n const [newFiles, setNewFiles] = useState<any>([]);\r\n const [dropFilesText, setDropFilesText] = useState<any>('Dra och släpp dina filer här');\r\n\r\n useEffect(() => {\r\n if (activatedLanguage === 'sv') {\r\n setDropFilesText('Dra och släpp dina filer här');\r\n } else {\r\n setDropFilesText('Drag and drop your files here');\r\n }\r\n }, [activatedLanguage]);\r\n\r\n useEffect(() => {\r\n if (questionObject.files && questionObject.files.length > 0) {\r\n setNumberOfFiles(questionObject.files.length);\r\n }\r\n }, []);\r\n\r\n const onDrop = useCallback(\r\n (acceptedFiles: File[]) => {\r\n const validationErrors: any[] = [];\r\n const validFiles: File[] = [];\r\n\r\n const currentTotalFileSize = (questionObject.files || []).reduce(\r\n (acc: number, f: any) => acc + f.FileSize,\r\n 0,\r\n );\r\n\r\n setTotalFileSize(currentTotalFileSize);\r\n\r\n if ((questionObject.files?.length || 0) >= allowedNumberOfFiles) {\r\n acceptedFiles.forEach((file) => {\r\n validationErrors.push({\r\n FileName: file.name,\r\n svMessage: `Du kan ladda upp maximalt ${allowedNumberOfFiles} filer med total filstorlek på ${maxSizeMB} MB`,\r\n enMessage: `You can upload a maximum of ${allowedNumberOfFiles} files with a total file size of ${maxSizeMB} MB`,\r\n });\r\n });\r\n\r\n setErrorMessageAddingFile((prev: object[]) => [...prev, ...validationErrors]);\r\n return;\r\n }\r\n\r\n let accumulatedNewSize = 0;\r\n\r\n for (const file of acceptedFiles) {\r\n const fileExtension = file.name.split('.').pop()?.toLowerCase() || '';\r\n if (!allowedFileTypes.includes(fileExtension)) {\r\n validationErrors.push({\r\n FileName: file.name,\r\n svMessage: 'Filen är i fel format. Välj ' + allowedFileTypes.join(', '),\r\n enMessage: 'Invalid file format. Choose ' + allowedFileTypes.join(', '),\r\n });\r\n continue;\r\n }\r\n\r\n if ((questionObject.files?.length || 0) + validFiles.length >= allowedNumberOfFiles) {\r\n validationErrors.push({\r\n FileName: file.name,\r\n svMessage: `Du kan ladda upp maximalt ${allowedNumberOfFiles} filer med total filstorlek på ${maxSizeMB} MB`,\r\n enMessage: `You can upload a maximum of ${allowedNumberOfFiles} files with a total file size of ${maxSizeMB} MB`,\r\n });\r\n continue;\r\n }\r\n\r\n const projectedTotalSize = currentTotalFileSize + accumulatedNewSize + file.size;\r\n\r\n if (projectedTotalSize > allowedTotalFileSize) {\r\n validationErrors.push({\r\n FileName: file.name,\r\n svMessage: `Du kan ladda upp maximalt ${allowedNumberOfFiles} filer med total filstorlek på ${maxSizeMB} MB`,\r\n enMessage: `You can upload a maximum of ${allowedNumberOfFiles} files with a total file size of ${maxSizeMB} MB`,\r\n });\r\n continue;\r\n }\r\n\r\n accumulatedNewSize += file.size;\r\n validFiles.push(file);\r\n }\r\n\r\n if (validationErrors.length > 0) {\r\n setErrorMessageAddingFile((prev: object[]) => [...prev, ...validationErrors]);\r\n }\r\n\r\n if (validFiles.length > 0) {\r\n processValidFiles(validFiles);\r\n }\r\n },\r\n [questionObject.files, allowedFileTypes, allowedNumberOfFiles, allowedTotalFileSize],\r\n );\r\n\r\n const processValidFiles = (validFiles: File[]): void => {\r\n let files: any[] = [];\r\n\r\n validFiles.forEach((file: File) => {\r\n const reader = new FileReader();\r\n\r\n reader.onload = () => {\r\n const newFile = {\r\n dataURL: reader.result,\r\n FileName: file.name,\r\n FileSize: file.size,\r\n FileType: file.type,\r\n };\r\n\r\n files = [...files, newFile];\r\n if (files.length === validFiles.length) {\r\n setNewFiles((prev: any[]) => [...prev, ...files]);\r\n }\r\n };\r\n\r\n reader.onerror = () => {\r\n setErrorMessageAddingFile((prev: object[]) => [\r\n ...prev,\r\n {\r\n FileName: file.name,\r\n svMessage: 'Uppladdningen misslyckades eller avbröts.',\r\n enMessage: 'Upload failed or was canceled.',\r\n },\r\n ]);\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (newFiles.length > 0) {\r\n const currentFiles = questionObject.files ? questionObject.files : [];\r\n const e = {\r\n target: {\r\n value:\r\n currentFiles.length + newFiles.length > 0\r\n ? `${currentFiles.length + newFiles.length} files`\r\n : '',\r\n files: [...currentFiles, ...newFiles],\r\n },\r\n };\r\n\r\n handleQuestionInputChange(e, questionObject);\r\n setNumberOfFiles(currentFiles.length + newFiles.length);\r\n setNewFiles([]);\r\n }\r\n }, [newFiles]);\r\n\r\n const removeFileFromNumberOfFiles = (newCount: number) => {\r\n setNumberOfFiles(newCount);\r\n };\r\n\r\n const removeOneError = (errorIndex: any) => {\r\n //TODO: remove?\r\n let newErrors = errorMessageAddingFile.filter((e: any, index: any) => index !== errorIndex);\r\n setErrorMessageAddingFile(newErrors);\r\n };\r\n\r\n const removeError = () => {\r\n setErrorMessageAddingFile([]);\r\n };\r\n\r\n const handleRemoveErrors = () => {\r\n setErrorMessageAddingFile([]);\r\n };\r\n\r\n return (\r\n <>\r\n {!showPreview && visible && (\r\n <div\r\n className=\"root-question addFile-question-container\"\r\n id={`question-${questionObject.id}`}\r\n >\r\n <div role=\"group\">\r\n {/* {!questionObject.hideQuestion && questionObject.questionLabel} */}\r\n {questionObject.aboutText && (\r\n <p\r\n id={aboutId}\r\n className={clsx(\r\n 'addFilesMandatory',\r\n questionObject.hasValidationError ? ' error' : '',\r\n )}\r\n >\r\n {questionObject.aboutText}\r\n {questionObject.isQuestionMandatory && (\r\n <span className=\"pts-root-mandatoryAsterisk\" aria-label=\"Obligatorisk fråga\">\r\n {' '}\r\n *\r\n </span>\r\n )}\r\n </p>\r\n )}\r\n {questionObject.hasValidationError && (\r\n <div className=\"pts-root-error error addfileserror\" id={errorId}>\r\n <span aria-hidden={true} className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"sr-only\">Valideringsfel</span>\r\n\r\n <span className=\"errorText\">{questionObject.validationDefaultMessesege}</span>\r\n </div>\r\n )}\r\n\r\n <ExploreFiles\r\n FilesSelected={onDrop}\r\n numberOfFiles={numberOfFiles}\r\n allowedNumberOfFiles={allowedNumberOfFiles}\r\n activatedLanguage={activatedLanguage}\r\n inputId={inputId}\r\n labelId={labelId}\r\n aboutId={aboutId}\r\n errorId={errorId}\r\n questionObject={questionObject}\r\n errorMessageAddingFile={errorMessageAddingFile}\r\n removeUploadErrors={handleRemoveErrors}\r\n />\r\n\r\n <DropFiles\r\n FilesSelected={onDrop}\r\n DropFilesText={dropFilesText}\r\n language={activatedLanguage}\r\n />\r\n\r\n <SelectedFiles\r\n questionObject={questionObject}\r\n isTouched={handleQuestionInputChange}\r\n removeFile={removeFileFromNumberOfFiles}\r\n removeError={removeError}\r\n errorMessageAddingFile={errorMessageAddingFile}\r\n activatedLanguage={activatedLanguage}\r\n numberOfFiles={numberOfFiles}\r\n setNumberOfFiles={setNumberOfFiles}\r\n removeUploadErrors={handleRemoveErrors}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n {showPreview && (\r\n <PreviewAddFiles activatedLanguage={activatedLanguage} questionObject={questionObject} />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default AddFiles;\r\n\r\nconst PreviewAddFiles = ({\r\n questionObject,\r\n activatedLanguage,\r\n}: {\r\n activatedLanguage: AddFilesProps['activatedLanguage'];\r\n questionObject: any;\r\n}) => {\r\n const previewId = `preview-${questionObject.Id}`;\r\n return (\r\n <>\r\n <dt id={`question-${previewId}`}>\r\n {questionObject.questionLabel\r\n ? questionObject.questionLabel\r\n : activatedLanguage === 'en'\r\n ? 'Attached files'\r\n : 'Bifogade filer'}\r\n </dt>\r\n {questionObject.files && questionObject.files.length > 0 ? (\r\n <dd className=\"pts-addFiles-answer\">\r\n <ul aria-labelledby={previewId} className=\"pts-preview-answer-list\">\r\n {questionObject.files.map((file: any, index: any) => {\r\n return <li key={`file-${index}-${file.FileName}`}>{file.FileName}</li>;\r\n })}\r\n </ul>\r\n </dd>\r\n ) : (\r\n <dd className=\"no-answer-preview-page\">\r\n {activatedLanguage === 'en' ? 'No attached files' : 'Inga bifogade filer'}\r\n </dd>\r\n )}\r\n </>\r\n );\r\n};\r\n","import React, { useState, useRef } from 'react'\r\nimport { useDropzone } from 'react-dropzone'\r\nimport ClipboardFiles from './ClipboardFilesStandard'\r\n\r\nimport './AddFilesStandard.css'\r\n\r\nconst DropFiles = ({ FilesSelected, DropFilesText = 'Dra och släpp dina filer här', language }: any) => {\r\n const onDrop = FilesSelected\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop, noKeyboard: true })\r\n\r\n const handleFileExplorer = (event: any) => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n }\r\n\r\n return (\r\n <>\r\n <div className=\"DropZoneContainer\">\r\n <div className=\"DropZone\" {...getRootProps()} onClick={handleFileExplorer}>\r\n <label htmlFor=\"fileDropInput\" hidden>\r\n Dra och släpp filer här område\r\n <input\r\n {...getInputProps({\r\n id: 'fileDropInput',\r\n name: 'fileDropInput',\r\n })}\r\n role=\"presentation\"\r\n />\r\n </label>\r\n\r\n {isDragActive ? (\r\n <b className=\"dropFilesNowText\">\r\n {language === 'sv'\r\n ? \"Släpp filerna, nu ...!\"\r\n : \"Drop files here!\"\r\n }\r\n </b>\r\n ) : (\r\n <div className=\"DropZone-label-container\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" \r\n width=\"2.4rem\" \r\n height=\"2.4rem\" \r\n viewBox=\"0 0 7 15\" \r\n fill=\"#fff\">\r\n <path \r\n d=\"M0 2.5C0 1.83696 0.263392 1.20107 0.732233 0.732233C1.20107 0.263392 1.83696 0 2.5 0C3.16304 0 3.79893 0.263392 4.26777 0.732233C4.73661 1.20107 5 1.83696 5 2.5V11.5C5 11.8978 4.84196 12.2794 4.56066 12.5607C4.27936 12.842 3.89782 13 3.5 13C3.10218 13 2.72064 12.842 2.43934 12.5607C2.15804 12.2794 2 11.8978 2 11.5V4.5C2 4.36739 2.05268 4.24021 2.14645 4.14645C2.24021 4.05268 2.36739 4 2.5 4C2.63261 4 2.75979 4.05268 2.85355 4.14645C2.94732 4.24021 3 4.36739 3 4.5V11.5C3 11.6326 3.05268 11.7598 3.14645 11.8536C3.24021 11.9473 3.36739 12 3.5 12C3.63261 12 3.75979 11.9473 3.85355 11.8536C3.94732 11.7598 4 11.6326 4 11.5V2.5C4 2.30302 3.9612 2.10796 3.88582 1.92597C3.81044 1.74399 3.69995 1.57863 3.56066 1.43934C3.42137 1.30005 3.25601 1.18956 3.07403 1.11418C2.89204 1.0388 2.69698 1 2.5 1C2.30302 1 2.10796 1.0388 1.92597 1.11418C1.74399 1.18956 1.57863 1.30005 1.43934 1.43934C1.30005 1.57863 1.18956 1.74399 1.11418 1.92597C1.0388 2.10796 1 2.30302 1 2.5V11.5C1 12.163 1.26339 12.7989 1.73223 13.2678C2.20107 13.7366 2.83696 14 3.5 14C4.16304 14 4.79893 13.7366 5.26777 13.2678C5.73661 12.7989 6 12.163 6 11.5V4.5C6 4.36739 6.05268 4.24021 6.14645 4.14645C6.24021 4.05268 6.36739 4 6.5 4C6.63261 4 6.75979 4.05268 6.85355 4.14645C6.94732 4.24021 7 4.36739 7 4.5V11.5C7 12.4283 6.63125 13.3185 5.97487 13.9749C5.3185 14.6313 4.42826 15 3.5 15C2.57174 15 1.6815 14.6313 1.02513 13.9749C0.368749 13.3185 0 12.4283 0 11.5V2.5Z\" \r\n fill=\"#fff\"\r\n />\r\n </svg>\r\n <p className=\"dropFilesText\">{DropFilesText}</p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n )\r\n}\r\n\r\nexport default DropFiles\r\n","import React, { useEffect, useRef } from 'react';\r\nimport clsx from 'clsx';\r\nimport './AddFilesStandard.css';\r\nimport ScreenReaderErrors from './ScreenReaderErrors';\r\n\r\nconst ExploreFiles = ({\r\n FilesSelected,\r\n numberOfFiles,\r\n allowedNumberOfFiles,\r\n activatedLanguage,\r\n inputId,\r\n labelId,\r\n aboutId,\r\n errorId,\r\n questionObject,\r\n showErrors,\r\n errorMessageAddingFile,\r\n}: any) => {\r\n const fileInputRef = useRef<HTMLInputElement>(null);\r\n const buttonInputRef = useRef<HTMLButtonElement>(null);\r\n\r\n const handleFiles = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const files = Array.from(event.target.files || []);\r\n FilesSelected(files);\r\n event.target.value = '';\r\n };\r\n\r\n const handleKeyOrClick = () => {\r\n fileInputRef.current?.click();\r\n };\r\n\r\n let addFilesInfoText =\r\n numberOfFiles > 0\r\n ? activatedLanguage === 'sv'\r\n ? `${numberOfFiles} filer valda (max ${allowedNumberOfFiles})`\r\n : `${numberOfFiles} files chosed (max ${allowedNumberOfFiles})`\r\n : activatedLanguage === 'sv'\r\n ? 'Ingen fil vald'\r\n : 'No file chosen';\r\n\r\n const ariaLabelText = `${activatedLanguage === 'sv' ? 'Välj fil' : 'Choose file'} ${addFilesInfoText}`;\r\n\r\n return (\r\n <>\r\n <div className=\"inputContainer\">\r\n <div\r\n className={clsx(\r\n ['form-control'],\r\n 'filePickLabel',\r\n showErrors && questionObject.error ? ['form-control error'] : '',\r\n )}\r\n id={labelId}\r\n >\r\n <button\r\n \r\n ref={buttonInputRef}\r\n onClick={handleKeyOrClick}\r\n className={clsx(\r\n 'filePickButton',\r\n showErrors && questionObject.error ? 'filePickButton error' : '',\r\n )}\r\n aria-describedby={`${aboutId} ${questionObject.hasValidationError ? errorId : ''}`.trim()}\r\n aria-label={ariaLabelText}\r\n type=\"button\"\r\n >\r\n {activatedLanguage === 'sv' ? 'Välj fil' : 'Choose file'}\r\n </button>\r\n\r\n <span aria-hidden={true} className=\"filePickText\">\r\n {addFilesInfoText}\r\n </span>\r\n <label htmlFor={inputId} aria-hidden={true} className=\"invisible\"></label>\r\n </div>\r\n <input\r\n aria-hidden={true}\r\n ref={fileInputRef}\r\n type=\"file\"\r\n className=\"invisible\"\r\n multiple\r\n onChange={handleFiles}\r\n tabIndex={-1}\r\n id={inputId}\r\n />\r\n\r\n <ScreenReaderErrors\r\n errorMessageAddingFile={errorMessageAddingFile}\r\n activatedLanguage={activatedLanguage}\r\n />\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default ExploreFiles;\r\n","import React from 'react';\r\n\r\ninterface ScreenReaderErrorsProps {\r\n errorMessageAddingFile: string[];\r\n activatedLanguage: string;\r\n}\r\n\r\nconst ScreenReaderErrors: React.FC<ScreenReaderErrorsProps> = ({\r\n errorMessageAddingFile,\r\n activatedLanguage,\r\n}) => {\r\n const [activateErrorMessagesForScreenReader, setActivateErrorMessagesForScreenReader] =\r\n React.useState<boolean>(false);\r\n\r\n const [errorMessagesForScreenReader, setErrorMessagesForScreenReader] =\r\n React.useState<string>('');\r\n\r\n React.useEffect(() => {\r\n if (errorMessageAddingFile.length > 0) {\r\n let errorMessages = '';\r\n errorMessages += errorMessageAddingFile.length;\r\n errorMessages +=\r\n activatedLanguage === 'sv'\r\n ? ' fel vid uppladdning av filer. '\r\n : ' errors uploading files. ';\r\n errorMessages += errorMessageAddingFile\r\n .map((err: any) =>\r\n activatedLanguage === 'sv'\r\n ? `${err.FileName}. ${err.svMessage}`\r\n : `${err.FileName}. ${err.enMessage}`,\r\n )\r\n .join('.\\n');\r\n setErrorMessagesForScreenReader(errorMessages);\r\n setActivateErrorMessagesForScreenReader(true);\r\n }\r\n }, [errorMessageAddingFile]);\r\n\r\n return (\r\n <>\r\n {activateErrorMessagesForScreenReader && (\r\n <p role=\"alert\" className=\"sr-only\" aria-atomic=\"true\">\r\n {errorMessagesForScreenReader}\r\n </p>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default ScreenReaderErrors;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { Col, Container, Row } from 'react-bootstrap';\r\n\r\n// import TransitionForInputs from '../TransitionForInputs/TransitionForInputs'\r\n\r\nimport Indicator from './IndicatorStandard';\r\n\r\nimport clsx from 'clsx';\r\nimport './AddFilesStandard.css';\r\n\r\nconst SelectedFiles = ({\r\n questionObject,\r\n isTouched,\r\n removeError,\r\n removeFile,\r\n showIndicator = true,\r\n errorMessageAddingFile,\r\n activatedLanguage,\r\n numberOfFiles,\r\n setNumberOfFiles,\r\n removeUploadErrors,\r\n}: any) => {\r\n const theDiv = useRef<HTMLDivElement>(null);\r\n\r\n const remove = (file: any) => {\r\n let newFiles = questionObject.files.filter((f: any) => f !== file);\r\n const newCountOfFiles = newFiles.length;\r\n setNumberOfFiles(newCountOfFiles);\r\n\r\n let e = { target: { value: `${newCountOfFiles} files`, files: newFiles } };\r\n\r\n const targetValue = e.target.value === '0 files' ? '' : e.target.value;\r\n e = { ...e, target: { ...e.target, value: targetValue } };\r\n\r\n isTouched(e, questionObject);\r\n\r\n removeFile(newCountOfFiles);\r\n };\r\n\r\n useEffect(() => {\r\n numberOfFiles > 0 && theDiv.current?.scrollIntoView({ behavior: 'smooth', block: 'end' });\r\n }, [numberOfFiles]);\r\n\r\n const useWindowWidth = (): number => {\r\n const [windowWidth, setWindowWidth] = useState<number>(window.innerWidth);\r\n useEffect(() => {\r\n const handleResize = () => {\r\n setWindowWidth(window.innerWidth);\r\n };\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n return windowWidth;\r\n };\r\n\r\n const windowWidth = useWindowWidth();\r\n\r\n return (\r\n <>\r\n <div>\r\n {errorMessageAddingFile.length > 0 && (\r\n <div className=\"pts-errorSummary-container pts-addFile-error-container\">\r\n <span aria-hidden=\"true\" className=\"errorDot\">\r\n !\r\n </span>\r\n <div className=\"addFile-error-list-container\">\r\n <ul aria-hidden={true} className=\"fileListUnorderedList\" id=\"errorSummary-ul\">\r\n {' '}\r\n {errorMessageAddingFile.map((errorObj: any, index: any) => {\r\n const errorFileName = errorObj.FileName;\r\n let mobileFirstFileName = errorObj.FileName.split('.').shift();\r\n mobileFirstFileName =\r\n mobileFirstFileName.length > 8\r\n ? mobileFirstFileName.substring(0, 8) + '..'\r\n : mobileFirstFileName;\r\n const fileType = errorObj.FileName.split('.').pop();\r\n\r\n mobileFirstFileName = mobileFirstFileName + '.' + fileType;\r\n return (\r\n <li>\r\n <React.Fragment key={`error-${errorObj.FileName}-${index}`}>\r\n <div>\r\n <div className=\"fileInListContainer\">\r\n <div className=\"fileInList\" key={index}>\r\n <Row>\r\n <Col>\r\n {windowWidth < 768 ? (\r\n <span className=\"mobileFirstFileName\">\r\n {mobileFirstFileName}\r\n </span>\r\n ) : (\r\n <span className=\"desktopFileName\">{errorObj.FileName}</span>\r\n )}\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col\r\n className=\"errorMessageAddingFile\"\r\n {...(activatedLanguage === 'sv'\r\n ? {\r\n 'aria-label': `${errorFileName} ${errorObj.svMessage}`,\r\n }\r\n : {\r\n 'aria-label': `${errorFileName} ${errorObj.enMessage}`,\r\n })}\r\n >\r\n {activatedLanguage === 'sv'\r\n ? errorObj.svMessage\r\n : errorObj.enMessage}\r\n </Col>\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </div>\r\n <div className=\"addFile-error-close-button\">\r\n <button\r\n className=\"selectedFilesLinkButton error-close\"\r\n onClick={() => {\r\n removeError();\r\n }}\r\n aria-label={\r\n activatedLanguage === 'sv' ? `Stäng felmeddelande` : `Close error message`\r\n }\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M0.75 12.75L12.75 0.75M0.75 0.75L12.75 12.75\"\r\n stroke=\"#8E0039\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {questionObject.files.length > 0 && (\r\n <ul className=\"fileListUnorderedList\" aria-label=\"Uppladdade filer\">\r\n {questionObject.files.map((file: any, index: any) => {\r\n const indicatorfileName = file.FileName;\r\n let mobileFirstFileName = file.FileName.split('.').shift();\r\n mobileFirstFileName =\r\n mobileFirstFileName.length > 8\r\n ? mobileFirstFileName.substring(0, 8) + '..'\r\n : mobileFirstFileName;\r\n const fileType = file.FileName.split('.').pop();\r\n\r\n mobileFirstFileName = mobileFirstFileName + '.' + fileType;\r\n\r\n return (\r\n <li>\r\n <React.Fragment key={`file-${file.FileName}-${index}`}>\r\n <div>\r\n <div className=\"fileInListContainer\">\r\n <div className=\"fileInList\" key={index}>\r\n <div className=\"fileItem\">\r\n <Col style={{ maxWidth: '30px' }}>\r\n <span aria-hidden=\"true\" className=\"uploadedDot\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"8\"\r\n height=\"8\"\r\n viewBox=\"0 0 8 8\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M1 4.65913L2.8 6.45913L7 1.35913\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n />\r\n </svg>\r\n </span>\r\n </Col>\r\n <Col>\r\n {windowWidth < 768 ? (\r\n <span className=\"mobileFirstFileName\">\r\n {mobileFirstFileName} ({Math.ceil(file.FileSize / (1024 * 1024))}{' '}\r\n MB)\r\n </span>\r\n ) : (\r\n <span className=\"desktopFileName\">\r\n {file.FileName} (\r\n <span className=\"fileSizeText\">\r\n {file.FileSize < 1024 * 1024\r\n ? `${Math.round(file.FileSize / 1024)} kB`\r\n : `${(file.FileSize / (1024 * 1024)).toFixed(1)} MB`}\r\n </span>{' '}\r\n )\r\n </span>\r\n )}\r\n </Col>\r\n\r\n <Col className=\"lastCol\">\r\n <button\r\n className=\"selectedFilesLinkButton\"\r\n onClick={() => remove(file)}\r\n aria-label={\r\n activatedLanguage === 'sv'\r\n ? `Radera ${indicatorfileName}`\r\n : `Delete ${indicatorfileName}`\r\n }\r\n >\r\n {activatedLanguage === 'sv' ? 'Radera' : 'Delete'}\r\n </button>\r\n </Col>\r\n </div>\r\n\r\n {showIndicator && (\r\n <Row>\r\n <Col style={{ width: '100%', padding: 0 }}>\r\n <Indicator filename={indicatorfileName} />\r\n </Col>\r\n </Row>\r\n )}\r\n\r\n <Row style={{ marginTop: '12px', marginBottom: '12px' }}>\r\n <Col className=\"makeSpace\"></Col>\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n )}\r\n\r\n <div ref={theDiv} className=\"pts-clipboard-container\"></div>\r\n </>\r\n );\r\n};\r\n\r\nexport default SelectedFiles;\r\n","import React, { useState } from 'react'\r\nimport clsx from 'clsx'\r\nimport './AddFilesStandard.css'\r\n\r\nconst Indicator = (filename: any) => {\r\n const [uploadPercentage, setUploadPercentage] = useState(0)\r\n const [uploadDone, setUploadDone] = useState(false)\r\n\r\n /* setTimeout(() => {\r\n setUploadPercentage(100)\r\n setUploadDone(true)\r\n }, 1000) */\r\n //setUploadDone(true)\r\n\r\n return (\r\n <>\r\n <div className={clsx('uploadIndicator', 'uploadDone')}></div>\r\n {/* <div\r\n role=\"progressbar\"\r\n className={clsx('uploadIndicator', uploadDone ? 'uploadDone' : 'uploadLoading')}\r\n {...(uploadDone\r\n ? {\r\n 'aria-live': 'polite',\r\n 'aria-label': `${filename.filename} är uppladdad`,\r\n }\r\n : {})}\r\n ></div> */}\r\n </>\r\n )\r\n}\r\nexport default Indicator\r\n","import { FC, useEffect, useState } from 'react';\r\nimport React from 'react';\r\nimport { SingleCheckboxProps } from './SingleCheckboxStandard.types';\r\nimport { IQuestion } from '../../../types/TypesStandard.types';\r\n\r\nconst SingleCheckbox: FC<SingleCheckboxProps> = ({\r\n question,\r\n handleQuestionInputChange,\r\n showPreview = false,\r\n activatedLanguage = 'sv',\r\n}) => {\r\n const questionId = `question-${question.id}`;\r\n const inputId = `checkbox-${question.id}`;\r\n const aboutId = `about-${question.id}`;\r\n const errorId = `error-${question.id}`;\r\n\r\n const [checked, setChecked] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n if (question.answer && question.answer === 'true') {\r\n setChecked(true);\r\n } else {\r\n setChecked(false);\r\n }\r\n }, [question.answer]);\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n setChecked(event.target.checked);\r\n let answer = event.target.checked ? 'true' : 'false';\r\n\r\n const e = { target: { value: answer } };\r\n handleQuestionInputChange(e, question);\r\n };\r\n\r\n return (\r\n <>\r\n {!showPreview && question.visible && (\r\n <div id={questionId} className=\"pts-root-question pts-singleCheckbox-container\">\r\n <div className=\"pts-singleCheckbox-row\">\r\n <input\r\n type=\"checkbox\"\r\n name={`question-name-${question.id}`}\r\n id={`${inputId}`}\r\n value={question.questionLabel ?? ''}\r\n checked={checked}\r\n onChange={(e) => handleInputChange(e)}\r\n className={\r\n question.hasValidationError ? 'pts-root-question-input-error-border' : undefined\r\n }\r\n disabled={question.questionExtraAttribute?.disabled}\r\n required={question.isQuestionMandatory}\r\n aria-required={question.isQuestionMandatory}\r\n aria-describedby={\r\n [question.aboutText ? aboutId : null].filter(Boolean).join(' ') || undefined\r\n }\r\n aria-invalid={question.hasValidationError}\r\n aria-errormessage={question.hasValidationError ? errorId : undefined}\r\n />\r\n <label htmlFor={`${inputId}`}>{question.questionLabel}</label>\r\n {question.isQuestionMandatory && (\r\n <span aria-hidden={true} className=\"pts-root-mandatoryAsterisk\">\r\n *\r\n </span>\r\n )}{' '}\r\n </div>\r\n {question.aboutText && (\r\n <div\r\n id={aboutId}\r\n className=\"pts-about\"\r\n dangerouslySetInnerHTML={{ __html: question.aboutText }}\r\n />\r\n )}{' '}\r\n {question.hasValidationError && (\r\n <div className=\"pts-root-error\" id={errorId}>\r\n <span aria-hidden={true} className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"sr-only\">Valideringsfel</span>\r\n <span className=\"errorText\">{question.validationDefaultMessesege}</span>\r\n </div>\r\n )}{' '}\r\n </div>\r\n )}{' '}\r\n {showPreview && (\r\n <PreviewSingleCheckbox activatedLanguage={activatedLanguage} question={question} />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default SingleCheckbox;\r\n\r\nconst PreviewSingleCheckbox = ({\r\n question,\r\n activatedLanguage,\r\n}: {\r\n activatedLanguage: SingleCheckboxProps['activatedLanguage'];\r\n question: IQuestion;\r\n}) => {\r\n const previewId = `preview-${question.id}`;\r\n\r\n return (\r\n <>\r\n <dt id={`question-${previewId}`}>{question.previewLabel ?? question.questionLabel}</dt>\r\n\r\n {question.answer?.trim() ? (\r\n <dd className=\"pts-singleCheckbox-preview pts-root-answer\" id={`answer-${previewId}`}>\r\n {question.answer === 'false'\r\n ? activatedLanguage === 'sv'\r\n ? 'Nej'\r\n : 'No'\r\n : activatedLanguage === 'sv'\r\n ? 'Ja'\r\n : 'Yes'}\r\n </dd>\r\n ) : (\r\n <dd\r\n className=\"pts-singleCheckbox-preview pts-root-answer\"\r\n id={`answer-${previewId}`}\r\n >\r\n {activatedLanguage === 'sv' ? 'Nej' : 'No'}\r\n </dd>\r\n )}\r\n </>\r\n );\r\n};\r\n","import { isValid, parseISO } from 'date-fns'\r\n\r\n/**\r\n * Kontrollerar om en fråga har ett valideringsfel baserat på dess egenskaper och valideringstyper.\r\n *\r\n * @param question - Den fråga som ska kontrolleras.\r\n * @param questions - Alla frågor i formuläret (behövs för gruppvalideringar).\r\n * @returns `true` om frågan har ett valideringsfel, annars `false`.\r\n *\r\n */\r\nconst hasQuestionValidationError = (question: any, questions: any[]): boolean => {\r\n let error: boolean = false\r\n if (question.isQuestionMandatory) {\r\n if (question.isTouched === false) {\r\n error = true\r\n }\r\n if (question.answer.trim() === '') {\r\n error = true\r\n }\r\n if (question.answer === 'false' && question.validationType?.find((e: any) => e === 'mustBeTrue')) {\r\n error = true\r\n }\r\n }\r\n if (\r\n question.validationType?.find((e: any) => e === 'email') &&\r\n (question.isQuestionMandatory || question.answer !== '')\r\n ) {\r\n const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/\r\n if (!emailRegex.test(question.answer)) {\r\n error = true\r\n }\r\n }\r\n\r\n if (\r\n question.validationType?.find((e: any) => e === 'fourNumbers') &&\r\n (question.isQuestionMandatory || question.answer !== '')\r\n ) {\r\n const fourNumbersRegex = /^\\d{4}$/.test(question.answer)\r\n if (!fourNumbersRegex) {\r\n error = true\r\n }\r\n }\r\n\r\n if (question.validationType?.find((e: any) => e === 'isDateFormatValid') && question.answer !== '') {\r\n const regex = /^\\d{4}-\\d{2}-\\d{2}$/\r\n if (!regex.test(question.answer)) {\r\n error = true\r\n }\r\n\r\n const isValidDate = (dateString: string): boolean => {\r\n const date = parseISO(dateString)\r\n return isValid(date)\r\n }\r\n\r\n const validDate = isValidDate(question.answer)\r\n\r\n if (!validDate) {\r\n error = true\r\n }\r\n }\r\n\r\n const groupCheckError = question.validationType?.find((e: any) => e.startsWith('groupCheck-'))\r\n\r\n if (groupCheckError) {\r\n const ids = groupCheckError.replace('groupCheck-', '').split('-')\r\n\r\n const relatedAnswers = ids.map((id: string) => questions.find((q: any) => q.id?.toString() === id)?.answer)\r\n const currentAnswer = question.answer\r\n const allAnswers = [...relatedAnswers, currentAnswer]\r\n if (allAnswers.every(ans => ans === '')) {\r\n error = true\r\n }\r\n }\r\n\r\n return error\r\n}\r\n\r\nexport default hasQuestionValidationError\r\n","import type { TranslatedAnswers, ApiDataObject } from './createApiDataObject.types';\r\n\r\nconst normalize = (str: string): string => {\r\n return str.toString().toLowerCase().replace(/\\s+/g, '');\r\n};\r\n\r\n/**\r\n * Skapar ett API-anpassat dataobjekt baserat på användarens formulärsvar.\r\n *\r\n * Funktionen går igenom alla frågor och bygger ett objekt som kan skickas till backend.\r\n * - Om en fråga finns i `specialMappedQuestions`, mappas svaret till `option.id` i stället för label.\r\n * - Om `translatedAnswers` innehåller en översättning för frågans `mappingId`, används den.\r\n * - Endast visade frågor (`isDisplayed`) med giltiga svar inkluderas i resultatet.\r\n * - Filuppladdningar (`AddFiles`) inkluderas under egenskapen `files`.\r\n *\r\n * @param data - Lista med alla frågor och deras svar.\r\n * @param specialMappedQuestions - En uppsättning mapping-ID:n som kräver specialhantering av svar.\r\n * @param translatedAnswers - Objekt som innehåller översättningar av svar.\r\n * @returns Ett `ApiDataObject` redo att skickas till backend.\r\n *\r\n */\r\nfunction createApiDataObject(\r\n data: any[],\r\n specialMappedQuestions: Set<string>,\r\n translatedAnswers: TranslatedAnswers,\r\n): ApiDataObject {\r\n return data.reduce((acc: ApiDataObject, question: any) => {\r\n let translatedAnswer = question.answer;\r\n\r\n if (\r\n question.answer &&\r\n typeof question.answer === 'string' &&\r\n Array.isArray(question.options) &&\r\n question.mappingId &&\r\n specialMappedQuestions.has(question.mappingId)\r\n ) {\r\n const answerNormalized = normalize(question.answer);\r\n\r\n const matchingIds = question.options\r\n .filter((option: any) => answerNormalized.includes(normalize(option.label)))\r\n .map((option: any) => `^${option.id}^`);\r\n\r\n if (matchingIds.length > 0) {\r\n translatedAnswer = matchingIds.join(',');\r\n }\r\n } else {\r\n const shouldTranslate = question.mappingId\r\n ? translatedAnswers[question.mappingId]\r\n : undefined;\r\n translatedAnswer = shouldTranslate\r\n ? shouldTranslate[question.answer] || question.answer\r\n : question.answer;\r\n }\r\n\r\n return {\r\n ...acc,\r\n ...(question.mappingId &&\r\n question.isDisplayed &&\r\n question.answer && {\r\n [question.mappingId]: translatedAnswer,\r\n }),\r\n ...(question.questionType === 'AddFiles' &&\r\n question.files?.length &&\r\n question.files.length > 0 && {\r\n files: question.files,\r\n }),\r\n };\r\n }, {} as ApiDataObject);\r\n}\r\n\r\nexport default createApiDataObject;\r\n","import { IStepObject, IQuestion } from '../../types/TypesStandard.types';\r\n\r\n/**\r\n * Förbereder data för förhandsgranskningssidan.\r\n *\r\n * Funktionen grupperar alla synliga frågor (`isDisplayed = true`) utifrån vilket steg\r\n * de tillhör. Resultatet används för att presentera formulärets innehåll steg för steg\r\n * på förhandsgranskningen innan inskick.\r\n *\r\n * @param steps - Lista över alla steg i formuläret (`IStepObject[]`).\r\n * @param questions - Alla frågor i formuläret (`IQuestion[]`).\r\n * @returns En lista av objekt där varje element innehåller ett steg och dess synliga frågor:\r\n */\r\nfunction preparePreviewData(steps: IStepObject[], questions: IQuestion[]): any[] {\r\n return steps\r\n .map((step) => {\r\n const filteredQuestions = questions.filter((q) => q.step === step.step && q.isDisplayed);\r\n\r\n return {\r\n step,\r\n questions: filteredQuestions,\r\n };\r\n })\r\n .filter((group) => group.questions.length > 0);\r\n}\r\n\r\nexport default preparePreviewData;\r\n","/**\r\n * Kontrollerar om en frågas beroenden (dependencies) är uppfyllda.\r\n *\r\n * En fråga kan ha ett eller flera beroenden till andra frågor, där varje beroende anger:\r\n * - vilket fråge-ID det är kopplat till (`LinkedToQuestionId`)\r\n * - vilket svar eller svarsalternativ som krävs (`Answer` eller `questionArrayAnswerId`)\r\n *\r\n * Funktionen går igenom alla beroendekombinationer och returnerar `true` om\r\n * **minst ett** beroendeblock (AND-villkor inom varje block, OR mellan blocken)\r\n * är uppfyllt utifrån datan i `data`-arrayen.\r\n *\r\n * @param data - En lista med alla frågor och deras aktuella svar.\r\n * @param question - Den fråga som har beroenden till andra frågor.\r\n * @returns `true` om frågans beroendevillkor är uppfyllda, annars `false`.\r\n *\r\n */\r\nconst isQuestionDependencySatisfied = (data: any[], question: any): boolean => {\r\n const isParentTrue = (\r\n questionId: number,\r\n questionArrayAnswerId: number,\r\n answer: string,\r\n ): boolean => {\r\n const parent = data.find((q: any) => q.id === questionId);\r\n if (!parent) return false;\r\n\r\n return (\r\n (questionArrayAnswerId !== undefined &&\r\n parent.questionArrayAnswerId === questionArrayAnswerId) ||\r\n parent.answer === answer\r\n );\r\n };\r\n\r\n if (!question.dependsOnOtherQuestion || question.dependsOnOtherQuestion.length === 0)\r\n return false;\r\n\r\n return question.dependsOnOtherQuestion.some((conditions: any[]) =>\r\n conditions.every((cond: any) =>\r\n isParentTrue(cond.LinkedToQuestionId, cond.questionArrayAnswerId, cond.Answer),\r\n ),\r\n );\r\n};\r\n\r\nexport default isQuestionDependencySatisfied;\r\n","import { IQuestion } from '../../types';\r\nimport isDependsOnOtherQuestionTrue from '../isQuestionDependencySatisfied';\r\n\r\n/**\r\n * Uppdaterar frågor med information om synlighet och valideringsfel.\r\n *\r\n * För varje fråga:\r\n * - Om frågan är beroende av andra frågor,\r\n * avgörs synligheten av villkoret`.\r\n * - Om frågans ID finns i `validationErrorsList` markeras den som att den har valideringsfel.\r\n *\r\n * @param questions - En array av frågeobjekt (`IQuestion[]`).\r\n * @param validationErrorsList - En lista av fråge-ID:n som har valideringsfel.\r\n * @returns En ny lista med frågor där `visible` och `hasValidationError` är uppdaterade.\r\n *\r\n */\r\nconst updateQuestionsAndCategoriesVisibilityAndErrors = (\r\n questions: IQuestion[],\r\n validationErrorsList: number[],\r\n) => {\r\n const updatedQuestions = questions.map((question: any) => {\r\n const hasLinkedConditions =\r\n question.dependsOnOtherQuestion && question.dependsOnOtherQuestion.length > 0;\r\n\r\n const isVisible = hasLinkedConditions\r\n ? isDependsOnOtherQuestionTrue(questions, question)\r\n : true;\r\n\r\n const hasError = validationErrorsList.includes(question.id);\r\n\r\n return { ...question, visible: isVisible, hasValidationError: hasError };\r\n });\r\n\r\n return updatedQuestions;\r\n};\r\n\r\nexport default updateQuestionsAndCategoriesVisibilityAndErrors;\r\n","import hasQuestionValidationError from '../hasQuestionValidationError'\r\n\r\n/**\r\n * Går igenom alla synliga frågor i aktuella steget och returnerar\r\n * en lista med fråge-ID:n som har valideringsfel.\r\n *\r\n * Endast frågor som är markerade som `visible` och som inte\r\n * valideras korrekt enligt config inkluderas i resultatet.\r\n *\r\n * @param {Object} currentStepQuestions Aktuella steget (stepObjekt) med alla dess kategorier,\r\n * questionGroups och questions.\r\n *\r\n * @param {Array} questions En lista med alla frågor i formuläret.\r\n * Används för att avgöra om en fråga validerar\r\n * korrekt utifrån hela frågedatat.\r\n *\r\n * @returns En array med ID:n (`number[]`) för frågor som har valideringsfel.\r\n */\r\nfunction findVisibleQuestionsWithValidationErrors(currentStepQuestions: any, questions: any): number[] {\r\n const errorQuestions: number[] = []\r\n\r\n currentStepQuestions.categories.forEach((category: any) => {\r\n if (category.visible) {\r\n category.questionGroups.forEach((group: any) => {\r\n group.questions.forEach((question: any) => {\r\n if (question.visible && hasQuestionValidationError(question, questions)) {\r\n errorQuestions.push(question.id)\r\n }\r\n })\r\n })\r\n }\r\n })\r\n\r\n return errorQuestions\r\n}\r\n\r\nexport default findVisibleQuestionsWithValidationErrors\r\n","import { IQuestion, IStepObject, IStepQuestionData } from '../../types';\r\nimport doCategoriesAndQuestionsVisible from '../updateQuestionsAndCategoriesVisibilityAndErrors';\r\n\r\n/**\r\n * Bygger upp en hierarkisk datastruktur för formuläret, grupperad per steg, kategori och frågegrupp.\r\n *\r\n * Funktionen används för att strukturera frågedata så att varje steg innehåller:\r\n * - En lista av kategorier\r\n * - Varje kategori innehåller sina frågegrupper\r\n * - Varje frågegrupp innehåller sina frågor\r\n *\r\n * Dessutom uppdateras frågor med `visible` baserat på dess beroende till andra frågor och `hasValidationError` baserat på aktuell valideringsstatus.\r\n *\r\n * @param questions - Alla frågor i formuläret.\r\n * @param steps - Lista över alla steg i formuläret.\r\n * @param validationErrorsList - Lista med fråge-ID:n som har valideringsfel.\r\n * @returns En lista av stegobjekt med tillhörande kategorier och grupper.\r\n *\r\n */\r\nfunction buildStepCategoryGroupQuestionStructure(\r\n questions: IQuestion[],\r\n steps: IStepObject[],\r\n validationErrorsList: number[],\r\n): any[] {\r\n const formatedQuestions = doCategoriesAndQuestionsVisible(questions, validationErrorsList);\r\n\r\n const result = [];\r\n const stepsMap = new Map<number, Map<string, Map<string, any[]>>>();\r\n\r\n formatedQuestions.forEach((question) => {\r\n const step = question.step ?? 0;\r\n const category = question.categoryLabel?.trim() || 'Okänd kategori';\r\n const groupId = question.questionGroupId || 'unknown';\r\n\r\n if (!stepsMap.has(step)) {\r\n stepsMap.set(step, new Map());\r\n }\r\n\r\n const categoryMap = stepsMap.get(step)!;\r\n\r\n if (!categoryMap.has(category)) {\r\n categoryMap.set(category, new Map());\r\n }\r\n\r\n const groupMap = categoryMap.get(category)!;\r\n\r\n if (!groupMap.has(groupId)) {\r\n groupMap.set(groupId, []);\r\n }\r\n\r\n groupMap.get(groupId)!.push(question);\r\n });\r\n for (const [step, categoryMap] of Array.from(stepsMap.entries())) {\r\n const categories: IStepQuestionData['categories'] = [];\r\n\r\n for (const [category, groupMap] of Array.from(categoryMap.entries())) {\r\n const questionGroups: {\r\n questionGroupId: string;\r\n questionGroupType: string;\r\n questions: IQuestion[];\r\n legend?: string;\r\n }[] = [];\r\n\r\n for (const [groupId, questions] of Array.from(groupMap.entries())) {\r\n questionGroups.push({\r\n questionGroupId: groupId,\r\n questionGroupType: questions[0].questionGroupType,\r\n questions,\r\n legend: questions[0].legend,\r\n });\r\n }\r\n\r\n const isVisible = questionGroups.some((group) =>\r\n group.questions.some((question) => question.visible),\r\n );\r\n\r\n categories.push({\r\n category,\r\n categoryDescription: questionGroups[0].questions[0].categoryDescription || '',\r\n visible: isVisible,\r\n isDisplayed: isVisible,\r\n questionGroups,\r\n });\r\n }\r\n\r\n const stepHeadline = steps.find((s) => s.step === step)?.stepHeadline || undefined;\r\n const stepDescription = steps.find((s) => s.step === step)?.stepDescription || undefined;\r\n result.push({\r\n step,\r\n stepHeadline,\r\n stepDescription,\r\n categories,\r\n });\r\n }\r\n\r\n result.push({\r\n step: steps.length,\r\n stepHeadline: steps[steps.length - 1].stepHeadline,\r\n stepDescription: steps[steps.length - 1].stepDescription,\r\n });\r\n\r\n return result;\r\n}\r\n\r\nexport default buildStepCategoryGroupQuestionStructure;\r\n","import { createSlice, PayloadAction, createSelector } from '@reduxjs/toolkit';\r\n\r\nexport interface LanguageEntry {\r\n language: string;\r\n backButton: string;\r\n forwardButton: string;\r\n sendButton: string;\r\n}\r\n\r\nexport interface LanguageSupportConfig {\r\n activatedLanguage: string;\r\n languageSupport: LanguageEntry[];\r\n}\r\n\r\nexport interface LanguageState {\r\n activatedLanguage: string;\r\n languageSupport: LanguageEntry[];\r\n languageSupportLoaded: boolean;\r\n backButton: string;\r\n forwardButton: string;\r\n sendButton: string;\r\n}\r\n\r\nexport const pickLang = (cfg: LanguageSupportConfig, lang: string): LanguageEntry => {\r\n return cfg.languageSupport.find((l) => l.language === lang) ?? cfg.languageSupport[0];\r\n};\r\n\r\nexport const createGlobalLanguageSlice = (\r\n initialConfig: LanguageSupportConfig,\r\n options?: { name?: string },\r\n) => {\r\n const name = options?.name ?? 'languageOverall';\r\n const initialLang = pickLang(initialConfig, initialConfig.activatedLanguage);\r\n\r\n const initialState: LanguageState = {\r\n activatedLanguage: initialConfig.activatedLanguage,\r\n languageSupport: initialConfig.languageSupport,\r\n languageSupportLoaded: true,\r\n backButton: initialLang.backButton,\r\n forwardButton: initialLang.forwardButton,\r\n sendButton: initialLang.sendButton,\r\n };\r\n\r\n const slice = createSlice({\r\n name,\r\n initialState,\r\n reducers: {\r\n setActivatedLanguage: (state, action: PayloadAction<string>) => {\r\n state.activatedLanguage = action.payload;\r\n const lang = pickLang(\r\n { activatedLanguage: state.activatedLanguage, languageSupport: state.languageSupport },\r\n action.payload,\r\n );\r\n state.backButton = lang.backButton;\r\n state.forwardButton = lang.forwardButton;\r\n state.sendButton = lang.sendButton;\r\n },\r\n\r\n setGlobalLangauage: (state, action: PayloadAction<LanguageSupportConfig>) => {\r\n state.languageSupport = action.payload.languageSupport;\r\n state.activatedLanguage = action.payload.activatedLanguage;\r\n const lang = pickLang(action.payload, action.payload.activatedLanguage);\r\n state.backButton = lang.backButton;\r\n state.forwardButton = lang.forwardButton;\r\n state.sendButton = lang.sendButton;\r\n state.languageSupportLoaded = true;\r\n },\r\n },\r\n });\r\n\r\n return slice;\r\n};\r\n\r\nexport const makeglobalLanguageSelectors = <TState>(\r\n selectSlice: (state: TState) => LanguageState,\r\n) => {\r\n const selectState = selectSlice;\r\n\r\n const selectActivatedLanguage = (state: TState) => selectState(state).activatedLanguage;\r\n const selectGlobalLanguageLoaded = (state: TState) => selectState(state).languageSupportLoaded;\r\n const selectGlobalLanguageState = (state: TState) => selectState(state);\r\n\r\n const selectGlobalLanguage = createSelector(\r\n [selectState, (_: TState, activatedLanguage: string) => activatedLanguage],\r\n (applicationContent, activatedLanguage) => {\r\n const match = applicationContent.languageSupport.find(\r\n (l) => l.language === activatedLanguage,\r\n );\r\n if (!match) return { ...applicationContent };\r\n return {\r\n ...applicationContent,\r\n backButton: match.backButton,\r\n forwardButton: match.forwardButton,\r\n sendButton: match.sendButton,\r\n };\r\n },\r\n );\r\n\r\n return {\r\n selectActivatedLanguage,\r\n selectGlobalLanguageLoaded,\r\n selectGlobalLanguageState,\r\n selectGlobalLanguage,\r\n };\r\n};\r\n\r\nexport type { PayloadAction } from '@reduxjs/toolkit';\r\n","import {\r\n createSlice,\r\n PayloadAction,\r\n createSelector,\r\n type ActionReducerMapBuilder,\r\n} from '@reduxjs/toolkit';\r\nimport type { IFormState, IQuestion } from '../../types/TypesStandard.types';\r\n\r\nconst mapQuestionById = (\r\n questions: any[],\r\n id: any,\r\n updater: (q: IQuestion) => IQuestion,\r\n): IQuestion[] => {\r\n return questions.map((q) => (q.id === id ? updater(q) : q));\r\n};\r\n\r\n/**\r\n * createFormSlice skapar ett Redux-slice som hanterar allt globalt state\r\n * kopplat till formuläret såsom applicationContent, steps och questions\r\n */\r\nexport const createFormSlice = (\r\n initialState: IFormState,\r\n options?: {\r\n name?: string;\r\n extraReducers?: (builder: ActionReducerMapBuilder<IFormState>) => void;\r\n },\r\n) => {\r\n const slice = createSlice({\r\n name: options?.name ?? 'Form',\r\n initialState,\r\n reducers: {\r\n /**\r\n * Laddar in eller uppdaterar applikationens övergripande textdata och metadata i.\r\n * global state. Sätter även formLoaded = true när innehållet är färdiginläst.\r\n */\r\n setApplicationContent: (state, action: PayloadAction<any>) => {\r\n state.applicationContent = action.payload;\r\n state.formLoaded = true;\r\n },\r\n /**\r\n * Laddar in eller uppdaterar step-data i global state.\r\n */\r\n setStep: (state, action: PayloadAction<any>) => {\r\n state.steps = action.payload;\r\n },\r\n /**\r\n * Laddar in eller uppdaterar question-data i global state.\r\n */\r\n setQuestion: (state, action: PayloadAction<any>) => {\r\n state.questions = action.payload;\r\n },\r\n /**\r\n * Uppdaterar svaret (answer) för en specifik fråga i global state.\r\n */\r\n updateAnswer: (state, action: PayloadAction<any>) => {\r\n state.questions = mapQuestionById(state.questions, action.payload.id, (q) => ({\r\n ...q,\r\n answer: action.payload.answer,\r\n }));\r\n },\r\n /** Uppdaterar filer (files) för en specifik fråga i global state */\r\n addFiles: (state, action: PayloadAction<any>) => {\r\n state.questions = mapQuestionById(state.questions, action.payload.id, (q) => ({\r\n ...q,\r\n files: action.payload.files,\r\n }));\r\n },\r\n /**\r\n * Sätter `isDisplayed = false` på alla frågor vars stegnummer är\r\n * större än eller lika med det aktiva steget.\r\n *\r\n * Används för att nollställa vilka frågor som är markerade som visade\r\n * innan en ny renderingsomgång. Endast frågor som faktiskt visas i UI:t\r\n * kommer senare få `isDisplayed = true` igen.\r\n */\r\n clearDisplayedFromStep: (state, action: PayloadAction<any>) => {\r\n const { activeStep } = action.payload;\r\n state.questions = state.questions.map((qObject: any) => {\r\n if (qObject.step >= activeStep) {\r\n return {\r\n ...qObject,\r\n isDisplayed: false,\r\n };\r\n }\r\n return qObject;\r\n });\r\n },\r\n /**\r\n * Sätter `isDisplayed = true` för en specifik fråga i global state.\r\n */\r\n setQuestionDisplayed: (state, action: PayloadAction<any>) => {\r\n state.questions = mapQuestionById(state.questions, action.payload.id, (q) => ({\r\n ...q,\r\n isDisplayed: action.payload.isDisplayed,\r\n }));\r\n },\r\n /** Tar bort svar på frågor framåt i formuläret som är beroende av en\r\n * specifik fråga som har ändrats.\r\n */\r\n resetDependentAnswersForward: (state, action: PayloadAction<any>) => {\r\n state.questions = state.questions.map((qObject: any) => {\r\n let questionExistInLinkedToQuestion = false;\r\n\r\n if (qObject.dependsOnOtherQuestion !== undefined) {\r\n questionExistInLinkedToQuestion = qObject.dependsOnOtherQuestion.some(\r\n (innerArray: any) =>\r\n innerArray.some((item: any) => item.LinkedToQuestionId === action.payload.id),\r\n );\r\n }\r\n\r\n const shouldClear =\r\n qObject.id > action.payload.id &&\r\n !qObject.isDisplayed &&\r\n qObject.dependsOnOtherQuestion !== undefined &&\r\n questionExistInLinkedToQuestion;\r\n\r\n if (shouldClear) {\r\n return {\r\n ...qObject,\r\n answer: '',\r\n };\r\n }\r\n\r\n return qObject;\r\n });\r\n },\r\n },\r\n extraReducers: (builder) => {\r\n if (options?.extraReducers) {\r\n options.extraReducers(builder);\r\n }\r\n },\r\n });\r\n\r\n return slice;\r\n};\r\n\r\n/**\r\n * Skapar ett set av selectors för formulärets globala state.\r\n\r\n */\r\nexport const makeFormSelectors = <TState>(selectSlice: (state: TState) => IFormState) => {\r\n /**\r\n * Returnerar hela form-slicens state.\r\n */\r\n const selectFormState = (state: TState) => selectSlice(state);\r\n /**\r\n * Returnerar true om formulärets data har laddats in i global state.\r\n */\r\n const selectIsFormLoaded = (state: TState) => selectSlice(state).formLoaded;\r\n\r\n /**\r\n * Returnerar applicationContent - applikationens textinnehåll och metadata -\r\n * anpassat efter valt språk. Selectorn hämtar rätt språkversion beroende på\r\n * aktiva språket och extraherar de språkberoende fälten:\r\n * headline, body,linksForMoreInfo, pageTitle, textblocks\r\n *\r\n */\r\n const selectApplicationContentFromLanguageSupport = createSelector(\r\n [\r\n (state: TState) => selectSlice(state).applicationContent,\r\n (_: TState, activatedLanguage: string) => activatedLanguage,\r\n ],\r\n (applicationContent: any, activatedLanguage: string) => {\r\n const languageSupport = applicationContent?.languageSupport?.find(\r\n (lang: any) => lang.language === activatedLanguage,\r\n );\r\n\r\n if (!languageSupport) {\r\n return {\r\n headline: '',\r\n body: '',\r\n linksForMoreInfo: [],\r\n pageTitle: '',\r\n textblocks: [],\r\n };\r\n }\r\n\r\n return {\r\n headline: languageSupport.headline,\r\n body: languageSupport.body,\r\n linksForMoreInfo: languageSupport.linksForMoreInfo,\r\n pageTitle: languageSupport.pageTitle,\r\n textblocks: languageSupport.textblocks,\r\n languageSupport: applicationContent?.languageSupport,\r\n };\r\n },\r\n );\r\n\r\n const selectStepFromLanguageSupport = createSelector(\r\n [\r\n (state: TState) => selectSlice(state).steps,\r\n (_: TState, activatedLanguage: string) => activatedLanguage,\r\n ],\r\n (steps: any[], activatedLanguage: string) => {\r\n return steps.map((stepperObject: any) => {\r\n let languageSupport = stepperObject.languageSupport.find(\r\n (lang: any) => lang.language === activatedLanguage,\r\n );\r\n\r\n if (!languageSupport) {\r\n languageSupport = {};\r\n }\r\n\r\n return {\r\n ...stepperObject,\r\n stepHeadline: languageSupport.stepHeadline,\r\n stepDescription: languageSupport.stepDescription,\r\n shortNameInStepper: languageSupport.shortNameInStepper,\r\n shortNameInPreview: languageSupport.shortNameInPreview,\r\n pageTitle: languageSupport.pageTitle,\r\n };\r\n });\r\n },\r\n );\r\n\r\n const selectQuestionFromLanguageSupport = createSelector(\r\n [\r\n (state: TState) => selectSlice(state).questions,\r\n (_: TState, activatedLanguage: string) => activatedLanguage,\r\n ],\r\n (questions: any[], activatedLanguage: string) => {\r\n return questions.map((qObject: any) => {\r\n let languageSupport = qObject.languageSupport.find(\r\n (lang: any) => lang.language === activatedLanguage,\r\n );\r\n\r\n if (!languageSupport) {\r\n languageSupport = {};\r\n }\r\n\r\n return {\r\n ...qObject,\r\n categoryLabel: languageSupport.categoryLabel,\r\n categoryDescription: languageSupport.categoryDescription,\r\n questionLabel: languageSupport.questionLabel,\r\n legend: languageSupport.legend,\r\n previewLabel: languageSupport.previewLabel,\r\n aboutText: languageSupport.aboutText,\r\n options: languageSupport.options,\r\n validationDefaultMessesege: languageSupport.validationDefaultMessesege,\r\n validationSummaryLabel: languageSupport.validationSummaryLabel,\r\n };\r\n });\r\n },\r\n );\r\n\r\n return {\r\n selectFormState,\r\n selectIsFormLoaded,\r\n selectApplicationContentFromLanguageSupport,\r\n selectStepFromLanguageSupport,\r\n selectQuestionFromLanguageSupport,\r\n };\r\n};\r\n","export interface CookieConsentConfig {\r\n cookieName: string;\r\n choiceKey: string;\r\n expiryYears?: number;\r\n}\r\n\r\n/**\r\n * Hämtar värdet av en cookie.\r\n *\r\n * @param name - Namnet på cookien som ska hämtas.\r\n * @returns Cookie-värdet som sträng, eller `null` om cookien inte finns.\r\n */\r\nconst getCookie = (name: string): string | null => {\r\n const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));\r\n return match ? match[2] : null;\r\n};\r\n\r\n/**\r\n * Skapar eller uppdaterar en cookie.\r\n *\r\n * @param name - Namnet på cookien.\r\n * @param value - Cookie-värdet.\r\n * @param expirationDate - Valfritt utgångsdatum (UTC-datum).\r\n */\r\nconst setCookie = (name: string, value: string, expirationDate?: Date): void => {\r\n let cookieString = `${name}=${value}; path=/; SameSite=Strict`;\r\n\r\n if (expirationDate) {\r\n cookieString += `; expires=${expirationDate.toUTCString()}`;\r\n }\r\n\r\n if (window.location.protocol === 'https:') {\r\n cookieString += '; Secure';\r\n }\r\n\r\n document.cookie = cookieString;\r\n};\r\n\r\n/**\r\n * Tar bort en cookie genom att sätta ett förfallet datum.\r\n *\r\n * @param name - Namnet på cookien som ska tas bort.\r\n */\r\nconst removeCookie = (name: string): void => {\r\n const pastDate = new Date(0);\r\n setCookie(name, '', pastDate);\r\n};\r\n\r\n/**\r\n * Skapar en uppsättning hjälpfunktioner för att hantera cookie-samtycke.\r\n *\r\n * @param config - Konfiguration för cookienamn, valnyckel och utgångstid.\r\n * @returns Ett objekt med funktioner för att acceptera, neka och läsa cookie-status.\r\n *\r\n */\r\nexport const createCookieConsent = (config: CookieConsentConfig) => {\r\n const { cookieName, choiceKey, expiryYears = 1 } = config;\r\n\r\n const acceptCookies = () => {\r\n const expires = new Date();\r\n expires.setFullYear(expires.getFullYear() + expiryYears);\r\n\r\n setCookie(cookieName, 'true', expires);\r\n localStorage.setItem(cookieName, 'true');\r\n };\r\n\r\n const rejectCookies = () => {\r\n removeCookie(cookieName);\r\n localStorage.removeItem(cookieName);\r\n sessionStorage.setItem(choiceKey, 'true');\r\n };\r\n\r\n const areCookiesAccepted = () => getCookie(cookieName) === 'true';\r\n const hasChoiceBeenMade = () => sessionStorage.getItem(choiceKey) === 'true';\r\n const clearChoiceFromSession = () => sessionStorage.removeItem(choiceKey);\r\n\r\n return {\r\n acceptCookies,\r\n rejectCookies,\r\n areCookiesAccepted,\r\n hasChoiceBeenMade,\r\n clearChoiceFromSession,\r\n };\r\n};\r\n","/**\r\n * Laddar eller tar bort ett externt script beroende på användarens samtycke.\r\n *\r\n * Om `consent` är `true` och scriptet inte redan finns, skapas ett nytt\r\n * `<script>`-element med de angivna attributen.\r\n * Om `consent` är `false` tas scriptet bort från dokumentet.\r\n *\r\n * Denna funktion används t.ex. för att aktivera eller inaktivera tredjepartsskript\r\n * (som analysverktyg) utifrån cookie-samtycke.\r\n *\r\n * @param consent - `true` om scriptet ska laddas, `false` om det ska tas bort.\r\n * @param options - Inställningar för scriptet:\r\n * - `id`: unikt ID för script-elementet (används för att hitta/ta bort det)\r\n * - `src`: käll-URL för scriptet\r\n * - `attributes`: valfria ytterligare HTML-attribut (t.ex. `data-cookieconsent`)\r\n */\r\nexport const toggleScriptByConsent = (\r\n consent: boolean,\r\n options: { id: string; src: string; attributes?: Record<string, string> },\r\n): void => {\r\n if (typeof document === 'undefined') return;\r\n\r\n const existingScript = document.getElementById(options.id);\r\n\r\n if (consent) {\r\n if (!existingScript) {\r\n const script = document.createElement('script');\r\n script.id = options.id;\r\n script.async = true;\r\n script.src = options.src;\r\n\r\n if (options.attributes) {\r\n Object.entries(options.attributes).forEach(([key, value]) =>\r\n script.setAttribute(key, value),\r\n );\r\n }\r\n\r\n document.body.appendChild(script);\r\n }\r\n } else {\r\n if (existingScript) {\r\n existingScript.remove();\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Kontrollerar om ett script med ett visst ID redan är laddat i dokumentet.\r\n *\r\n * @param id - Scriptets unika ID-attribut.\r\n * @returns `true` om scriptet finns i DOM, annars `false`.\r\n */\r\nexport const isScriptLoaded = (id: string): boolean => {\r\n if (typeof document === 'undefined') return false;\r\n return !!document.getElementById(id);\r\n};\r\n\r\n/**\r\n * Tar bort ett script från DOM baserat på dess ID.\r\n *\r\n * @param id - Scriptets ID-attribut.\r\n */\r\nexport const removeScriptById = (id: string): void => {\r\n if (typeof document === 'undefined') return;\r\n const el = document.getElementById(id);\r\n if (el) el.remove();\r\n};\r\n","/**\r\n * Sätter fokus på ett element med givet id (eller HTMLElement),\r\n * sätter tabindex=\"-1\" om inte redan finns, och scrollar dit smidigt.\r\n *\r\n * @param target Elementets id (t.ex. 'main-content') eller själva elementet.\r\n */\r\nexport const focusElement = (target: string | HTMLElement | null) => {\r\n const element =\r\n typeof target === 'string' ? (document.getElementById(target) as HTMLElement | null) : target;\r\n\r\n if (!element) return;\r\n\r\n if (!element.hasAttribute('tabindex')) {\r\n element.setAttribute('tabindex', '-1');\r\n }\r\n\r\n element.focus();\r\n element.scrollIntoView({ behavior: 'smooth' });\r\n};\r\n","/**\r\n * Plockar ut alla id:n från validationType som börjar med \"groupCheck-\"\r\n */\r\nconst getGroupCheckIds = (validationType?: string[]): number[] => {\r\n if (!validationType?.length) return [];\r\n const ids = validationType\r\n .filter((t) => t.startsWith('groupCheck-'))\r\n .flatMap((t) => t.split('-').slice(1))\r\n .map((s) => Number(s))\r\n .filter((n) => Number.isFinite(n));\r\n\r\n return Array.from(new Set(ids));\r\n};\r\n\r\nexport default getGroupCheckIds;\r\n","import * as React from 'react';\r\n/**\r\n * Hook som hanterar öppning och stängning av en laddningsmodal baserat på formulärets status.\r\n * @param formStatus Den aktuella statusen för formuläret ('loading', 'success', 'failed', etc.).\r\n * @param handleModalOpen Funktion för att öppna modalen.\r\n * @param handleModalClose Funktion för att stänga modalen.\r\n * @param mainSelector CSS-selektorn för huvudinnehållet som ska fokuseras efter modal stängs.\r\n */\r\nexport const useFormStatusModal = (\r\n formStatus: string,\r\n handleModalOpen: () => void,\r\n handleModalClose: () => void,\r\n mainSelector = '#main-content',\r\n) => {\r\n React.useEffect(() => {\r\n if (formStatus === 'loading') {\r\n handleModalOpen();\r\n }\r\n\r\n if (formStatus === 'success' || formStatus === 'failed') {\r\n setTimeout(() => {\r\n handleModalClose();\r\n }, 1050);\r\n\r\n const main = document.querySelector(mainSelector) as HTMLElement | null;\r\n if (main) main.focus();\r\n }\r\n }, [formStatus, handleModalOpen, handleModalClose, mainSelector]);\r\n};\r\n","// hooks/useStepperPageTitle.ts\r\nimport { useMemo, useEffect } from 'react';\r\n\r\nexport const usePTSPageTitle = ({\r\n formStatus,\r\n activeStep,\r\n applicationContent,\r\n thankYouBlock,\r\n steps,\r\n fallbackTitle = 'PTS e-tjänst',\r\n}: any) => {\r\n const computedTitle = useMemo(() => {\r\n const baseTitle = applicationContent?.pageTitle ?? '';\r\n const thankYouPageTitle = thankYouBlock?.pageTitle ?? '';\r\n const stepTitle = steps?.[Math.max(0, activeStep - 1)]?.pageTitle ?? '';\r\n\r\n if (formStatus === 'success' && thankYouPageTitle) return thankYouPageTitle;\r\n if (activeStep === 0 && baseTitle) return baseTitle;\r\n return stepTitle || baseTitle || fallbackTitle;\r\n }, [formStatus, activeStep, applicationContent, thankYouBlock, steps, fallbackTitle]);\r\n\r\n useEffect(() => {\r\n document.title = computedTitle;\r\n }, [computedTitle]);\r\n\r\n return computedTitle;\r\n};\r\n","import { useEffect } from 'react'\r\n\r\n/**\r\n * Lägger till en CSS-klass på <body> när användaren interagerar med mus,\r\n * och tar bort den när användaren använder tangentbord (t.ex. Tab).\r\n *\r\n * Används för att styra fokusmarkeringar och förbättra tillgänglighet.\r\n */\r\nexport const useInputMethodDetection = ({\r\n mouseClassName = 'using-mouse',\r\n keyboardToggleKey = 'Tab',\r\n}: {\r\n mouseClassName?: string\r\n keyboardToggleKey?: string\r\n} = {}) => {\r\n useEffect(() => {\r\n const handleMouseDown = () => {\r\n document.body.classList.add(mouseClassName)\r\n }\r\n\r\n const handleKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === keyboardToggleKey) {\r\n document.body.classList.remove(mouseClassName)\r\n }\r\n }\r\n\r\n document.addEventListener('mousedown', handleMouseDown)\r\n document.addEventListener('keydown', handleKeyDown)\r\n\r\n return () => {\r\n document.removeEventListener('mousedown', handleMouseDown)\r\n document.removeEventListener('keydown', handleKeyDown)\r\n }\r\n }, [mouseClassName, keyboardToggleKey])\r\n}\r\n","import { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport {\r\n createCookieConsent,\r\n CookieConsentConfig,\r\n} from '../../helpers/cookieHandler/cookieHandler'; // eller var du har koden\r\n\r\nexport interface UseCookieConsentConfig extends CookieConsentConfig {\r\n /**\r\n * Körs när cookies ändrar status (true = accepterade, false = ej)\r\n */\r\n cookieName: string;\r\n choiceKey: string;\r\n expiryYears?: number;\r\n onConsentChange?: (accepted: boolean) => void;\r\n}\r\n\r\nexport const useCookieConsent = ({\r\n cookieName,\r\n choiceKey,\r\n expiryYears = 1,\r\n onConsentChange,\r\n}: UseCookieConsentConfig) => {\r\n // Skapa de rena funktionerna EN gång per config\r\n const {\r\n acceptCookies,\r\n rejectCookies,\r\n areCookiesAccepted,\r\n hasChoiceBeenMade,\r\n clearChoiceFromSession,\r\n } = useMemo(\r\n () =>\r\n createCookieConsent({\r\n cookieName,\r\n choiceKey,\r\n expiryYears,\r\n }),\r\n [cookieName, choiceKey, expiryYears],\r\n );\r\n\r\n const [showBanner, setShowBanner] = useState(false);\r\n\r\n const handleCookieStateChange = useCallback(() => {\r\n const cookiesNowAccepted = areCookiesAccepted();\r\n\r\n // Låt applikationen (e-tjänsten) avgöra vad som ska hända, t.ex. SiteImprove\r\n if (onConsentChange) {\r\n onConsentChange(cookiesNowAccepted);\r\n }\r\n\r\n setShowBanner(false);\r\n }, [areCookiesAccepted, onConsentChange]);\r\n\r\n useEffect(() => {\r\n const cookiesAccepted = areCookiesAccepted();\r\n const choiceMade = hasChoiceBeenMade();\r\n\r\n // Visa bannern om inget val är gjort\r\n setShowBanner(!cookiesAccepted && !choiceMade);\r\n\r\n // Om användaren redan accepterat → trigga onConsentChange(true)\r\n if (cookiesAccepted && onConsentChange) {\r\n onConsentChange(true);\r\n }\r\n\r\n const handleShowBannerEvent = () => {\r\n clearChoiceFromSession();\r\n setShowBanner(true);\r\n };\r\n\r\n window.addEventListener('showCookieBanner', handleShowBannerEvent);\r\n\r\n return () => {\r\n window.removeEventListener('showCookieBanner', handleShowBannerEvent);\r\n };\r\n }, [areCookiesAccepted, hasChoiceBeenMade, clearChoiceFromSession, onConsentChange]);\r\n\r\n return {\r\n showBanner,\r\n handleCookieStateChange,\r\n acceptCookies,\r\n rejectCookies,\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SingleCheckboxStandard,\r\n MultipleCheckboxesStandard,\r\n RadioMultipleStandard,\r\n TextAreaStandard,\r\n TextFieldStandard,\r\n AddFilesStandard,\r\n CheckboxGroupStandard,\r\n} from '../../input-components';\r\n\r\nimport type { QuestionRendererProps } from './QuestionRenderar.types';\r\n\r\n/**\r\n * Renderar rätt input-komponent baserat på frågans `questionType`.\r\n *\r\n * Denna komponent fungerar som en central \"switch\" som avgör vilken\r\n * formulärkomponent (TextField, Radio, Checkbox, FileUpload, TextArea osv.)\r\n * som ska användas för en given fråga.\r\n *\r\n * @param {object} question - Frågeobjektet som innehåller all metadata\r\n * (questionType, id, svarsalternativ, synlighet, beskrivningar m.m.).\r\n * @param {Function} handleQuestionInputChange - Event-handler som skickas vidare\r\n * till underliggande komponenter och triggas när användaren ändrar ett svar.\r\n * @param {string} activatedLanguage - Det aktiva språket som vissa\r\n * input-komponenter använder för att visa etiketter och texter.\r\n * @param {boolean} showPreview - Styr om frågan ska visas i\r\n * preview-läge istället för som redigerbar input.\r\n */\r\nconst QuestionRenderer: React.FC<QuestionRendererProps> = ({\r\n question,\r\n handleQuestionInputChange,\r\n activatedLanguage = 'sv',\r\n showPreview = false,\r\n}) => {\r\n return (\r\n <>\r\n {question.questionType === 'Radio' && (\r\n <RadioMultipleStandard\r\n question={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n showPreview={showPreview}\r\n />\r\n )}\r\n {question.questionType === 'TextField' && (\r\n <TextFieldStandard\r\n question={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n showPreview={showPreview}\r\n activatedLanguage={activatedLanguage}\r\n />\r\n )}\r\n\r\n {question.questionType === 'AddFiles' && (\r\n <AddFilesStandard\r\n questionObject={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n showPreview={showPreview}\r\n activatedLanguage={activatedLanguage}\r\n visible={question.visible}\r\n />\r\n )}\r\n {question.questionType === 'SingleCheckbox' && (\r\n <SingleCheckboxStandard\r\n question={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n showPreview={showPreview}\r\n activatedLanguage={activatedLanguage}\r\n />\r\n )}\r\n {question.questionType === 'Checkbox' && (\r\n <MultipleCheckboxesStandard\r\n question={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n showPreview={showPreview}\r\n activatedLanguage={activatedLanguage}\r\n />\r\n )}\r\n\r\n {question.questionType === 'CheckboxGroup' && (\r\n <CheckboxGroupStandard\r\n question={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n showPreview={showPreview}\r\n activatedLanguage={activatedLanguage}\r\n />\r\n )}\r\n\r\n {question.questionType === 'TextArea' && (\r\n <TextAreaStandard\r\n question={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n showPreview={showPreview}\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default QuestionRenderer;\r\n","import React, { useEffect, Fragment } from 'react';\r\nimport QuestionRenderer from '../QuestionRenderer';\r\nimport { QuestionGroupProps } from './QuestionGroup.types';\r\n\r\n/**\r\n * Komponenten ansvarar för att rendera en grupp av frågor med valfri wrapper:\r\n * ('fieldset', 'section', 'div', eller 'none')\r\n *\r\n * @param {Question[]} questions Alla frågor i den här gruppen.\r\n * Första frågan används som \"bärare\" av valideringsattribut\r\n * när wrappern är ett fieldset.\r\n * @param {WrapperElement} wrapperElement Vilket HTML-element gruppen ska renderas i\r\n * ('fieldset' | 'section' | 'div' | 'none').\r\n * @param {string} legendLabel Texten som visas i legend när wrapperElement är 'fieldset'.\r\n * @param {string} activatedLanguage Applikationens aktiva språk.\r\n * @param {boolean} showPreview Om true visas frågorna i gransknings-/preview-läge.\r\n * @param {Function} handleQuestionInputChange Callback som anropas när en fråga ändras.\r\n * Skickar med både frågeobjektet och eventet.\r\n * @param {Function} props.markQuestionAsDisplayed Anropas när en fråga visas för att markera den som \"displayed\"\r\n * i globalt state.\r\n */\r\nconst QuestionGroup: React.FC<QuestionGroupProps> = ({\r\n questions,\r\n wrapperElement = 'none',\r\n legendLabel,\r\n handleQuestionInputChange,\r\n activatedLanguage,\r\n showPreview = false,\r\n markQuestionAsDisplayed,\r\n}) => {\r\n if (!questions || questions.length === 0) {\r\n return null;\r\n }\r\n const firstQuestion = questions[0];\r\n const groupMandatory = firstQuestion.validationType?.find((e: any) => e.startsWith('groupCheck-'));\r\n\r\n useEffect(() => {\r\n questions.forEach((question: any) => {\r\n if (question.visible && !question.isDisplayed) {\r\n markQuestionAsDisplayed(question);\r\n }\r\n });\r\n }, [questions]);\r\n\r\n const groupQuestions = (\r\n <>\r\n {questions.map((question: any, index: number) => {\r\n return (\r\n <Fragment key={'question-' + index}>\r\n <QuestionRenderer\r\n question={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n activatedLanguage={activatedLanguage}\r\n showPreview={showPreview}\r\n />\r\n </Fragment>\r\n );\r\n })}\r\n </>\r\n );\r\n\r\n switch (wrapperElement) {\r\n case 'fieldset':\r\n return (\r\n <fieldset\r\n className=\"pts-root-question-group-fieldset pts-root-question\"\r\n aria-required={firstQuestion.isQuestionMandatory || undefined}\r\n aria-invalid={firstQuestion.hasValidationError || undefined}\r\n aria-errormessage={\r\n firstQuestion.hasValidationError ? `${firstQuestion.id}-error` : undefined\r\n }\r\n aria-describedby={\r\n firstQuestion.hasValidationError ? `${firstQuestion.id}-error` : undefined\r\n }\r\n >\r\n {legendLabel && (\r\n <legend>\r\n <span>{legendLabel}\r\n {groupMandatory && (\r\n <span aria-hidden={true} className=\"pts-root-mandatoryAsterisk\">\r\n *\r\n </span>\r\n )}\r\n </span>\r\n {firstQuestion.hasValidationError && (\r\n <span className=\"sr-only\">\r\n Valideringsfel. {firstQuestion.validationDefaultMessesege}\r\n </span>\r\n )}\r\n </legend>\r\n )}\r\n\r\n {firstQuestion.hasValidationError && (\r\n <div className=\"pts-root-error\" id={firstQuestion.id + '-error'}>\r\n <span aria-label=\"Valideringsfel\" className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"errorText\">{firstQuestion.validationDefaultMessesege}</span>\r\n </div>\r\n )}\r\n \r\n {groupQuestions}\r\n </fieldset>\r\n );\r\n case 'section':\r\n return <section className=\"pts-root-question-group-section\">{groupQuestions}</section>;\r\n case 'div':\r\n return <div className=\"pts-root-question-group-div\">{groupQuestions}</div>;\r\n case 'none':\r\n default:\r\n return <Fragment>{groupQuestions}</Fragment>;\r\n }\r\n};\r\n\r\nexport default QuestionGroup;\r\n","import React from 'react';\r\nimport { CookieBannerProps } from './CookieBanner.types';\r\n\r\nconst CookieBanner: React.FC<CookieBannerProps> = ({\r\n visible = false,\r\n onCookieStateChange,\r\n onClose,\r\n acceptCookies,\r\n rejectCookies,\r\n}) => {\r\n if (!visible) return null;\r\n\r\n const handleCookieChoice = (accepted: boolean) => {\r\n if (accepted) {\r\n acceptCookies();\r\n } else {\r\n rejectCookies();\r\n }\r\n\r\n if (onCookieStateChange) {\r\n onCookieStateChange();\r\n }\r\n\r\n if (onClose) {\r\n onClose();\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className=\"pts-cookieBanner\"\r\n role=\"dialog\"\r\n aria-labelledby=\"cookie-banner-title\"\r\n aria-describedby=\"cookie-banner-description\"\r\n aria-modal=\"true\"\r\n id=\"cookie-banner\"\r\n tabIndex={-1}\r\n >\r\n <div className=\"content\">\r\n <h3 id=\"cookie-banner-title\">Kakor (cookies)</h3>\r\n <p id=\"cookie-banner-description\">\r\n PTS skulle vilja använda en statistikkaka i syfte att löpande förbättra webbplatsen.\r\n Samtycker du till det? Du kan när som helst ändra ditt val. För att återkalla ditt\r\n samtycke klickar du på ”Kakor” i avsnittet längst ned på webbplatsen.\r\n </p>\r\n\r\n <div className=\"pts-cookieBanner-Links\">\r\n <svg\r\n width=\"27\"\r\n height=\"27\"\r\n viewBox=\"0 0 27 27\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <rect width=\"27\" height=\"27\" rx=\"13.5\" fill=\"#6E3282\" />\r\n <path\r\n d=\"M13.5 18.7116L12.4911 17.7995L16.4559 14.1514H7.83594V12.8485H16.4559L12.4911 9.20036L13.5 8.28833L19.164 13.4999L13.5 18.7116Z\"\r\n fill=\"white\"\r\n />\r\n </svg>\r\n <a\r\n href=\"https://pts.se/om-oss/om-pts.se/kakor-pa-webbplatsen/kakor-pa-pts-e-tjanster/\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n Kakor (cookies) på pts.se (öppnas i nytt fönster)\r\n </a>\r\n </div>\r\n\r\n <div className=\"pts-cookieBanner-Buttons\">\r\n <button onClick={() => handleCookieChoice(true)}>Ja, jag samtycker</button>\r\n <button onClick={() => handleCookieChoice(false)}>Nej, jag samtycker inte</button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default CookieBanner;\r\n","import { FC } from 'react';\r\nimport { FooterProps } from './FooterStandard.types';\r\n\r\nconst Footer: FC<FooterProps> = ({ activatedLanguage = 'sv' }) => {\r\n return (\r\n <footer className=\"pts-footer-container\">\r\n <div className='pts-footer-slogan-text-container'>\r\n <p className='pts-footer-slogan-text'>{activatedLanguage === 'sv'\r\n ? \"Säker och tillgänglig kommunikation för Sverige\"\r\n : \"Secure and accessible communication for Sweden\"\r\n }</p>\r\n </div>\r\n <div className=\"pts-footer-content\">\r\n <svg\r\n aria-label={activatedLanguage === 'en' ? 'PTS logotype' : 'PTS logotyp'}\r\n className=\"pts-footer-logo\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"278\"\r\n height=\"72\"\r\n viewBox=\"0 0 278 72\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M54 43C54 47.2 51.5 51.1 47.6 52.3C45.8 52.8 44 53 41 53H24.5C21.4 53 21 53.5 21 56.5V63C21 65.4 19.5 67 17.5 67C15.5 67 14 65.4 14 63V58.5C14 56.5 14 54.8 14.2 53.9C14.8 50.5 16.8 47.9 20.1 46.7C21.4 46.2 23.6 45.9 27.9 45.9H42C43.2 45.9 44.4 45.8 44.9 45.6C46.4 45 46.9 44 46.9 42.9C46.9 41.8 46.5 40.7 44.9 40.2C44.4 40 43.2 39.9 42 39.9H19.4C18.5 39.9 17.7 39.9 17.3 39.7C15.8 39.2 14.9 37.8 14.9 36.4C14.9 35 15.8 33.6 17.3 33.1C17.8 32.9 18.3 32.9 19.3 32.9H40.9C44 32.9 46.4 33.1 47.9 33.7C51.8 35.2 53.9 38.4 53.9 42.9L54 43ZM95.7 33.3C95.2 33.1 94.4 33 93.3 33H61.6C60.8 33 60.1 33 59.7 33.2C58 33.7 57 35 57 36.5C57 38 57.8 39.2 59.4 39.7C59.9 39.9 60.7 40 61.6 40H74V63.4C74 65.8 75.6 67 77.5 67C79.4 67 81 65.8 81 63.4V40H93.3C94.5 40 95.1 40 95.5 39.8C97.1 39.3 98 38 98 36.5C98 35 97.2 33.8 95.7 33.3ZM133.5 47.4C131.8 46.5 129.6 46 124.1 46H113.5C111.8 46 110.9 45.9 110.3 45.7C108.6 45.1 108 44 108 43C108 42 108.4 40.8 110.2 40.2C110.7 40 111.6 40 112.5 40H132C132.4 40 133.5 40 133.8 40C135.6 39.7 137 38.6 137 36.6C137 34.6 135.6 33.6 133.9 33.2C133.6 33.2 132.9 33.1 132 33.1H113.5C110.2 33.1 107.8 33.5 106.2 34.2C102.9 35.8 101 39.2 101 43.1C101 47 102.8 50.5 106.4 52.1C108 52.8 110.4 53.1 113.5 53.1H127C128.7 53.1 129.6 53.3 130.2 53.5C131.6 54 132 55.4 132 56.6C132 57.8 131.6 59.3 129.9 59.8C129.3 60 128.1 60.1 126.1 60.1H106.5C105.7 60.1 104.9 60.1 104.5 60.3C102.9 60.7 102 62 102 63.6C102 65.2 103 66.2 104.3 66.7C104.8 66.9 105.9 67.1 106.7 67.1H124C127.7 67.1 130.7 66.9 132.5 66.3C136.6 65.1 138.9 61.2 138.9 56.6C138.9 52 136.8 49.2 133.4 47.5L133.5 47.4Z\"\r\n fill=\"white\"\r\n />\r\n <path\r\n d=\"M92.1 15.7L92.5 15C90 11.6 84.1 9.2 78.1 9H76.9C70.9 9.2 65 11.6 62.5 15L62.9 15.7C61.8 15.7 61 16.4 61 17.3L63.3 27C63.5 27.6 63.7 27.9 64.5 27.9H90.5C91.2 27.9 91.5 27.5 91.6 27L93.9 17.3C93.9 16.4 93.1 15.7 92 15.7H92.1ZM69.3 18.8C69.1 18.8 68.8 18.7 68.6 18.7C67.6 18.7 66.9 19.4 66.9 20.3C66.9 21.2 67.6 21.8 68.5 21.8C69.4 21.8 69.3 21.7 69.5 21.4C69.5 22.2 68.6 24 67.4 24H64.9C63.2 24 63 21.7 63 21.5C63.2 21.7 63.7 21.8 64.1 21.8C64.9 21.8 65.6 21.2 65.6 20.3C65.6 19.4 64.9 18.7 63.9 18.7C62.9 18.7 63.5 18.7 63.4 18.7C63.8 18.4 64.2 17.9 64.2 17.3C64.2 16.7 63.9 16.4 63.5 16.1L65.8 15C67.3 12.5 70 10.7 73.3 10C71.5 11.3 70 12.9 68.8 15L69.6 15.7C68.8 15.8 68.2 16.5 68.2 17.3C68.2 18.1 68.6 18.5 69.2 18.8H69.3ZM76.8 18.9C76.6 18.8 76.2 18.7 76 18.7C75 18.7 74.3 19.4 74.3 20.3C74.3 21.2 75 21.8 75.9 21.8C76.8 21.8 76.7 21.7 77 21.5C77 22.3 76.4 24 75 24H72.5C70.9 24 70.5 22 70.5 21.4C70.7 21.6 71.1 21.8 71.6 21.8C72.4 21.8 73.2 21.2 73.2 20.3C73.2 19.4 72.5 18.7 71.5 18.7C70.5 18.7 70.9 18.7 70.8 18.8C71.4 18.5 71.8 18 71.8 17.3C71.8 16.6 71.4 16.1 70.8 15.9L72.6 15C73.1 13.2 74.7 10.6 76.4 9.7C76.2 10.6 76.1 12.5 76.1 15C76.1 15 76.6 15.5 77.1 15.8C76.4 16 75.9 16.6 75.9 17.3C75.9 18 76.3 18.5 76.9 18.8L76.8 18.9ZM82.5 24H80C78.6 24 78 22.3 78 21.5C78.2 21.7 78.6 21.8 79.1 21.8C80 21.8 80.7 21.2 80.7 20.3C80.7 19.4 80 18.7 79 18.7C78 18.7 78.4 18.7 78.2 18.9C78.8 18.7 79.3 18.1 79.3 17.4C79.3 16.7 78.8 16.1 78.1 15.9C78.6 15.6 79.1 15.1 79.1 15.1C79.1 12.6 79 10.7 78.7 9.8C80.5 10.7 82.1 13.2 82.6 15.1L84.4 16C83.9 16.2 83.4 16.8 83.4 17.4C83.4 18 83.8 18.6 84.4 18.9C84.2 18.9 83.9 18.8 83.7 18.8C82.7 18.8 82 19.5 82 20.4C82 21.3 82.7 21.9 83.6 21.9C84.5 21.9 84.4 21.8 84.7 21.5C84.7 22 84.3 24.1 82.7 24.1L82.5 24ZM90 24H87.5C86.2 24 85.4 22.3 85.4 21.4C85.6 21.7 86 21.8 86.5 21.8C87.3 21.8 88 21.2 88 20.3C88 19.4 87.3 18.7 86.3 18.7C85.3 18.7 85.7 18.7 85.6 18.8C86.2 18.5 86.6 18 86.6 17.3C86.6 16.6 86 15.8 85.1 15.7L86 15C84.8 12.9 83.3 11.4 81.5 10C84.7 10.7 87.5 12.4 89 15L91.4 16.1C91 16.4 90.7 16.8 90.7 17.4C90.7 18 91.1 18.6 91.6 18.9C91.5 18.9 91.2 18.8 91 18.8C90 18.8 89.3 19.5 89.3 20.4C89.3 21.3 90 21.9 90.8 21.9C91.6 21.9 91.7 21.8 91.9 21.6C91.9 21.8 91.6 24.1 90 24.1V24ZM77.5 9C76.1 9 75 7.9 75 6.5C75 5.1 75.9 4.3 77 4.1V3H76V2H77V1H78V2H79V3H78V4.1C79.1 4.3 80 5.3 80 6.6C80 7.9 78.9 9.1 77.5 9.1V9Z\"\r\n fill=\"white\"\r\n />\r\n </svg>\r\n\r\n <nav className=\"pts-footer-linkList\">\r\n <ul>\r\n <li>\r\n <a\r\n href={\r\n activatedLanguage === 'en'\r\n ? 'https://pts.se/en/contact/'\r\n : 'https://www.pts.se/kontakt/'\r\n }\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n <span className=\"sr-only\">\r\n {activatedLanguage === 'en'\r\n ? 'PTS Contact (opens in new tab)'\r\n : 'PTS Kontakt (öppnas i ny flik)'}\r\n </span>\r\n <span aria-hidden=\"true\">{activatedLanguage === 'en' ? 'Contact' : 'Kontakt'}</span>\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n href={\r\n activatedLanguage === 'en' ? 'https://pts.se/en/gdpr' : 'https://www.pts.se/gdpr/'\r\n }\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n <span className=\"sr-only\">\r\n {activatedLanguage === 'en'\r\n ? 'PTS Processing of personal data (opens in new tab)'\r\n : 'PTS Behandling av personuppgifter (öppnas i ny flik)'}\r\n </span>\r\n <span aria-hidden=\"true\">\r\n {activatedLanguage === 'en'\r\n ? 'Processing of personal data'\r\n : 'Behandling av personuppgifter'}\r\n </span>\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n href={\r\n activatedLanguage === 'en'\r\n ? 'https://pts.se/en/accessibility-eservices'\r\n : 'https://www.pts.se/tillganglighet-etjanster'\r\n }\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n <span className=\"sr-only\">\r\n {activatedLanguage === 'en'\r\n ? 'PTS Accessibility (opens in new tab)'\r\n : 'PTS Tillgänglighetsredogörelse (öppnas i ny flik)'}\r\n </span>\r\n <span aria-hidden=\"true\">\r\n {activatedLanguage === 'en' ? 'Accessibility' : 'Tillgänglighetsredogörelse'}\r\n </span>\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n href={\r\n activatedLanguage === 'en'\r\n ? 'https://pts.se/en/cookies-eservices'\r\n : 'https://www.pts.se/kakor-etjanster'\r\n }\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n <span className=\"sr-only\">\r\n {activatedLanguage === 'en'\r\n ? 'PTS Cookies (opens in new tab)'\r\n : 'PTS Kakor (öppnas i ny flik)'}\r\n </span>\r\n <span aria-hidden=\"true\">{activatedLanguage === 'en' ? 'Cookies' : 'Kakor'}</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n </div>\r\n </footer>\r\n );\r\n};\r\n\r\nexport default Footer;\r\n","import React from 'react'\r\n\r\ninterface SVGIconProps {\r\n width?: number\r\n height?: number\r\n color?: string\r\n}\r\n\r\nexport const SearchIcon: React.FC<SVGIconProps> = ({ width = 15, height = 15, color = '#6E3282' }) => (\r\n <svg width={width} height={height} viewBox=\"0 0 21 20\" fill={color} xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M9.05856 16.1132C4.503 16.1132 0.833252 12.5188 0.833252 8.05662C0.833252 3.59449 4.503 0 9.05856 0C13.6141 0 17.2839 3.59449 17.2839 8.05662C17.2839 12.5188 13.6141 16.1132 9.05856 16.1132ZM9.05856 1.23948C5.19899 1.23948 2.09868 4.27621 2.09868 8.05662C2.09868 11.837 5.19899 14.8738 9.05856 14.8738C12.9181 14.8738 16.0184 11.837 16.0184 8.05662C16.0184 4.27621 12.9181 1.23948 9.05856 1.23948Z\"\r\n fill={color}\r\n />\r\n <path\r\n d=\"M14.4409 13.3929C14.7047 13.1187 15.1435 13.1187 15.4073 13.3929L20.3859 18.568C20.6357 18.8276 20.6357 19.2381 20.3859 19.4977C20.1221 19.7719 19.6833 19.7719 19.4195 19.4977L14.4409 14.3227C14.1911 14.0631 14.1911 13.6525 14.4409 13.3929Z\"\r\n fill={color}\r\n />\r\n </svg>\r\n)\r\n\r\nexport const SearchIconWhite = () => (\r\n <svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M9.05856 16.1132C4.503 16.1132 0.833252 12.5188 0.833252 8.05662C0.833252 3.59449 4.503 0 9.05856 0C13.6141 0 17.2839 3.59449 17.2839 8.05662C17.2839 12.5188 13.6141 16.1132 9.05856 16.1132ZM9.05856 1.23948C5.19899 1.23948 2.09868 4.27621 2.09868 8.05662C2.09868 11.837 5.19899 14.8738 9.05856 14.8738C12.9181 14.8738 16.0184 11.837 16.0184 8.05662C16.0184 4.27621 12.9181 1.23948 9.05856 1.23948Z\"\r\n fill=\"#6E3282\"\r\n />\r\n <path\r\n d=\"M14.4409 13.3929C14.7047 13.1187 15.1435 13.1187 15.4073 13.3929L20.3859 18.568C20.6357 18.8276 20.6357 19.2381 20.3859 19.4977C20.1221 19.7719 19.6833 19.7719 19.4195 19.4977L14.4409 14.3227C14.1911 14.0631 14.1911 13.6525 14.4409 13.3929Z\"\r\n fill=\"#6E3282\"\r\n />\r\n </svg>\r\n)\r\n\r\nexport const LanguageIcon = () => (\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 21 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M9 18C7.76133 18 6.59467 17.7633 5.5 17.29C4.40533 16.8167 3.452 16.1733 2.64 15.36C1.82667 14.5487 1.18333 13.5953 0.71 12.5C0.236667 11.4053 0 10.2387 0 9C0 7.758 0.236667 6.59033 0.71 5.497C1.184 4.40367 1.82733 3.451 2.64 2.639C3.45133 1.827 4.40467 1.18433 5.5 0.711C6.59467 0.237 7.76133 0 9 0C10.242 0 11.4097 0.236667 12.503 0.71C13.5963 1.184 14.549 1.82733 15.361 2.64C16.173 3.452 16.8157 4.40433 17.289 5.497C17.763 6.59033 18 7.758 18 9C18 10.2387 17.7633 11.4053 17.29 12.5C16.8167 13.5947 16.1733 14.548 15.36 15.36C14.548 16.1727 13.5957 16.816 12.503 17.29C11.4097 17.7633 10.242 18 9 18ZM9 17.008C9.58667 16.254 10.0707 15.5137 10.452 14.787C10.8327 14.0603 11.1423 13.247 11.381 12.347H6.619C6.883 13.2977 7.199 14.1363 7.567 14.863C7.935 15.5897 8.41267 16.3047 9 17.008ZM7.727 16.858C7.26033 16.308 6.83433 15.628 6.449 14.818C6.06367 14.0087 5.777 13.1847 5.589 12.346H1.753C2.32633 13.59 3.13867 14.61 4.19 15.406C5.242 16.202 6.42067 16.686 7.726 16.858H7.727ZM10.273 16.858C11.5783 16.686 12.757 16.202 13.809 15.406C14.861 14.61 15.6733 13.59 16.246 12.346H12.412C12.1587 13.1973 11.8397 14.028 11.455 14.838C11.0697 15.6473 10.6757 16.3207 10.273 16.858ZM1.346 11.346H5.381C5.305 10.936 5.25167 10.5363 5.221 10.147C5.189 9.75767 5.173 9.37533 5.173 9C5.173 8.62467 5.18867 8.24233 5.22 7.853C5.25133 7.46367 5.30467 7.06367 5.38 6.653H1.347C1.23833 6.99967 1.15333 7.37733 1.092 7.786C1.03067 8.19467 1 8.59933 1 9C1 9.40133 1.03033 9.806 1.091 10.214C1.15233 10.6227 1.23733 11 1.346 11.346ZM6.381 11.346H11.619C11.695 10.936 11.7483 10.5427 11.779 10.166C11.811 9.79 11.827 9.40133 11.827 9C11.827 8.59867 11.8113 8.21 11.78 7.834C11.7487 7.45733 11.6953 7.064 11.62 6.654H6.38C6.30467 7.064 6.25133 7.45733 6.22 7.834C6.18867 8.21 6.173 8.59867 6.173 9C6.173 9.40133 6.18867 9.79 6.22 10.166C6.25133 10.5427 6.30567 10.936 6.381 11.346ZM12.619 11.346H16.654C16.7627 10.9993 16.8477 10.622 16.909 10.214C16.9703 9.806 17.0007 9.40133 17 9C17 8.59867 16.9697 8.194 16.909 7.786C16.8477 7.37733 16.7627 7 16.654 6.654H12.619C12.695 7.064 12.7483 7.46367 12.779 7.853C12.811 8.24233 12.827 8.62467 12.827 9C12.827 9.37533 12.8113 9.75767 12.78 10.147C12.7487 10.5363 12.6953 10.9363 12.62 11.347L12.619 11.346ZM12.412 5.654H16.246C15.66 4.38467 14.8573 3.36467 13.838 2.594C12.818 1.82333 11.6297 1.33333 10.273 1.124C10.7397 1.73733 11.1593 2.43933 11.532 3.23C11.904 4.02 12.1973 4.828 12.412 5.654ZM6.619 5.654H11.381C11.117 4.71533 10.7913 3.86667 10.404 3.108C10.0173 2.34867 9.54933 1.64333 9 0.992C8.45133 1.64333 7.98333 2.34867 7.596 3.108C7.20933 3.86667 6.88367 4.71533 6.619 5.654ZM1.754 5.654H5.588C5.80267 4.828 6.096 4.02 6.468 3.23C6.84067 2.43933 7.26033 1.737 7.727 1.123C6.35767 1.333 5.16633 1.82633 4.153 2.603C3.13967 3.38033 2.33967 4.397 1.753 5.653L1.754 5.654Z\"\r\n fill=\"#6E3282\"\r\n />\r\n </svg>\r\n)\r\nexport const LanguageIconSmall = () => (\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M9 18C7.76133 18 6.59467 17.7633 5.5 17.29C4.40533 16.8167 3.452 16.1733 2.64 15.36C1.82667 14.5487 1.18333 13.5953 0.71 12.5C0.236667 11.4053 0 10.2387 0 9C0 7.758 0.236667 6.59033 0.71 5.497C1.184 4.40367 1.82733 3.451 2.64 2.639C3.45133 1.827 4.40467 1.18433 5.5 0.711C6.59467 0.237 7.76133 0 9 0C10.242 0 11.4097 0.236667 12.503 0.71C13.5963 1.184 14.549 1.82733 15.361 2.64C16.173 3.452 16.8157 4.40433 17.289 5.497C17.763 6.59033 18 7.758 18 9C18 10.2387 17.7633 11.4053 17.29 12.5C16.8167 13.5947 16.1733 14.548 15.36 15.36C14.548 16.1727 13.5957 16.816 12.503 17.29C11.4097 17.7633 10.242 18 9 18ZM9 17.008C9.58667 16.254 10.0707 15.5137 10.452 14.787C10.8327 14.0603 11.1423 13.247 11.381 12.347H6.619C6.883 13.2977 7.199 14.1363 7.567 14.863C7.935 15.5897 8.41267 16.3047 9 17.008ZM7.727 16.858C7.26033 16.308 6.83433 15.628 6.449 14.818C6.06367 14.0087 5.777 13.1847 5.589 12.346H1.753C2.32633 13.59 3.13867 14.61 4.19 15.406C5.242 16.202 6.42067 16.686 7.726 16.858H7.727ZM10.273 16.858C11.5783 16.686 12.757 16.202 13.809 15.406C14.861 14.61 15.6733 13.59 16.246 12.346H12.412C12.1587 13.1973 11.8397 14.028 11.455 14.838C11.0697 15.6473 10.6757 16.3207 10.273 16.858ZM1.346 11.346H5.381C5.305 10.936 5.25167 10.5363 5.221 10.147C5.189 9.75767 5.173 9.37533 5.173 9C5.173 8.62467 5.18867 8.24233 5.22 7.853C5.25133 7.46367 5.30467 7.06367 5.38 6.653H1.347C1.23833 6.99967 1.15333 7.37733 1.092 7.786C1.03067 8.19467 1 8.59933 1 9C1 9.40133 1.03033 9.806 1.091 10.214C1.15233 10.6227 1.23733 11 1.346 11.346ZM6.381 11.346H11.619C11.695 10.936 11.7483 10.5427 11.779 10.166C11.811 9.79 11.827 9.40133 11.827 9C11.827 8.59867 11.8113 8.21 11.78 7.834C11.7487 7.45733 11.6953 7.064 11.62 6.654H6.38C6.30467 7.064 6.25133 7.45733 6.22 7.834C6.18867 8.21 6.173 8.59867 6.173 9C6.173 9.40133 6.18867 9.79 6.22 10.166C6.25133 10.5427 6.30567 10.936 6.381 11.346ZM12.619 11.346H16.654C16.7627 10.9993 16.8477 10.622 16.909 10.214C16.9703 9.806 17.0007 9.40133 17 9C17 8.59867 16.9697 8.194 16.909 7.786C16.8477 7.37733 16.7627 7 16.654 6.654H12.619C12.695 7.064 12.7483 7.46367 12.779 7.853C12.811 8.24233 12.827 8.62467 12.827 9C12.827 9.37533 12.8113 9.75767 12.78 10.147C12.7487 10.5363 12.6953 10.9363 12.62 11.347L12.619 11.346ZM12.412 5.654H16.246C15.66 4.38467 14.8573 3.36467 13.838 2.594C12.818 1.82333 11.6297 1.33333 10.273 1.124C10.7397 1.73733 11.1593 2.43933 11.532 3.23C11.904 4.02 12.1973 4.828 12.412 5.654ZM6.619 5.654H11.381C11.117 4.71533 10.7913 3.86667 10.404 3.108C10.0173 2.34867 9.54933 1.64333 9 0.992C8.45133 1.64333 7.98333 2.34867 7.596 3.108C7.20933 3.86667 6.88367 4.71533 6.619 5.654ZM1.754 5.654H5.588C5.80267 4.828 6.096 4.02 6.468 3.23C6.84067 2.43933 7.26033 1.737 7.727 1.123C6.35767 1.333 5.16633 1.82633 4.153 2.603C3.13967 3.38033 2.33967 4.397 1.753 5.653L1.754 5.654Z\"\r\n fill=\"#6E3282\"\r\n />\r\n </svg>\r\n)\r\n\r\nexport const MenuIcon = () => (\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 21 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <line x1=\"0.666504\" y1=\"1\" x2=\"20.6665\" y2=\"1\" stroke=\"#6E3282\" strokeWidth=\"2\" />\r\n <line x1=\"0.666504\" y1=\"7\" x2=\"20.6665\" y2=\"7\" stroke=\"#6E3282\" strokeWidth=\"2\" />\r\n <line x1=\"0.666504\" y1=\"13\" x2=\"20.6665\" y2=\"13\" stroke=\"#6E3282\" strokeWidth=\"2\" />\r\n </svg>\r\n)\r\n\r\nexport const Logo_sv = () => (\r\n <svg width=\"168.8\" height=\"46.67\" viewBox=\"0 0 168.8 46.67\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M91.7779 18.6113C92.1668 18.8335 92.5001 19.1113 92.6668 19.4446C92.8335 19.7779 93.0001 20.2224 93.0001 20.7224C93.0001 21.2224 92.889 21.6113 92.6668 22.0002C92.4446 22.3891 92.1668 22.6668 91.7779 22.8335C91.389 23.0002 90.9446 23.1113 90.4446 23.1113H88.4446V26.1113H87.5001V18.3335H90.5001C91.0001 18.3335 91.4446 18.4446 91.8335 18.6113H91.7779ZM90.3335 22.2224C90.8335 22.2224 91.2779 22.1113 91.5557 21.8335C91.8335 21.5557 92.0001 21.1668 92.0001 20.7224C92.0001 20.2779 91.8335 19.8891 91.5557 19.6113C91.2779 19.3335 90.8335 19.2224 90.3335 19.2224H88.389V22.2224H90.3335Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M93.7779 24.778C93.5557 24.3336 93.4446 23.8336 93.4446 23.278C93.4446 22.7225 93.5557 22.2225 93.7779 21.778C94.0001 21.3336 94.3335 21.0003 94.7779 20.778C95.2224 20.5558 95.6668 20.3892 96.2224 20.3892C96.7779 20.3892 97.2779 20.5003 97.6668 20.778C98.1113 21.0003 98.4446 21.3892 98.6668 21.778C98.889 22.2225 99.0001 22.7225 99.0001 23.278C99.0001 23.8336 98.889 24.3336 98.6668 24.778C98.4446 25.2225 98.1113 25.5558 97.6668 25.778C97.2224 26.0003 96.7779 26.1669 96.2224 26.1669C95.6668 26.1669 95.1668 26.0558 94.7779 25.778C94.389 25.5003 94.0001 25.1669 93.7779 24.778ZM97.8335 24.3336C98.0001 24.0003 98.0557 23.6669 98.0557 23.278C98.0557 22.8892 98.0001 22.5003 97.8335 22.2225C97.6668 21.8892 97.4446 21.6669 97.1668 21.5003C96.889 21.3336 96.5557 21.2225 96.1668 21.2225C95.7779 21.2225 95.4446 21.3336 95.1668 21.5003C94.889 21.6669 94.6668 21.9447 94.5001 22.2225C94.3335 22.5558 94.2779 22.8892 94.2779 23.278C94.2779 23.6669 94.3335 24.0558 94.5001 24.3336C94.6668 24.6669 94.889 24.8892 95.1668 25.0558C95.4446 25.2225 95.7779 25.3336 96.1668 25.3336C96.5557 25.3336 96.889 25.2225 97.1668 25.0558C97.4446 24.8892 97.6668 24.6114 97.8335 24.3336Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M101.222 25.0557C101.5 25.2779 101.889 25.389 102.333 25.389C102.778 25.389 103.056 25.3335 103.333 25.1668C103.556 25.0001 103.722 24.7779 103.722 24.5557C103.722 24.3335 103.667 24.1668 103.556 24.0557C103.445 23.9446 103.278 23.8335 103.111 23.8335C102.945 23.8335 102.667 23.7224 102.278 23.7224C101.778 23.6668 101.389 23.6112 101.056 23.5001C100.722 23.389 100.5 23.2224 100.278 23.0557C100.056 22.889 100 22.5557 100 22.1668C100 21.7779 100.111 21.5557 100.278 21.2779C100.445 21.0001 100.722 20.8335 101.056 20.6668C101.389 20.5001 101.722 20.4446 102.167 20.4446C102.833 20.4446 103.389 20.6112 103.778 20.889C104.222 21.2224 104.445 21.6668 104.445 22.2224H103.556C103.556 21.9446 103.389 21.6668 103.111 21.5001C102.833 21.3335 102.556 21.2224 102.167 21.2224C101.778 21.2224 101.445 21.2779 101.222 21.4446C101 21.6112 100.889 21.8335 100.889 22.0557C100.889 22.2779 100.889 22.389 101.056 22.5001C101.167 22.6112 101.333 22.6668 101.5 22.7224C101.667 22.7779 101.945 22.7779 102.278 22.8335C102.778 22.889 103.167 23.0001 103.5 23.0557C103.833 23.1112 104.056 23.3335 104.278 23.5557C104.5 23.7779 104.556 24.1112 104.556 24.5001C104.556 24.889 104.445 25.1668 104.278 25.389C104.056 25.6668 103.833 25.8335 103.445 26.0001C103.111 26.1668 102.722 26.2224 102.333 26.2224C101.611 26.2224 101 26.0557 100.556 25.7224C100.111 25.389 99.889 24.889 99.889 24.2779H100.778C100.778 24.6112 100.945 24.889 101.222 25.1112V25.0557Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M104.945 21.2779V20.4446H105.945V18.8335H106.833V20.4446H108.278V21.2779H106.833V24.6113C106.833 24.8335 106.833 25.0002 106.945 25.1113C107.056 25.2224 107.222 25.2779 107.445 25.2779H108.445V26.1113H107.389C106.833 26.1113 106.5 26.0002 106.222 25.7779C106 25.5557 105.889 25.1668 105.889 24.6668V21.3335H104.889L104.945 21.2779Z\"\r\n fill=\"#141414\"\r\n />\r\n <path d=\"M108.778 22.5557H112.5V23.3334H108.778V22.5557Z\" fill=\"#141414\" />\r\n <path\r\n d=\"M116.778 24.778C116.556 24.3336 116.445 23.8336 116.445 23.278C116.445 22.7225 116.556 22.2225 116.778 21.778C117 21.3336 117.333 21.0003 117.778 20.778C118.222 20.5558 118.667 20.3892 119.222 20.3892C119.778 20.3892 120.278 20.5003 120.667 20.778C121.111 21.0003 121.445 21.3892 121.667 21.778C121.889 22.2225 122 22.7225 122 23.278C122 23.8336 121.889 24.3336 121.667 24.778C121.445 25.2225 121.111 25.5558 120.667 25.778C120.222 26.0003 119.778 26.1669 119.222 26.1669C118.667 26.1669 118.167 26.0558 117.778 25.778C117.389 25.5003 117 25.1669 116.778 24.778ZM120.833 24.3336C121 24.0003 121.056 23.6669 121.056 23.278C121.056 22.8892 121 22.5003 120.833 22.2225C120.667 21.8892 120.445 21.6669 120.167 21.5003C119.889 21.3336 119.556 21.2225 119.167 21.2225C118.778 21.2225 118.445 21.3336 118.167 21.5003C117.889 21.6669 117.667 21.9447 117.5 22.2225C117.333 22.5558 117.278 22.8892 117.278 23.278C117.278 23.6669 117.333 24.0558 117.5 24.3336C117.667 24.6669 117.889 24.8892 118.167 25.0558C118.445 25.2225 118.778 25.3336 119.167 25.3336C119.556 25.3336 119.889 25.2225 120.167 25.0558C120.445 24.8892 120.667 24.6114 120.833 24.3336Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M125.611 26.1668C125.056 26.1668 124.556 26.0557 124.167 25.7779C123.778 25.5557 123.445 25.1668 123.222 24.7224C123 24.2779 122.889 23.7779 122.889 23.2224C122.889 22.6668 123 22.1668 123.222 21.7224C123.445 21.2779 123.778 20.9446 124.222 20.7224C124.667 20.5002 125.111 20.3335 125.667 20.3335C126.222 20.3335 126.889 20.5002 127.333 20.8891C127.778 21.2224 128.056 21.7224 128.167 22.3335H127.222C127.111 21.9446 126.945 21.6668 126.667 21.4446C126.389 21.2224 126.056 21.1113 125.667 21.1113C125.278 21.1113 124.667 21.2779 124.333 21.6668C124 22.0557 123.833 22.5557 123.833 23.1668C123.833 23.7779 124 24.2779 124.333 24.6668C124.667 25.0557 125.111 25.2779 125.667 25.2779C126.222 25.2779 126.445 25.1668 126.722 24.9446C127 24.7224 127.167 24.4446 127.278 24.0557H128.167C128.056 24.6668 127.778 25.1668 127.333 25.5557C126.889 25.8891 126.333 26.1113 125.667 26.1113L125.611 26.1668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M134.278 22.9446V26.1113H133.389V23.0002C133.389 22.3891 133.278 21.9446 133 21.6668C132.722 21.3335 132.333 21.2224 131.833 21.2224C131.333 21.2224 130.889 21.3891 130.611 21.7779C130.278 22.1668 130.167 22.6668 130.167 23.2779V26.1113H129.278V18.3335H130.167V21.3891C130.333 21.1113 130.611 20.8335 130.889 20.6668C131.222 20.5002 131.556 20.3891 132 20.3891C132.667 20.3891 133.222 20.6113 133.667 21.0002C134.111 21.3891 134.278 22.0557 134.278 22.9446Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M86.6668 32.389V31.5557H87.6668V29.9446H88.5556V31.5557H90.0001V32.389H88.5556V35.7224C88.5556 35.9446 88.5557 36.1112 88.6668 36.2224C88.7779 36.3335 88.9445 36.389 89.1668 36.389H90.1668V37.2224H89.1112C88.5556 37.2224 88.2223 37.1112 87.9445 36.889C87.7223 36.6668 87.6112 36.2779 87.6112 35.7779V32.4446H86.6112L86.6668 32.389Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M91.7779 31.8335C92.1668 31.6112 92.6668 31.4446 93.1668 31.4446C93.6668 31.4446 94.1668 31.5557 94.5557 31.7779C94.9446 32.0001 95.2779 32.2779 95.5001 32.7224C95.7223 33.1668 95.8334 33.6112 95.889 34.1668C95.889 34.2224 95.889 34.389 95.889 34.5557H91.5001C91.5001 35.1668 91.6668 35.6112 92.0001 35.9446C92.3334 36.2779 92.7779 36.4446 93.2779 36.4446C93.7779 36.4446 94.0557 36.3335 94.3334 36.1112C94.6112 35.889 94.8334 35.6112 94.889 35.2779H95.8334C95.7223 35.8335 95.4446 36.3335 95.0001 36.7224C94.5557 37.1112 94.0001 37.2779 93.389 37.2779C92.7779 37.2779 92.3334 37.1668 91.889 36.889C91.4445 36.6668 91.1112 36.3335 90.889 35.889C90.6668 35.4446 90.5557 34.9446 90.5557 34.389C90.5557 33.8335 90.6668 33.2779 90.889 32.889C91.1112 32.4446 91.4446 32.1112 91.8334 31.889L91.7779 31.8335ZM94.389 32.6668C94.0557 32.389 93.6668 32.2779 93.1668 32.2779C92.6668 32.2779 92.3334 32.4446 92.0557 32.7224C91.7779 33.0001 91.5557 33.389 91.5001 33.8335H94.9445C94.9445 33.3335 94.7223 33.0001 94.389 32.7224V32.6668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path d=\"M97.8335 29.4446V37.2224H96.9446V29.4446H97.8335Z\" fill=\"#141414\" />\r\n <path\r\n d=\"M100.167 31.8335C100.556 31.6112 101.056 31.4446 101.556 31.4446C102.056 31.4446 102.556 31.5557 102.945 31.7779C103.333 32.0001 103.667 32.2779 103.889 32.7224C104.111 33.1668 104.222 33.6112 104.278 34.1668C104.278 34.2224 104.278 34.389 104.278 34.5557H99.889C99.889 35.1668 100.056 35.6112 100.389 35.9446C100.722 36.2779 101.167 36.4446 101.667 36.4446C102.167 36.4446 102.445 36.3335 102.722 36.1112C103 35.889 103.222 35.6112 103.278 35.2779H104.222C104.111 35.8335 103.833 36.3335 103.389 36.7224C102.945 37.1112 102.389 37.2779 101.778 37.2779C101.167 37.2779 100.722 37.1668 100.278 36.889C99.8335 36.6668 99.5001 36.3335 99.2779 35.889C99.0557 35.4446 98.9446 34.9446 98.9446 34.389C98.9446 33.8335 99.0557 33.2779 99.2779 32.889C99.5001 32.4446 99.8335 32.1112 100.222 31.889L100.167 31.8335ZM102.778 32.6668C102.445 32.389 102.056 32.2779 101.556 32.2779C101.056 32.2779 100.722 32.4446 100.445 32.7224C100.167 33.0001 99.9446 33.389 99.889 33.8335H103.333C103.333 33.3335 103.111 33.0001 102.778 32.7224V32.6668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M106.445 36.1668C106.722 36.389 107.111 36.5001 107.556 36.5001C108 36.5001 108.278 36.4446 108.556 36.2779C108.778 36.1112 108.945 35.889 108.945 35.6668C108.945 35.4446 108.889 35.2779 108.778 35.1668C108.667 35.0557 108.5 34.9446 108.333 34.9446C108.167 34.9446 107.889 34.8334 107.5 34.8334C107 34.7779 106.611 34.7223 106.278 34.6112C105.945 34.5001 105.722 34.3334 105.5 34.1668C105.278 34.0001 105.222 33.6668 105.222 33.2779C105.222 32.889 105.333 32.6668 105.5 32.389C105.667 32.1112 105.945 31.9446 106.278 31.7779C106.611 31.6112 106.945 31.5557 107.389 31.5557C108.056 31.5557 108.611 31.7223 109 32.0001C109.445 32.3334 109.667 32.7779 109.667 33.3334H108.778C108.778 33.0557 108.611 32.7779 108.333 32.6112C108.056 32.4446 107.778 32.3334 107.389 32.3334C107 32.3334 106.667 32.389 106.445 32.5557C106.222 32.7223 106.111 32.9446 106.111 33.1668C106.111 33.389 106.111 33.5001 106.278 33.6112C106.389 33.7223 106.556 33.7779 106.722 33.8334C106.889 33.889 107.167 33.889 107.5 33.9446C108 34.0001 108.389 34.1112 108.722 34.1668C109.056 34.2223 109.278 34.4446 109.5 34.6668C109.722 34.889 109.778 35.2223 109.778 35.6112C109.778 36.0001 109.667 36.2779 109.5 36.5001C109.278 36.7779 109.056 36.9446 108.667 37.1112C108.333 37.2779 107.945 37.3334 107.556 37.3334C106.833 37.3334 106.222 37.1668 105.778 36.8334C105.333 36.5001 105.111 36.0001 105.111 35.389H106C106 35.7223 106.167 36.0001 106.445 36.2223V36.1668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M110.167 32.389V31.5557H111.167V29.9446H112.056V31.5557H113.5V32.389H112.056V35.7224C112.056 35.9446 112.056 36.1112 112.167 36.2224C112.278 36.3335 112.445 36.389 112.667 36.389H113.667V37.2224H112.611C112.056 37.2224 111.722 37.1112 111.445 36.889C111.222 36.6668 111.111 36.2779 111.111 35.7779V32.4446H110.111L110.167 32.389Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M116.5 36.1668L118.167 31.5557H119.111L116.5 38.1668C116.389 38.5001 116.222 38.7779 116.167 38.9446C116.111 39.1112 115.944 39.2223 115.778 39.3334C115.611 39.389 115.389 39.4446 115.167 39.4446H114.056V38.6112H114.889C115.056 38.6112 115.222 38.6112 115.278 38.5557C115.333 38.5001 115.444 38.4446 115.5 38.389C115.5 38.2779 115.611 38.1668 115.722 37.9446L116 37.2779L113.778 31.5557H114.722L116.445 36.1668H116.5Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M122.722 32.4446H122.278C121.722 32.4446 121.333 32.6112 121.111 33.0001C120.889 33.389 120.778 33.8334 120.778 34.3334V37.2223H119.889V31.5557H120.667L120.778 32.389C120.945 32.1112 121.167 31.9446 121.389 31.7779C121.611 31.6112 122 31.5557 122.445 31.5557H122.722V32.4446Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M124.333 31.8335C124.722 31.6112 125.222 31.4446 125.722 31.4446C126.222 31.4446 126.722 31.5557 127.111 31.7779C127.5 32.0001 127.833 32.2779 128.056 32.7224C128.278 33.1668 128.389 33.6112 128.445 34.1668C128.445 34.2224 128.445 34.389 128.445 34.5557H124.056C124.056 35.1668 124.222 35.6112 124.556 35.9446C124.889 36.2779 125.333 36.4446 125.833 36.4446C126.333 36.4446 126.611 36.3335 126.889 36.1112C127.167 35.889 127.389 35.6112 127.445 35.2779H128.389C128.278 35.8335 128 36.3335 127.556 36.7224C127.111 37.1112 126.556 37.2779 125.945 37.2779C125.333 37.2779 124.889 37.1668 124.445 36.889C124 36.6668 123.667 36.3335 123.445 35.889C123.222 35.4446 123.111 34.9446 123.111 34.389C123.111 33.8335 123.222 33.2779 123.445 32.889C123.667 32.4446 124 32.1112 124.389 31.889L124.333 31.8335ZM126.945 32.6668C126.611 32.389 126.222 32.2779 125.722 32.2779C125.222 32.2779 124.889 32.4446 124.611 32.7224C124.333 33.0001 124.111 33.389 124.056 33.8335H127.5C127.5 33.3335 127.278 33.0001 126.945 32.7224V32.6668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path d=\"M130.333 29.4446V37.2224H129.445V29.4446H130.333Z\" fill=\"#141414\" />\r\n <path\r\n d=\"M132.778 36.1668C133.056 36.389 133.445 36.5001 133.889 36.5001C134.333 36.5001 134.611 36.4446 134.889 36.2779C135.111 36.1112 135.278 35.889 135.278 35.6668C135.278 35.4446 135.222 35.2779 135.111 35.1668C135 35.0557 134.833 34.9446 134.667 34.9446C134.5 34.9446 134.222 34.8334 133.833 34.8334C133.333 34.7779 132.945 34.7223 132.611 34.6112C132.278 34.5001 132.056 34.3334 131.833 34.1668C131.611 34.0001 131.556 33.6668 131.556 33.2779C131.556 32.889 131.667 32.6668 131.833 32.389C132 32.1112 132.278 31.9446 132.611 31.7779C132.945 31.6112 133.278 31.5557 133.722 31.5557C134.389 31.5557 134.945 31.7223 135.333 32.0001C135.778 32.3334 136 32.7779 136 33.3334H135.111C135.111 33.0557 134.945 32.7779 134.667 32.6112C134.389 32.4446 134.111 32.3334 133.722 32.3334C133.333 32.3334 133 32.389 132.778 32.5557C132.556 32.7223 132.445 32.9446 132.445 33.1668C132.445 33.389 132.445 33.5001 132.611 33.6112C132.722 33.7223 132.889 33.7779 133.056 33.8334C133.222 33.889 133.5 33.889 133.833 33.9446C134.333 34.0001 134.722 34.1112 135.056 34.1668C135.389 34.2223 135.611 34.4446 135.833 34.6668C136.056 34.889 136.111 35.2223 136.111 35.6112C136.111 36.0001 136 36.2779 135.833 36.5001C135.611 36.7779 135.389 36.9446 135 37.1112C134.667 37.2779 134.278 37.3334 133.889 37.3334C133.167 37.3334 132.556 37.1668 132.111 36.8334C131.667 36.5001 131.445 36.0001 131.445 35.389H132.333C132.333 35.7223 132.5 36.0001 132.778 36.2223V36.1668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M138.222 31.8335C138.611 31.6112 139.111 31.4446 139.611 31.4446C140.111 31.4446 140.611 31.5557 141 31.7779C141.389 32.0001 141.722 32.2779 141.945 32.7224C142.167 33.1668 142.278 33.6112 142.333 34.1668C142.333 34.2224 142.333 34.389 142.333 34.5557H137.945C137.945 35.1668 138.111 35.6112 138.445 35.9446C138.778 36.2779 139.222 36.4446 139.722 36.4446C140.222 36.4446 140.5 36.3335 140.778 36.1112C141.056 35.889 141.278 35.6112 141.333 35.2779H142.278C142.167 35.8335 141.889 36.3335 141.445 36.7224C141 37.1112 140.445 37.2779 139.833 37.2779C139.222 37.2779 138.778 37.1668 138.333 36.889C137.889 36.6668 137.556 36.3335 137.333 35.889C137.111 35.4446 137 34.9446 137 34.389C137 33.8335 137.111 33.2779 137.333 32.889C137.556 32.4446 137.889 32.1112 138.278 31.889L138.222 31.8335ZM140.833 32.6668C140.5 32.389 140.111 32.2779 139.611 32.2779C139.111 32.2779 138.778 32.4446 138.5 32.7224C138.222 33.0001 138 33.389 137.945 33.8335H141.389C141.389 33.3335 141.167 33.0001 140.833 32.7224V32.6668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M148.445 34.0558V37.2225H147.556V34.1114C147.556 33.5002 147.445 33.0558 147.167 32.778C146.889 32.4447 146.5 32.3336 146 32.3336C145.5 32.3336 145.056 32.5002 144.722 32.8891C144.445 33.278 144.278 33.778 144.278 34.3891V37.2225H143.389V31.5558H144.167L144.278 32.3336C144.722 31.778 145.333 31.5002 146.167 31.5002C147 31.5002 147.389 31.7225 147.833 32.1114C148.278 32.5002 148.445 33.1669 148.445 34.0558Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M30.0001 23.8889C30.0001 26.2223 28.6112 28.3889 26.4445 29.0556C25.4445 29.3334 24.4445 29.4445 22.7778 29.4445H13.6112C11.8889 29.4445 11.6667 29.7223 11.6667 31.3889V35.0001C11.6667 36.3334 10.8334 37.2223 9.72228 37.2223C8.61117 37.2223 7.77783 36.3334 7.77783 35.0001V32.5001C7.77783 31.3889 7.77783 30.4445 7.88894 29.9445C8.22228 28.0556 9.33339 26.6112 11.1667 25.9445C11.8889 25.6667 13.1112 25.5001 15.5001 25.5001H23.3334C24.0001 25.5001 24.6667 25.4445 24.9445 25.3334C25.7778 25.0001 26.0556 24.4445 26.0556 23.8334C26.0556 23.2223 25.8334 22.6112 24.9445 22.3334C24.6667 22.2223 24.0001 22.1667 23.3334 22.1667H10.7778C10.2778 22.1667 9.83339 22.1667 9.61117 22.0556C8.77783 21.7778 8.27783 21.0001 8.27783 20.2223C8.27783 19.4445 8.77783 18.6667 9.61117 18.3889C9.88894 18.2778 10.1667 18.2778 10.7223 18.2778H22.7223C24.4445 18.2778 25.7778 18.3889 26.6112 18.7223C28.7778 19.5556 29.9445 21.3334 29.9445 23.8334L30.0001 23.8889ZM53.1667 18.5001C52.8889 18.3889 52.4445 18.3334 51.8334 18.3334H34.2223C33.7778 18.3334 33.3889 18.3334 33.1667 18.4445C32.2223 18.7223 31.6667 19.4445 31.6667 20.2778C31.6667 21.1112 32.1112 21.7778 33.0001 22.0556C33.2778 22.1667 33.7223 22.2223 34.2223 22.2223H41.1112V35.2223C41.1112 36.5556 42.0001 37.2223 43.0556 37.2223C44.1112 37.2223 45.0001 36.5556 45.0001 35.2223V22.2223H51.8334C52.5001 22.2223 52.8334 22.2223 53.0556 22.1112C53.9445 21.8334 54.4445 21.1112 54.4445 20.2778C54.4445 19.4445 54.0001 18.7778 53.1667 18.5001ZM74.1667 26.3334C73.2223 25.8334 72.0001 25.5556 68.9445 25.5556H63.0556C62.1112 25.5556 61.6112 25.5001 61.2778 25.3889C60.3334 25.0556 60.0001 24.4445 60.0001 23.8889C60.0001 23.3334 60.2223 22.6667 61.2223 22.3334C61.5001 22.2223 62.0001 22.2223 62.5001 22.2223H73.3334C73.5556 22.2223 74.1667 22.2223 74.3334 22.2223C75.3334 22.0556 76.1112 21.4445 76.1112 20.3334C76.1112 19.2223 75.3334 18.6667 74.3889 18.4445C74.2223 18.4445 73.8334 18.3889 73.3334 18.3889H63.0556C61.2223 18.3889 59.8889 18.6112 59.0001 19.0001C57.1667 19.8889 56.1112 21.7778 56.1112 23.9445C56.1112 26.1112 57.1112 28.0556 59.1112 28.9445C60.0001 29.3334 61.3334 29.5001 63.0556 29.5001H70.5556C71.5001 29.5001 72.0001 29.6112 72.3334 29.7223C73.1112 30.0001 73.3334 30.7778 73.3334 31.4445C73.3334 32.1112 73.1112 32.9445 72.1667 33.2223C71.8334 33.3334 71.1667 33.3889 70.0556 33.3889H59.1667C58.7223 33.3889 58.2778 33.3889 58.0556 33.5001C57.1667 33.7223 56.6667 34.4445 56.6667 35.3334C56.6667 36.2223 57.2223 36.7778 57.9445 37.0556C58.2223 37.1667 58.8334 37.2778 59.2778 37.2778H68.8889C70.9445 37.2778 72.6112 37.1667 73.6112 36.8334C75.8889 36.1667 77.1667 34.0001 77.1667 31.4445C77.1667 28.8889 76.0001 27.3334 74.1112 26.3889L74.1667 26.3334Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M51.1667 8.72233L51.3889 8.33344C50 6.44455 46.7222 5.11122 43.3889 5.00011H42.7223C39.3889 5.11122 36.1111 6.44455 34.7222 8.33344L34.9445 8.72233C34.3334 8.72233 33.8889 9.11122 33.8889 9.61122L35.1667 15.0001C35.2778 15.3334 35.3889 15.5001 35.8334 15.5001H50.2778C50.6667 15.5001 50.8334 15.2779 50.8889 15.0001L52.1667 9.61122C52.1667 9.11122 51.7222 8.72233 51.1111 8.72233H51.1667ZM38.5 10.4446C38.3889 10.4446 38.2222 10.389 38.1111 10.389C37.5556 10.389 37.1667 10.7779 37.1667 11.2779C37.1667 11.7779 37.5556 12.1112 38.0556 12.1112C38.5556 12.1112 38.5 12.0557 38.6111 11.889C38.6111 12.3334 38.1111 13.3334 37.4445 13.3334H36.0556C35.1111 13.3334 35 12.0557 35 11.9446C35.1111 12.0557 35.3889 12.1112 35.6111 12.1112C36.0556 12.1112 36.4445 11.7779 36.4445 11.2779C36.4445 10.7779 36.0556 10.389 35.5 10.389C34.9445 10.389 35.2778 10.389 35.2223 10.389C35.4445 10.2223 35.6667 9.94455 35.6667 9.61122C35.6667 9.27789 35.5 9.11122 35.2778 8.94455L36.5556 8.33344C37.3889 6.94455 38.8889 5.94455 40.7223 5.55566C39.7223 6.27789 38.8889 7.16678 38.2223 8.33344L38.6667 8.72233C38.2222 8.77789 37.8889 9.16677 37.8889 9.61122C37.8889 10.0557 38.1111 10.2779 38.4445 10.4446H38.5ZM42.6667 10.5001C42.5556 10.4446 42.3334 10.389 42.2222 10.389C41.6667 10.389 41.2778 10.7779 41.2778 11.2779C41.2778 11.7779 41.6667 12.1112 42.1667 12.1112C42.6667 12.1112 42.6111 12.0557 42.7778 11.9446C42.7778 12.389 42.4445 13.3334 41.6667 13.3334H40.2778C39.3889 13.3334 39.1667 12.2223 39.1667 11.889C39.2778 12.0001 39.5 12.1112 39.7778 12.1112C40.2222 12.1112 40.6667 11.7779 40.6667 11.2779C40.6667 10.7779 40.2778 10.389 39.7222 10.389C39.1667 10.389 39.3889 10.389 39.3334 10.4446C39.6667 10.2779 39.8889 10.0001 39.8889 9.61122C39.8889 9.22233 39.6667 8.94455 39.3334 8.83344L40.3334 8.33344C40.6111 7.33344 41.5 5.889 42.4445 5.389C42.3334 5.889 42.2778 6.94455 42.2778 8.33344C42.2778 8.33344 42.5556 8.61122 42.8334 8.77789C42.4445 8.889 42.1667 9.22233 42.1667 9.61122C42.1667 10.0001 42.3889 10.2779 42.7223 10.4446L42.6667 10.5001ZM45.8334 13.3334H44.4445C43.6667 13.3334 43.3334 12.389 43.3334 11.9446C43.4445 12.0557 43.6667 12.1112 43.9445 12.1112C44.4445 12.1112 44.8334 11.7779 44.8334 11.2779C44.8334 10.7779 44.4445 10.389 43.8889 10.389C43.3334 10.389 43.5556 10.389 43.4445 10.5001C43.7778 10.389 44.0556 10.0557 44.0556 9.66678C44.0556 9.27789 43.7778 8.94455 43.3889 8.83344C43.6667 8.66678 43.9445 8.389 43.9445 8.389C43.9445 7.00011 43.8889 5.94455 43.7222 5.44455C44.7222 5.94455 45.6111 7.33344 45.8889 8.389L46.8889 8.889C46.6111 9.00011 46.3334 9.33344 46.3334 9.66678C46.3334 10.0001 46.5556 10.3334 46.8889 10.5001C46.7778 10.5001 46.6111 10.4446 46.5 10.4446C45.9445 10.4446 45.5556 10.8334 45.5556 11.3334C45.5556 11.8334 45.9445 12.1668 46.4445 12.1668C46.9445 12.1668 46.8889 12.1112 47.0556 11.9446C47.0556 12.2223 46.8334 13.389 45.9445 13.389L45.8334 13.3334ZM50 13.3334H48.6111C47.8889 13.3334 47.4445 12.389 47.4445 11.889C47.5556 12.0557 47.7778 12.1112 48.0556 12.1112C48.5 12.1112 48.8889 11.7779 48.8889 11.2779C48.8889 10.7779 48.5 10.389 47.9445 10.389C47.3889 10.389 47.6111 10.389 47.5556 10.4446C47.8889 10.2779 48.1111 10.0001 48.1111 9.61122C48.1111 9.22233 47.7778 8.77789 47.2778 8.72233L47.7778 8.33344C47.1111 7.16678 46.2778 6.33344 45.2778 5.55566C47.0556 5.94455 48.6111 6.889 49.4445 8.33344L50.7778 8.94455C50.5556 9.11122 50.3889 9.33344 50.3889 9.66678C50.3889 10.0001 50.6111 10.3334 50.8889 10.5001C50.8334 10.5001 50.6667 10.4446 50.5556 10.4446C50 10.4446 49.6111 10.8334 49.6111 11.3334C49.6111 11.8334 50 12.1668 50.4445 12.1668C50.8889 12.1668 50.9445 12.1112 51.0556 12.0001C51.0556 12.1112 50.8889 13.389 50 13.389V13.3334ZM43.0556 5.00011C42.2778 5.00011 41.6667 4.389 41.6667 3.61122C41.6667 2.83344 42.1667 2.389 42.7778 2.27789V1.66678H42.2222V1.11122H42.7778V0.555664H43.3334V1.11122H43.8889V1.66678H43.3334V2.27789C43.9445 2.389 44.4445 2.94455 44.4445 3.66678C44.4445 4.389 43.8334 5.05566 43.0556 5.05566V5.00011Z\"\r\n fill=\"#F0AA1E\"\r\n />\r\n <path d=\"M82.2223 18.3335V37.2224\" stroke=\"currentColor\" strokeWidth=\"0.8\" strokeMiterlimit=\"10\" />\r\n </svg>\r\n)\r\n\r\nexport const Logo_en = () => (\r\n <svg width=\"189.0\" height=\"46.67\" viewBox=\"0 0 189 46.67\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\">\r\n <path\r\n d=\"M30.0001 23.8889C30.0001 26.2223 28.6112 28.3889 26.4445 29.0556C25.4445 29.3334 24.4445 29.4445 22.7778 29.4445H13.6112C11.8889 29.4445 11.6667 29.7223 11.6667 31.3889V35.0001C11.6667 36.3334 10.8334 37.2223 9.72228 37.2223C8.61117 37.2223 7.77783 36.3334 7.77783 35.0001V32.5001C7.77783 31.3889 7.77783 30.4445 7.88894 29.9445C8.22228 28.0556 9.33339 26.6112 11.1667 25.9445C11.8889 25.6667 13.1112 25.5001 15.5001 25.5001H23.3334C24.0001 25.5001 24.6667 25.4445 24.9445 25.3334C25.7778 25.0001 26.0556 24.4445 26.0556 23.8334C26.0556 23.2223 25.8334 22.6112 24.9445 22.3334C24.6667 22.2223 24.0001 22.1667 23.3334 22.1667H10.7778C10.2778 22.1667 9.83339 22.1667 9.61117 22.0556C8.77783 21.7778 8.27783 21.0001 8.27783 20.2223C8.27783 19.4445 8.77783 18.6667 9.61117 18.3889C9.88894 18.2778 10.1667 18.2778 10.7223 18.2778H22.7223C24.4445 18.2778 25.7778 18.3889 26.6112 18.7223C28.7778 19.5556 29.9445 21.3334 29.9445 23.8334L30.0001 23.8889ZM53.1667 18.5001C52.8889 18.3889 52.4445 18.3334 51.8334 18.3334H34.2223C33.7778 18.3334 33.3889 18.3334 33.1667 18.4445C32.2223 18.7223 31.6667 19.4445 31.6667 20.2778C31.6667 21.1112 32.1112 21.7778 33.0001 22.0556C33.2778 22.1667 33.7223 22.2223 34.2223 22.2223H41.1112V35.2223C41.1112 36.5556 42.0001 37.2223 43.0556 37.2223C44.1112 37.2223 45.0001 36.5556 45.0001 35.2223V22.2223H51.8334C52.5001 22.2223 52.8334 22.2223 53.0556 22.1112C53.9445 21.8334 54.4445 21.1112 54.4445 20.2778C54.4445 19.4445 54.0001 18.7778 53.1667 18.5001ZM74.1667 26.3334C73.2223 25.8334 72.0001 25.5556 68.9445 25.5556H63.0556C62.1112 25.5556 61.6112 25.5001 61.2778 25.3889C60.3334 25.0556 60.0001 24.4445 60.0001 23.8889C60.0001 23.3334 60.2223 22.6667 61.2223 22.3334C61.5001 22.2223 62.0001 22.2223 62.5001 22.2223H73.3334C73.5556 22.2223 74.1667 22.2223 74.3334 22.2223C75.3334 22.0556 76.1112 21.4445 76.1112 20.3334C76.1112 19.2223 75.3334 18.6667 74.3889 18.4445C74.2223 18.4445 73.8334 18.3889 73.3334 18.3889H63.0556C61.2223 18.3889 59.8889 18.6112 59.0001 19.0001C57.1667 19.8889 56.1112 21.7778 56.1112 23.9445C56.1112 26.1112 57.1112 28.0556 59.1112 28.9445C60.0001 29.3334 61.3334 29.5001 63.0556 29.5001H70.5556C71.5001 29.5001 72.0001 29.6112 72.3334 29.7223C73.1112 30.0001 73.3334 30.7778 73.3334 31.4445C73.3334 32.1112 73.1112 32.9445 72.1667 33.2223C71.8334 33.3334 71.1667 33.3889 70.0556 33.3889H59.1667C58.7223 33.3889 58.2778 33.3889 58.0556 33.5001C57.1667 33.7223 56.6667 34.4445 56.6667 35.3334C56.6667 36.2223 57.2223 36.7778 57.9445 37.0556C58.2223 37.1667 58.8334 37.2778 59.2778 37.2778H68.8889C70.9445 37.2778 72.6112 37.1667 73.6112 36.8334C75.8889 36.1667 77.1667 34.0001 77.1667 31.4445C77.1667 28.8889 76.0001 27.3334 74.1112 26.3889L74.1667 26.3334Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M51.1667 8.72233L51.3889 8.33344C50 6.44455 46.7222 5.11122 43.3889 5.00011H42.7223C39.3889 5.11122 36.1111 6.44455 34.7222 8.33344L34.9445 8.72233C34.3334 8.72233 33.8889 9.11122 33.8889 9.61122L35.1667 15.0001C35.2778 15.3334 35.3889 15.5001 35.8334 15.5001H50.2778C50.6667 15.5001 50.8334 15.2779 50.8889 15.0001L52.1667 9.61122C52.1667 9.11122 51.7222 8.72233 51.1111 8.72233H51.1667ZM38.5 10.4446C38.3889 10.4446 38.2222 10.389 38.1111 10.389C37.5556 10.389 37.1667 10.7779 37.1667 11.2779C37.1667 11.7779 37.5556 12.1112 38.0556 12.1112C38.5556 12.1112 38.5 12.0557 38.6111 11.889C38.6111 12.3334 38.1111 13.3334 37.4445 13.3334H36.0556C35.1111 13.3334 35 12.0557 35 11.9446C35.1111 12.0557 35.3889 12.1112 35.6111 12.1112C36.0556 12.1112 36.4445 11.7779 36.4445 11.2779C36.4445 10.7779 36.0556 10.389 35.5 10.389C34.9445 10.389 35.2778 10.389 35.2223 10.389C35.4445 10.2223 35.6667 9.94455 35.6667 9.61122C35.6667 9.27789 35.5 9.11122 35.2778 8.94455L36.5556 8.33344C37.3889 6.94455 38.8889 5.94455 40.7223 5.55566C39.7223 6.27789 38.8889 7.16678 38.2223 8.33344L38.6667 8.72233C38.2222 8.77789 37.8889 9.16677 37.8889 9.61122C37.8889 10.0557 38.1111 10.2779 38.4445 10.4446H38.5ZM42.6667 10.5001C42.5556 10.4446 42.3334 10.389 42.2222 10.389C41.6667 10.389 41.2778 10.7779 41.2778 11.2779C41.2778 11.7779 41.6667 12.1112 42.1667 12.1112C42.6667 12.1112 42.6111 12.0557 42.7778 11.9446C42.7778 12.389 42.4445 13.3334 41.6667 13.3334H40.2778C39.3889 13.3334 39.1667 12.2223 39.1667 11.889C39.2778 12.0001 39.5 12.1112 39.7778 12.1112C40.2222 12.1112 40.6667 11.7779 40.6667 11.2779C40.6667 10.7779 40.2778 10.389 39.7222 10.389C39.1667 10.389 39.3889 10.389 39.3334 10.4446C39.6667 10.2779 39.8889 10.0001 39.8889 9.61122C39.8889 9.22233 39.6667 8.94455 39.3334 8.83344L40.3334 8.33344C40.6111 7.33344 41.5 5.889 42.4445 5.389C42.3334 5.889 42.2778 6.94455 42.2778 8.33344C42.2778 8.33344 42.5556 8.61122 42.8334 8.77789C42.4445 8.889 42.1667 9.22233 42.1667 9.61122C42.1667 10.0001 42.3889 10.2779 42.7223 10.4446L42.6667 10.5001ZM45.8334 13.3334H44.4445C43.6667 13.3334 43.3334 12.389 43.3334 11.9446C43.4445 12.0557 43.6667 12.1112 43.9445 12.1112C44.4445 12.1112 44.8334 11.7779 44.8334 11.2779C44.8334 10.7779 44.4445 10.389 43.8889 10.389C43.3334 10.389 43.5556 10.389 43.4445 10.5001C43.7778 10.389 44.0556 10.0557 44.0556 9.66678C44.0556 9.27789 43.7778 8.94455 43.3889 8.83344C43.6667 8.66678 43.9445 8.389 43.9445 8.389C43.9445 7.00011 43.8889 5.94455 43.7222 5.44455C44.7222 5.94455 45.6111 7.33344 45.8889 8.389L46.8889 8.889C46.6111 9.00011 46.3334 9.33344 46.3334 9.66678C46.3334 10.0001 46.5556 10.3334 46.8889 10.5001C46.7778 10.5001 46.6111 10.4446 46.5 10.4446C45.9445 10.4446 45.5556 10.8334 45.5556 11.3334C45.5556 11.8334 45.9445 12.1668 46.4445 12.1668C46.9445 12.1668 46.8889 12.1112 47.0556 11.9446C47.0556 12.2223 46.8334 13.389 45.9445 13.389L45.8334 13.3334ZM50 13.3334H48.6111C47.8889 13.3334 47.4445 12.389 47.4445 11.889C47.5556 12.0557 47.7778 12.1112 48.0556 12.1112C48.5 12.1112 48.8889 11.7779 48.8889 11.2779C48.8889 10.7779 48.5 10.389 47.9445 10.389C47.3889 10.389 47.6111 10.389 47.5556 10.4446C47.8889 10.2779 48.1111 10.0001 48.1111 9.61122C48.1111 9.22233 47.7778 8.77789 47.2778 8.72233L47.7778 8.33344C47.1111 7.16678 46.2778 6.33344 45.2778 5.55566C47.0556 5.94455 48.6111 6.889 49.4445 8.33344L50.7778 8.94455C50.5556 9.11122 50.3889 9.33344 50.3889 9.66678C50.3889 10.0001 50.6111 10.3334 50.8889 10.5001C50.8334 10.5001 50.6667 10.4446 50.5556 10.4446C50 10.4446 49.6111 10.8334 49.6111 11.3334C49.6111 11.8334 50 12.1668 50.4445 12.1668C50.8889 12.1668 50.9445 12.1112 51.0556 12.0001C51.0556 12.1112 50.8889 13.389 50 13.389V13.3334ZM43.0556 5.00011C42.2778 5.00011 41.6667 4.389 41.6667 3.61122C41.6667 2.83344 42.1667 2.389 42.7778 2.27789V1.66678H42.2222V1.11122H42.7778V0.555664H43.3334V1.11122H43.8889V1.66678H43.3334V2.27789C43.9445 2.389 44.4445 2.94455 44.4445 3.66678C44.4445 4.389 43.8334 5.05566 43.0556 5.05566V5.00011Z\"\r\n fill=\"#F0AA1E\"\r\n />\r\n <path d=\"M82.2223 18.3335V37.2224\" stroke=\"currentColor\" strokeWidth=\"0.8\" strokeMiterlimit=\"10\" />\r\n <path\r\n d=\"M88.9445 24.8335C89.3334 25.1669 89.8334 25.3335 90.3889 25.3335C90.9445 25.3335 91.3334 25.2224 91.6667 25.0002C92 24.778 92.1667 24.4446 92.1667 24.0002C92.1667 23.5557 92.0556 23.4446 91.8889 23.278C91.7222 23.1113 91.5 22.9446 91.1667 22.8891C90.8334 22.8335 90.5 22.7224 90 22.6113C89.2222 22.5002 88.6111 22.278 88.1667 21.9446C87.7222 21.6669 87.5 21.1669 87.5 20.4446C87.5 19.7224 87.6111 19.6113 87.8334 19.278C88.0556 18.9446 88.3889 18.6669 88.7778 18.5002C89.1667 18.3335 89.6667 18.2224 90.1667 18.2224C90.6667 18.2224 91.2222 18.3335 91.6111 18.5002C92.0556 18.7224 92.3889 19.0002 92.6111 19.3335C92.8334 19.6669 93 20.1113 93 20.5557H92.0556C92 20.1113 91.7778 19.7224 91.4445 19.4446C91.1111 19.1669 90.6667 19.0557 90.1667 19.0557C89.6667 19.0557 89.2223 19.1669 88.9445 19.3891C88.6667 19.6113 88.5 19.9446 88.5 20.3335C88.5 20.7224 88.6111 20.8891 88.7778 21.0557C88.9445 21.2224 89.1667 21.3335 89.4445 21.4446C89.7222 21.5557 90.1111 21.6113 90.6111 21.7224C91.3889 21.8335 92 22.0557 92.5 22.3891C92.9445 22.7224 93.2223 23.1669 93.2223 23.8891C93.2223 24.6113 93.1111 24.7224 92.8889 25.0557C92.6667 25.3891 92.3334 25.6669 91.8889 25.8891C91.4445 26.0557 91 26.1669 90.4445 26.1669C89.8889 26.1669 89.3334 26.0557 88.8334 25.8335C88.3889 25.6113 88.0556 25.3335 87.7778 24.8891C87.5556 24.5002 87.3889 24.0557 87.3889 23.5002H88.3334C88.3334 24.0002 88.5556 24.4446 88.9445 24.778V24.8335Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M94.5557 20.4446L95.9446 25.0557L97.4446 20.4446H98.2779L99.6668 25.0557L101.167 20.4446H102.111L100.222 26.1112H99.2223L97.8334 21.889L96.389 26.1112H95.389L93.5557 20.4446H94.5001H94.5557Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M103.778 20.7224C104.167 20.5002 104.667 20.3335 105.167 20.3335C105.667 20.3335 106.167 20.4446 106.556 20.6668C106.945 20.8891 107.278 21.1668 107.5 21.6113C107.722 22.0002 107.833 22.5002 107.889 23.0557C107.889 23.1113 107.889 23.2779 107.889 23.4446H103.5C103.5 24.0557 103.667 24.5002 104 24.8335C104.333 25.1668 104.778 25.3335 105.278 25.3335C105.778 25.3335 106.056 25.2224 106.333 25.0002C106.611 24.7779 106.833 24.5002 106.889 24.1668H107.833C107.722 24.7224 107.445 25.2224 107 25.6113C106.556 26.0002 106 26.1668 105.389 26.1668C104.778 26.1668 104.333 26.0557 103.889 25.7779C103.445 25.5557 103.111 25.2224 102.889 24.7779C102.667 24.3335 102.556 23.8335 102.556 23.2779C102.556 22.7224 102.667 22.1668 102.889 21.7779C103.111 21.3335 103.445 21.0002 103.833 20.7779L103.778 20.7224ZM106.389 21.5557C106.056 21.2779 105.667 21.1668 105.167 21.1668C104.667 21.1668 104.333 21.3335 104.056 21.6113C103.778 21.8891 103.556 22.2779 103.5 22.7224H106.945C106.945 22.2224 106.722 21.8891 106.389 21.6113V21.5557Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M114.278 26.1114H113.5L113.389 25.2225C112.889 25.8892 112.278 26.2225 111.445 26.2225C110.611 26.2225 110.445 26.1114 110.056 25.8892C109.667 25.6669 109.333 25.3336 109.111 24.8892C108.889 24.4447 108.778 23.9447 108.778 23.3336C108.778 22.7225 108.889 22.2781 109.111 21.8336C109.333 21.3892 109.667 21.0558 110.111 20.8336C110.556 20.6114 111 20.4447 111.5 20.4447C112 20.4447 112.333 20.5003 112.667 20.7225C113 20.8892 113.222 21.1114 113.444 21.3892V18.3892H114.333V26.1669L114.278 26.1114ZM113.111 24.3892C113.278 24.0558 113.333 23.7225 113.333 23.3336C113.333 22.9447 113.278 22.5558 113.111 22.2225C112.945 21.8892 112.722 21.6669 112.444 21.4447C112.167 21.278 111.833 21.1669 111.445 21.1669C110.889 21.1669 110.445 21.3892 110.056 21.7781C109.667 22.1669 109.556 22.6669 109.556 23.2781C109.556 23.8892 109.722 24.3892 110.056 24.778C110.389 25.1669 110.833 25.3892 111.445 25.3892C112.056 25.3892 112.111 25.2781 112.444 25.1114C112.722 24.9447 112.945 24.6669 113.111 24.3892Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M116.556 18.8335C116.556 19.0002 116.5 19.1669 116.389 19.278C116.278 19.3891 116.111 19.4446 115.944 19.4446C115.778 19.4446 115.611 19.3891 115.5 19.278C115.389 19.1669 115.333 19.0002 115.333 18.8335C115.333 18.6669 115.389 18.5002 115.5 18.3891C115.611 18.278 115.778 18.2224 115.944 18.2224C116.111 18.2224 116.278 18.278 116.389 18.3891C116.5 18.5002 116.556 18.6669 116.556 18.8335ZM116.444 20.4446V26.1113H115.556V20.4446H116.444Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M118.833 25.0557C119.111 25.2779 119.5 25.389 119.945 25.389C120.389 25.389 120.667 25.3335 120.945 25.1668C121.167 25.0001 121.333 24.7779 121.333 24.5557C121.333 24.3335 121.278 24.1668 121.167 24.0557C121.056 23.9446 120.889 23.8335 120.722 23.8335C120.556 23.8335 120.278 23.7224 119.889 23.7224C119.389 23.6668 119 23.6112 118.667 23.5001C118.333 23.389 118.111 23.2224 117.889 23.0557C117.722 22.8335 117.611 22.5557 117.611 22.1668C117.611 21.7779 117.722 21.5557 117.889 21.2779C118.056 21.0001 118.333 20.8335 118.667 20.6668C119 20.5001 119.333 20.4446 119.778 20.4446C120.445 20.4446 121 20.6112 121.389 20.889C121.833 21.2224 122.056 21.6668 122.056 22.2224H121.167C121.167 21.9446 121 21.6668 120.722 21.5001C120.445 21.3335 120.167 21.2224 119.778 21.2224C119.389 21.2224 119.056 21.2779 118.833 21.4446C118.611 21.6112 118.5 21.8335 118.5 22.0557C118.5 22.2779 118.5 22.389 118.667 22.5001C118.778 22.6112 118.945 22.6668 119.111 22.7224C119.278 22.7224 119.556 22.7779 119.889 22.8335C120.389 22.889 120.778 23.0001 121.111 23.0557C121.445 23.1668 121.667 23.3335 121.889 23.5557C122.111 23.7779 122.167 24.1112 122.167 24.5001C122.167 24.889 122.056 25.1668 121.889 25.389C121.667 25.6668 121.445 25.8335 121.056 26.0001C120.722 26.1668 120.333 26.2224 119.945 26.2224C119.222 26.2224 118.611 26.0557 118.167 25.7224C117.722 25.389 117.5 24.889 117.5 24.2779H118.389C118.389 24.6112 118.556 24.889 118.833 25.1112V25.0557Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M128.278 22.9446V26.1113H127.389V23.0002C127.389 22.3891 127.278 21.9446 127 21.6668C126.722 21.3335 126.333 21.2224 125.833 21.2224C125.333 21.2224 124.889 21.3891 124.611 21.7779C124.278 22.1668 124.167 22.6668 124.167 23.2779V26.1113H123.278V18.3335H124.167V21.3891C124.333 21.1113 124.611 20.8335 124.889 20.6668C125.222 20.5002 125.556 20.3891 126 20.3891C126.667 20.3891 127.222 20.6113 127.667 21.0002C128.111 21.3891 128.278 22.0557 128.278 22.9446Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M136.833 18.6113C137.222 18.8335 137.556 19.1113 137.722 19.4446C137.945 19.7779 138.056 20.2224 138.056 20.7224C138.056 21.2224 137.945 21.6113 137.722 22.0002C137.5 22.3891 137.222 22.6668 136.833 22.8335C136.445 23.0002 136 23.1113 135.5 23.1113H133.5V26.1113H132.556V18.3335H135.556C136.056 18.3335 136.5 18.4446 136.889 18.6113H136.833ZM135.389 22.2224C135.889 22.2224 136.333 22.1113 136.611 21.8335C136.889 21.5557 137.056 21.1668 137.056 20.7224C137.056 20.2779 136.889 19.8891 136.611 19.6113C136.333 19.3335 135.889 19.2224 135.389 19.2224H133.445V22.2224H135.389Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M138.833 24.778C138.611 24.3336 138.5 23.8336 138.5 23.278C138.5 22.7225 138.611 22.2225 138.833 21.778C139.056 21.3336 139.389 21.0003 139.833 20.778C140.278 20.5558 140.722 20.3892 141.278 20.3892C141.833 20.3892 142.333 20.5003 142.722 20.778C143.167 21.0003 143.5 21.3892 143.722 21.778C143.945 22.2225 144.056 22.7225 144.056 23.278C144.056 23.8336 143.945 24.3336 143.722 24.778C143.5 25.2225 143.167 25.5558 142.722 25.778C142.278 26.0003 141.833 26.1669 141.278 26.1669C140.722 26.1669 140.222 26.0558 139.833 25.778C139.445 25.5003 139.056 25.1669 138.833 24.778ZM142.945 24.3336C143.111 24.0003 143.167 23.6669 143.167 23.278C143.167 22.8892 143.111 22.5003 142.945 22.2225C142.778 21.8892 142.556 21.6669 142.278 21.5003C142 21.3336 141.667 21.2225 141.278 21.2225C140.889 21.2225 140.556 21.3336 140.278 21.5003C140 21.6669 139.778 21.9447 139.611 22.2225C139.445 22.5003 139.389 22.8892 139.389 23.278C139.389 23.6669 139.445 24.0558 139.611 24.3336C139.778 24.6669 140 24.8892 140.278 25.0558C140.556 25.2225 140.889 25.3336 141.278 25.3336C141.667 25.3336 142 25.2225 142.278 25.0558C142.556 24.8892 142.778 24.6114 142.945 24.3336Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M146.278 25.0557C146.556 25.2779 146.945 25.389 147.389 25.389C147.833 25.389 148.111 25.3335 148.389 25.1668C148.611 25.0001 148.778 24.7779 148.778 24.5557C148.778 24.3335 148.722 24.1668 148.611 24.0557C148.5 23.9446 148.333 23.8335 148.167 23.8335C148 23.8335 147.722 23.7224 147.333 23.7224C146.833 23.6668 146.445 23.6112 146.111 23.5001C145.778 23.389 145.556 23.2224 145.333 23.0557C145.167 22.8335 145.056 22.5557 145.056 22.1668C145.056 21.7779 145.167 21.5557 145.333 21.2779C145.5 21.0001 145.778 20.8335 146.111 20.6668C146.445 20.5001 146.778 20.4446 147.222 20.4446C147.889 20.4446 148.445 20.6112 148.833 20.889C149.278 21.2224 149.5 21.6668 149.5 22.2224H148.611C148.611 21.9446 148.445 21.6668 148.167 21.5001C147.889 21.3335 147.611 21.2224 147.222 21.2224C146.833 21.2224 146.5 21.2779 146.278 21.4446C146.056 21.6112 145.945 21.8335 145.945 22.0557C145.945 22.2779 145.945 22.389 146.111 22.5001C146.222 22.6112 146.389 22.6668 146.556 22.7224C146.722 22.7224 147 22.7779 147.333 22.8335C147.833 22.889 148.222 23.0001 148.556 23.0557C148.889 23.1668 149.111 23.3335 149.333 23.5557C149.556 23.7779 149.611 24.1112 149.611 24.5001C149.611 24.889 149.5 25.1668 149.333 25.389C149.111 25.6668 148.889 25.8335 148.5 26.0001C148.167 26.1668 147.778 26.2224 147.389 26.2224C146.667 26.2224 146.056 26.0557 145.611 25.7224C145.167 25.389 144.945 24.889 144.945 24.2779H145.833C145.833 24.6112 146 24.889 146.278 25.1112V25.0557Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M150 21.2779V20.4446H151V18.8335H151.889V20.4446H153.333V21.2779H151.889V24.6113C151.889 24.8335 151.889 25.0002 152 25.1113C152.111 25.2224 152.278 25.2779 152.5 25.2779H153.5V26.1113H152.445C151.889 26.1113 151.556 26.0002 151.278 25.7779C151.056 25.5557 150.945 25.1668 150.945 24.6668V21.3335H149.945L150 21.2779Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M162.445 26.1113H161.945C161.556 26.1113 161.333 26.0557 161.167 25.8891C161 25.7224 160.945 25.5002 160.945 25.2224C160.5 25.8335 159.889 26.1668 159.056 26.1668C158.222 26.1668 157.945 26.0002 157.556 25.7224C157.167 25.4446 157 25.0002 157 24.5002C157 24.0002 157.167 23.5002 157.556 23.1668C157.945 22.8335 158.5 22.7224 159.278 22.7224H160.945V22.3335C160.945 21.9446 160.833 21.6668 160.556 21.4446C160.333 21.2224 159.945 21.1113 159.5 21.1113C159.056 21.1113 158.778 21.2224 158.5 21.3891C158.222 21.5557 158.111 21.7779 158 22.0557H157.111C157.167 21.5002 157.445 21.0557 157.833 20.7779C158.222 20.5002 158.833 20.3335 159.5 20.3335C160.167 20.3335 160.778 20.5002 161.167 20.8891C161.556 21.2224 161.778 21.7224 161.778 22.3891V24.8335C161.778 25.1113 161.889 25.2224 162.167 25.2224H162.445V26.0557V26.1113ZM159.111 23.5002C158.278 23.5002 157.833 23.8335 157.833 24.4446C157.833 25.0557 157.945 24.9446 158.167 25.1113C158.389 25.2779 158.667 25.3891 159.056 25.3891C159.611 25.3891 160.056 25.2224 160.389 24.9446C160.722 24.6668 160.889 24.2779 160.889 23.7779V23.5002H159.111Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M168.167 22.9447V26.1114H167.278V23.0003C167.278 22.3892 167.167 21.9447 166.889 21.6669C166.611 21.3892 166.222 21.2225 165.722 21.2225C165.222 21.2225 164.778 21.3892 164.445 21.778C164.167 22.1669 164 22.6669 164 23.278V26.1114H163.111V20.4447H163.889L164 21.2225C164.445 20.6669 165.056 20.3892 165.889 20.3892C166.722 20.3892 167.111 20.6114 167.556 21.0003C168 21.3892 168.167 22.0558 168.167 22.9447Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M174.722 26.1114H173.945L173.833 25.2225C173.333 25.8892 172.722 26.2225 171.889 26.2225C171.056 26.2225 170.889 26.1114 170.5 25.8892C170.111 25.6669 169.778 25.3336 169.556 24.8892C169.333 24.4447 169.222 23.9447 169.222 23.3336C169.222 22.7225 169.333 22.2781 169.556 21.8336C169.778 21.3892 170.111 21.0558 170.556 20.8336C171 20.6114 171.445 20.4447 171.945 20.4447C172.445 20.4447 172.778 20.5003 173.111 20.7225C173.445 20.8892 173.667 21.1114 173.889 21.3892V18.3892H174.778V26.1669L174.722 26.1114ZM173.611 24.3892C173.778 24.0558 173.833 23.7225 173.833 23.3336C173.833 22.9447 173.778 22.5558 173.611 22.2225C173.445 21.8892 173.222 21.6669 172.945 21.4447C172.667 21.278 172.333 21.1669 171.945 21.1669C171.389 21.1669 170.945 21.3892 170.556 21.7781C170.167 22.1669 170.056 22.6669 170.056 23.2781C170.056 23.8892 170.222 24.3892 170.556 24.778C170.889 25.1669 171.333 25.3892 171.945 25.3892C172.556 25.3892 172.611 25.2781 172.945 25.1114C173.222 24.9447 173.445 24.6669 173.611 24.3892Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M92.6112 29.4446V30.3335H90.1112V37.2224H89.1667V30.3335H86.6667V29.4446H92.6667H92.6112Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M93.6111 31.8335C94 31.6112 94.5 31.4446 95 31.4446C95.5 31.4446 96 31.5557 96.3889 31.7779C96.7778 32.0001 97.1111 32.2779 97.3334 32.7224C97.5556 33.1112 97.6667 33.6112 97.7222 34.1668C97.7222 34.2224 97.7222 34.389 97.7222 34.5557H93.3334C93.3334 35.1668 93.5 35.6112 93.8334 35.9446C94.1667 36.2779 94.6111 36.4446 95.1111 36.4446C95.6111 36.4446 95.8889 36.3335 96.1667 36.1112C96.4445 35.889 96.6667 35.6112 96.7223 35.2779H97.6667C97.5556 35.8335 97.2778 36.3335 96.8334 36.7224C96.3889 37.1112 95.8334 37.2779 95.2222 37.2779C94.6111 37.2779 94.1667 37.1668 93.7222 36.889C93.2778 36.6668 92.9445 36.3335 92.7222 35.889C92.5 35.4446 92.3889 34.9446 92.3889 34.389C92.3889 33.8335 92.5 33.2779 92.7222 32.889C92.9445 32.4446 93.2778 32.1112 93.6667 31.889L93.6111 31.8335ZM96.2222 32.6668C95.8889 32.389 95.5 32.2779 95 32.2779C94.5 32.2779 94.1667 32.4446 93.8889 32.7224C93.5556 33.0001 93.3889 33.389 93.3334 33.8335H96.7778C96.7778 33.3335 96.5556 33.0001 96.2222 32.7224V32.6668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path d=\"M99.6667 29.4446V37.2224H98.7778V29.4446H99.6667Z\" fill=\"#141414\" />\r\n <path\r\n d=\"M102 31.8335C102.389 31.6112 102.889 31.4446 103.389 31.4446C103.889 31.4446 104.389 31.5557 104.778 31.7779C105.167 32.0001 105.5 32.2779 105.722 32.7224C105.945 33.1112 106.056 33.6112 106.111 34.1668C106.111 34.2224 106.111 34.389 106.111 34.5557H101.722C101.722 35.1668 101.889 35.6112 102.222 35.9446C102.556 36.2779 103 36.4446 103.5 36.4446C104 36.4446 104.278 36.3335 104.556 36.1112C104.833 35.889 105.056 35.6112 105.111 35.2779H106.056C105.944 35.8335 105.667 36.3335 105.222 36.7224C104.778 37.1112 104.222 37.2779 103.611 37.2779C103 37.2779 102.556 37.1668 102.111 36.889C101.667 36.6668 101.333 36.3335 101.111 35.889C100.889 35.4446 100.778 34.9446 100.778 34.389C100.778 33.8335 100.889 33.2779 101.111 32.889C101.333 32.4446 101.667 32.1112 102.056 31.889L102 31.8335ZM104.611 32.6668C104.278 32.389 103.889 32.2779 103.389 32.2779C102.889 32.2779 102.556 32.4446 102.278 32.7224C101.945 33.0001 101.778 33.389 101.722 33.8335H105.167C105.167 33.3335 104.945 33.0001 104.611 32.7224V32.6668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M109.667 37.2779C109.111 37.2779 108.611 37.1668 108.222 36.889C107.833 36.6668 107.5 36.2779 107.278 35.8335C107.056 35.389 106.945 34.889 106.945 34.3335C106.945 33.7779 107.056 33.2779 107.278 32.8335C107.5 32.389 107.833 32.0557 108.278 31.8335C108.722 31.6112 109.167 31.4446 109.722 31.4446C110.278 31.4446 110.945 31.6112 111.389 32.0001C111.833 32.389 112.111 32.8335 112.222 33.4446H111.278C111.167 33.0557 111 32.7779 110.722 32.5557C110.445 32.3335 110.111 32.2224 109.722 32.2224C109.333 32.2224 108.722 32.389 108.389 32.7779C108.056 33.1668 107.889 33.6668 107.889 34.2779C107.889 34.889 108.056 35.389 108.389 35.7779C108.722 36.1668 109.167 36.389 109.722 36.389C110.278 36.389 110.5 36.2779 110.778 36.0557C111.056 35.8335 111.222 35.5557 111.333 35.1668H112.222C112.111 35.7779 111.833 36.2779 111.389 36.6668C110.945 37.0001 110.389 37.2224 109.722 37.2224L109.667 37.2779Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M113.278 35.8891C113.056 35.4447 112.945 34.9447 112.945 34.3891C112.945 33.8336 113.056 33.3336 113.278 32.8891C113.5 32.4447 113.833 32.1114 114.278 31.8891C114.722 31.6669 115.167 31.5002 115.722 31.5002C116.278 31.5002 116.778 31.6114 117.167 31.8891C117.611 32.1114 117.945 32.5002 118.167 32.8891C118.389 33.3336 118.5 33.8336 118.5 34.3891C118.5 34.9447 118.389 35.4447 118.167 35.8891C117.945 36.3336 117.611 36.6669 117.167 36.8891C116.722 37.1114 116.278 37.278 115.722 37.278C115.167 37.278 114.667 37.1669 114.278 36.8891C113.889 36.6114 113.5 36.278 113.278 35.8891ZM117.333 35.4447C117.5 35.1114 117.556 34.778 117.556 34.3891C117.556 34.0002 117.5 33.6114 117.333 33.3336C117.167 33.0002 116.945 32.778 116.667 32.6114C116.389 32.4447 116.056 32.3336 115.667 32.3336C115.278 32.3336 114.945 32.4447 114.667 32.6114C114.389 32.778 114.167 33.0558 114 33.3336C113.833 33.6669 113.778 34.0002 113.778 34.3891C113.778 34.778 113.833 35.1669 114 35.4447C114.167 35.778 114.389 36.0002 114.667 36.1669C114.945 36.3336 115.278 36.4447 115.667 36.4447C116.056 36.4447 116.389 36.3336 116.667 36.1669C116.945 36.0002 117.167 35.7225 117.333 35.4447Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M128.056 33.9446V37.2224H127.167V34.0001C127.167 33.4446 127.056 33.0557 126.833 32.7224C126.611 32.4446 126.278 32.2779 125.833 32.2779C125.389 32.2779 125 32.4446 124.722 32.7779C124.445 33.1112 124.333 33.5557 124.333 34.1668V37.2224H123.445V34.0001C123.445 33.4446 123.333 33.0557 123.111 32.7224C122.889 32.4446 122.556 32.2779 122.111 32.2779C121.667 32.2779 121.278 32.4446 121 32.7779C120.722 33.1112 120.611 33.6112 120.611 34.1668V37.1668H119.722V31.5001H120.5L120.611 32.2779C121 31.7224 121.556 31.4446 122.278 31.4446C123 31.4446 123.056 31.5557 123.389 31.7224C123.722 31.889 123.945 32.1668 124.111 32.5557C124.5 31.8335 125.167 31.5001 126.056 31.5001C126.945 31.5001 127.222 31.7224 127.611 32.1112C128 32.5001 128.222 33.1112 128.222 34.0001L128.056 33.9446Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M134.556 29.4446H135.722L138.667 37.2224H137.611L136.778 35.1112H133.389L132.556 37.2224H131.556L134.5 29.4446H134.556ZM136.556 34.2224L135.167 30.5001L133.778 34.2224H136.611H136.556Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M144.111 37.2223H143.333L143.222 36.4446C142.778 37.0001 142.167 37.2779 141.389 37.2779C140.611 37.2779 140.167 37.0557 139.778 36.6668C139.389 36.2779 139.167 35.6112 139.167 34.7223V31.5557H140.056V34.6668C140.056 35.2779 140.167 35.7223 140.445 36.0001C140.722 36.3334 141.056 36.4446 141.556 36.4446C142.056 36.4446 142.5 36.2779 142.778 35.889C143.056 35.5001 143.222 35.0001 143.222 34.389V31.5557H144.111V37.2223Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M144.722 32.389V31.5557H145.722V29.9446H146.611V31.5557H148.056V32.389H146.611V35.7224C146.611 35.9446 146.611 36.1112 146.722 36.2224C146.833 36.3335 147 36.389 147.222 36.389H148.222V37.2224H147.167C146.611 37.2224 146.278 37.1112 146 36.889C145.778 36.6668 145.667 36.2779 145.667 35.7779V32.4446H144.667L144.722 32.389Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M154 34.0557V37.2224H153.111V34.1112C153.111 33.5001 153 33.0557 152.722 32.7779C152.445 32.4446 152.056 32.3335 151.556 32.3335C151.056 32.3335 150.611 32.5001 150.333 32.889C150 33.2779 149.889 33.7779 149.889 34.389V37.2224H149V29.4446H149.889V32.5001C150.056 32.2224 150.333 31.9446 150.611 31.7779C150.945 31.6112 151.278 31.5001 151.722 31.5001C152.389 31.5001 152.945 31.7224 153.389 32.1112C153.833 32.5001 154 33.1668 154 34.0557Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M155.333 35.8891C155.111 35.4447 155 34.9447 155 34.3891C155 33.8336 155.111 33.3336 155.333 32.8891C155.556 32.4447 155.889 32.1114 156.333 31.8891C156.778 31.6669 157.222 31.5002 157.778 31.5002C158.333 31.5002 158.833 31.6114 159.222 31.8891C159.667 32.1114 160 32.5002 160.222 32.8891C160.445 33.3336 160.556 33.8336 160.556 34.3891C160.556 34.9447 160.445 35.4447 160.222 35.8891C160 36.3336 159.667 36.6669 159.222 36.8891C158.778 37.1114 158.333 37.278 157.778 37.278C157.222 37.278 156.722 37.1669 156.333 36.8891C155.945 36.6114 155.556 36.278 155.333 35.8891ZM159.445 35.4447C159.611 35.1114 159.667 34.778 159.667 34.3891C159.667 34.0002 159.611 33.6114 159.445 33.3336C159.278 33.0002 159.056 32.778 158.778 32.6114C158.5 32.4447 158.167 32.3336 157.778 32.3336C157.389 32.3336 157.056 32.4447 156.778 32.6114C156.5 32.778 156.278 33.0558 156.111 33.3336C155.945 33.6669 155.889 34.0002 155.889 34.3891C155.889 34.778 155.945 35.1669 156.111 35.4447C156.278 35.778 156.5 36.0002 156.778 36.1669C157.056 36.3336 157.389 36.4447 157.778 36.4447C158.167 36.4447 158.5 36.3336 158.778 36.1669C159.056 36.0002 159.278 35.7225 159.445 35.4447Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M164.5 32.4446H164.056C163.5 32.4446 163.111 32.6112 162.889 33.0001C162.667 33.389 162.556 33.8334 162.556 34.3334V37.2223H161.667V31.5557H162.445L162.556 32.389C162.722 32.1112 162.945 31.9446 163.167 31.7779C163.445 31.6112 163.778 31.5557 164.222 31.5557H164.5V32.4446Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M166.389 29.9446C166.389 30.1113 166.333 30.2779 166.222 30.3891C166.111 30.5002 165.945 30.5557 165.778 30.5557C165.611 30.5557 165.445 30.5002 165.333 30.3891C165.222 30.2779 165.167 30.1113 165.167 29.9446C165.167 29.7779 165.222 29.6113 165.333 29.5002C165.445 29.3891 165.611 29.3335 165.778 29.3335C165.945 29.3335 166.111 29.3891 166.222 29.5002C166.333 29.6113 166.389 29.7779 166.389 29.9446ZM166.278 31.5557V37.2224H165.389V31.5557H166.278Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M166.833 32.389V31.5557H167.833V29.9446H168.722V31.5557H170.167V32.389H168.722V35.7224C168.722 35.9446 168.722 36.1112 168.833 36.2224C168.944 36.3335 169.111 36.389 169.333 36.389H170.333V37.2224H169.278C168.722 37.2224 168.389 37.1112 168.111 36.889C167.889 36.6668 167.778 36.2779 167.778 35.7779V32.4446H166.778L166.833 32.389Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M173.167 36.1668L174.833 31.5557H175.778L173.167 38.1668C173.056 38.5001 172.889 38.7779 172.833 38.9446C172.778 39.1112 172.611 39.2223 172.445 39.3334C172.278 39.389 172.056 39.4446 171.833 39.4446H170.722V38.6112H171.556C171.722 38.6112 171.889 38.6112 171.945 38.5557C172 38.5001 172.111 38.4446 172.167 38.389C172.167 38.2779 172.278 38.1668 172.389 37.9446L172.667 37.2779L170.445 31.5557H171.389L173.111 36.1668H173.167Z\"\r\n fill=\"#141414\"\r\n />\r\n </svg>\r\n)\r\n","import React, { FC } from 'react';\r\nimport { HeaderProps } from './HeaderStandard.types';\r\nimport { LanguageIcon, Logo_sv, Logo_en } from './Icons';\r\n\r\nconst Header: FC<HeaderProps> = ({\r\n activatedLanguage = 'sv',\r\n useLanguage = true,\r\n SetActivatedLanguage = () => {},\r\n}) => {\r\n const logoLink = activatedLanguage === 'en' ? 'https://pts.se/en' : 'https://pts.se/';\r\n\r\n const handleLanguageClick = () => {\r\n if (activatedLanguage === 'sv') {\r\n SetActivatedLanguage('en');\r\n } else if (activatedLanguage === 'en') {\r\n SetActivatedLanguage('sv');\r\n }\r\n };\r\n\r\n const getLanguageLabel = () => {\r\n if (activatedLanguage === 'sv') return 'English';\r\n else return 'Svenska';\r\n };\r\n\r\n return (\r\n <header className=\"pts-header-container\">\r\n <div className=\"pts-header-content\">\r\n <div className=\"pts-header-logo-container\">\r\n <a\r\n className=\"pts-header-logo\"\r\n href={logoLink}\r\n target=\"_blank\"\r\n aria-label={\r\n activatedLanguage === 'en'\r\n ? 'PTS logotype (to the homepage on pts.se, opens in new tab)'\r\n : 'PTS logotyp (till startsidan på pts.se, öppnas i ny flik)'\r\n }\r\n >\r\n {activatedLanguage === 'en' ? (\r\n <span aria-hidden=\"true\">{<Logo_en />}</span>\r\n ) : (\r\n <span aria-hidden=\"true\">{<Logo_sv />}</span>\r\n )}\r\n </a>\r\n </div>\r\n <div className=\"pts-header-navigation-container\">\r\n {useLanguage && (\r\n <button\r\n lang={activatedLanguage === 'en' ? 'en' : 'sv'}\r\n className=\"pts-languageButton\"\r\n onClick={handleLanguageClick}\r\n >\r\n <div className=\"languageIcon\">\r\n <span aria-hidden=\"true\">{<LanguageIcon />}</span>\r\n </div>\r\n <span aria-hidden=\"true\" className=\"pts-languageButton-text\">\r\n {getLanguageLabel()}\r\n </span>\r\n {activatedLanguage === 'en' && <span className=\"sr-only\">Ändra språk till svenska</span>}\r\n {activatedLanguage === 'sv' && (\r\n <span className=\"sr-only\">Change language to English</span>\r\n )}\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </header>\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { ModalProps } from './ModalStandard.types';\r\n\r\nconst CONTENT = {\r\n en: {\r\n heading: 'Please wait',\r\n message: 'Your case is being registered. Do not refresh or close the page.',\r\n },\r\n sv: {\r\n heading: 'Vänligen vänta',\r\n message: 'Ditt ärende registreras. Uppdatera eller stäng inte sidan.',\r\n },\r\n};\r\n\r\nconst Modal: FC<ModalProps> = ({ showModal: isOpen, activatedLanguage = '' }: ModalProps) => {\r\n const currentContent = activatedLanguage === 'en' ? CONTENT.en : CONTENT.sv;\r\n\r\n if (!isOpen) return null;\r\n\r\n return (\r\n <div className=\"pts-modal-overlay\">\r\n <div aria-hidden className=\"pts-modal-content\">\r\n <h1>{currentContent.heading}</h1>\r\n <p>{currentContent.message}</p>\r\n <div className=\"pts-spinner-border\"></div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Modal;\r\n","import { FC } from 'react';\r\nimport React from 'react';\r\nconst SkipLink: FC = () => {\r\n function scrollToMainContent() {\r\n const container = document.getElementById(`main-content`);\r\n if (container) {\r\n container.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n container.focus();\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"pts-skipLink-container\">\r\n <a\r\n href=\"#\"\r\n onClick={(e) => {\r\n e.preventDefault();\r\n scrollToMainContent();\r\n }}\r\n >\r\n Till huvudinnehåll\r\n </a>\r\n </div>\r\n );\r\n};\r\n\r\nexport default SkipLink;\r\n","import React, { FC, createElement } from 'react';\r\nimport DOMPurify from 'dompurify';\r\nimport { TextHeadlineAndBodyProps } from './TextHeadlineAndBodyStandard.types';\r\n\r\nconst TextHeadlineAndBody: FC<TextHeadlineAndBodyProps> = ({ data, headlineType = 'h2' }) => {\r\n return (\r\n <section\r\n className=\"pts-textHeadlineAndBody-container\"\r\n // aria-labelledby=\"textHeadlineAndBody-headline\"\r\n >\r\n {data.headline &&\r\n createElement(headlineType, { id: 'textHeadlineAndBody-headline' }, data.headline)}\r\n\r\n {data.body && <div dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(data.body) }}></div>}\r\n\r\n {data.linksForMoreInfo && data.linksForMoreInfo.length > 1 && (\r\n <ul className=\"pts-moreinfo-list\">\r\n {data.linksForMoreInfo.map((link, index) => (\r\n <li key={`more-info-${index}`} className={index > 0 ? 'notFirstInList' : ''}>\r\n <a\r\n href={link.url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n //aria-label={link.ariaLabel}\r\n >\r\n <span className=\"MoreInfoIcon\">\r\n <svg\r\n aria-hidden=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\"\r\n height=\"10\"\r\n viewBox=\"0 0 12 10\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M6.00001 9.63253L5.10321 8.82184L8.62749 5.57905H0.965332V4.42091H8.62749L5.10321 1.17813L6.00001 0.367432L11.0347 4.99998L6.00001 9.63253Z\"\r\n fill=\"#ffffff\"\r\n />\r\n </svg>\r\n </span>\r\n {link.title}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n\r\n {data.linksForMoreInfo && data.linksForMoreInfo.length === 1 && (\r\n <a\r\n href={data.linksForMoreInfo[0].url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n aria-label={data.linksForMoreInfo[0].ariaLabel}\r\n >\r\n <span className=\"MoreInfoIcon\">\r\n <svg\r\n aria-hidden=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\"\r\n height=\"10\"\r\n viewBox=\"0 0 12 10\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M6.00001 9.63253L5.10321 8.82184L8.62749 5.57905H0.965332V4.42091H8.62749L5.10321 1.17813L6.00001 0.367432L11.0347 4.99998L6.00001 9.63253Z\"\r\n fill=\"#ffffff\"\r\n />\r\n </svg>\r\n </span>\r\n {data.linksForMoreInfo[0].title}\r\n </a>\r\n )}\r\n </section>\r\n );\r\n};\r\n\r\nexport default TextHeadlineAndBody;\r\n","import React, { FC } from 'react';\r\nimport { PrincipleOfPublicityProps } from './PrincipleOfPublicityStandard.types';\r\nimport TextHeadlineAndBody from '../TextHeadlineAndBodyStandard/TextHeadlineAndBodyStandard';\r\n\r\nconst CONTENT = {\r\n en: {\r\n headline: 'The principle of publicity and processing of personal data',\r\n paragraph1:\r\n 'The principle of publicity means that everyone has the right to access public documents from authorities. Since PTS is an authority, the messages you send to us will, as a main rule, be public documents that we will disclose upon request if the information is not covered by confidentiality. The Data Protection Regulation does not prevent personal data in public documents from being disclosed.',\r\n paragraph2:\r\n \"You can find more information about the principle of publicity on the Government's website and more information about PTS processing of personal data on pts.se:\",\r\n links: [\r\n {\r\n url: 'https://www.regeringen.se/sa-styrs-sverige/grundlagar-och-demokratiskt-deltagande/offentlighetsprincipen/',\r\n title: 'The principle of publicity (opens in new tab)',\r\n },\r\n {\r\n url: 'https://www.pts.se/om-oss/behandling-av-personuppgifter/',\r\n title: 'PTS processing of personal data (opens in new tab)',\r\n },\r\n ],\r\n },\r\n sv: {\r\n headline: 'Offentlighetsprincipen och behandling av personuppgifter',\r\n paragraph1:\r\n 'Offentlighetsprincipen innebär att var och en har rätt att ta del av allmänna handlingar hos myndigheter. Eftersom PTS är en myndighet blir de meddelanden du skickar till oss som huvudregel allmänna handlingar som vi vid en begäran kommer att lämna ut om uppgifterna inte omfattas av sekretess. Dataskyddsförordningen hindrar inte att personuppgifter i allmänna handlingar lämnas ut.',\r\n paragraph2:\r\n 'Du hittar mer information om offentlighetsprincipen på regeringens webbplats och mer information om PTS behandling av personuppgifter på pts.se:',\r\n links: [\r\n {\r\n url: 'https://www.regeringen.se/sa-styrs-sverige/grundlagar-och-demokratiskt-deltagande/offentlighetsprincipen/',\r\n title: 'Offentlighetsprincipen (öppnas i ny flik)',\r\n },\r\n {\r\n url: 'https://www.pts.se/om-oss/behandling-av-personuppgifter/',\r\n title: 'PTS behandling av personuppgifter (öppnas i ny flik)',\r\n },\r\n ],\r\n },\r\n};\r\n\r\nconst PrincipleOfPublicity: FC<PrincipleOfPublicityProps> = ({ activatedLanguage = '' }) => {\r\n const currentContent = activatedLanguage === 'en' ? CONTENT.en : CONTENT.sv;\r\n\r\n return (\r\n <TextHeadlineAndBody\r\n data={{\r\n headline: currentContent.headline,\r\n body: `<p class=\"first-paragraph\">${currentContent.paragraph1}</p><p>${currentContent.paragraph2}</p>`,\r\n linksForMoreInfo: currentContent.links.map((link) => ({\r\n url: link.url,\r\n title: link.title,\r\n ariaLabel: link.title,\r\n })),\r\n }}\r\n headlineType=\"h2\"\r\n />\r\n );\r\n};\r\n\r\nexport default PrincipleOfPublicity;\r\n","import React, { FC, createElement } from 'react';\r\nimport DOMPurify from 'dompurify';\r\nimport { TextBodyProps } from './TextBody.types';\r\n\r\nconst TextBody: FC<TextBodyProps> = ({ data }) => {\r\n return (\r\n <div className=\"pts-textBody-container\">\r\n {data.body && <div dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(data.body) }}></div>}\r\n\r\n {data.linksForMoreInfo && data.linksForMoreInfo.length > 1 && (\r\n <ul className=\"pts-moreinfo-list\">\r\n {data.linksForMoreInfo.map((link: any, index: any) => (\r\n <li key={`more-info-${index}`} className={index > 0 ? 'notFirstInList' : ''}>\r\n <a\r\n href={link.url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n //aria-label={link.ariaLabel}\r\n >\r\n <span className=\"MoreInfoIcon\">\r\n <svg\r\n aria-hidden=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\"\r\n height=\"10\"\r\n viewBox=\"0 0 12 10\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M6.00001 9.63253L5.10321 8.82184L8.62749 5.57905H0.965332V4.42091H8.62749L5.10321 1.17813L6.00001 0.367432L11.0347 4.99998L6.00001 9.63253Z\"\r\n fill=\"#ffffff\"\r\n />\r\n </svg>\r\n </span>\r\n {link.title}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n\r\n {data.linksForMoreInfo && data.linksForMoreInfo.length === 1 && (\r\n <a\r\n href={data.linksForMoreInfo[0].url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n aria-label={data.linksForMoreInfo[0].ariaLabel}\r\n >\r\n <span className=\"MoreInfoIcon\">\r\n <svg\r\n aria-hidden=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\"\r\n height=\"10\"\r\n viewBox=\"0 0 12 10\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M6.00001 9.63253L5.10321 8.82184L8.62749 5.57905H0.965332V4.42091H8.62749L5.10321 1.17813L6.00001 0.367432L11.0347 4.99998L6.00001 9.63253Z\"\r\n fill=\"#ffffff\"\r\n />\r\n </svg>\r\n </span>\r\n {data.linksForMoreInfo[0].title}\r\n </a>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default TextBody;\r\n","import { FC } from 'react';\r\nimport React from 'react';\r\nimport { EditPreviewLinkProps } from './EditPreviewLinkStandard.types';\r\n\r\nconst EditPreviewLink: FC<EditPreviewLinkProps> = ({\r\n step,\r\n changeStepHandler,\r\n activatedLanguage = 'sv',\r\n}) => {\r\n return (\r\n <div className=\"pts-editPreviewLink-container\">\r\n <a\r\n href=\"#\"\r\n className=\"pts-edit-step-button\"\r\n onClick={(e) => {\r\n e.preventDefault();\r\n changeStepHandler(step.step);\r\n }}\r\n >\r\n <span className=\"pts-edit-step-text\"> \r\n {activatedLanguage === 'en' \r\n ? `Edit step ${step.step}` \r\n : `Redigera steg ${step.step}`}\r\n </span>\r\n </a>\r\n </div>\r\n );\r\n};\r\n\r\nexport default EditPreviewLink;\r\n","import React from 'react';\r\n\r\ninterface StartApplicationButtonProps {\r\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;\r\n label?: string;\r\n className?: string;\r\n}\r\n\r\n/**\r\n * En standardiserad knapp för att starta e-tjänsten.\r\n *\r\n * @param {Function} onClick - Funktion som körs när användaren klickar på knappen.\r\n * @param {string} label - Text som visas på knappen.\r\n * @param {string} className - Extra CSS-klasser för knappen.\r\n */\r\nconst StartApplicationButton: React.FC<StartApplicationButtonProps> = ({\r\n onClick,\r\n label = 'Starta e-tjänsten',\r\n className = '',\r\n}) => {\r\n return (\r\n <button\r\n type=\"button\"\r\n className={`pts-forwardButton pts-start-applicationButton ${className}`}\r\n onClick={onClick}\r\n >\r\n {label}\r\n </button>\r\n );\r\n};\r\nexport default StartApplicationButton;\r\n","import React, { FC } from 'react';\r\nimport { StepperButtonsProps } from './StepperButtonsStandard.types';\r\n\r\n/**\r\n * Renderar navigationsknappar för steg-navigering i ett flerstegsformulär.\r\n *\r\n * Funktionalitet:\r\n * Visar en \"Tillbaka\"-knapp när activeStep > 0.\r\n * Visar \"Nästa\"-knappen fram tills sista steget.\r\n * Byter \"Nästa\"-knappen till \"Skicka\" vid sista steget.\r\n *\r\n * @param {Object} globalLanguageState Objekt med språksträngar för knapparna.\r\n * Förväntas innehålla: backButton, forwardButton, sendButton.\r\n *\r\n * @param {Function} changeStepHandler Callback när användaren går bakåt i stegen.\r\n *\r\n * @param {Function} nextStepButtonHandler Callback när användaren går till nästa steg.\r\n *\r\n * @param {Function} onSubmitHandler Callback när sista steget nås och formuläret ska skickas in.\r\n *\r\n * @param {Array} steps Lista över alla steg i formuläret.\r\n * Används för att räkna ut sista stegnumret.\r\n *\r\n * @param {number} activeStep Det aktuella steget i flerstegsformuläret.\r\n */\r\nconst StepperButtons: FC<StepperButtonsProps> = ({\r\n globalLanguageState,\r\n changeStepHandler,\r\n nextStepButtonHandler,\r\n onSubmitHandler,\r\n steps,\r\n activeStep,\r\n}) => {\r\n const totalSteps = steps ? steps.length : '';\r\n\r\n return (\r\n <div className=\"pts-stepperButtons-container\">\r\n {activeStep !== 0 && (\r\n <button\r\n onClick={() => changeStepHandler(activeStep - 1)}\r\n className=\"pts-backButton\"\r\n type=\"button\"\r\n >\r\n {globalLanguageState ? globalLanguageState.backButton : '<<'}\r\n </button>\r\n )}\r\n <button\r\n type={activeStep === totalSteps ? 'submit' : 'button'}\r\n className=\"pts-forwardButton\"\r\n onClick={activeStep !== totalSteps ? nextStepButtonHandler : onSubmitHandler}\r\n >\r\n {activeStep !== totalSteps && globalLanguageState ? globalLanguageState.forwardButton : ''}\r\n\r\n {activeStep === totalSteps && globalLanguageState ? globalLanguageState.sendButton : ''}\r\n </button>\r\n </div>\r\n );\r\n};\r\n\r\nexport default StepperButtons;\r\n","import React, { FC } from 'react';\r\nimport { StepperProps } from './StepperStandard.types';\r\n\r\nconst Stepper: FC<StepperProps> = ({ arraySteps = [], activeStep = 1 }) => {\r\n return (\r\n <div className=\"pts-stepper-container\" aria-hidden=\"true\">\r\n {arraySteps.map((step, index) => {\r\n const isActive = step.step === activeStep;\r\n const lastElement = arraySteps.length;\r\n const isDone = step.step < activeStep;\r\n return (\r\n <React.Fragment key={`step-${step.step}`}>\r\n <div className=\"pts-stepper-step\" key={index}>\r\n <div\r\n className={\r\n 'pts-stepperDot' +\r\n (isActive ? ' pts-stepperDotActive' : '') +\r\n (isDone ? ' pts-stepperDotDone' : '')\r\n }\r\n >\r\n {isDone ? (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"15\"\r\n height=\"12\"\r\n viewBox=\"0 0 15 12\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M1.5 5.4375L4.875 10.3125L13.5 1.6875\"\r\n stroke=\"white\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n />\r\n </svg>\r\n ) : (\r\n step.step\r\n )}\r\n </div>\r\n <div className=\"pts-shortNameInStepper\">{step.shortNameInStepper}</div>\r\n </div>\r\n {step.step !== lastElement && <div className=\"pts-stepperLine\"></div>}\r\n </React.Fragment>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Stepper;\r\n","import React from 'react'\r\nimport { ValidationErrorSummaryListProps } from './ValidationErrorSummaryList.types'\r\n\r\n/**\r\n * Renderar en summering av valideringsfel.\r\n *\r\n * @param validationErrorsList Lista av fråge-id:n som har valideringsfel.\r\n * @param questions Alla frågor i formuläret (används för att hitta labels m.m.).\r\n * @param activatedLanguage Aktivt språk.\r\n */\r\nexport const ValidationErrorSummaryList: React.FC<ValidationErrorSummaryListProps> = ({\r\n validationErrorsList,\r\n questions,\r\n activatedLanguage,\r\n}) => {\r\n const summaryText =\r\n activatedLanguage === 'sv' ? 'Du behöver åtgärda {count} {plural}' : 'You need to fix {count} {plural}'\r\n\r\n function filterIdsByGroupCheck(ids: number[], questions: any[]): number[] {\r\n const tailIds = new Set<number>() // ids som alltid ska bort (alla utom första i varje grupp)\r\n\r\n for (const q of questions) {\r\n const rules = q.validationType ?? []\r\n for (const rule of rules) {\r\n // Matchar t.ex. \"groupCheck-205-206-207-208\"\r\n const m = /^groupCheck-(\\d+(?:-\\d+)*)$/.exec(rule.trim())\r\n if (!m) continue\r\n\r\n const nums = m[1]\r\n .split('-')\r\n .map(s => Number(s))\r\n .filter(n => Number.isFinite(n))\r\n\r\n if (nums.length > 1) {\r\n for (let i = 1; i < nums.length; i++) {\r\n tailIds.add(nums[i])\r\n }\r\n }\r\n }\r\n }\r\n\r\n return ids.filter(id => !tailIds.has(id))\r\n }\r\n\r\n function scrollToQuestion(questionId: number) {\r\n const container = document.getElementById(`question-${questionId}`)\r\n if (container) {\r\n container.scrollIntoView({ behavior: 'smooth', block: 'center' })\r\n\r\n setTimeout(() => {\r\n const input = container.querySelector('input, textarea, select, button') as HTMLElement | null\r\n if (input) {\r\n input.focus()\r\n }\r\n }, 300)\r\n }\r\n }\r\n\r\n if (!validationErrorsList.length) return <></>\r\n\r\n const filteredIds = filterIdsByGroupCheck(validationErrorsList, questions)\r\n\r\n const count = filteredIds.length\r\n const title = summaryText\r\n .replace('{count}', count.toString())\r\n .replace(\r\n '{plural}',\r\n activatedLanguage === 'sv' ? (count === 1 ? 'sak' : 'saker') : count === 1 ? 'thing' : 'things'\r\n )\r\n\r\n function getQuestionLabelById(id: number): string | undefined {\r\n const found = questions.find(item => item.id === id)\r\n return found?.validationSummaryLabel ?? found?.questionLabel\r\n }\r\n\r\n return (\r\n <div className={`pts-errorSummary-container pts-root-error ${validationErrorsList.length === 0 ? \"cleanPadding\" : \"\"}`}>\r\n <span aria-hidden=\"true\" className=\"errorDot\">\r\n !\r\n </span>\r\n <div className=\"errorSummary-content\" id=\"pts-errorSummary-content\">\r\n <h2 id=\"errorSummary-headline\">{title}</h2>\r\n <ul id=\"errorSummary-ul\">\r\n {filteredIds.map((questionId, i) => (\r\n <li key={questionId || i}>\r\n <a\r\n href=\"#\"\r\n onClick={e => {\r\n e.preventDefault()\r\n scrollToQuestion(questionId)\r\n }}\r\n className=\"errorSummary-text\"\r\n >\r\n {getQuestionLabelById(questionId)}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default ValidationErrorSummaryList\r\n","import React from 'react';\r\n\r\ninterface FormStatusMessagesProps {\r\n formStatus: string;\r\n}\r\n\r\n/**\r\n * Visar ett error-meddelande om formuläret misslyckas att skicka in, dvs. status är\r\n * failed. Läser upp att formuläret laddas för skärmläsare när status är loading.\r\n *\r\n * @param {string} formStatus Nuvarande status för formuläret.\r\n *\r\n */\r\nconst FormStatusMessagesScreenReader: React.FC<FormStatusMessagesProps> = ({ formStatus }) => {\r\n return (\r\n <>\r\n {/* Felmeddelande (hög prioritet, läses direkt upp) */}\r\n <p aria-live=\"assertive\">\r\n {formStatus === 'failed' && (\r\n <span className=\"pts-root-mandatoryAsterisk\">\r\n Något gick fel, försök igen senare eller kontakta oss!\r\n </span>\r\n )}\r\n </p>\r\n\r\n {/* Laddningsmeddelande (låg prioritet, läses upp när möjligt) */}\r\n <div aria-live=\"polite\" className=\"visually-hidden\">\r\n {formStatus === 'loading'\r\n ? 'Ditt ärende registreras. Uppdatera eller stäng inte sidan.'\r\n : ''}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default FormStatusMessagesScreenReader;\r\n"],"mappings":"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","names":["import_jsx_runtime","_a","import_react","import_jsx_runtime","_a","import_jsx_runtime","DOMPurify","import_dompurify","import_jsx_runtime","DOMPurify","import_react","import_clsx","import_jsx_runtime","import_react","import_react","import_jsx_runtime","React","import_jsx_runtime","clsx","import_react","import_react","import_clsx","import_jsx_runtime","clsx","import_jsx_runtime","windowWidth","React","import_jsx_runtime","questionObject","clsx","import_react","import_jsx_runtime","_a","_a","_b","questions","import_toolkit","React","import_react","import_react","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_dompurify","import_jsx_runtime","DOMPurify","import_jsx_runtime","CONTENT","import_dompurify","import_jsx_runtime","DOMPurify","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","questions","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx","../src/components/input-components/RadioMultipleStandard/RadioMultipleStandard.tsx","../src/components/input-components/MultipleCheckboxesStandard/MultipleCheckboxesStandard.tsx","../src/components/input-components/CheckboxGroupStandard/CheckboxGroupStandard.tsx","../src/components/input-components/TextAreaStandard/TextAreaStandard.tsx","../src/components/input-components/TextFieldStandard/TextFieldStandard.tsx","../src/components/input-components/AddFilesStandard/AddFilesStandard.tsx","../src/components/input-components/AddFilesStandard/DropFilesStandard.tsx","../src/components/input-components/AddFilesStandard/ExploreFilesStandard.tsx","../src/components/input-components/AddFilesStandard/ScreenReaderErrors.tsx","../src/components/input-components/AddFilesStandard/SelectedFilesStandard.tsx","../src/components/input-components/AddFilesStandard/IndicatorStandard.tsx","../src/components/input-components/SingleCheckboxStandard/SingleCheckboxStandard.tsx","../src/helpers/hasQuestionValidationError/hasQuestionValidationError.tsx","../src/helpers/createApiDataObject/createApiDataObject.tsx","../src/helpers/preparePreviewData/preparePreviewData.ts","../src/helpers/isQuestionDependencySatisfied/isQuestionDependencySatisfied.ts","../src/helpers/updateQuestionsAndCategoriesVisibilityAndErrors/updateQuestionsAndCategoriesVisibilityAndErrors.ts","../src/helpers/findVisibleQuestionsWithValidationErrors/findVisibleQuestionsWithValidationErrors.ts","../src/helpers/buildStepCategoryGroupQuestionStructure/buildStepCategoryGroupQuestionStructure.ts","../src/state/globalLanguageSlice/globalLanguageSlice.ts","../src/state/formSlice/formSlice.ts","../src/helpers/cookieHandler/cookieHandler.ts","../src/helpers/scriptHandler/scriptHandler.ts","../src/helpers/focusElement/focusElement.ts","../src/helpers/getGroupCheckIds/getGroupCheckIds.ts","../src/hooks/useFormStatusModal/useFormStatusModal.ts","../src/hooks/usePTSPageTitle/usePTSPageTitle.ts","../src/hooks/useInputMethodDetection/useInputMethodDetection.ts","../src/hooks/useCookieConsent/useCookieConsent.ts","../src/components/question-rendering/QuestionRenderer/QuestionRenderer.tsx","../src/components/question-rendering/QuestionGroup/QuestionGroup.tsx","../src/components/layout/CookieBanner/CookieBanner.tsx","../src/components/layout/FooterStandard/FooterStandard.tsx","../src/components/layout/HeaderStandard/Icons.tsx","../src/components/layout/HeaderStandard/HeaderStandard.tsx","../src/components/layout/ModalStandard/ModalStandard.tsx","../src/components/layout/SkipLinkStandard/SkipLinkStandard.tsx","../src/components/text-blocks/TextHeadlineAndBodyStandard/TextHeadlineAndBodyStandard.tsx","../src/components/text-blocks/PrincipleOfPublicityStandard/PrincipleOfPublicityStandard.tsx","../src/components/text-blocks/TextBody/TextBody.tsx","../src/components/stepper/EditPreviewLinkStandard/EditPreviewLinkStandard.tsx","../src/components/stepper/StartApplicationButton/StartApplicationButton.tsx","../src/components/stepper/StepperButtonsStandard/StepperButtonsStandard.tsx","../src/components/stepper/StepperStandard/StepperStandard.tsx","../src/components/validation-and-status/ValidationErrorSummaryList/ValidationErrorSummaryList.tsx","../src/components/validation-and-status/FormStatusMessagesScreenReader/FormStatusMessagesScreenReader.tsx"],"sourcesContent":["//import './global.css';\r\n\r\nexport * from './components/input-components';\r\nexport * from './helpers';\r\nexport * from './components/question-rendering';\r\nexport * from './types';\r\nexport * from './components';\r\nexport * from './state';\r\n","import React, { FC } from 'react';\r\nimport { IQuestion } from '../../../types/TypesStandard.types';\r\nimport { RadioProps } from './RadioMultipleStandard.types';\r\n\r\nconst InputRadio: FC<RadioProps> = ({\r\n question,\r\n handleQuestionInputChange,\r\n showPreview = false,\r\n}) => {\r\n const questionId = `question-${question.id}`;\r\n const groupId = `radio-group-${question.id}`;\r\n const errorId = `error-${question.id}`;\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const e = { target: { value: event.target.value } };\r\n handleQuestionInputChange(e, question);\r\n };\r\n\r\n return (\r\n <>\r\n {!showPreview && question.visible && (\r\n <div className=\"pts-root-question pts-radioMultiple-container\" id={questionId}>\r\n <fieldset\r\n aria-required={question.isQuestionMandatory}\r\n aria-invalid={question.hasValidationError ? question.hasValidationError : undefined}\r\n aria-errormessage={question.hasValidationError ? errorId : undefined}\r\n >\r\n <legend id={`label-${groupId}`}>\r\n {question.questionLabel}{' '}\r\n {question.isQuestionMandatory && (\r\n <span aria-hidden={true} className=\"pts-root-mandatoryAsterisk\">\r\n *\r\n </span>\r\n )}\r\n </legend>\r\n\r\n {question.options?.map((option: any, index) => (\r\n <div key={index} className=\"pts-radio-option\">\r\n <input\r\n type=\"radio\"\r\n name={`name-${question.id}`}\r\n id={`${groupId}-option-${index}`}\r\n value={option.value}\r\n checked={question.answer === option.value}\r\n onChange={handleInputChange}\r\n />\r\n <label htmlFor={`${groupId}-option-${index}`}>{option.label}</label>{' '}\r\n </div>\r\n ))}\r\n\r\n {question.hasValidationError && (\r\n <div className=\"pts-root-error\" id={errorId}>\r\n <span aria-hidden={true} className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"sr-only\">Valideringsfel</span>\r\n\r\n <span className=\"errorText\">{question.validationDefaultMessesege}</span>\r\n </div>\r\n )}\r\n </fieldset>\r\n </div>\r\n )}\r\n {showPreview && <PreviewRadio question={question} />}\r\n </>\r\n );\r\n};\r\n\r\nexport default InputRadio;\r\n\r\ninterface PreviewRadioProps {\r\n question: IQuestion;\r\n}\r\n\r\nconst PreviewRadio = ({ question }: PreviewRadioProps) => {\r\n const previewId = `preview-${question.id}`;\r\n\r\n return (\r\n <>\r\n <dt id={`question-${previewId}`}>{question.previewLabel ?? question.questionLabel}</dt>\r\n\r\n {question.answer?.trim() ? (\r\n <dd className=\"pts-radioMultiple-preview pts-root-answer\" id={`answer-${previewId}`}>\r\n {question.answer}\r\n </dd>\r\n ) : (\r\n <dd\r\n className=\"pts-radioMultiple-preview pts-root-answer no-answer-preview-page\"\r\n id={`answer-${previewId}`}\r\n >\r\n Inget svar\r\n </dd>\r\n )}\r\n </>\r\n );\r\n};\r\n","import { FC, useEffect, useState } from 'react';\r\nimport React from 'react';\r\nimport { MultipleCheckboxesProps } from './MultiplesCheckboxesStandard.types';\r\nimport { IQuestion } from '../../../types/TypesStandard.types';\r\n\r\nconst MultipleCheckboxes: FC<MultipleCheckboxesProps> = ({\r\n question,\r\n handleQuestionInputChange,\r\n showPreview = false,\r\n activatedLanguage = 'sv',\r\n}) => {\r\n const questionId = `question-${question.id}`;\r\n const [checkedValues, setCheckedValues] = useState<string[]>([]);\r\n\r\n useEffect(() => {\r\n const initialValues =\r\n question.options\r\n ?.filter((option: any) => question.answer?.includes(option.label))\r\n .map((option: any) => option.label) || [];\r\n\r\n console.log('Initial values:', initialValues);\r\n setCheckedValues(initialValues);\r\n }, [question.answer, question.options]);\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>, optionValue: string) => {\r\n let updatedValues = [...checkedValues];\r\n\r\n if (updatedValues.includes(optionValue)) {\r\n updatedValues = updatedValues.filter((val) => val !== optionValue);\r\n } else {\r\n updatedValues.push(optionValue);\r\n }\r\n\r\n setCheckedValues(updatedValues);\r\n\r\n const e = { target: { value: updatedValues.toString() } };\r\n handleQuestionInputChange(e, question);\r\n };\r\n\r\n return (\r\n <>\r\n {!showPreview && question.visible && (\r\n <div id={questionId} className=\"pts-root-question pts-multipleCheckboxes-container\">\r\n <fieldset>\r\n <legend className=\"multipleCheckboxes-legend\" id={`label-${questionId}`}>\r\n {question.questionLabel}{' '}\r\n {question.isQuestionMandatory && (\r\n <span aria-hidden={true} className=\"pts-root-mandatoryAsterisk\">\r\n *\r\n </span>\r\n )}{' '}\r\n </legend>\r\n <ul>\r\n {question.options?.map((option: any, index: number) => (\r\n <li key={index}>\r\n <>\r\n {' '}\r\n <input\r\n type=\"checkbox\"\r\n name={`${question.id}-option`}\r\n id={`${question.id}-option-${index}`}\r\n value={option.label}\r\n checked={checkedValues.includes(option.label)}\r\n onChange={(e) => handleInputChange(e, option.label)}\r\n className={\r\n question.hasValidationError\r\n ? 'pts-root-question-input-error-border'\r\n : undefined\r\n }\r\n />\r\n <label htmlFor={`${question.id}-option-${index}`}>{option.label}</label>\r\n </>\r\n </li>\r\n ))}\r\n </ul>\r\n </fieldset>\r\n </div>\r\n )}{' '}\r\n {showPreview && (\r\n <PrevieMultipleCheckboxes activatedLanguage={activatedLanguage} question={question} />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default MultipleCheckboxes;\r\n\r\nconst PrevieMultipleCheckboxes = ({\r\n question,\r\n activatedLanguage,\r\n}: {\r\n activatedLanguage: MultipleCheckboxesProps['activatedLanguage'];\r\n question: IQuestion;\r\n}) => {\r\n const previewId = `preview-${question.id}`;\r\n\r\n return (\r\n <>\r\n <dt id={`question-${previewId}`}>{question.previewLabel ?? question.questionLabel}</dt>\r\n {question.answer ? (\r\n question.options && question.options.length === 1 ? (\r\n <dd>{question.options[0].label}</dd>\r\n ) : (\r\n <dd>\r\n <ul className=\"pts-preview-answer-list\">\r\n {question.options\r\n ?.filter((option: any) => question.answer?.includes(option.label))\r\n .map((option: any, index) => (\r\n <li key={index}>{option.label}</li>\r\n ))}\r\n </ul>\r\n </dd>\r\n )\r\n ) : (\r\n <dd className=\"no-answer-preview-page\">\r\n {activatedLanguage === 'en' ? 'No Answer' : 'Inget svar'}\r\n </dd>\r\n )}{' '}\r\n </>\r\n );\r\n};\r\n","import { FC, useEffect, useState } from 'react';\r\nimport React from 'react';\r\nimport { CheckboxGroupProps } from './CheckboxGroupStandard.types'\r\nimport { IQuestion } from '../../../types/TypesStandard.types';\r\n\r\nconst CheckboxGroup: FC<CheckboxGroupProps> = ({\r\n question,\r\n handleQuestionInputChange,\r\n showPreview = false,\r\n activatedLanguage = 'sv',\r\n}) => {\r\n const questionId = `question-${question.id}`;\r\n const errorId = `error-${question.id}`;\r\n const groupId = `checkbox-group-${question.id}`;\r\n \r\n const [checkedValues, setCheckedValues] = useState<string[]>([]);\r\n\r\n useEffect(() => {\r\n const initialValues =\r\n question.options\r\n ?.filter((option: any) => question.answer?.includes(option.label))\r\n .map((option: any) => option.label) || [];\r\n\r\n setCheckedValues(initialValues);\r\n }, [question.answer, question.options]);\r\n \r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>, optionValue: string) => {\r\n let updatedValues = [...checkedValues];\r\n\r\n if (updatedValues.includes(optionValue)) {\r\n updatedValues = updatedValues.filter((val) => val !== optionValue);\r\n } else {\r\n updatedValues.push(optionValue);\r\n }\r\n\r\n setCheckedValues(updatedValues);\r\n\r\n const e = { target: { value: updatedValues.toString() } };\r\n handleQuestionInputChange(e, question);\r\n };\r\n\r\n return (\r\n <>\r\n {!showPreview && question.visible && (\r\n <div id={questionId} className=\"pts-root-question pts-checkboxGroup-container\">\r\n <fieldset\r\n aria-required={question.isQuestionMandatory}\r\n aria-invalid={question.hasValidationError ? question.hasValidationError : undefined}\r\n aria-errormessage={question.hasValidationError ? errorId : undefined}\r\n >\r\n <legend className=\"pts-checkboxGroup-legend\" id={`label-${groupId}`}>\r\n {question.questionLabel}{' '}\r\n {question.isQuestionMandatory && (\r\n <span aria-hidden={true} className=\"pts-root-mandatoryAsterisk\">\r\n *\r\n </span>\r\n )}\r\n </legend>\r\n\r\n {question.options?.map((option: any, index: number) => (\r\n <div className=\"pts-checkboxGroup-options\" key={index}>\r\n <input\r\n type=\"checkbox\"\r\n name={`name-${question.id}`}\r\n id={`${groupId}-option-${index}`}\r\n value={option.label}\r\n checked={checkedValues.includes(option.label)}\r\n onChange={(e) => handleInputChange(e, option.label)}\r\n className={\r\n question.hasValidationError\r\n ? 'pts-root-question-input-error-border'\r\n : undefined\r\n }\r\n />\r\n <label htmlFor={`${groupId}-option-${index}`}>{option.label}</label>\r\n </div>\r\n ))}\r\n\r\n {question.hasValidationError && (\r\n <div className=\"pts-root-error\" id={errorId}>\r\n <span aria-hidden={true} className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"sr-only\">Valideringsfel</span>\r\n\r\n <span className=\"errorText\">\r\n {question.validationDefaultMessesege}</span>\r\n </div>\r\n )}\r\n </fieldset>\r\n </div>\r\n )}\r\n {showPreview && (\r\n <PreviewCheckboxGroup activatedLanguage={activatedLanguage} question={question} />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default CheckboxGroup;\r\n\r\nconst PreviewCheckboxGroup = ({\r\n question,\r\n activatedLanguage,\r\n}: {\r\n activatedLanguage: CheckboxGroupProps['activatedLanguage'];\r\n question: IQuestion;\r\n}) => {\r\n const previewId = `preview-${question.id}`;\r\n\r\n return (\r\n <>\r\n <dt id={`question-${previewId}`}>{question.previewLabel ?? question.questionLabel}</dt>\r\n {question.answer ? (\r\n question.options && question.options.length === 1 ? (\r\n <dd>{question.options[0].label}</dd>\r\n ) : (\r\n <dd>\r\n <ul className=\"pts-preview-answer-list\">\r\n {question.options\r\n ?.filter((option: any) => question.answer?.includes(option.label))\r\n .map((option: any, index) => (\r\n <li key={index}>{option.label}</li>\r\n ))}\r\n </ul>\r\n </dd>\r\n )\r\n ) : (\r\n <dd className=\"no-answer-preview-page\">\r\n {activatedLanguage === 'en' ? 'No Answer' : 'Inget svar'}\r\n </dd>\r\n )}{' '}\r\n </>\r\n );\r\n};\r\n","import React, { FC } from 'react';\r\nimport { IQuestion } from '../../../types/TypesStandard.types';\r\nimport { TextAreaProps } from './TextAreaStandard.types';\r\nimport DOMPurify from 'dompurify';\r\n\r\nconst InputTextarea: FC<TextAreaProps> = ({\r\n question,\r\n handleQuestionInputChange,\r\n showPreview = false,\r\n activatedLanguage,\r\n}) => {\r\n const questionId = `question-${question.id}`;\r\n const inputId = `textarea-${question.id}`;\r\n const aboutId = `about-${question.id}`;\r\n const errorId = `error-${question.id}`;\r\n\r\n const defaultMaxLength = 1000;\r\n const answerLength = question.answer?.length ?? 0;\r\n const maxLength = question.questionExtraAttribute?.answerMaxLength ?? defaultMaxLength;\r\n const isTooLong = answerLength > maxLength;\r\n\r\n const counterText =\r\n activatedLanguage === 'en'\r\n ? `${answerLength} of ${maxLength} characters`\r\n : `${answerLength} av ${maxLength} tecken`;\r\n\r\n const maxLengthErrorText =\r\n activatedLanguage === 'en'\r\n ? `The text must be ${maxLength} characters or less`\r\n : `Texten får max vara ${maxLength} tecken`;\r\n\r\n return (\r\n <>\r\n {!showPreview && question.visible && (\r\n <div\r\n id={questionId}\r\n className={`pts-root-question pts-textArea-container${\r\n question.aboutText ? ' pts-question-hasAbout' : ''\r\n }`}\r\n >\r\n <label htmlFor={inputId}>\r\n {question.questionLabel}{' '}\r\n {question.isQuestionMandatory && (\r\n <span className=\"pts-root-mandatoryAsterisk\" aria-hidden=\"true\">\r\n *\r\n </span>\r\n )}\r\n </label>\r\n\r\n {question.aboutText && (\r\n <div\r\n id={aboutId}\r\n className=\"pts-about\"\r\n dangerouslySetInnerHTML={{\r\n __html: DOMPurify.sanitize(question.aboutText),\r\n }}\r\n />\r\n )}\r\n\r\n <textarea\r\n className={\r\n question.hasValidationError ? 'pts-root-question-input-error-border' : undefined\r\n }\r\n onChange={(e) => handleQuestionInputChange(e, question)}\r\n value={question.answer}\r\n required={question.isQuestionMandatory}\r\n aria-required={question.isQuestionMandatory}\r\n aria-invalid={question.hasValidationError}\r\n aria-describedby={\r\n [question.aboutText ? aboutId : null, question.hasValidationError ? errorId : null]\r\n .filter(Boolean)\r\n .join(' ') || undefined\r\n }\r\n id={inputId}\r\n />\r\n <div className=\"pts-textarea-counter-error-container\">\r\n {!isTooLong && question.hasValidationError && (\r\n <div className=\"pts-root-error\" id={errorId}>\r\n <span aria-label=\"Felmeddelande.\" className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"errorText\">{question.validationDefaultMessesege}</span>\r\n </div>\r\n )}\r\n\r\n {isTooLong && question.hasValidationError && (\r\n <div className=\"pts-root-error\" id={errorId}>\r\n <span aria-label=\"Felmeddelande.\" className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"errorText\">{maxLengthErrorText}</span>\r\n </div>\r\n )}\r\n {!question.questionExtraAttribute?.hideTextCounter && (\r\n <div aria-live=\"polite\" className={`pts-character-counter`}>\r\n {counterText}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n {showPreview && <PreviewTextarea activatedLanguage={activatedLanguage} question={question} />}\r\n </>\r\n );\r\n};\r\n\r\nexport default InputTextarea;\r\n\r\nconst PreviewTextarea = ({\r\n question,\r\n activatedLanguage,\r\n}: {\r\n activatedLanguage: TextAreaProps['activatedLanguage'];\r\n question: IQuestion;\r\n}) => {\r\n const previewId = `preview-${question.id}`;\r\n\r\n return (\r\n <>\r\n <dt id={`question-${previewId}`}>{question.previewLabel ?? question.questionLabel}</dt>\r\n\r\n {question.answer?.trim() ? (\r\n <dd className=\"pts-textArea-preview pts-root-answer\" id={`answer-${previewId}`}>\r\n {question.answer}\r\n </dd>\r\n ) : (\r\n <dd\r\n className=\"pts-textArea-preview pts-root-answer no-answer-preview-page\"\r\n id={`answer-${previewId}`}\r\n >\r\n {activatedLanguage === 'en' ? 'No Answer' : 'Inget svar'}\r\n </dd>\r\n )}\r\n </>\r\n );\r\n};\r\n","import React, { FC } from 'react';\r\nimport { IQuestion } from '../../../types/TypesStandard.types';\r\nimport { TextFieldStandardProps } from './TextFieldStandard.types';\r\nimport DOMPurify from 'dompurify';\r\n\r\nconst TextFieldStandard: FC<TextFieldStandardProps> = ({\r\n question,\r\n handleQuestionInputChange,\r\n showPreview = false,\r\n activatedLanguage,\r\n}) => {\r\n const questionId = `question-${question.id}`;\r\n const inputId = `textField-${question.id}`;\r\n const aboutId = `about-${question.id}`;\r\n const errorId = `error-${question.id}`;\r\n\r\n const answerLength = question.answer?.length ?? 0;\r\n const maxLength = 100;\r\n const isTooLong = answerLength > maxLength;\r\n\r\n const maxLengthErrorText =\r\n activatedLanguage === 'en'\r\n ? `The text must be ${maxLength} characters or less`\r\n : `Texten får max vara ${maxLength} tecken`;\r\n\r\n return (\r\n <>\r\n {!showPreview && question.visible && (\r\n <div\r\n id={questionId}\r\n className={`pts-root-question pts-textField-container${\r\n question.questionExtraAttribute?.disabled ? ' pts-textField-disabled' : ''\r\n }${question.aboutText ? ' pts-question-hasAbout' : ''}`.trim()}\r\n >\r\n <label htmlFor={inputId}>\r\n {question.questionLabel}{' '}\r\n {question.isQuestionMandatory && (\r\n <span aria-hidden=\"true\" className=\"pts-root-mandatoryAsterisk\">\r\n *\r\n </span>\r\n )}\r\n </label>\r\n\r\n {question.aboutText && (\r\n <div\r\n id={aboutId}\r\n className=\"pts-about\"\r\n dangerouslySetInnerHTML={{\r\n __html: DOMPurify.sanitize(question.aboutText),\r\n }}\r\n />\r\n )}\r\n\r\n <input\r\n type={question.questionExtraAttribute?.inputType ?? 'text'}\r\n autoComplete={question.questionExtraAttribute?.autoComplete ?? undefined}\r\n inputMode={question.questionExtraAttribute?.inputMode ?? undefined}\r\n name={`question-name-${question.id}`}\r\n className={\r\n question.hasValidationError ? 'pts-root-question-input-error-border' : undefined\r\n }\r\n onChange={(e) => handleQuestionInputChange(e, question)}\r\n value={question.answer}\r\n id={inputId}\r\n disabled={question.questionExtraAttribute?.disabled}\r\n required={question.isQuestionMandatory}\r\n aria-required={question.isQuestionMandatory}\r\n aria-describedby={\r\n [question.aboutText ? aboutId : null].filter(Boolean).join(' ') || undefined\r\n }\r\n aria-invalid={question.hasValidationError}\r\n aria-errormessage={question.hasValidationError ? errorId : undefined}\r\n spellCheck={question.questionExtraAttribute?.spellCheck ?? undefined}\r\n autoCapitalize={question.questionExtraAttribute?.autoCapitalize ?? undefined}\r\n />\r\n\r\n {!isTooLong && question.hasValidationError && (\r\n <div className=\"pts-root-error\" id={errorId}>\r\n <span aria-hidden={true} className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"sr-only\">Valideringsfel</span>\r\n\r\n <span className=\"errorText\">{question.validationDefaultMessesege}</span>\r\n </div>\r\n )}\r\n\r\n {isTooLong && question.hasValidationError && (\r\n <div className=\"pts-root-error\" id={errorId}>\r\n <span aria-hidden={true} className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"sr-only\">Valideringsfel</span>\r\n\r\n <span className=\"errorText\">{maxLengthErrorText}</span>\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n {showPreview && (\r\n <PreviewTextField activatedLanguage={activatedLanguage} question={question} />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default TextFieldStandard;\r\n\r\nconst PreviewTextField = ({\r\n question,\r\n activatedLanguage,\r\n}: {\r\n activatedLanguage: TextFieldStandardProps['activatedLanguage'];\r\n question: IQuestion;\r\n}) => {\r\n const previewId = `preview-${question.id}`;\r\n return (\r\n <>\r\n <dt id={`question-${previewId}`}>{question.previewLabel ?? question.questionLabel}</dt>\r\n\r\n {question.answer?.trim() ? (\r\n <dd className=\"pts-textField-preview pts-root-answer\" id={`answer-${previewId}`}>\r\n {question.answer}\r\n </dd>\r\n ) : (\r\n <dd\r\n className=\"pts-textField-preview pts-root-answer no-answer-preview-page\"\r\n id={`answer-${previewId}`}\r\n >\r\n {activatedLanguage === 'en' ? 'No Answer' : 'Inget svar'}\r\n </dd>\r\n )}\r\n </>\r\n );\r\n};\r\n","import React, { FC, useCallback, useEffect, useState } from 'react';\r\nimport clsx from 'clsx';\r\nimport DropFiles from './DropFilesStandard';\r\nimport ExploreFiles from './ExploreFilesStandard';\r\nimport SelectedFiles from './SelectedFilesStandard';\r\nimport { AddFilesProps } from './AddFilesStandard.types';\r\n\r\nconst AddFiles: FC<AddFilesProps> = ({\r\n questionObject,\r\n handleQuestionInputChange = (\r\n e: { target: { value: string; files: Array<any> } },\r\n questionObject: any,\r\n ) => {\r\n alert('no function');\r\n },\r\n visible,\r\n activatedLanguage = 'sv',\r\n showPreview = false,\r\n allowedFileTypes = [],\r\n allowedNumberOfFiles = 5,\r\n allowedTotalFileSize = 20971520, // 20MB = (1024 * 1024) * 20\r\n}) => {\r\n if (allowedFileTypes.length < 1) {\r\n allowedFileTypes = [\r\n 'pdf',\r\n 'doc',\r\n 'docx',\r\n 'xls',\r\n 'xlsx',\r\n 'txt',\r\n 'rtf',\r\n 'ppt',\r\n 'pptx',\r\n 'jpg',\r\n 'jpeg',\r\n 'png',\r\n 'tif',\r\n 'tiff',\r\n 'csv',\r\n ];\r\n }\r\n\r\n const inputId = `input-${questionObject.id}`;\r\n const aboutId = `about-${questionObject.id}`;\r\n const errorId = `error-${questionObject.id}`;\r\n const labelId = `label-${questionObject.id}`;\r\n const maxSizeMB = Math.round(allowedTotalFileSize / 1048576);\r\n const [numberOfFiles, setNumberOfFiles] = useState(0);\r\n const [totalFileSize, setTotalFileSize] = useState(0);\r\n const [errorMessageAddingFile, setErrorMessageAddingFile] = useState([] as object[]);\r\n const [newFiles, setNewFiles] = useState<any>([]);\r\n const [dropFilesText, setDropFilesText] = useState<any>('Dra och släpp dina filer här');\r\n\r\n useEffect(() => {\r\n if (activatedLanguage === 'sv') {\r\n setDropFilesText('Dra och släpp dina filer här');\r\n } else {\r\n setDropFilesText('Drag and drop your files here');\r\n }\r\n }, [activatedLanguage]);\r\n\r\n useEffect(() => {\r\n if (questionObject.files && questionObject.files.length > 0) {\r\n setNumberOfFiles(questionObject.files.length);\r\n }\r\n }, []);\r\n\r\n const onDrop = useCallback(\r\n (acceptedFiles: File[]) => {\r\n const validationErrors: any[] = [];\r\n const validFiles: File[] = [];\r\n\r\n const currentTotalFileSize = (questionObject.files || []).reduce(\r\n (acc: number, f: any) => acc + f.FileSize,\r\n 0,\r\n );\r\n\r\n setTotalFileSize(currentTotalFileSize);\r\n\r\n if ((questionObject.files?.length || 0) >= allowedNumberOfFiles) {\r\n acceptedFiles.forEach((file) => {\r\n validationErrors.push({\r\n FileName: file.name,\r\n svMessage: `Du kan ladda upp maximalt ${allowedNumberOfFiles} filer med total filstorlek på ${maxSizeMB} MB`,\r\n enMessage: `You can upload a maximum of ${allowedNumberOfFiles} files with a total file size of ${maxSizeMB} MB`,\r\n });\r\n });\r\n\r\n setErrorMessageAddingFile((prev: object[]) => [...prev, ...validationErrors]);\r\n return;\r\n }\r\n\r\n let accumulatedNewSize = 0;\r\n\r\n for (const file of acceptedFiles) {\r\n const fileExtension = file.name.split('.').pop()?.toLowerCase() || '';\r\n if (!allowedFileTypes.includes(fileExtension)) {\r\n validationErrors.push({\r\n FileName: file.name,\r\n svMessage: 'Filen är i fel format. Välj ' + allowedFileTypes.join(', '),\r\n enMessage: 'Invalid file format. Choose ' + allowedFileTypes.join(', '),\r\n });\r\n continue;\r\n }\r\n\r\n if ((questionObject.files?.length || 0) + validFiles.length >= allowedNumberOfFiles) {\r\n validationErrors.push({\r\n FileName: file.name,\r\n svMessage: `Du kan ladda upp maximalt ${allowedNumberOfFiles} filer med total filstorlek på ${maxSizeMB} MB`,\r\n enMessage: `You can upload a maximum of ${allowedNumberOfFiles} files with a total file size of ${maxSizeMB} MB`,\r\n });\r\n continue;\r\n }\r\n\r\n const projectedTotalSize = currentTotalFileSize + accumulatedNewSize + file.size;\r\n\r\n if (projectedTotalSize > allowedTotalFileSize) {\r\n validationErrors.push({\r\n FileName: file.name,\r\n svMessage: `Du kan ladda upp maximalt ${allowedNumberOfFiles} filer med total filstorlek på ${maxSizeMB} MB`,\r\n enMessage: `You can upload a maximum of ${allowedNumberOfFiles} files with a total file size of ${maxSizeMB} MB`,\r\n });\r\n continue;\r\n }\r\n\r\n accumulatedNewSize += file.size;\r\n validFiles.push(file);\r\n }\r\n\r\n if (validationErrors.length > 0) {\r\n setErrorMessageAddingFile((prev: object[]) => [...prev, ...validationErrors]);\r\n }\r\n\r\n if (validFiles.length > 0) {\r\n processValidFiles(validFiles);\r\n }\r\n },\r\n [questionObject.files, allowedFileTypes, allowedNumberOfFiles, allowedTotalFileSize],\r\n );\r\n\r\n const processValidFiles = (validFiles: File[]): void => {\r\n let files: any[] = [];\r\n\r\n validFiles.forEach((file: File) => {\r\n const reader = new FileReader();\r\n\r\n reader.onload = () => {\r\n const newFile = {\r\n dataURL: reader.result,\r\n FileName: file.name,\r\n FileSize: file.size,\r\n FileType: file.type,\r\n };\r\n\r\n files = [...files, newFile];\r\n if (files.length === validFiles.length) {\r\n setNewFiles((prev: any[]) => [...prev, ...files]);\r\n }\r\n };\r\n\r\n reader.onerror = () => {\r\n setErrorMessageAddingFile((prev: object[]) => [\r\n ...prev,\r\n {\r\n FileName: file.name,\r\n svMessage: 'Uppladdningen misslyckades eller avbröts.',\r\n enMessage: 'Upload failed or was canceled.',\r\n },\r\n ]);\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n if (newFiles.length > 0) {\r\n const currentFiles = questionObject.files ? questionObject.files : [];\r\n const e = {\r\n target: {\r\n value:\r\n currentFiles.length + newFiles.length > 0\r\n ? `${currentFiles.length + newFiles.length} files`\r\n : '',\r\n files: [...currentFiles, ...newFiles],\r\n },\r\n };\r\n\r\n handleQuestionInputChange(e, questionObject);\r\n setNumberOfFiles(currentFiles.length + newFiles.length);\r\n setNewFiles([]);\r\n }\r\n }, [newFiles]);\r\n\r\n const removeFileFromNumberOfFiles = (newCount: number) => {\r\n setNumberOfFiles(newCount);\r\n };\r\n\r\n const removeOneError = (errorIndex: any) => {\r\n //TODO: remove?\r\n let newErrors = errorMessageAddingFile.filter((e: any, index: any) => index !== errorIndex);\r\n setErrorMessageAddingFile(newErrors);\r\n };\r\n\r\n const removeError = () => {\r\n setErrorMessageAddingFile([]);\r\n };\r\n\r\n const handleRemoveErrors = () => {\r\n setErrorMessageAddingFile([]);\r\n };\r\n\r\n return (\r\n <>\r\n {!showPreview && visible && (\r\n <div\r\n className=\"root-question addFile-question-container\"\r\n id={`question-${questionObject.id}`}\r\n >\r\n <div role=\"group\">\r\n {/* {!questionObject.hideQuestion && questionObject.questionLabel} */}\r\n {questionObject.aboutText && (\r\n <p\r\n id={aboutId}\r\n className={clsx(\r\n 'addFilesMandatory',\r\n questionObject.hasValidationError ? ' error' : '',\r\n )}\r\n >\r\n {questionObject.aboutText}\r\n {questionObject.isQuestionMandatory && (\r\n <span className=\"pts-root-mandatoryAsterisk\" aria-label=\"Obligatorisk fråga\">\r\n {' '}\r\n *\r\n </span>\r\n )}\r\n </p>\r\n )}\r\n {questionObject.hasValidationError && (\r\n <div className=\"pts-root-error error addfileserror\" id={errorId}>\r\n <span aria-hidden={true} className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"sr-only\">Valideringsfel</span>\r\n\r\n <span className=\"errorText\">{questionObject.validationDefaultMessesege}</span>\r\n </div>\r\n )}\r\n\r\n <ExploreFiles\r\n FilesSelected={onDrop}\r\n numberOfFiles={numberOfFiles}\r\n allowedNumberOfFiles={allowedNumberOfFiles}\r\n activatedLanguage={activatedLanguage}\r\n inputId={inputId}\r\n labelId={labelId}\r\n aboutId={aboutId}\r\n errorId={errorId}\r\n questionObject={questionObject}\r\n errorMessageAddingFile={errorMessageAddingFile}\r\n removeUploadErrors={handleRemoveErrors}\r\n />\r\n\r\n <DropFiles\r\n FilesSelected={onDrop}\r\n DropFilesText={dropFilesText}\r\n language={activatedLanguage}\r\n />\r\n\r\n <SelectedFiles\r\n questionObject={questionObject}\r\n isTouched={handleQuestionInputChange}\r\n removeFile={removeFileFromNumberOfFiles}\r\n removeError={removeError}\r\n errorMessageAddingFile={errorMessageAddingFile}\r\n activatedLanguage={activatedLanguage}\r\n numberOfFiles={numberOfFiles}\r\n setNumberOfFiles={setNumberOfFiles}\r\n removeUploadErrors={handleRemoveErrors}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n {showPreview && (\r\n <PreviewAddFiles activatedLanguage={activatedLanguage} questionObject={questionObject} />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default AddFiles;\r\n\r\nconst PreviewAddFiles = ({\r\n questionObject,\r\n activatedLanguage,\r\n}: {\r\n activatedLanguage: AddFilesProps['activatedLanguage'];\r\n questionObject: any;\r\n}) => {\r\n const previewId = `preview-${questionObject.Id}`;\r\n return (\r\n <>\r\n <dt id={`question-${previewId}`}>\r\n {questionObject.questionLabel\r\n ? questionObject.questionLabel\r\n : activatedLanguage === 'en'\r\n ? 'Attached files'\r\n : 'Bifogade filer'}\r\n </dt>\r\n {questionObject.files && questionObject.files.length > 0 ? (\r\n <dd className=\"pts-addFiles-answer\">\r\n <ul aria-labelledby={previewId} className=\"pts-preview-answer-list\">\r\n {questionObject.files.map((file: any, index: any) => {\r\n return <li key={`file-${index}-${file.FileName}`}>{file.FileName}</li>;\r\n })}\r\n </ul>\r\n </dd>\r\n ) : (\r\n <dd className=\"no-answer-preview-page\">\r\n {activatedLanguage === 'en' ? 'No attached files' : 'Inga bifogade filer'}\r\n </dd>\r\n )}\r\n </>\r\n );\r\n};\r\n","import React, { useState, useRef } from 'react'\r\nimport { useDropzone } from 'react-dropzone'\r\nimport ClipboardFiles from './ClipboardFilesStandard'\r\n\r\nimport './AddFilesStandard.css'\r\n\r\nconst DropFiles = ({ FilesSelected, DropFilesText = 'Dra och släpp dina filer här', language }: any) => {\r\n const onDrop = FilesSelected\r\n const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop, noKeyboard: true })\r\n\r\n const handleFileExplorer = (event: any) => {\r\n event.preventDefault()\r\n event.stopPropagation()\r\n }\r\n\r\n return (\r\n <>\r\n <div className=\"DropZoneContainer\">\r\n <div className=\"DropZone\" {...getRootProps()} onClick={handleFileExplorer}>\r\n <label htmlFor=\"fileDropInput\" hidden>\r\n Dra och släpp filer här område\r\n <input\r\n {...getInputProps({\r\n id: 'fileDropInput',\r\n name: 'fileDropInput',\r\n })}\r\n role=\"presentation\"\r\n />\r\n </label>\r\n\r\n {isDragActive ? (\r\n <b className=\"dropFilesNowText\">\r\n {language === 'sv'\r\n ? \"Släpp filerna, nu ...!\"\r\n : \"Drop files here!\"\r\n }\r\n </b>\r\n ) : (\r\n <div className=\"DropZone-label-container\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" \r\n width=\"2.4rem\" \r\n height=\"2.4rem\" \r\n viewBox=\"0 0 7 15\" \r\n fill=\"#fff\">\r\n <path \r\n d=\"M0 2.5C0 1.83696 0.263392 1.20107 0.732233 0.732233C1.20107 0.263392 1.83696 0 2.5 0C3.16304 0 3.79893 0.263392 4.26777 0.732233C4.73661 1.20107 5 1.83696 5 2.5V11.5C5 11.8978 4.84196 12.2794 4.56066 12.5607C4.27936 12.842 3.89782 13 3.5 13C3.10218 13 2.72064 12.842 2.43934 12.5607C2.15804 12.2794 2 11.8978 2 11.5V4.5C2 4.36739 2.05268 4.24021 2.14645 4.14645C2.24021 4.05268 2.36739 4 2.5 4C2.63261 4 2.75979 4.05268 2.85355 4.14645C2.94732 4.24021 3 4.36739 3 4.5V11.5C3 11.6326 3.05268 11.7598 3.14645 11.8536C3.24021 11.9473 3.36739 12 3.5 12C3.63261 12 3.75979 11.9473 3.85355 11.8536C3.94732 11.7598 4 11.6326 4 11.5V2.5C4 2.30302 3.9612 2.10796 3.88582 1.92597C3.81044 1.74399 3.69995 1.57863 3.56066 1.43934C3.42137 1.30005 3.25601 1.18956 3.07403 1.11418C2.89204 1.0388 2.69698 1 2.5 1C2.30302 1 2.10796 1.0388 1.92597 1.11418C1.74399 1.18956 1.57863 1.30005 1.43934 1.43934C1.30005 1.57863 1.18956 1.74399 1.11418 1.92597C1.0388 2.10796 1 2.30302 1 2.5V11.5C1 12.163 1.26339 12.7989 1.73223 13.2678C2.20107 13.7366 2.83696 14 3.5 14C4.16304 14 4.79893 13.7366 5.26777 13.2678C5.73661 12.7989 6 12.163 6 11.5V4.5C6 4.36739 6.05268 4.24021 6.14645 4.14645C6.24021 4.05268 6.36739 4 6.5 4C6.63261 4 6.75979 4.05268 6.85355 4.14645C6.94732 4.24021 7 4.36739 7 4.5V11.5C7 12.4283 6.63125 13.3185 5.97487 13.9749C5.3185 14.6313 4.42826 15 3.5 15C2.57174 15 1.6815 14.6313 1.02513 13.9749C0.368749 13.3185 0 12.4283 0 11.5V2.5Z\" \r\n fill=\"#fff\"\r\n />\r\n </svg>\r\n <p className=\"dropFilesText\">{DropFilesText}</p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n )\r\n}\r\n\r\nexport default DropFiles\r\n","import React, { useEffect, useRef } from 'react';\r\nimport clsx from 'clsx';\r\nimport './AddFilesStandard.css';\r\nimport ScreenReaderErrors from './ScreenReaderErrors';\r\n\r\nconst ExploreFiles = ({\r\n FilesSelected,\r\n numberOfFiles,\r\n allowedNumberOfFiles,\r\n activatedLanguage,\r\n inputId,\r\n labelId,\r\n aboutId,\r\n errorId,\r\n questionObject,\r\n showErrors,\r\n errorMessageAddingFile,\r\n}: any) => {\r\n const fileInputRef = useRef<HTMLInputElement>(null);\r\n const buttonInputRef = useRef<HTMLButtonElement>(null);\r\n\r\n const handleFiles = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const files = Array.from(event.target.files || []);\r\n FilesSelected(files);\r\n event.target.value = '';\r\n };\r\n\r\n const handleKeyOrClick = () => {\r\n fileInputRef.current?.click();\r\n };\r\n\r\n let addFilesInfoText =\r\n numberOfFiles > 0\r\n ? activatedLanguage === 'sv'\r\n ? `${numberOfFiles} filer valda (max ${allowedNumberOfFiles})`\r\n : `${numberOfFiles} files chosed (max ${allowedNumberOfFiles})`\r\n : activatedLanguage === 'sv'\r\n ? 'Ingen fil vald'\r\n : 'No file chosen';\r\n\r\n const ariaLabelText = `${activatedLanguage === 'sv' ? 'Välj fil' : 'Choose file'} ${addFilesInfoText}`;\r\n\r\n return (\r\n <>\r\n <div className=\"inputContainer\">\r\n <div\r\n className={clsx(\r\n ['form-control'],\r\n 'filePickLabel',\r\n showErrors && questionObject.error ? ['form-control error'] : '',\r\n )}\r\n id={labelId}\r\n >\r\n <button\r\n \r\n ref={buttonInputRef}\r\n onClick={handleKeyOrClick}\r\n className={clsx(\r\n 'filePickButton',\r\n showErrors && questionObject.error ? 'filePickButton error' : '',\r\n )}\r\n aria-describedby={`${aboutId} ${questionObject.hasValidationError ? errorId : ''}`.trim()}\r\n aria-label={ariaLabelText}\r\n type=\"button\"\r\n >\r\n {activatedLanguage === 'sv' ? 'Välj fil' : 'Choose file'}\r\n </button>\r\n\r\n <span aria-hidden={true} className=\"filePickText\">\r\n {addFilesInfoText}\r\n </span>\r\n <label htmlFor={inputId} aria-hidden={true} className=\"invisible\"></label>\r\n </div>\r\n <input\r\n aria-hidden={true}\r\n ref={fileInputRef}\r\n type=\"file\"\r\n className=\"invisible\"\r\n multiple\r\n onChange={handleFiles}\r\n tabIndex={-1}\r\n id={inputId}\r\n />\r\n\r\n <ScreenReaderErrors\r\n errorMessageAddingFile={errorMessageAddingFile}\r\n activatedLanguage={activatedLanguage}\r\n />\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default ExploreFiles;\r\n","import React from 'react';\r\n\r\ninterface ScreenReaderErrorsProps {\r\n errorMessageAddingFile: string[];\r\n activatedLanguage: string;\r\n}\r\n\r\nconst ScreenReaderErrors: React.FC<ScreenReaderErrorsProps> = ({\r\n errorMessageAddingFile,\r\n activatedLanguage,\r\n}) => {\r\n const [activateErrorMessagesForScreenReader, setActivateErrorMessagesForScreenReader] =\r\n React.useState<boolean>(false);\r\n\r\n const [errorMessagesForScreenReader, setErrorMessagesForScreenReader] =\r\n React.useState<string>('');\r\n\r\n React.useEffect(() => {\r\n if (errorMessageAddingFile.length > 0) {\r\n let errorMessages = '';\r\n errorMessages += errorMessageAddingFile.length;\r\n errorMessages +=\r\n activatedLanguage === 'sv'\r\n ? ' fel vid uppladdning av filer. '\r\n : ' errors uploading files. ';\r\n errorMessages += errorMessageAddingFile\r\n .map((err: any) =>\r\n activatedLanguage === 'sv'\r\n ? `${err.FileName}. ${err.svMessage}`\r\n : `${err.FileName}. ${err.enMessage}`,\r\n )\r\n .join('.\\n');\r\n setErrorMessagesForScreenReader(errorMessages);\r\n setActivateErrorMessagesForScreenReader(true);\r\n }\r\n }, [errorMessageAddingFile]);\r\n\r\n return (\r\n <>\r\n {activateErrorMessagesForScreenReader && (\r\n <p role=\"alert\" className=\"sr-only\" aria-atomic=\"true\">\r\n {errorMessagesForScreenReader}\r\n </p>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default ScreenReaderErrors;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { Col, Container, Row } from 'react-bootstrap';\r\n\r\n// import TransitionForInputs from '../TransitionForInputs/TransitionForInputs'\r\n\r\nimport Indicator from './IndicatorStandard';\r\n\r\nimport clsx from 'clsx';\r\nimport './AddFilesStandard.css';\r\n\r\nconst SelectedFiles = ({\r\n questionObject,\r\n isTouched,\r\n removeError,\r\n removeFile,\r\n showIndicator = true,\r\n errorMessageAddingFile,\r\n activatedLanguage,\r\n numberOfFiles,\r\n setNumberOfFiles,\r\n removeUploadErrors,\r\n}: any) => {\r\n const theDiv = useRef<HTMLDivElement>(null);\r\n\r\n const remove = (file: any) => {\r\n let newFiles = questionObject.files.filter((f: any) => f !== file);\r\n const newCountOfFiles = newFiles.length;\r\n setNumberOfFiles(newCountOfFiles);\r\n\r\n let e = { target: { value: `${newCountOfFiles} files`, files: newFiles } };\r\n\r\n const targetValue = e.target.value === '0 files' ? '' : e.target.value;\r\n e = { ...e, target: { ...e.target, value: targetValue } };\r\n\r\n isTouched(e, questionObject);\r\n\r\n removeFile(newCountOfFiles);\r\n };\r\n\r\n // useEffect(() => {\r\n // numberOfFiles > 0 && theDiv.current?.scrollIntoView({ behavior: 'smooth', block: 'end' });\r\n // }, [numberOfFiles]);\r\n\r\n const useWindowWidth = (): number => {\r\n const [windowWidth, setWindowWidth] = useState<number>(window.innerWidth);\r\n useEffect(() => {\r\n const handleResize = () => {\r\n setWindowWidth(window.innerWidth);\r\n };\r\n window.addEventListener('resize', handleResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleResize);\r\n };\r\n }, []);\r\n\r\n return windowWidth;\r\n };\r\n\r\n const windowWidth = useWindowWidth();\r\n\r\n return (\r\n <>\r\n <div>\r\n {errorMessageAddingFile.length > 0 && (\r\n <div className=\"pts-errorSummary-container pts-addFile-error-container\">\r\n <span aria-hidden=\"true\" className=\"errorDot\">\r\n !\r\n </span>\r\n <div className=\"addFile-error-list-container\">\r\n <ul aria-hidden={true} className=\"fileListUnorderedList\" id=\"errorSummary-ul\">\r\n {' '}\r\n {errorMessageAddingFile.map((errorObj: any, index: any) => {\r\n const errorFileName = errorObj.FileName;\r\n let mobileFirstFileName = errorObj.FileName.split('.').shift();\r\n mobileFirstFileName =\r\n mobileFirstFileName.length > 8\r\n ? mobileFirstFileName.substring(0, 8) + '..'\r\n : mobileFirstFileName;\r\n const fileType = errorObj.FileName.split('.').pop();\r\n\r\n mobileFirstFileName = mobileFirstFileName + '.' + fileType;\r\n return (\r\n <li>\r\n <React.Fragment key={`error-${errorObj.FileName}-${index}`}>\r\n <div>\r\n <div className=\"fileInListContainer\">\r\n <div className=\"fileInList\" key={index}>\r\n <Row>\r\n <Col>\r\n {windowWidth < 768 ? (\r\n <span className=\"mobileFirstFileName\">\r\n {mobileFirstFileName}\r\n </span>\r\n ) : (\r\n <span className=\"desktopFileName\">{errorObj.FileName}</span>\r\n )}\r\n </Col>\r\n </Row>\r\n <Row>\r\n <Col\r\n className=\"errorMessageAddingFile\"\r\n {...(activatedLanguage === 'sv'\r\n ? {\r\n 'aria-label': `${errorFileName} ${errorObj.svMessage}`,\r\n }\r\n : {\r\n 'aria-label': `${errorFileName} ${errorObj.enMessage}`,\r\n })}\r\n >\r\n {activatedLanguage === 'sv'\r\n ? errorObj.svMessage\r\n : errorObj.enMessage}\r\n </Col>\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </div>\r\n <div className=\"addFile-error-close-button\">\r\n <button\r\n className=\"selectedFilesLinkButton error-close\"\r\n onClick={() => {\r\n removeError();\r\n }}\r\n aria-label={\r\n activatedLanguage === 'sv' ? `Stäng felmeddelande` : `Close error message`\r\n }\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"14\"\r\n height=\"14\"\r\n viewBox=\"0 0 14 14\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M0.75 12.75L12.75 0.75M0.75 0.75L12.75 12.75\"\r\n stroke=\"#8E0039\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {questionObject.files.length > 0 && (\r\n <ul className=\"fileListUnorderedList\" aria-label=\"Uppladdade filer\">\r\n {questionObject.files.map((file: any, index: any) => {\r\n const indicatorfileName = file.FileName;\r\n let mobileFirstFileName = file.FileName.split('.').shift();\r\n mobileFirstFileName =\r\n mobileFirstFileName.length > 8\r\n ? mobileFirstFileName.substring(0, 8) + '..'\r\n : mobileFirstFileName;\r\n const fileType = file.FileName.split('.').pop();\r\n\r\n mobileFirstFileName = mobileFirstFileName + '.' + fileType;\r\n\r\n return (\r\n <li>\r\n <React.Fragment key={`file-${file.FileName}-${index}`}>\r\n <div>\r\n <div className=\"fileInListContainer\">\r\n <div className=\"fileInList\" key={index}>\r\n <div className=\"fileItem\">\r\n <Col style={{ maxWidth: '30px' }}>\r\n <span aria-hidden=\"true\" className=\"uploadedDot\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"8\"\r\n height=\"8\"\r\n viewBox=\"0 0 8 8\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M1 4.65913L2.8 6.45913L7 1.35913\"\r\n stroke=\"white\"\r\n stroke-width=\"1.5\"\r\n stroke-linecap=\"round\"\r\n />\r\n </svg>\r\n </span>\r\n </Col>\r\n <Col>\r\n {windowWidth < 768 ? (\r\n <span className=\"mobileFirstFileName\">\r\n {mobileFirstFileName} ({Math.ceil(file.FileSize / (1024 * 1024))}{' '}\r\n MB)\r\n </span>\r\n ) : (\r\n <span className=\"desktopFileName\">\r\n {file.FileName} (\r\n <span className=\"fileSizeText\">\r\n {file.FileSize < 1024 * 1024\r\n ? `${Math.round(file.FileSize / 1024)} kB`\r\n : `${(file.FileSize / (1024 * 1024)).toFixed(1)} MB`}\r\n </span>{' '}\r\n )\r\n </span>\r\n )}\r\n </Col>\r\n\r\n <Col className=\"lastCol\">\r\n <button\r\n className=\"selectedFilesLinkButton\"\r\n onClick={() => remove(file)}\r\n aria-label={\r\n activatedLanguage === 'sv'\r\n ? `Radera ${indicatorfileName}`\r\n : `Delete ${indicatorfileName}`\r\n }\r\n >\r\n {activatedLanguage === 'sv' ? 'Radera' : 'Delete'}\r\n </button>\r\n </Col>\r\n </div>\r\n\r\n {showIndicator && (\r\n <Row>\r\n <Col style={{ width: '100%', padding: 0 }}>\r\n <Indicator filename={indicatorfileName} />\r\n </Col>\r\n </Row>\r\n )}\r\n\r\n <Row style={{ marginTop: '12px', marginBottom: '12px' }}>\r\n <Col className=\"makeSpace\"></Col>\r\n </Row>\r\n </div>\r\n </div>\r\n </div>\r\n </React.Fragment>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n )}\r\n\r\n <div ref={theDiv} className=\"pts-clipboard-container\"></div>\r\n </>\r\n );\r\n};\r\n\r\nexport default SelectedFiles;\r\n","import React, { useState } from 'react'\r\nimport clsx from 'clsx'\r\nimport './AddFilesStandard.css'\r\n\r\nconst Indicator = (filename: any) => {\r\n const [uploadPercentage, setUploadPercentage] = useState(0)\r\n const [uploadDone, setUploadDone] = useState(false)\r\n\r\n /* setTimeout(() => {\r\n setUploadPercentage(100)\r\n setUploadDone(true)\r\n }, 1000) */\r\n //setUploadDone(true)\r\n\r\n return (\r\n <>\r\n <div className={clsx('uploadIndicator', 'uploadDone')}></div>\r\n {/* <div\r\n role=\"progressbar\"\r\n className={clsx('uploadIndicator', uploadDone ? 'uploadDone' : 'uploadLoading')}\r\n {...(uploadDone\r\n ? {\r\n 'aria-live': 'polite',\r\n 'aria-label': `${filename.filename} är uppladdad`,\r\n }\r\n : {})}\r\n ></div> */}\r\n </>\r\n )\r\n}\r\nexport default Indicator\r\n","import { FC, useEffect, useState } from 'react';\r\nimport React from 'react';\r\nimport { SingleCheckboxProps } from './SingleCheckboxStandard.types';\r\nimport { IQuestion } from '../../../types/TypesStandard.types';\r\n\r\nconst SingleCheckbox: FC<SingleCheckboxProps> = ({\r\n question,\r\n handleQuestionInputChange,\r\n showPreview = false,\r\n activatedLanguage = 'sv',\r\n}) => {\r\n const questionId = `question-${question.id}`;\r\n const inputId = `checkbox-${question.id}`;\r\n const aboutId = `about-${question.id}`;\r\n const errorId = `error-${question.id}`;\r\n\r\n const [checked, setChecked] = useState<boolean>(false);\r\n\r\n useEffect(() => {\r\n if (question.answer && question.answer === 'true') {\r\n setChecked(true);\r\n } else {\r\n setChecked(false);\r\n }\r\n }, [question.answer]);\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n setChecked(event.target.checked);\r\n let answer = event.target.checked ? 'true' : 'false';\r\n\r\n const e = { target: { value: answer } };\r\n handleQuestionInputChange(e, question);\r\n };\r\n\r\n return (\r\n <>\r\n {!showPreview && question.visible && (\r\n <div id={questionId} className=\"pts-root-question pts-singleCheckbox-container\">\r\n <div className=\"pts-singleCheckbox-row\">\r\n <input\r\n type=\"checkbox\"\r\n name={`question-name-${question.id}`}\r\n id={`${inputId}`}\r\n value={question.questionLabel ?? ''}\r\n checked={checked}\r\n onChange={(e) => handleInputChange(e)}\r\n className={\r\n question.hasValidationError ? 'pts-root-question-input-error-border' : undefined\r\n }\r\n disabled={question.questionExtraAttribute?.disabled}\r\n required={question.isQuestionMandatory}\r\n aria-required={question.isQuestionMandatory}\r\n aria-describedby={\r\n [question.aboutText ? aboutId : null].filter(Boolean).join(' ') || undefined\r\n }\r\n aria-invalid={question.hasValidationError}\r\n aria-errormessage={question.hasValidationError ? errorId : undefined}\r\n />\r\n <label htmlFor={`${inputId}`}>{question.questionLabel}</label>\r\n {question.isQuestionMandatory && (\r\n <span aria-hidden={true} className=\"pts-root-mandatoryAsterisk\">\r\n *\r\n </span>\r\n )}{' '}\r\n </div>\r\n {question.aboutText && (\r\n <div\r\n id={aboutId}\r\n className=\"pts-about\"\r\n dangerouslySetInnerHTML={{ __html: question.aboutText }}\r\n />\r\n )}{' '}\r\n {question.hasValidationError && (\r\n <div className=\"pts-root-error\" id={errorId}>\r\n <span aria-hidden={true} className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"sr-only\">Valideringsfel</span>\r\n <span className=\"errorText\">{question.validationDefaultMessesege}</span>\r\n </div>\r\n )}{' '}\r\n </div>\r\n )}{' '}\r\n {showPreview && (\r\n <PreviewSingleCheckbox activatedLanguage={activatedLanguage} question={question} />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default SingleCheckbox;\r\n\r\nconst PreviewSingleCheckbox = ({\r\n question,\r\n activatedLanguage,\r\n}: {\r\n activatedLanguage: SingleCheckboxProps['activatedLanguage'];\r\n question: IQuestion;\r\n}) => {\r\n const previewId = `preview-${question.id}`;\r\n\r\n return (\r\n <>\r\n <dt id={`question-${previewId}`}>{question.previewLabel ?? question.questionLabel}</dt>\r\n\r\n {question.answer?.trim() ? (\r\n <dd className=\"pts-singleCheckbox-preview pts-root-answer\" id={`answer-${previewId}`}>\r\n {question.answer === 'false'\r\n ? activatedLanguage === 'sv'\r\n ? 'Nej'\r\n : 'No'\r\n : activatedLanguage === 'sv'\r\n ? 'Ja'\r\n : 'Yes'}\r\n </dd>\r\n ) : (\r\n <dd\r\n className=\"pts-singleCheckbox-preview pts-root-answer\"\r\n id={`answer-${previewId}`}\r\n >\r\n {activatedLanguage === 'sv' ? 'Nej' : 'No'}\r\n </dd>\r\n )}\r\n </>\r\n );\r\n};\r\n","import { isValid, parseISO } from 'date-fns';\r\n\r\n/**\r\n * Kontrollerar om en fråga har ett valideringsfel baserat på dess egenskaper och valideringstyper.\r\n *\r\n * @param question - Den fråga som ska kontrolleras.\r\n * @param questions - Alla frågor i formuläret (behövs för gruppvalideringar).\r\n * @returns `true` om frågan har ett valideringsfel, annars `false`.\r\n *\r\n */\r\nconst hasQuestionValidationError = (question: any, questions: any[]): boolean => {\r\n let error: boolean = false;\r\n if (question.isQuestionMandatory) {\r\n if (question.isTouched === false) {\r\n error = true;\r\n }\r\n if (question.answer.trim() === '') {\r\n error = true;\r\n }\r\n if (\r\n question.answer === 'false' &&\r\n question.validationType?.find((e: any) => e === 'mustBeTrue')\r\n ) {\r\n error = true;\r\n }\r\n }\r\n const maxLength = question.questionExtraAttribute?.answerMaxLength ?? 1000;\r\n\r\n if (question.validationType?.includes('maxLength') && question.answer.length > maxLength) {\r\n error = true;\r\n }\r\n\r\n if (question.questionType === 'TextField') {\r\n if (question.answer.length > 100) {\r\n error = true;\r\n }\r\n }\r\n if (\r\n question.validationType?.find((e: any) => e === 'email') &&\r\n (question.isQuestionMandatory || question.answer !== '')\r\n ) {\r\n const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\r\n if (!emailRegex.test(question.answer)) {\r\n error = true;\r\n }\r\n }\r\n\r\n if (\r\n question.validationType?.find((e: any) => e === 'fourNumbers') &&\r\n (question.isQuestionMandatory || question.answer !== '')\r\n ) {\r\n const fourNumbersRegex = /^\\d{4}$/.test(question.answer);\r\n if (!fourNumbersRegex) {\r\n error = true;\r\n }\r\n }\r\n\r\n if (\r\n question.validationType?.find((e: any) => e === 'isDateFormatValid') &&\r\n question.answer !== ''\r\n ) {\r\n const regex = /^\\d{4}-\\d{2}-\\d{2}$/;\r\n if (!regex.test(question.answer)) {\r\n error = true;\r\n }\r\n\r\n const isValidDate = (dateString: string): boolean => {\r\n const date = parseISO(dateString);\r\n return isValid(date);\r\n };\r\n\r\n const validDate = isValidDate(question.answer);\r\n\r\n if (!validDate) {\r\n error = true;\r\n }\r\n }\r\n\r\n const groupCheckError = question.validationType?.find((e: any) => e.startsWith('groupCheck-'));\r\n\r\n if (groupCheckError) {\r\n const ids = groupCheckError.replace('groupCheck-', '').split('-');\r\n\r\n const relatedAnswers = ids.map(\r\n (id: string) => questions.find((q: any) => q.id?.toString() === id)?.answer,\r\n );\r\n const currentAnswer = question.answer;\r\n const allAnswers = [...relatedAnswers, currentAnswer];\r\n if (allAnswers.every((ans) => ans === '')) {\r\n error = true;\r\n }\r\n }\r\n\r\n return error;\r\n};\r\n\r\nexport default hasQuestionValidationError;\r\n","import type { TranslatedAnswers, ApiDataObject } from './createApiDataObject.types';\r\n\r\nconst normalize = (str: string): string => {\r\n return str.toString().toLowerCase().replace(/\\s+/g, '');\r\n};\r\n\r\n/**\r\n * Skapar ett API-anpassat dataobjekt baserat på användarens formulärsvar.\r\n *\r\n * Funktionen går igenom alla frågor och bygger ett objekt som kan skickas till backend.\r\n * - Om en fråga finns i `specialMappedQuestions`, mappas svaret till `option.id` i stället för label.\r\n * - Om `translatedAnswers` innehåller en översättning för frågans `mappingId`, används den.\r\n * - Endast visade frågor (`isDisplayed`) med giltiga svar inkluderas i resultatet.\r\n * - Filuppladdningar (`AddFiles`) inkluderas under egenskapen `files`.\r\n *\r\n * @param data - Lista med alla frågor och deras svar.\r\n * @param specialMappedQuestions - En uppsättning mapping-ID:n som kräver specialhantering av svar.\r\n * @param translatedAnswers - Objekt som innehåller översättningar av svar.\r\n * @returns Ett `ApiDataObject` redo att skickas till backend.\r\n *\r\n */\r\nfunction createApiDataObject(\r\n data: any[],\r\n specialMappedQuestions: Set<string>,\r\n translatedAnswers: TranslatedAnswers,\r\n): ApiDataObject {\r\n return data.reduce((acc: ApiDataObject, question: any) => {\r\n let translatedAnswer = question.answer;\r\n\r\n if (\r\n question.answer &&\r\n typeof question.answer === 'string' &&\r\n Array.isArray(question.options) &&\r\n question.mappingId &&\r\n specialMappedQuestions.has(question.mappingId)\r\n ) {\r\n const answerNormalized = normalize(question.answer);\r\n\r\n const matchingIds = question.options\r\n .filter((option: any) => answerNormalized.includes(normalize(option.label)))\r\n .map((option: any) => `^${option.id}^`);\r\n\r\n if (matchingIds.length > 0) {\r\n translatedAnswer = matchingIds.join(',');\r\n }\r\n } else {\r\n const shouldTranslate = question.mappingId\r\n ? translatedAnswers[question.mappingId]\r\n : undefined;\r\n translatedAnswer = shouldTranslate\r\n ? shouldTranslate[question.answer] || question.answer\r\n : question.answer;\r\n }\r\n\r\n return {\r\n ...acc,\r\n ...(question.mappingId &&\r\n question.isDisplayed &&\r\n question.answer && {\r\n [question.mappingId]: translatedAnswer,\r\n }),\r\n ...(question.questionType === 'AddFiles' &&\r\n question.files?.length &&\r\n question.files.length > 0 && {\r\n files: question.files,\r\n }),\r\n };\r\n }, {} as ApiDataObject);\r\n}\r\n\r\nexport default createApiDataObject;\r\n","import { IStepObject, IQuestion } from '../../types/TypesStandard.types';\r\n\r\n/**\r\n * Förbereder data för förhandsgranskningssidan.\r\n *\r\n * Funktionen grupperar alla synliga frågor (`isDisplayed = true`) utifrån vilket steg\r\n * de tillhör. Resultatet används för att presentera formulärets innehåll steg för steg\r\n * på förhandsgranskningen innan inskick.\r\n *\r\n * @param steps - Lista över alla steg i formuläret (`IStepObject[]`).\r\n * @param questions - Alla frågor i formuläret (`IQuestion[]`).\r\n * @returns En lista av objekt där varje element innehåller ett steg och dess synliga frågor:\r\n */\r\nfunction preparePreviewData(steps: IStepObject[], questions: IQuestion[]): any[] {\r\n return steps\r\n .map((step) => {\r\n const filteredQuestions = questions.filter((q) => q.step === step.step && q.isDisplayed);\r\n\r\n return {\r\n step,\r\n questions: filteredQuestions,\r\n };\r\n })\r\n .filter((group) => group.questions.length > 0);\r\n}\r\n\r\nexport default preparePreviewData;\r\n","/**\r\n * Kontrollerar om en frågas beroenden (dependencies) är uppfyllda.\r\n *\r\n * En fråga kan ha ett eller flera beroenden till andra frågor, där varje beroende anger:\r\n * - vilket fråge-ID det är kopplat till (`LinkedToQuestionId`)\r\n * - vilket svar eller svarsalternativ som krävs (`Answer` eller `questionArrayAnswerId`)\r\n *\r\n * Funktionen går igenom alla beroendekombinationer och returnerar `true` om\r\n * **minst ett** beroendeblock (AND-villkor inom varje block, OR mellan blocken)\r\n * är uppfyllt utifrån datan i `data`-arrayen.\r\n *\r\n * @param data - En lista med alla frågor och deras aktuella svar.\r\n * @param question - Den fråga som har beroenden till andra frågor.\r\n * @returns `true` om frågans beroendevillkor är uppfyllda, annars `false`.\r\n *\r\n */\r\nconst isQuestionDependencySatisfied = (data: any[], question: any): boolean => {\r\n const isParentTrue = (\r\n questionId: number,\r\n questionArrayAnswerId: number,\r\n answer: string,\r\n ): boolean => {\r\n const parent = data.find((q: any) => q.id === questionId);\r\n if (!parent) return false;\r\n\r\n return (\r\n (questionArrayAnswerId !== undefined &&\r\n parent.questionArrayAnswerId === questionArrayAnswerId) ||\r\n parent.answer === answer\r\n );\r\n };\r\n\r\n if (!question.dependsOnOtherQuestion || question.dependsOnOtherQuestion.length === 0)\r\n return false;\r\n\r\n return question.dependsOnOtherQuestion.some((conditions: any[]) =>\r\n conditions.every((cond: any) =>\r\n isParentTrue(cond.LinkedToQuestionId, cond.questionArrayAnswerId, cond.Answer),\r\n ),\r\n );\r\n};\r\n\r\nexport default isQuestionDependencySatisfied;\r\n","import { IQuestion } from '../../types';\r\nimport isDependsOnOtherQuestionTrue from '../isQuestionDependencySatisfied';\r\n\r\n/**\r\n * Uppdaterar frågor med information om synlighet och valideringsfel.\r\n *\r\n * För varje fråga:\r\n * - Om frågan är beroende av andra frågor,\r\n * avgörs synligheten av villkoret`.\r\n * - Om frågans ID finns i `validationErrorsList` markeras den som att den har valideringsfel.\r\n *\r\n * @param questions - En array av frågeobjekt (`IQuestion[]`).\r\n * @param validationErrorsList - En lista av fråge-ID:n som har valideringsfel.\r\n * @returns En ny lista med frågor där `visible` och `hasValidationError` är uppdaterade.\r\n *\r\n */\r\nconst updateQuestionsAndCategoriesVisibilityAndErrors = (\r\n questions: IQuestion[],\r\n validationErrorsList: number[],\r\n) => {\r\n const updatedQuestions = questions.map((question: any) => {\r\n const hasLinkedConditions =\r\n question.dependsOnOtherQuestion && question.dependsOnOtherQuestion.length > 0;\r\n\r\n const isVisible = hasLinkedConditions\r\n ? isDependsOnOtherQuestionTrue(questions, question)\r\n : true;\r\n\r\n const hasError = validationErrorsList.includes(question.id);\r\n\r\n return { ...question, visible: isVisible, hasValidationError: hasError };\r\n });\r\n\r\n return updatedQuestions;\r\n};\r\n\r\nexport default updateQuestionsAndCategoriesVisibilityAndErrors;\r\n","import hasQuestionValidationError from '../hasQuestionValidationError'\r\n\r\n/**\r\n * Går igenom alla synliga frågor i aktuella steget och returnerar\r\n * en lista med fråge-ID:n som har valideringsfel.\r\n *\r\n * Endast frågor som är markerade som `visible` och som inte\r\n * valideras korrekt enligt config inkluderas i resultatet.\r\n *\r\n * @param {Object} currentStepQuestions Aktuella steget (stepObjekt) med alla dess kategorier,\r\n * questionGroups och questions.\r\n *\r\n * @param {Array} questions En lista med alla frågor i formuläret.\r\n * Används för att avgöra om en fråga validerar\r\n * korrekt utifrån hela frågedatat.\r\n *\r\n * @returns En array med ID:n (`number[]`) för frågor som har valideringsfel.\r\n */\r\nfunction findVisibleQuestionsWithValidationErrors(currentStepQuestions: any, questions: any): number[] {\r\n const errorQuestions: number[] = []\r\n\r\n currentStepQuestions.categories.forEach((category: any) => {\r\n if (category.visible) {\r\n category.questionGroups.forEach((group: any) => {\r\n group.questions.forEach((question: any) => {\r\n if (question.visible && hasQuestionValidationError(question, questions)) {\r\n errorQuestions.push(question.id)\r\n }\r\n })\r\n })\r\n }\r\n })\r\n\r\n return errorQuestions\r\n}\r\n\r\nexport default findVisibleQuestionsWithValidationErrors\r\n","import { IQuestion, IStepObject, IStepQuestionData } from '../../types';\r\nimport doCategoriesAndQuestionsVisible from '../updateQuestionsAndCategoriesVisibilityAndErrors';\r\n\r\n/**\r\n * Bygger upp en hierarkisk datastruktur för formuläret, grupperad per steg, kategori och frågegrupp.\r\n *\r\n * Funktionen används för att strukturera frågedata så att varje steg innehåller:\r\n * - En lista av kategorier\r\n * - Varje kategori innehåller sina frågegrupper\r\n * - Varje frågegrupp innehåller sina frågor\r\n *\r\n * Dessutom uppdateras frågor med `visible` baserat på dess beroende till andra frågor och `hasValidationError` baserat på aktuell valideringsstatus.\r\n *\r\n * @param questions - Alla frågor i formuläret.\r\n * @param steps - Lista över alla steg i formuläret.\r\n * @param validationErrorsList - Lista med fråge-ID:n som har valideringsfel.\r\n * @returns En lista av stegobjekt med tillhörande kategorier och grupper.\r\n *\r\n */\r\nfunction buildStepCategoryGroupQuestionStructure(\r\n questions: IQuestion[],\r\n steps: IStepObject[],\r\n validationErrorsList: number[],\r\n): any[] {\r\n const formatedQuestions = doCategoriesAndQuestionsVisible(questions, validationErrorsList);\r\n\r\n const result = [];\r\n const stepsMap = new Map<number, Map<string, Map<string, any[]>>>();\r\n\r\n formatedQuestions.forEach((question) => {\r\n const step = question.step ?? 0;\r\n const category = question.categoryLabel?.trim() || 'Okänd kategori';\r\n const groupId = question.questionGroupId || 'unknown';\r\n\r\n if (!stepsMap.has(step)) {\r\n stepsMap.set(step, new Map());\r\n }\r\n\r\n const categoryMap = stepsMap.get(step)!;\r\n\r\n if (!categoryMap.has(category)) {\r\n categoryMap.set(category, new Map());\r\n }\r\n\r\n const groupMap = categoryMap.get(category)!;\r\n\r\n if (!groupMap.has(groupId)) {\r\n groupMap.set(groupId, []);\r\n }\r\n\r\n groupMap.get(groupId)!.push(question);\r\n });\r\n for (const [step, categoryMap] of Array.from(stepsMap.entries())) {\r\n const categories: IStepQuestionData['categories'] = [];\r\n\r\n for (const [category, groupMap] of Array.from(categoryMap.entries())) {\r\n const questionGroups: {\r\n questionGroupId: string;\r\n questionGroupType: string;\r\n questions: IQuestion[];\r\n legend?: string;\r\n }[] = [];\r\n\r\n for (const [groupId, questions] of Array.from(groupMap.entries())) {\r\n questionGroups.push({\r\n questionGroupId: groupId,\r\n questionGroupType: questions[0].questionGroupType,\r\n questions,\r\n legend: questions[0].legend,\r\n });\r\n }\r\n\r\n const isVisible = questionGroups.some((group) =>\r\n group.questions.some((question) => question.visible),\r\n );\r\n\r\n categories.push({\r\n category,\r\n categoryDescription: questionGroups[0].questions[0].categoryDescription || '',\r\n visible: isVisible,\r\n isDisplayed: isVisible,\r\n questionGroups,\r\n });\r\n }\r\n\r\n const stepHeadline = steps.find((s) => s.step === step)?.stepHeadline || undefined;\r\n const stepDescription = steps.find((s) => s.step === step)?.stepDescription || undefined;\r\n result.push({\r\n step,\r\n stepHeadline,\r\n stepDescription,\r\n categories,\r\n });\r\n }\r\n\r\n result.push({\r\n step: steps.length,\r\n stepHeadline: steps[steps.length - 1].stepHeadline,\r\n stepDescription: steps[steps.length - 1].stepDescription,\r\n });\r\n\r\n return result;\r\n}\r\n\r\nexport default buildStepCategoryGroupQuestionStructure;\r\n","import { createSlice, PayloadAction, createSelector } from '@reduxjs/toolkit';\r\n\r\nexport interface LanguageEntry {\r\n language: string;\r\n backButton: string;\r\n forwardButton: string;\r\n sendButton: string;\r\n}\r\n\r\nexport interface LanguageSupportConfig {\r\n activatedLanguage: string;\r\n languageSupport: LanguageEntry[];\r\n}\r\n\r\nexport interface LanguageState {\r\n activatedLanguage: string;\r\n languageSupport: LanguageEntry[];\r\n languageSupportLoaded: boolean;\r\n backButton: string;\r\n forwardButton: string;\r\n sendButton: string;\r\n}\r\n\r\nexport const pickLang = (cfg: LanguageSupportConfig, lang: string): LanguageEntry => {\r\n return cfg.languageSupport.find((l) => l.language === lang) ?? cfg.languageSupport[0];\r\n};\r\n\r\nexport const createGlobalLanguageSlice = (\r\n initialConfig: LanguageSupportConfig,\r\n options?: { name?: string },\r\n) => {\r\n const name = options?.name ?? 'languageOverall';\r\n const initialLang = pickLang(initialConfig, initialConfig.activatedLanguage);\r\n\r\n const initialState: LanguageState = {\r\n activatedLanguage: initialConfig.activatedLanguage,\r\n languageSupport: initialConfig.languageSupport,\r\n languageSupportLoaded: true,\r\n backButton: initialLang.backButton,\r\n forwardButton: initialLang.forwardButton,\r\n sendButton: initialLang.sendButton,\r\n };\r\n\r\n const slice = createSlice({\r\n name,\r\n initialState,\r\n reducers: {\r\n setActivatedLanguage: (state, action: PayloadAction<string>) => {\r\n state.activatedLanguage = action.payload;\r\n const lang = pickLang(\r\n { activatedLanguage: state.activatedLanguage, languageSupport: state.languageSupport },\r\n action.payload,\r\n );\r\n state.backButton = lang.backButton;\r\n state.forwardButton = lang.forwardButton;\r\n state.sendButton = lang.sendButton;\r\n },\r\n\r\n setGlobalLangauage: (state, action: PayloadAction<LanguageSupportConfig>) => {\r\n state.languageSupport = action.payload.languageSupport;\r\n state.activatedLanguage = action.payload.activatedLanguage;\r\n const lang = pickLang(action.payload, action.payload.activatedLanguage);\r\n state.backButton = lang.backButton;\r\n state.forwardButton = lang.forwardButton;\r\n state.sendButton = lang.sendButton;\r\n state.languageSupportLoaded = true;\r\n },\r\n },\r\n });\r\n\r\n return slice;\r\n};\r\n\r\nexport const makeglobalLanguageSelectors = <TState>(\r\n selectSlice: (state: TState) => LanguageState,\r\n) => {\r\n const selectState = selectSlice;\r\n\r\n const selectActivatedLanguage = (state: TState) => selectState(state).activatedLanguage;\r\n const selectGlobalLanguageLoaded = (state: TState) => selectState(state).languageSupportLoaded;\r\n const selectGlobalLanguageState = (state: TState) => selectState(state);\r\n\r\n const selectGlobalLanguage = createSelector(\r\n [selectState, (_: TState, activatedLanguage: string) => activatedLanguage],\r\n (applicationContent, activatedLanguage) => {\r\n const match = applicationContent.languageSupport.find(\r\n (l) => l.language === activatedLanguage,\r\n );\r\n if (!match) return { ...applicationContent };\r\n return {\r\n ...applicationContent,\r\n backButton: match.backButton,\r\n forwardButton: match.forwardButton,\r\n sendButton: match.sendButton,\r\n };\r\n },\r\n );\r\n\r\n return {\r\n selectActivatedLanguage,\r\n selectGlobalLanguageLoaded,\r\n selectGlobalLanguageState,\r\n selectGlobalLanguage,\r\n };\r\n};\r\n\r\nexport type { PayloadAction } from '@reduxjs/toolkit';\r\n","import {\r\n createSlice,\r\n PayloadAction,\r\n createSelector,\r\n type ActionReducerMapBuilder,\r\n} from '@reduxjs/toolkit';\r\nimport type { IFormState, IQuestion } from '../../types/TypesStandard.types';\r\n\r\nconst mapQuestionById = (\r\n questions: any[],\r\n id: any,\r\n updater: (q: IQuestion) => IQuestion,\r\n): IQuestion[] => {\r\n return questions.map((q) => (q.id === id ? updater(q) : q));\r\n};\r\n\r\n/**\r\n * createFormSlice skapar ett Redux-slice som hanterar allt globalt state\r\n * kopplat till formuläret såsom applicationContent, steps och questions\r\n */\r\nexport const createFormSlice = (\r\n initialState: IFormState,\r\n options?: {\r\n name?: string;\r\n extraReducers?: (builder: ActionReducerMapBuilder<IFormState>) => void;\r\n },\r\n) => {\r\n const slice = createSlice({\r\n name: options?.name ?? 'Form',\r\n initialState,\r\n reducers: {\r\n /**\r\n * Laddar in eller uppdaterar applikationens övergripande textdata och metadata i.\r\n * global state. Sätter även formLoaded = true när innehållet är färdiginläst.\r\n */\r\n setApplicationContent: (state, action: PayloadAction<any>) => {\r\n state.applicationContent = action.payload;\r\n state.formLoaded = true;\r\n },\r\n /**\r\n * Laddar in eller uppdaterar step-data i global state.\r\n */\r\n setStep: (state, action: PayloadAction<any>) => {\r\n state.steps = action.payload;\r\n },\r\n /**\r\n * Laddar in eller uppdaterar question-data i global state.\r\n */\r\n setQuestion: (state, action: PayloadAction<any>) => {\r\n state.questions = action.payload;\r\n },\r\n /**\r\n * Uppdaterar svaret (answer) för en specifik fråga i global state.\r\n */\r\n updateAnswer: (state, action: PayloadAction<any>) => {\r\n state.questions = mapQuestionById(state.questions, action.payload.id, (q) => ({\r\n ...q,\r\n answer: action.payload.answer,\r\n }));\r\n },\r\n /** Uppdaterar filer (files) för en specifik fråga i global state */\r\n addFiles: (state, action: PayloadAction<any>) => {\r\n state.questions = mapQuestionById(state.questions, action.payload.id, (q) => ({\r\n ...q,\r\n files: action.payload.files,\r\n }));\r\n },\r\n /**\r\n * Sätter `isDisplayed = false` på alla frågor vars stegnummer är\r\n * större än eller lika med det aktiva steget.\r\n *\r\n * Används för att nollställa vilka frågor som är markerade som visade\r\n * innan en ny renderingsomgång. Endast frågor som faktiskt visas i UI:t\r\n * kommer senare få `isDisplayed = true` igen.\r\n */\r\n clearDisplayedFromStep: (state, action: PayloadAction<any>) => {\r\n const { activeStep } = action.payload;\r\n state.questions = state.questions.map((qObject: any) => {\r\n if (qObject.step >= activeStep) {\r\n return {\r\n ...qObject,\r\n isDisplayed: false,\r\n };\r\n }\r\n return qObject;\r\n });\r\n },\r\n /**\r\n * Sätter `isDisplayed = true` för en specifik fråga i global state.\r\n */\r\n setQuestionDisplayed: (state, action: PayloadAction<any>) => {\r\n state.questions = mapQuestionById(state.questions, action.payload.id, (q) => ({\r\n ...q,\r\n isDisplayed: action.payload.isDisplayed,\r\n }));\r\n },\r\n /** Tar bort svar på frågor framåt i formuläret som är beroende av en\r\n * specifik fråga som har ändrats.\r\n */\r\n resetDependentAnswersForward: (state, action: PayloadAction<any>) => {\r\n state.questions = state.questions.map((qObject: any) => {\r\n let questionExistInLinkedToQuestion = false;\r\n\r\n if (qObject.dependsOnOtherQuestion !== undefined) {\r\n questionExistInLinkedToQuestion = qObject.dependsOnOtherQuestion.some(\r\n (innerArray: any) =>\r\n innerArray.some((item: any) => item.LinkedToQuestionId === action.payload.id),\r\n );\r\n }\r\n\r\n const shouldClear =\r\n qObject.id > action.payload.id &&\r\n !qObject.isDisplayed &&\r\n qObject.dependsOnOtherQuestion !== undefined &&\r\n questionExistInLinkedToQuestion;\r\n\r\n if (shouldClear) {\r\n return {\r\n ...qObject,\r\n answer: '',\r\n };\r\n }\r\n\r\n return qObject;\r\n });\r\n },\r\n },\r\n extraReducers: (builder) => {\r\n if (options?.extraReducers) {\r\n options.extraReducers(builder);\r\n }\r\n },\r\n });\r\n\r\n return slice;\r\n};\r\n\r\n/**\r\n * Skapar ett set av selectors för formulärets globala state.\r\n\r\n */\r\nexport const makeFormSelectors = <TState>(selectSlice: (state: TState) => IFormState) => {\r\n /**\r\n * Returnerar hela form-slicens state.\r\n */\r\n const selectFormState = (state: TState) => selectSlice(state);\r\n /**\r\n * Returnerar true om formulärets data har laddats in i global state.\r\n */\r\n const selectIsFormLoaded = (state: TState) => selectSlice(state).formLoaded;\r\n\r\n /**\r\n * Returnerar applicationContent - applikationens textinnehåll och metadata -\r\n * anpassat efter valt språk. Selectorn hämtar rätt språkversion beroende på\r\n * aktiva språket och extraherar de språkberoende fälten:\r\n * headline, body,linksForMoreInfo, pageTitle, textblocks\r\n *\r\n */\r\n const selectApplicationContentFromLanguageSupport = createSelector(\r\n [\r\n (state: TState) => selectSlice(state).applicationContent,\r\n (_: TState, activatedLanguage: string) => activatedLanguage,\r\n ],\r\n (applicationContent: any, activatedLanguage: string) => {\r\n const languageSupport = applicationContent?.languageSupport?.find(\r\n (lang: any) => lang.language === activatedLanguage,\r\n );\r\n\r\n if (!languageSupport) {\r\n return {\r\n headline: '',\r\n body: '',\r\n linksForMoreInfo: [],\r\n pageTitle: '',\r\n textblocks: [],\r\n };\r\n }\r\n\r\n return {\r\n headline: languageSupport.headline,\r\n body: languageSupport.body,\r\n linksForMoreInfo: languageSupport.linksForMoreInfo,\r\n pageTitle: languageSupport.pageTitle,\r\n textblocks: languageSupport.textblocks,\r\n languageSupport: applicationContent?.languageSupport,\r\n };\r\n },\r\n );\r\n\r\n const selectStepFromLanguageSupport = createSelector(\r\n [\r\n (state: TState) => selectSlice(state).steps,\r\n (_: TState, activatedLanguage: string) => activatedLanguage,\r\n ],\r\n (steps: any[], activatedLanguage: string) => {\r\n return steps.map((stepperObject: any) => {\r\n let languageSupport = stepperObject.languageSupport.find(\r\n (lang: any) => lang.language === activatedLanguage,\r\n );\r\n\r\n if (!languageSupport) {\r\n languageSupport = {};\r\n }\r\n\r\n return {\r\n ...stepperObject,\r\n stepHeadline: languageSupport.stepHeadline,\r\n stepDescription: languageSupport.stepDescription,\r\n shortNameInStepper: languageSupport.shortNameInStepper,\r\n shortNameInPreview: languageSupport.shortNameInPreview,\r\n pageTitle: languageSupport.pageTitle,\r\n };\r\n });\r\n },\r\n );\r\n\r\n const selectQuestionFromLanguageSupport = createSelector(\r\n [\r\n (state: TState) => selectSlice(state).questions,\r\n (_: TState, activatedLanguage: string) => activatedLanguage,\r\n ],\r\n (questions: any[], activatedLanguage: string) => {\r\n return questions.map((qObject: any) => {\r\n let languageSupport = qObject.languageSupport.find(\r\n (lang: any) => lang.language === activatedLanguage,\r\n );\r\n\r\n if (!languageSupport) {\r\n languageSupport = {};\r\n }\r\n\r\n return {\r\n ...qObject,\r\n categoryLabel: languageSupport.categoryLabel,\r\n categoryDescription: languageSupport.categoryDescription,\r\n questionLabel: languageSupport.questionLabel,\r\n legend: languageSupport.legend,\r\n previewLabel: languageSupport.previewLabel,\r\n aboutText: languageSupport.aboutText,\r\n options: languageSupport.options,\r\n validationDefaultMessesege: languageSupport.validationDefaultMessesege,\r\n validationSummaryLabel: languageSupport.validationSummaryLabel,\r\n };\r\n });\r\n },\r\n );\r\n\r\n return {\r\n selectFormState,\r\n selectIsFormLoaded,\r\n selectApplicationContentFromLanguageSupport,\r\n selectStepFromLanguageSupport,\r\n selectQuestionFromLanguageSupport,\r\n };\r\n};\r\n","export interface CookieConsentConfig {\r\n cookieName: string;\r\n choiceKey: string;\r\n expiryYears?: number;\r\n}\r\n\r\n/**\r\n * Hämtar värdet av en cookie.\r\n *\r\n * @param name - Namnet på cookien som ska hämtas.\r\n * @returns Cookie-värdet som sträng, eller `null` om cookien inte finns.\r\n */\r\nconst getCookie = (name: string): string | null => {\r\n const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));\r\n return match ? match[2] : null;\r\n};\r\n\r\n/**\r\n * Skapar eller uppdaterar en cookie.\r\n *\r\n * @param name - Namnet på cookien.\r\n * @param value - Cookie-värdet.\r\n * @param expirationDate - Valfritt utgångsdatum (UTC-datum).\r\n */\r\nconst setCookie = (name: string, value: string, expirationDate?: Date): void => {\r\n let cookieString = `${name}=${value}; path=/; SameSite=Strict`;\r\n\r\n if (expirationDate) {\r\n cookieString += `; expires=${expirationDate.toUTCString()}`;\r\n }\r\n\r\n if (window.location.protocol === 'https:') {\r\n cookieString += '; Secure';\r\n }\r\n\r\n document.cookie = cookieString;\r\n};\r\n\r\n/**\r\n * Tar bort en cookie genom att sätta ett förfallet datum.\r\n *\r\n * @param name - Namnet på cookien som ska tas bort.\r\n */\r\nconst removeCookie = (name: string): void => {\r\n const pastDate = new Date(0);\r\n setCookie(name, '', pastDate);\r\n};\r\n\r\n/**\r\n * Skapar en uppsättning hjälpfunktioner för att hantera cookie-samtycke.\r\n *\r\n * @param config - Konfiguration för cookienamn, valnyckel och utgångstid.\r\n * @returns Ett objekt med funktioner för att acceptera, neka och läsa cookie-status.\r\n *\r\n */\r\nexport const createCookieConsent = (config: CookieConsentConfig) => {\r\n const { cookieName, choiceKey, expiryYears = 1 } = config;\r\n\r\n const acceptCookies = () => {\r\n const expires = new Date();\r\n expires.setFullYear(expires.getFullYear() + expiryYears);\r\n\r\n setCookie(cookieName, 'true', expires);\r\n localStorage.setItem(cookieName, 'true');\r\n };\r\n\r\n const rejectCookies = () => {\r\n removeCookie(cookieName);\r\n localStorage.removeItem(cookieName);\r\n sessionStorage.setItem(choiceKey, 'true');\r\n };\r\n\r\n const areCookiesAccepted = () => getCookie(cookieName) === 'true';\r\n const hasChoiceBeenMade = () => sessionStorage.getItem(choiceKey) === 'true';\r\n const clearChoiceFromSession = () => sessionStorage.removeItem(choiceKey);\r\n\r\n return {\r\n acceptCookies,\r\n rejectCookies,\r\n areCookiesAccepted,\r\n hasChoiceBeenMade,\r\n clearChoiceFromSession,\r\n };\r\n};\r\n","/**\r\n * Laddar eller tar bort ett externt script beroende på användarens samtycke.\r\n *\r\n * Om `consent` är `true` och scriptet inte redan finns, skapas ett nytt\r\n * `<script>`-element med de angivna attributen.\r\n * Om `consent` är `false` tas scriptet bort från dokumentet.\r\n *\r\n * Denna funktion används t.ex. för att aktivera eller inaktivera tredjepartsskript\r\n * (som analysverktyg) utifrån cookie-samtycke.\r\n *\r\n * @param consent - `true` om scriptet ska laddas, `false` om det ska tas bort.\r\n * @param options - Inställningar för scriptet:\r\n * - `id`: unikt ID för script-elementet (används för att hitta/ta bort det)\r\n * - `src`: käll-URL för scriptet\r\n * - `attributes`: valfria ytterligare HTML-attribut (t.ex. `data-cookieconsent`)\r\n */\r\nexport const toggleScriptByConsent = (\r\n consent: boolean,\r\n options: { id: string; src: string; attributes?: Record<string, string> },\r\n): void => {\r\n if (typeof document === 'undefined') return;\r\n\r\n const existingScript = document.getElementById(options.id);\r\n\r\n if (consent) {\r\n if (!existingScript) {\r\n const script = document.createElement('script');\r\n script.id = options.id;\r\n script.async = true;\r\n script.src = options.src;\r\n\r\n if (options.attributes) {\r\n Object.entries(options.attributes).forEach(([key, value]) =>\r\n script.setAttribute(key, value),\r\n );\r\n }\r\n\r\n document.body.appendChild(script);\r\n }\r\n } else {\r\n if (existingScript) {\r\n existingScript.remove();\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Kontrollerar om ett script med ett visst ID redan är laddat i dokumentet.\r\n *\r\n * @param id - Scriptets unika ID-attribut.\r\n * @returns `true` om scriptet finns i DOM, annars `false`.\r\n */\r\nexport const isScriptLoaded = (id: string): boolean => {\r\n if (typeof document === 'undefined') return false;\r\n return !!document.getElementById(id);\r\n};\r\n\r\n/**\r\n * Tar bort ett script från DOM baserat på dess ID.\r\n *\r\n * @param id - Scriptets ID-attribut.\r\n */\r\nexport const removeScriptById = (id: string): void => {\r\n if (typeof document === 'undefined') return;\r\n const el = document.getElementById(id);\r\n if (el) el.remove();\r\n};\r\n","/**\r\n * Sätter fokus på ett element med givet id (eller HTMLElement),\r\n * sätter tabindex=\"-1\" om inte redan finns, och scrollar dit smidigt.\r\n *\r\n * @param target Elementets id (t.ex. 'main-content') eller själva elementet.\r\n */\r\nexport const focusElement = (target: string | HTMLElement | null) => {\r\n const element =\r\n typeof target === 'string' ? (document.getElementById(target) as HTMLElement | null) : target;\r\n\r\n if (!element) return;\r\n\r\n if (!element.hasAttribute('tabindex')) {\r\n element.setAttribute('tabindex', '-1');\r\n }\r\n\r\n element.focus();\r\n element.scrollIntoView({ behavior: 'smooth' });\r\n};\r\n","/**\r\n * Plockar ut alla id:n från validationType som börjar med \"groupCheck-\"\r\n */\r\nconst getGroupCheckIds = (validationType?: string[]): number[] => {\r\n if (!validationType?.length) return [];\r\n const ids = validationType\r\n .filter((t) => t.startsWith('groupCheck-'))\r\n .flatMap((t) => t.split('-').slice(1))\r\n .map((s) => Number(s))\r\n .filter((n) => Number.isFinite(n));\r\n\r\n return Array.from(new Set(ids));\r\n};\r\n\r\nexport default getGroupCheckIds;\r\n","import * as React from 'react';\r\n/**\r\n * Hook som hanterar öppning och stängning av en laddningsmodal baserat på formulärets status.\r\n * @param formStatus Den aktuella statusen för formuläret ('loading', 'success', 'failed', etc.).\r\n * @param handleModalOpen Funktion för att öppna modalen.\r\n * @param handleModalClose Funktion för att stänga modalen.\r\n * @param mainSelector CSS-selektorn för huvudinnehållet som ska fokuseras efter modal stängs.\r\n */\r\nexport const useFormStatusModal = (\r\n formStatus: string,\r\n handleModalOpen: () => void,\r\n handleModalClose: () => void,\r\n mainSelector = '#main-content',\r\n) => {\r\n React.useEffect(() => {\r\n if (formStatus === 'loading') {\r\n handleModalOpen();\r\n }\r\n\r\n if (formStatus === 'success' || formStatus === 'failed') {\r\n setTimeout(() => {\r\n handleModalClose();\r\n }, 1050);\r\n\r\n const main = document.querySelector(mainSelector) as HTMLElement | null;\r\n if (main) main.focus();\r\n }\r\n }, [formStatus, handleModalOpen, handleModalClose, mainSelector]);\r\n};\r\n","// hooks/useStepperPageTitle.ts\r\nimport { useMemo, useEffect } from 'react';\r\n\r\nexport const usePTSPageTitle = ({\r\n formStatus,\r\n activeStep,\r\n applicationContent,\r\n thankYouBlock,\r\n steps,\r\n fallbackTitle = 'PTS e-tjänst',\r\n}: any) => {\r\n const computedTitle = useMemo(() => {\r\n const baseTitle = applicationContent?.pageTitle ?? '';\r\n const thankYouPageTitle = thankYouBlock?.pageTitle ?? '';\r\n const stepTitle = steps?.[Math.max(0, activeStep - 1)]?.pageTitle ?? '';\r\n\r\n if (formStatus === 'success' && thankYouPageTitle) return thankYouPageTitle;\r\n if (activeStep === 0 && baseTitle) return baseTitle;\r\n return stepTitle || baseTitle || fallbackTitle;\r\n }, [formStatus, activeStep, applicationContent, thankYouBlock, steps, fallbackTitle]);\r\n\r\n useEffect(() => {\r\n document.title = computedTitle;\r\n }, [computedTitle]);\r\n\r\n return computedTitle;\r\n};\r\n","import { useEffect } from 'react'\r\n\r\n/**\r\n * Lägger till en CSS-klass på <body> när användaren interagerar med mus,\r\n * och tar bort den när användaren använder tangentbord (t.ex. Tab).\r\n *\r\n * Används för att styra fokusmarkeringar och förbättra tillgänglighet.\r\n */\r\nexport const useInputMethodDetection = ({\r\n mouseClassName = 'using-mouse',\r\n keyboardToggleKey = 'Tab',\r\n}: {\r\n mouseClassName?: string\r\n keyboardToggleKey?: string\r\n} = {}) => {\r\n useEffect(() => {\r\n const handleMouseDown = () => {\r\n document.body.classList.add(mouseClassName)\r\n }\r\n\r\n const handleKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === keyboardToggleKey) {\r\n document.body.classList.remove(mouseClassName)\r\n }\r\n }\r\n\r\n document.addEventListener('mousedown', handleMouseDown)\r\n document.addEventListener('keydown', handleKeyDown)\r\n\r\n return () => {\r\n document.removeEventListener('mousedown', handleMouseDown)\r\n document.removeEventListener('keydown', handleKeyDown)\r\n }\r\n }, [mouseClassName, keyboardToggleKey])\r\n}\r\n","import { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport {\r\n createCookieConsent,\r\n CookieConsentConfig,\r\n} from '../../helpers/cookieHandler/cookieHandler'; // eller var du har koden\r\n\r\nexport interface UseCookieConsentConfig extends CookieConsentConfig {\r\n /**\r\n * Körs när cookies ändrar status (true = accepterade, false = ej)\r\n */\r\n cookieName: string;\r\n choiceKey: string;\r\n expiryYears?: number;\r\n onConsentChange?: (accepted: boolean) => void;\r\n}\r\n\r\nexport const useCookieConsent = ({\r\n cookieName,\r\n choiceKey,\r\n expiryYears = 1,\r\n onConsentChange,\r\n}: UseCookieConsentConfig) => {\r\n // Skapa de rena funktionerna EN gång per config\r\n const {\r\n acceptCookies,\r\n rejectCookies,\r\n areCookiesAccepted,\r\n hasChoiceBeenMade,\r\n clearChoiceFromSession,\r\n } = useMemo(\r\n () =>\r\n createCookieConsent({\r\n cookieName,\r\n choiceKey,\r\n expiryYears,\r\n }),\r\n [cookieName, choiceKey, expiryYears],\r\n );\r\n\r\n const [showBanner, setShowBanner] = useState(false);\r\n\r\n const handleCookieStateChange = useCallback(() => {\r\n const cookiesNowAccepted = areCookiesAccepted();\r\n\r\n // Låt applikationen (e-tjänsten) avgöra vad som ska hända, t.ex. SiteImprove\r\n if (onConsentChange) {\r\n onConsentChange(cookiesNowAccepted);\r\n }\r\n\r\n setShowBanner(false);\r\n }, [areCookiesAccepted, onConsentChange]);\r\n\r\n useEffect(() => {\r\n const cookiesAccepted = areCookiesAccepted();\r\n const choiceMade = hasChoiceBeenMade();\r\n\r\n // Visa bannern om inget val är gjort\r\n setShowBanner(!cookiesAccepted && !choiceMade);\r\n\r\n // Om användaren redan accepterat → trigga onConsentChange(true)\r\n if (cookiesAccepted && onConsentChange) {\r\n onConsentChange(true);\r\n }\r\n\r\n const handleShowBannerEvent = () => {\r\n clearChoiceFromSession();\r\n setShowBanner(true);\r\n };\r\n\r\n window.addEventListener('showCookieBanner', handleShowBannerEvent);\r\n\r\n return () => {\r\n window.removeEventListener('showCookieBanner', handleShowBannerEvent);\r\n };\r\n }, [areCookiesAccepted, hasChoiceBeenMade, clearChoiceFromSession, onConsentChange]);\r\n\r\n return {\r\n showBanner,\r\n handleCookieStateChange,\r\n acceptCookies,\r\n rejectCookies,\r\n };\r\n};\r\n","import React from 'react';\r\nimport {\r\n SingleCheckboxStandard,\r\n MultipleCheckboxesStandard,\r\n RadioMultipleStandard,\r\n TextAreaStandard,\r\n TextFieldStandard,\r\n AddFilesStandard,\r\n CheckboxGroupStandard,\r\n} from '../../input-components';\r\n\r\nimport type { QuestionRendererProps } from './QuestionRenderar.types';\r\n\r\n/**\r\n * Renderar rätt input-komponent baserat på frågans `questionType`.\r\n *\r\n * Denna komponent fungerar som en central \"switch\" som avgör vilken\r\n * formulärkomponent (TextField, Radio, Checkbox, FileUpload, TextArea osv.)\r\n * som ska användas för en given fråga.\r\n *\r\n * @param {object} question - Frågeobjektet som innehåller all metadata\r\n * (questionType, id, svarsalternativ, synlighet, beskrivningar m.m.).\r\n * @param {Function} handleQuestionInputChange - Event-handler som skickas vidare\r\n * till underliggande komponenter och triggas när användaren ändrar ett svar.\r\n * @param {string} activatedLanguage - Det aktiva språket som vissa\r\n * input-komponenter använder för att visa etiketter och texter.\r\n * @param {boolean} showPreview - Styr om frågan ska visas i\r\n * preview-läge istället för som redigerbar input.\r\n */\r\nconst QuestionRenderer: React.FC<QuestionRendererProps> = ({\r\n question,\r\n handleQuestionInputChange,\r\n activatedLanguage = 'sv',\r\n showPreview = false,\r\n}) => {\r\n return (\r\n <>\r\n {question.questionType === 'Radio' && (\r\n <RadioMultipleStandard\r\n question={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n showPreview={showPreview}\r\n />\r\n )}\r\n {question.questionType === 'TextField' && (\r\n <TextFieldStandard\r\n question={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n showPreview={showPreview}\r\n activatedLanguage={activatedLanguage}\r\n />\r\n )}\r\n\r\n {question.questionType === 'AddFiles' && (\r\n <AddFilesStandard\r\n questionObject={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n showPreview={showPreview}\r\n activatedLanguage={activatedLanguage}\r\n visible={question.visible}\r\n />\r\n )}\r\n {question.questionType === 'SingleCheckbox' && (\r\n <SingleCheckboxStandard\r\n question={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n showPreview={showPreview}\r\n activatedLanguage={activatedLanguage}\r\n />\r\n )}\r\n {question.questionType === 'Checkbox' && (\r\n <MultipleCheckboxesStandard\r\n question={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n showPreview={showPreview}\r\n activatedLanguage={activatedLanguage}\r\n />\r\n )}\r\n\r\n {question.questionType === 'CheckboxGroup' && (\r\n <CheckboxGroupStandard\r\n question={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n showPreview={showPreview}\r\n activatedLanguage={activatedLanguage}\r\n />\r\n )}\r\n\r\n {question.questionType === 'TextArea' && (\r\n <TextAreaStandard\r\n question={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n showPreview={showPreview}\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default QuestionRenderer;\r\n","import React, { useEffect, Fragment } from 'react';\r\nimport QuestionRenderer from '../QuestionRenderer';\r\nimport { QuestionGroupProps } from './QuestionGroup.types';\r\n\r\n/**\r\n * Komponenten ansvarar för att rendera en grupp av frågor med valfri wrapper:\r\n * ('fieldset', 'section', 'div', eller 'none')\r\n *\r\n * @param {Question[]} questions Alla frågor i den här gruppen.\r\n * Första frågan används som \"bärare\" av valideringsattribut\r\n * när wrappern är ett fieldset.\r\n * @param {WrapperElement} wrapperElement Vilket HTML-element gruppen ska renderas i\r\n * ('fieldset' | 'section' | 'div' | 'none').\r\n * @param {string} legendLabel Texten som visas i legend när wrapperElement är 'fieldset'.\r\n * @param {string} activatedLanguage Applikationens aktiva språk.\r\n * @param {boolean} showPreview Om true visas frågorna i gransknings-/preview-läge.\r\n * @param {Function} handleQuestionInputChange Callback som anropas när en fråga ändras.\r\n * Skickar med både frågeobjektet och eventet.\r\n * @param {Function} props.markQuestionAsDisplayed Anropas när en fråga visas för att markera den som \"displayed\"\r\n * i globalt state.\r\n */\r\nconst QuestionGroup: React.FC<QuestionGroupProps> = ({\r\n questions,\r\n wrapperElement = 'none',\r\n legendLabel,\r\n handleQuestionInputChange,\r\n activatedLanguage,\r\n showPreview = false,\r\n markQuestionAsDisplayed,\r\n}) => {\r\n if (!questions || questions.length === 0) {\r\n return null;\r\n }\r\n const firstQuestion = questions[0];\r\n const groupMandatory = firstQuestion.validationType?.find((e: any) => e.startsWith('groupCheck-'));\r\n\r\n useEffect(() => {\r\n questions.forEach((question: any) => {\r\n if (question.visible && !question.isDisplayed) {\r\n markQuestionAsDisplayed(question);\r\n }\r\n });\r\n }, [questions]);\r\n\r\n const groupQuestions = (\r\n <>\r\n {questions.map((question: any, index: number) => {\r\n return (\r\n <Fragment key={'question-' + index}>\r\n <QuestionRenderer\r\n question={question}\r\n handleQuestionInputChange={handleQuestionInputChange}\r\n activatedLanguage={activatedLanguage}\r\n showPreview={showPreview}\r\n />\r\n </Fragment>\r\n );\r\n })}\r\n </>\r\n );\r\n\r\n switch (wrapperElement) {\r\n case 'fieldset':\r\n return (\r\n <fieldset\r\n className=\"pts-root-question-group-fieldset pts-root-question\"\r\n aria-required={firstQuestion.isQuestionMandatory || undefined}\r\n aria-invalid={firstQuestion.hasValidationError || undefined}\r\n aria-errormessage={\r\n firstQuestion.hasValidationError ? `${firstQuestion.id}-error` : undefined\r\n }\r\n aria-describedby={\r\n firstQuestion.hasValidationError ? `${firstQuestion.id}-error` : undefined\r\n }\r\n >\r\n {legendLabel && (\r\n <legend>\r\n <span>{legendLabel}\r\n {groupMandatory && (\r\n <span aria-hidden={true} className=\"pts-root-mandatoryAsterisk\">\r\n *\r\n </span>\r\n )}\r\n </span>\r\n {firstQuestion.hasValidationError && (\r\n <span className=\"sr-only\">\r\n Valideringsfel. {firstQuestion.validationDefaultMessesege}\r\n </span>\r\n )}\r\n </legend>\r\n )}\r\n\r\n {firstQuestion.hasValidationError && (\r\n <div className=\"pts-root-error\" id={firstQuestion.id + '-error'}>\r\n <span aria-label=\"Valideringsfel\" className=\"errorDot\">\r\n !\r\n </span>\r\n <span className=\"errorText\">{firstQuestion.validationDefaultMessesege}</span>\r\n </div>\r\n )}\r\n \r\n {groupQuestions}\r\n </fieldset>\r\n );\r\n case 'section':\r\n return <section className=\"pts-root-question-group-section\">{groupQuestions}</section>;\r\n case 'div':\r\n return <div className=\"pts-root-question-group-div\">{groupQuestions}</div>;\r\n case 'none':\r\n default:\r\n return <Fragment>{groupQuestions}</Fragment>;\r\n }\r\n};\r\n\r\nexport default QuestionGroup;\r\n","import React from 'react';\r\nimport { CookieBannerProps } from './CookieBanner.types';\r\n\r\nconst CookieBanner: React.FC<CookieBannerProps> = ({\r\n visible = false,\r\n onCookieStateChange,\r\n onClose,\r\n acceptCookies,\r\n rejectCookies,\r\n}) => {\r\n if (!visible) return null;\r\n\r\n const handleCookieChoice = (accepted: boolean) => {\r\n if (accepted) {\r\n acceptCookies();\r\n } else {\r\n rejectCookies();\r\n }\r\n\r\n if (onCookieStateChange) {\r\n onCookieStateChange();\r\n }\r\n\r\n if (onClose) {\r\n onClose();\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className=\"pts-cookieBanner\"\r\n role=\"dialog\"\r\n aria-labelledby=\"cookie-banner-title\"\r\n aria-describedby=\"cookie-banner-description\"\r\n aria-modal=\"true\"\r\n id=\"cookie-banner\"\r\n tabIndex={-1}\r\n >\r\n <div className=\"content\">\r\n <h3 id=\"cookie-banner-title\">Kakor (cookies)</h3>\r\n <p id=\"cookie-banner-description\">\r\n PTS skulle vilja använda en statistikkaka i syfte att löpande förbättra webbplatsen.\r\n Samtycker du till det? Du kan när som helst ändra ditt val. För att återkalla ditt\r\n samtycke klickar du på ”Kakor” i avsnittet längst ned på webbplatsen.\r\n </p>\r\n\r\n <div className=\"pts-cookieBanner-Links\">\r\n <svg\r\n width=\"27\"\r\n height=\"27\"\r\n viewBox=\"0 0 27 27\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <rect width=\"27\" height=\"27\" rx=\"13.5\" fill=\"#6E3282\" />\r\n <path\r\n d=\"M13.5 18.7116L12.4911 17.7995L16.4559 14.1514H7.83594V12.8485H16.4559L12.4911 9.20036L13.5 8.28833L19.164 13.4999L13.5 18.7116Z\"\r\n fill=\"white\"\r\n />\r\n </svg>\r\n <a\r\n href=\"https://pts.se/om-oss/om-pts.se/kakor-pa-webbplatsen/kakor-pa-pts-e-tjanster/\"\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n Kakor (cookies) på pts.se (öppnas i ny flik)\r\n </a>\r\n </div>\r\n\r\n <div className=\"pts-cookieBanner-Buttons\">\r\n <button onClick={() => handleCookieChoice(true)}>Ja, jag samtycker</button>\r\n <button onClick={() => handleCookieChoice(false)}>Nej, jag samtycker inte</button>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default CookieBanner;\r\n","import { FC } from 'react';\r\nimport { FooterProps } from './FooterStandard.types';\r\n\r\nconst Footer: FC<FooterProps> = ({ activatedLanguage = 'sv' }) => {\r\n return (\r\n <footer className=\"pts-footer-container\">\r\n <div className='pts-footer-slogan-text-container'>\r\n <p className='pts-footer-slogan-text'>{activatedLanguage === 'sv'\r\n ? \"Säker och tillgänglig kommunikation för Sverige\"\r\n : \"Secure and accessible communication for Sweden\"\r\n }</p>\r\n </div>\r\n <div className=\"pts-footer-content\">\r\n <svg\r\n aria-label={activatedLanguage === 'en' ? 'PTS logotype' : 'PTS logotyp'}\r\n className=\"pts-footer-logo\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"278\"\r\n height=\"72\"\r\n viewBox=\"0 0 278 72\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M54 43C54 47.2 51.5 51.1 47.6 52.3C45.8 52.8 44 53 41 53H24.5C21.4 53 21 53.5 21 56.5V63C21 65.4 19.5 67 17.5 67C15.5 67 14 65.4 14 63V58.5C14 56.5 14 54.8 14.2 53.9C14.8 50.5 16.8 47.9 20.1 46.7C21.4 46.2 23.6 45.9 27.9 45.9H42C43.2 45.9 44.4 45.8 44.9 45.6C46.4 45 46.9 44 46.9 42.9C46.9 41.8 46.5 40.7 44.9 40.2C44.4 40 43.2 39.9 42 39.9H19.4C18.5 39.9 17.7 39.9 17.3 39.7C15.8 39.2 14.9 37.8 14.9 36.4C14.9 35 15.8 33.6 17.3 33.1C17.8 32.9 18.3 32.9 19.3 32.9H40.9C44 32.9 46.4 33.1 47.9 33.7C51.8 35.2 53.9 38.4 53.9 42.9L54 43ZM95.7 33.3C95.2 33.1 94.4 33 93.3 33H61.6C60.8 33 60.1 33 59.7 33.2C58 33.7 57 35 57 36.5C57 38 57.8 39.2 59.4 39.7C59.9 39.9 60.7 40 61.6 40H74V63.4C74 65.8 75.6 67 77.5 67C79.4 67 81 65.8 81 63.4V40H93.3C94.5 40 95.1 40 95.5 39.8C97.1 39.3 98 38 98 36.5C98 35 97.2 33.8 95.7 33.3ZM133.5 47.4C131.8 46.5 129.6 46 124.1 46H113.5C111.8 46 110.9 45.9 110.3 45.7C108.6 45.1 108 44 108 43C108 42 108.4 40.8 110.2 40.2C110.7 40 111.6 40 112.5 40H132C132.4 40 133.5 40 133.8 40C135.6 39.7 137 38.6 137 36.6C137 34.6 135.6 33.6 133.9 33.2C133.6 33.2 132.9 33.1 132 33.1H113.5C110.2 33.1 107.8 33.5 106.2 34.2C102.9 35.8 101 39.2 101 43.1C101 47 102.8 50.5 106.4 52.1C108 52.8 110.4 53.1 113.5 53.1H127C128.7 53.1 129.6 53.3 130.2 53.5C131.6 54 132 55.4 132 56.6C132 57.8 131.6 59.3 129.9 59.8C129.3 60 128.1 60.1 126.1 60.1H106.5C105.7 60.1 104.9 60.1 104.5 60.3C102.9 60.7 102 62 102 63.6C102 65.2 103 66.2 104.3 66.7C104.8 66.9 105.9 67.1 106.7 67.1H124C127.7 67.1 130.7 66.9 132.5 66.3C136.6 65.1 138.9 61.2 138.9 56.6C138.9 52 136.8 49.2 133.4 47.5L133.5 47.4Z\"\r\n fill=\"white\"\r\n />\r\n <path\r\n d=\"M92.1 15.7L92.5 15C90 11.6 84.1 9.2 78.1 9H76.9C70.9 9.2 65 11.6 62.5 15L62.9 15.7C61.8 15.7 61 16.4 61 17.3L63.3 27C63.5 27.6 63.7 27.9 64.5 27.9H90.5C91.2 27.9 91.5 27.5 91.6 27L93.9 17.3C93.9 16.4 93.1 15.7 92 15.7H92.1ZM69.3 18.8C69.1 18.8 68.8 18.7 68.6 18.7C67.6 18.7 66.9 19.4 66.9 20.3C66.9 21.2 67.6 21.8 68.5 21.8C69.4 21.8 69.3 21.7 69.5 21.4C69.5 22.2 68.6 24 67.4 24H64.9C63.2 24 63 21.7 63 21.5C63.2 21.7 63.7 21.8 64.1 21.8C64.9 21.8 65.6 21.2 65.6 20.3C65.6 19.4 64.9 18.7 63.9 18.7C62.9 18.7 63.5 18.7 63.4 18.7C63.8 18.4 64.2 17.9 64.2 17.3C64.2 16.7 63.9 16.4 63.5 16.1L65.8 15C67.3 12.5 70 10.7 73.3 10C71.5 11.3 70 12.9 68.8 15L69.6 15.7C68.8 15.8 68.2 16.5 68.2 17.3C68.2 18.1 68.6 18.5 69.2 18.8H69.3ZM76.8 18.9C76.6 18.8 76.2 18.7 76 18.7C75 18.7 74.3 19.4 74.3 20.3C74.3 21.2 75 21.8 75.9 21.8C76.8 21.8 76.7 21.7 77 21.5C77 22.3 76.4 24 75 24H72.5C70.9 24 70.5 22 70.5 21.4C70.7 21.6 71.1 21.8 71.6 21.8C72.4 21.8 73.2 21.2 73.2 20.3C73.2 19.4 72.5 18.7 71.5 18.7C70.5 18.7 70.9 18.7 70.8 18.8C71.4 18.5 71.8 18 71.8 17.3C71.8 16.6 71.4 16.1 70.8 15.9L72.6 15C73.1 13.2 74.7 10.6 76.4 9.7C76.2 10.6 76.1 12.5 76.1 15C76.1 15 76.6 15.5 77.1 15.8C76.4 16 75.9 16.6 75.9 17.3C75.9 18 76.3 18.5 76.9 18.8L76.8 18.9ZM82.5 24H80C78.6 24 78 22.3 78 21.5C78.2 21.7 78.6 21.8 79.1 21.8C80 21.8 80.7 21.2 80.7 20.3C80.7 19.4 80 18.7 79 18.7C78 18.7 78.4 18.7 78.2 18.9C78.8 18.7 79.3 18.1 79.3 17.4C79.3 16.7 78.8 16.1 78.1 15.9C78.6 15.6 79.1 15.1 79.1 15.1C79.1 12.6 79 10.7 78.7 9.8C80.5 10.7 82.1 13.2 82.6 15.1L84.4 16C83.9 16.2 83.4 16.8 83.4 17.4C83.4 18 83.8 18.6 84.4 18.9C84.2 18.9 83.9 18.8 83.7 18.8C82.7 18.8 82 19.5 82 20.4C82 21.3 82.7 21.9 83.6 21.9C84.5 21.9 84.4 21.8 84.7 21.5C84.7 22 84.3 24.1 82.7 24.1L82.5 24ZM90 24H87.5C86.2 24 85.4 22.3 85.4 21.4C85.6 21.7 86 21.8 86.5 21.8C87.3 21.8 88 21.2 88 20.3C88 19.4 87.3 18.7 86.3 18.7C85.3 18.7 85.7 18.7 85.6 18.8C86.2 18.5 86.6 18 86.6 17.3C86.6 16.6 86 15.8 85.1 15.7L86 15C84.8 12.9 83.3 11.4 81.5 10C84.7 10.7 87.5 12.4 89 15L91.4 16.1C91 16.4 90.7 16.8 90.7 17.4C90.7 18 91.1 18.6 91.6 18.9C91.5 18.9 91.2 18.8 91 18.8C90 18.8 89.3 19.5 89.3 20.4C89.3 21.3 90 21.9 90.8 21.9C91.6 21.9 91.7 21.8 91.9 21.6C91.9 21.8 91.6 24.1 90 24.1V24ZM77.5 9C76.1 9 75 7.9 75 6.5C75 5.1 75.9 4.3 77 4.1V3H76V2H77V1H78V2H79V3H78V4.1C79.1 4.3 80 5.3 80 6.6C80 7.9 78.9 9.1 77.5 9.1V9Z\"\r\n fill=\"white\"\r\n />\r\n </svg>\r\n\r\n <nav className=\"pts-footer-linkList\">\r\n <ul>\r\n <li>\r\n <a\r\n href={\r\n activatedLanguage === 'en'\r\n ? 'https://pts.se/en/contact/'\r\n : 'https://www.pts.se/kontakt/'\r\n }\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n <span className=\"sr-only\">\r\n {activatedLanguage === 'en'\r\n ? 'PTS Contact (opens in new tab)'\r\n : 'PTS Kontakt (öppnas i ny flik)'}\r\n </span>\r\n <span aria-hidden=\"true\">{activatedLanguage === 'en' ? 'Contact' : 'Kontakt'}</span>\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n href={\r\n activatedLanguage === 'en' ? 'https://pts.se/en/gdpr' : 'https://www.pts.se/gdpr/'\r\n }\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n <span className=\"sr-only\">\r\n {activatedLanguage === 'en'\r\n ? 'PTS Processing of personal data (opens in new tab)'\r\n : 'PTS Behandling av personuppgifter (öppnas i ny flik)'}\r\n </span>\r\n <span aria-hidden=\"true\">\r\n {activatedLanguage === 'en'\r\n ? 'Processing of personal data'\r\n : 'Behandling av personuppgifter'}\r\n </span>\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n href={\r\n activatedLanguage === 'en'\r\n ? 'https://pts.se/en/accessibility-eservices'\r\n : 'https://www.pts.se/tillganglighet-etjanster'\r\n }\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n <span className=\"sr-only\">\r\n {activatedLanguage === 'en'\r\n ? 'PTS Accessibility (opens in new tab)'\r\n : 'PTS Tillgänglighetsredogörelse (öppnas i ny flik)'}\r\n </span>\r\n <span aria-hidden=\"true\">\r\n {activatedLanguage === 'en' ? 'Accessibility' : 'Tillgänglighetsredogörelse'}\r\n </span>\r\n </a>\r\n </li>\r\n <li>\r\n <a\r\n href={\r\n activatedLanguage === 'en'\r\n ? 'https://pts.se/en/cookies-eservices'\r\n : 'https://www.pts.se/kakor-etjanster'\r\n }\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n >\r\n <span className=\"sr-only\">\r\n {activatedLanguage === 'en'\r\n ? 'PTS Cookies (opens in new tab)'\r\n : 'PTS Kakor (öppnas i ny flik)'}\r\n </span>\r\n <span aria-hidden=\"true\">{activatedLanguage === 'en' ? 'Cookies' : 'Kakor'}</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n </div>\r\n </footer>\r\n );\r\n};\r\n\r\nexport default Footer;\r\n","import React from 'react'\r\n\r\ninterface SVGIconProps {\r\n width?: number\r\n height?: number\r\n color?: string\r\n}\r\n\r\nexport const SearchIcon: React.FC<SVGIconProps> = ({ width = 15, height = 15, color = '#6E3282' }) => (\r\n <svg width={width} height={height} viewBox=\"0 0 21 20\" fill={color} xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M9.05856 16.1132C4.503 16.1132 0.833252 12.5188 0.833252 8.05662C0.833252 3.59449 4.503 0 9.05856 0C13.6141 0 17.2839 3.59449 17.2839 8.05662C17.2839 12.5188 13.6141 16.1132 9.05856 16.1132ZM9.05856 1.23948C5.19899 1.23948 2.09868 4.27621 2.09868 8.05662C2.09868 11.837 5.19899 14.8738 9.05856 14.8738C12.9181 14.8738 16.0184 11.837 16.0184 8.05662C16.0184 4.27621 12.9181 1.23948 9.05856 1.23948Z\"\r\n fill={color}\r\n />\r\n <path\r\n d=\"M14.4409 13.3929C14.7047 13.1187 15.1435 13.1187 15.4073 13.3929L20.3859 18.568C20.6357 18.8276 20.6357 19.2381 20.3859 19.4977C20.1221 19.7719 19.6833 19.7719 19.4195 19.4977L14.4409 14.3227C14.1911 14.0631 14.1911 13.6525 14.4409 13.3929Z\"\r\n fill={color}\r\n />\r\n </svg>\r\n)\r\n\r\nexport const SearchIconWhite = () => (\r\n <svg width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M9.05856 16.1132C4.503 16.1132 0.833252 12.5188 0.833252 8.05662C0.833252 3.59449 4.503 0 9.05856 0C13.6141 0 17.2839 3.59449 17.2839 8.05662C17.2839 12.5188 13.6141 16.1132 9.05856 16.1132ZM9.05856 1.23948C5.19899 1.23948 2.09868 4.27621 2.09868 8.05662C2.09868 11.837 5.19899 14.8738 9.05856 14.8738C12.9181 14.8738 16.0184 11.837 16.0184 8.05662C16.0184 4.27621 12.9181 1.23948 9.05856 1.23948Z\"\r\n fill=\"#6E3282\"\r\n />\r\n <path\r\n d=\"M14.4409 13.3929C14.7047 13.1187 15.1435 13.1187 15.4073 13.3929L20.3859 18.568C20.6357 18.8276 20.6357 19.2381 20.3859 19.4977C20.1221 19.7719 19.6833 19.7719 19.4195 19.4977L14.4409 14.3227C14.1911 14.0631 14.1911 13.6525 14.4409 13.3929Z\"\r\n fill=\"#6E3282\"\r\n />\r\n </svg>\r\n)\r\n\r\nexport const LanguageIcon = () => (\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 21 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M9 18C7.76133 18 6.59467 17.7633 5.5 17.29C4.40533 16.8167 3.452 16.1733 2.64 15.36C1.82667 14.5487 1.18333 13.5953 0.71 12.5C0.236667 11.4053 0 10.2387 0 9C0 7.758 0.236667 6.59033 0.71 5.497C1.184 4.40367 1.82733 3.451 2.64 2.639C3.45133 1.827 4.40467 1.18433 5.5 0.711C6.59467 0.237 7.76133 0 9 0C10.242 0 11.4097 0.236667 12.503 0.71C13.5963 1.184 14.549 1.82733 15.361 2.64C16.173 3.452 16.8157 4.40433 17.289 5.497C17.763 6.59033 18 7.758 18 9C18 10.2387 17.7633 11.4053 17.29 12.5C16.8167 13.5947 16.1733 14.548 15.36 15.36C14.548 16.1727 13.5957 16.816 12.503 17.29C11.4097 17.7633 10.242 18 9 18ZM9 17.008C9.58667 16.254 10.0707 15.5137 10.452 14.787C10.8327 14.0603 11.1423 13.247 11.381 12.347H6.619C6.883 13.2977 7.199 14.1363 7.567 14.863C7.935 15.5897 8.41267 16.3047 9 17.008ZM7.727 16.858C7.26033 16.308 6.83433 15.628 6.449 14.818C6.06367 14.0087 5.777 13.1847 5.589 12.346H1.753C2.32633 13.59 3.13867 14.61 4.19 15.406C5.242 16.202 6.42067 16.686 7.726 16.858H7.727ZM10.273 16.858C11.5783 16.686 12.757 16.202 13.809 15.406C14.861 14.61 15.6733 13.59 16.246 12.346H12.412C12.1587 13.1973 11.8397 14.028 11.455 14.838C11.0697 15.6473 10.6757 16.3207 10.273 16.858ZM1.346 11.346H5.381C5.305 10.936 5.25167 10.5363 5.221 10.147C5.189 9.75767 5.173 9.37533 5.173 9C5.173 8.62467 5.18867 8.24233 5.22 7.853C5.25133 7.46367 5.30467 7.06367 5.38 6.653H1.347C1.23833 6.99967 1.15333 7.37733 1.092 7.786C1.03067 8.19467 1 8.59933 1 9C1 9.40133 1.03033 9.806 1.091 10.214C1.15233 10.6227 1.23733 11 1.346 11.346ZM6.381 11.346H11.619C11.695 10.936 11.7483 10.5427 11.779 10.166C11.811 9.79 11.827 9.40133 11.827 9C11.827 8.59867 11.8113 8.21 11.78 7.834C11.7487 7.45733 11.6953 7.064 11.62 6.654H6.38C6.30467 7.064 6.25133 7.45733 6.22 7.834C6.18867 8.21 6.173 8.59867 6.173 9C6.173 9.40133 6.18867 9.79 6.22 10.166C6.25133 10.5427 6.30567 10.936 6.381 11.346ZM12.619 11.346H16.654C16.7627 10.9993 16.8477 10.622 16.909 10.214C16.9703 9.806 17.0007 9.40133 17 9C17 8.59867 16.9697 8.194 16.909 7.786C16.8477 7.37733 16.7627 7 16.654 6.654H12.619C12.695 7.064 12.7483 7.46367 12.779 7.853C12.811 8.24233 12.827 8.62467 12.827 9C12.827 9.37533 12.8113 9.75767 12.78 10.147C12.7487 10.5363 12.6953 10.9363 12.62 11.347L12.619 11.346ZM12.412 5.654H16.246C15.66 4.38467 14.8573 3.36467 13.838 2.594C12.818 1.82333 11.6297 1.33333 10.273 1.124C10.7397 1.73733 11.1593 2.43933 11.532 3.23C11.904 4.02 12.1973 4.828 12.412 5.654ZM6.619 5.654H11.381C11.117 4.71533 10.7913 3.86667 10.404 3.108C10.0173 2.34867 9.54933 1.64333 9 0.992C8.45133 1.64333 7.98333 2.34867 7.596 3.108C7.20933 3.86667 6.88367 4.71533 6.619 5.654ZM1.754 5.654H5.588C5.80267 4.828 6.096 4.02 6.468 3.23C6.84067 2.43933 7.26033 1.737 7.727 1.123C6.35767 1.333 5.16633 1.82633 4.153 2.603C3.13967 3.38033 2.33967 4.397 1.753 5.653L1.754 5.654Z\"\r\n fill=\"#6E3282\"\r\n />\r\n </svg>\r\n)\r\nexport const LanguageIconSmall = () => (\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M9 18C7.76133 18 6.59467 17.7633 5.5 17.29C4.40533 16.8167 3.452 16.1733 2.64 15.36C1.82667 14.5487 1.18333 13.5953 0.71 12.5C0.236667 11.4053 0 10.2387 0 9C0 7.758 0.236667 6.59033 0.71 5.497C1.184 4.40367 1.82733 3.451 2.64 2.639C3.45133 1.827 4.40467 1.18433 5.5 0.711C6.59467 0.237 7.76133 0 9 0C10.242 0 11.4097 0.236667 12.503 0.71C13.5963 1.184 14.549 1.82733 15.361 2.64C16.173 3.452 16.8157 4.40433 17.289 5.497C17.763 6.59033 18 7.758 18 9C18 10.2387 17.7633 11.4053 17.29 12.5C16.8167 13.5947 16.1733 14.548 15.36 15.36C14.548 16.1727 13.5957 16.816 12.503 17.29C11.4097 17.7633 10.242 18 9 18ZM9 17.008C9.58667 16.254 10.0707 15.5137 10.452 14.787C10.8327 14.0603 11.1423 13.247 11.381 12.347H6.619C6.883 13.2977 7.199 14.1363 7.567 14.863C7.935 15.5897 8.41267 16.3047 9 17.008ZM7.727 16.858C7.26033 16.308 6.83433 15.628 6.449 14.818C6.06367 14.0087 5.777 13.1847 5.589 12.346H1.753C2.32633 13.59 3.13867 14.61 4.19 15.406C5.242 16.202 6.42067 16.686 7.726 16.858H7.727ZM10.273 16.858C11.5783 16.686 12.757 16.202 13.809 15.406C14.861 14.61 15.6733 13.59 16.246 12.346H12.412C12.1587 13.1973 11.8397 14.028 11.455 14.838C11.0697 15.6473 10.6757 16.3207 10.273 16.858ZM1.346 11.346H5.381C5.305 10.936 5.25167 10.5363 5.221 10.147C5.189 9.75767 5.173 9.37533 5.173 9C5.173 8.62467 5.18867 8.24233 5.22 7.853C5.25133 7.46367 5.30467 7.06367 5.38 6.653H1.347C1.23833 6.99967 1.15333 7.37733 1.092 7.786C1.03067 8.19467 1 8.59933 1 9C1 9.40133 1.03033 9.806 1.091 10.214C1.15233 10.6227 1.23733 11 1.346 11.346ZM6.381 11.346H11.619C11.695 10.936 11.7483 10.5427 11.779 10.166C11.811 9.79 11.827 9.40133 11.827 9C11.827 8.59867 11.8113 8.21 11.78 7.834C11.7487 7.45733 11.6953 7.064 11.62 6.654H6.38C6.30467 7.064 6.25133 7.45733 6.22 7.834C6.18867 8.21 6.173 8.59867 6.173 9C6.173 9.40133 6.18867 9.79 6.22 10.166C6.25133 10.5427 6.30567 10.936 6.381 11.346ZM12.619 11.346H16.654C16.7627 10.9993 16.8477 10.622 16.909 10.214C16.9703 9.806 17.0007 9.40133 17 9C17 8.59867 16.9697 8.194 16.909 7.786C16.8477 7.37733 16.7627 7 16.654 6.654H12.619C12.695 7.064 12.7483 7.46367 12.779 7.853C12.811 8.24233 12.827 8.62467 12.827 9C12.827 9.37533 12.8113 9.75767 12.78 10.147C12.7487 10.5363 12.6953 10.9363 12.62 11.347L12.619 11.346ZM12.412 5.654H16.246C15.66 4.38467 14.8573 3.36467 13.838 2.594C12.818 1.82333 11.6297 1.33333 10.273 1.124C10.7397 1.73733 11.1593 2.43933 11.532 3.23C11.904 4.02 12.1973 4.828 12.412 5.654ZM6.619 5.654H11.381C11.117 4.71533 10.7913 3.86667 10.404 3.108C10.0173 2.34867 9.54933 1.64333 9 0.992C8.45133 1.64333 7.98333 2.34867 7.596 3.108C7.20933 3.86667 6.88367 4.71533 6.619 5.654ZM1.754 5.654H5.588C5.80267 4.828 6.096 4.02 6.468 3.23C6.84067 2.43933 7.26033 1.737 7.727 1.123C6.35767 1.333 5.16633 1.82633 4.153 2.603C3.13967 3.38033 2.33967 4.397 1.753 5.653L1.754 5.654Z\"\r\n fill=\"#6E3282\"\r\n />\r\n </svg>\r\n)\r\n\r\nexport const MenuIcon = () => (\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 21 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <line x1=\"0.666504\" y1=\"1\" x2=\"20.6665\" y2=\"1\" stroke=\"#6E3282\" strokeWidth=\"2\" />\r\n <line x1=\"0.666504\" y1=\"7\" x2=\"20.6665\" y2=\"7\" stroke=\"#6E3282\" strokeWidth=\"2\" />\r\n <line x1=\"0.666504\" y1=\"13\" x2=\"20.6665\" y2=\"13\" stroke=\"#6E3282\" strokeWidth=\"2\" />\r\n </svg>\r\n)\r\n\r\nexport const Logo_sv = () => (\r\n <svg width=\"168.8\" height=\"40\" viewBox=\"0 0 168.8 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M91.7779 18.6113C92.1668 18.8335 92.5001 19.1113 92.6668 19.4446C92.8335 19.7779 93.0001 20.2224 93.0001 20.7224C93.0001 21.2224 92.889 21.6113 92.6668 22.0002C92.4446 22.3891 92.1668 22.6668 91.7779 22.8335C91.389 23.0002 90.9446 23.1113 90.4446 23.1113H88.4446V26.1113H87.5001V18.3335H90.5001C91.0001 18.3335 91.4446 18.4446 91.8335 18.6113H91.7779ZM90.3335 22.2224C90.8335 22.2224 91.2779 22.1113 91.5557 21.8335C91.8335 21.5557 92.0001 21.1668 92.0001 20.7224C92.0001 20.2779 91.8335 19.8891 91.5557 19.6113C91.2779 19.3335 90.8335 19.2224 90.3335 19.2224H88.389V22.2224H90.3335Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M93.7779 24.778C93.5557 24.3336 93.4446 23.8336 93.4446 23.278C93.4446 22.7225 93.5557 22.2225 93.7779 21.778C94.0001 21.3336 94.3335 21.0003 94.7779 20.778C95.2224 20.5558 95.6668 20.3892 96.2224 20.3892C96.7779 20.3892 97.2779 20.5003 97.6668 20.778C98.1113 21.0003 98.4446 21.3892 98.6668 21.778C98.889 22.2225 99.0001 22.7225 99.0001 23.278C99.0001 23.8336 98.889 24.3336 98.6668 24.778C98.4446 25.2225 98.1113 25.5558 97.6668 25.778C97.2224 26.0003 96.7779 26.1669 96.2224 26.1669C95.6668 26.1669 95.1668 26.0558 94.7779 25.778C94.389 25.5003 94.0001 25.1669 93.7779 24.778ZM97.8335 24.3336C98.0001 24.0003 98.0557 23.6669 98.0557 23.278C98.0557 22.8892 98.0001 22.5003 97.8335 22.2225C97.6668 21.8892 97.4446 21.6669 97.1668 21.5003C96.889 21.3336 96.5557 21.2225 96.1668 21.2225C95.7779 21.2225 95.4446 21.3336 95.1668 21.5003C94.889 21.6669 94.6668 21.9447 94.5001 22.2225C94.3335 22.5558 94.2779 22.8892 94.2779 23.278C94.2779 23.6669 94.3335 24.0558 94.5001 24.3336C94.6668 24.6669 94.889 24.8892 95.1668 25.0558C95.4446 25.2225 95.7779 25.3336 96.1668 25.3336C96.5557 25.3336 96.889 25.2225 97.1668 25.0558C97.4446 24.8892 97.6668 24.6114 97.8335 24.3336Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M101.222 25.0557C101.5 25.2779 101.889 25.389 102.333 25.389C102.778 25.389 103.056 25.3335 103.333 25.1668C103.556 25.0001 103.722 24.7779 103.722 24.5557C103.722 24.3335 103.667 24.1668 103.556 24.0557C103.445 23.9446 103.278 23.8335 103.111 23.8335C102.945 23.8335 102.667 23.7224 102.278 23.7224C101.778 23.6668 101.389 23.6112 101.056 23.5001C100.722 23.389 100.5 23.2224 100.278 23.0557C100.056 22.889 100 22.5557 100 22.1668C100 21.7779 100.111 21.5557 100.278 21.2779C100.445 21.0001 100.722 20.8335 101.056 20.6668C101.389 20.5001 101.722 20.4446 102.167 20.4446C102.833 20.4446 103.389 20.6112 103.778 20.889C104.222 21.2224 104.445 21.6668 104.445 22.2224H103.556C103.556 21.9446 103.389 21.6668 103.111 21.5001C102.833 21.3335 102.556 21.2224 102.167 21.2224C101.778 21.2224 101.445 21.2779 101.222 21.4446C101 21.6112 100.889 21.8335 100.889 22.0557C100.889 22.2779 100.889 22.389 101.056 22.5001C101.167 22.6112 101.333 22.6668 101.5 22.7224C101.667 22.7779 101.945 22.7779 102.278 22.8335C102.778 22.889 103.167 23.0001 103.5 23.0557C103.833 23.1112 104.056 23.3335 104.278 23.5557C104.5 23.7779 104.556 24.1112 104.556 24.5001C104.556 24.889 104.445 25.1668 104.278 25.389C104.056 25.6668 103.833 25.8335 103.445 26.0001C103.111 26.1668 102.722 26.2224 102.333 26.2224C101.611 26.2224 101 26.0557 100.556 25.7224C100.111 25.389 99.889 24.889 99.889 24.2779H100.778C100.778 24.6112 100.945 24.889 101.222 25.1112V25.0557Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M104.945 21.2779V20.4446H105.945V18.8335H106.833V20.4446H108.278V21.2779H106.833V24.6113C106.833 24.8335 106.833 25.0002 106.945 25.1113C107.056 25.2224 107.222 25.2779 107.445 25.2779H108.445V26.1113H107.389C106.833 26.1113 106.5 26.0002 106.222 25.7779C106 25.5557 105.889 25.1668 105.889 24.6668V21.3335H104.889L104.945 21.2779Z\"\r\n fill=\"#141414\"\r\n />\r\n <path d=\"M108.778 22.5557H112.5V23.3334H108.778V22.5557Z\" fill=\"#141414\" />\r\n <path\r\n d=\"M116.778 24.778C116.556 24.3336 116.445 23.8336 116.445 23.278C116.445 22.7225 116.556 22.2225 116.778 21.778C117 21.3336 117.333 21.0003 117.778 20.778C118.222 20.5558 118.667 20.3892 119.222 20.3892C119.778 20.3892 120.278 20.5003 120.667 20.778C121.111 21.0003 121.445 21.3892 121.667 21.778C121.889 22.2225 122 22.7225 122 23.278C122 23.8336 121.889 24.3336 121.667 24.778C121.445 25.2225 121.111 25.5558 120.667 25.778C120.222 26.0003 119.778 26.1669 119.222 26.1669C118.667 26.1669 118.167 26.0558 117.778 25.778C117.389 25.5003 117 25.1669 116.778 24.778ZM120.833 24.3336C121 24.0003 121.056 23.6669 121.056 23.278C121.056 22.8892 121 22.5003 120.833 22.2225C120.667 21.8892 120.445 21.6669 120.167 21.5003C119.889 21.3336 119.556 21.2225 119.167 21.2225C118.778 21.2225 118.445 21.3336 118.167 21.5003C117.889 21.6669 117.667 21.9447 117.5 22.2225C117.333 22.5558 117.278 22.8892 117.278 23.278C117.278 23.6669 117.333 24.0558 117.5 24.3336C117.667 24.6669 117.889 24.8892 118.167 25.0558C118.445 25.2225 118.778 25.3336 119.167 25.3336C119.556 25.3336 119.889 25.2225 120.167 25.0558C120.445 24.8892 120.667 24.6114 120.833 24.3336Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M125.611 26.1668C125.056 26.1668 124.556 26.0557 124.167 25.7779C123.778 25.5557 123.445 25.1668 123.222 24.7224C123 24.2779 122.889 23.7779 122.889 23.2224C122.889 22.6668 123 22.1668 123.222 21.7224C123.445 21.2779 123.778 20.9446 124.222 20.7224C124.667 20.5002 125.111 20.3335 125.667 20.3335C126.222 20.3335 126.889 20.5002 127.333 20.8891C127.778 21.2224 128.056 21.7224 128.167 22.3335H127.222C127.111 21.9446 126.945 21.6668 126.667 21.4446C126.389 21.2224 126.056 21.1113 125.667 21.1113C125.278 21.1113 124.667 21.2779 124.333 21.6668C124 22.0557 123.833 22.5557 123.833 23.1668C123.833 23.7779 124 24.2779 124.333 24.6668C124.667 25.0557 125.111 25.2779 125.667 25.2779C126.222 25.2779 126.445 25.1668 126.722 24.9446C127 24.7224 127.167 24.4446 127.278 24.0557H128.167C128.056 24.6668 127.778 25.1668 127.333 25.5557C126.889 25.8891 126.333 26.1113 125.667 26.1113L125.611 26.1668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M134.278 22.9446V26.1113H133.389V23.0002C133.389 22.3891 133.278 21.9446 133 21.6668C132.722 21.3335 132.333 21.2224 131.833 21.2224C131.333 21.2224 130.889 21.3891 130.611 21.7779C130.278 22.1668 130.167 22.6668 130.167 23.2779V26.1113H129.278V18.3335H130.167V21.3891C130.333 21.1113 130.611 20.8335 130.889 20.6668C131.222 20.5002 131.556 20.3891 132 20.3891C132.667 20.3891 133.222 20.6113 133.667 21.0002C134.111 21.3891 134.278 22.0557 134.278 22.9446Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M86.6668 32.389V31.5557H87.6668V29.9446H88.5556V31.5557H90.0001V32.389H88.5556V35.7224C88.5556 35.9446 88.5557 36.1112 88.6668 36.2224C88.7779 36.3335 88.9445 36.389 89.1668 36.389H90.1668V37.2224H89.1112C88.5556 37.2224 88.2223 37.1112 87.9445 36.889C87.7223 36.6668 87.6112 36.2779 87.6112 35.7779V32.4446H86.6112L86.6668 32.389Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M91.7779 31.8335C92.1668 31.6112 92.6668 31.4446 93.1668 31.4446C93.6668 31.4446 94.1668 31.5557 94.5557 31.7779C94.9446 32.0001 95.2779 32.2779 95.5001 32.7224C95.7223 33.1668 95.8334 33.6112 95.889 34.1668C95.889 34.2224 95.889 34.389 95.889 34.5557H91.5001C91.5001 35.1668 91.6668 35.6112 92.0001 35.9446C92.3334 36.2779 92.7779 36.4446 93.2779 36.4446C93.7779 36.4446 94.0557 36.3335 94.3334 36.1112C94.6112 35.889 94.8334 35.6112 94.889 35.2779H95.8334C95.7223 35.8335 95.4446 36.3335 95.0001 36.7224C94.5557 37.1112 94.0001 37.2779 93.389 37.2779C92.7779 37.2779 92.3334 37.1668 91.889 36.889C91.4445 36.6668 91.1112 36.3335 90.889 35.889C90.6668 35.4446 90.5557 34.9446 90.5557 34.389C90.5557 33.8335 90.6668 33.2779 90.889 32.889C91.1112 32.4446 91.4446 32.1112 91.8334 31.889L91.7779 31.8335ZM94.389 32.6668C94.0557 32.389 93.6668 32.2779 93.1668 32.2779C92.6668 32.2779 92.3334 32.4446 92.0557 32.7224C91.7779 33.0001 91.5557 33.389 91.5001 33.8335H94.9445C94.9445 33.3335 94.7223 33.0001 94.389 32.7224V32.6668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path d=\"M97.8335 29.4446V37.2224H96.9446V29.4446H97.8335Z\" fill=\"#141414\" />\r\n <path\r\n d=\"M100.167 31.8335C100.556 31.6112 101.056 31.4446 101.556 31.4446C102.056 31.4446 102.556 31.5557 102.945 31.7779C103.333 32.0001 103.667 32.2779 103.889 32.7224C104.111 33.1668 104.222 33.6112 104.278 34.1668C104.278 34.2224 104.278 34.389 104.278 34.5557H99.889C99.889 35.1668 100.056 35.6112 100.389 35.9446C100.722 36.2779 101.167 36.4446 101.667 36.4446C102.167 36.4446 102.445 36.3335 102.722 36.1112C103 35.889 103.222 35.6112 103.278 35.2779H104.222C104.111 35.8335 103.833 36.3335 103.389 36.7224C102.945 37.1112 102.389 37.2779 101.778 37.2779C101.167 37.2779 100.722 37.1668 100.278 36.889C99.8335 36.6668 99.5001 36.3335 99.2779 35.889C99.0557 35.4446 98.9446 34.9446 98.9446 34.389C98.9446 33.8335 99.0557 33.2779 99.2779 32.889C99.5001 32.4446 99.8335 32.1112 100.222 31.889L100.167 31.8335ZM102.778 32.6668C102.445 32.389 102.056 32.2779 101.556 32.2779C101.056 32.2779 100.722 32.4446 100.445 32.7224C100.167 33.0001 99.9446 33.389 99.889 33.8335H103.333C103.333 33.3335 103.111 33.0001 102.778 32.7224V32.6668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M106.445 36.1668C106.722 36.389 107.111 36.5001 107.556 36.5001C108 36.5001 108.278 36.4446 108.556 36.2779C108.778 36.1112 108.945 35.889 108.945 35.6668C108.945 35.4446 108.889 35.2779 108.778 35.1668C108.667 35.0557 108.5 34.9446 108.333 34.9446C108.167 34.9446 107.889 34.8334 107.5 34.8334C107 34.7779 106.611 34.7223 106.278 34.6112C105.945 34.5001 105.722 34.3334 105.5 34.1668C105.278 34.0001 105.222 33.6668 105.222 33.2779C105.222 32.889 105.333 32.6668 105.5 32.389C105.667 32.1112 105.945 31.9446 106.278 31.7779C106.611 31.6112 106.945 31.5557 107.389 31.5557C108.056 31.5557 108.611 31.7223 109 32.0001C109.445 32.3334 109.667 32.7779 109.667 33.3334H108.778C108.778 33.0557 108.611 32.7779 108.333 32.6112C108.056 32.4446 107.778 32.3334 107.389 32.3334C107 32.3334 106.667 32.389 106.445 32.5557C106.222 32.7223 106.111 32.9446 106.111 33.1668C106.111 33.389 106.111 33.5001 106.278 33.6112C106.389 33.7223 106.556 33.7779 106.722 33.8334C106.889 33.889 107.167 33.889 107.5 33.9446C108 34.0001 108.389 34.1112 108.722 34.1668C109.056 34.2223 109.278 34.4446 109.5 34.6668C109.722 34.889 109.778 35.2223 109.778 35.6112C109.778 36.0001 109.667 36.2779 109.5 36.5001C109.278 36.7779 109.056 36.9446 108.667 37.1112C108.333 37.2779 107.945 37.3334 107.556 37.3334C106.833 37.3334 106.222 37.1668 105.778 36.8334C105.333 36.5001 105.111 36.0001 105.111 35.389H106C106 35.7223 106.167 36.0001 106.445 36.2223V36.1668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M110.167 32.389V31.5557H111.167V29.9446H112.056V31.5557H113.5V32.389H112.056V35.7224C112.056 35.9446 112.056 36.1112 112.167 36.2224C112.278 36.3335 112.445 36.389 112.667 36.389H113.667V37.2224H112.611C112.056 37.2224 111.722 37.1112 111.445 36.889C111.222 36.6668 111.111 36.2779 111.111 35.7779V32.4446H110.111L110.167 32.389Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M116.5 36.1668L118.167 31.5557H119.111L116.5 38.1668C116.389 38.5001 116.222 38.7779 116.167 38.9446C116.111 39.1112 115.944 39.2223 115.778 39.3334C115.611 39.389 115.389 39.4446 115.167 39.4446H114.056V38.6112H114.889C115.056 38.6112 115.222 38.6112 115.278 38.5557C115.333 38.5001 115.444 38.4446 115.5 38.389C115.5 38.2779 115.611 38.1668 115.722 37.9446L116 37.2779L113.778 31.5557H114.722L116.445 36.1668H116.5Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M122.722 32.4446H122.278C121.722 32.4446 121.333 32.6112 121.111 33.0001C120.889 33.389 120.778 33.8334 120.778 34.3334V37.2223H119.889V31.5557H120.667L120.778 32.389C120.945 32.1112 121.167 31.9446 121.389 31.7779C121.611 31.6112 122 31.5557 122.445 31.5557H122.722V32.4446Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M124.333 31.8335C124.722 31.6112 125.222 31.4446 125.722 31.4446C126.222 31.4446 126.722 31.5557 127.111 31.7779C127.5 32.0001 127.833 32.2779 128.056 32.7224C128.278 33.1668 128.389 33.6112 128.445 34.1668C128.445 34.2224 128.445 34.389 128.445 34.5557H124.056C124.056 35.1668 124.222 35.6112 124.556 35.9446C124.889 36.2779 125.333 36.4446 125.833 36.4446C126.333 36.4446 126.611 36.3335 126.889 36.1112C127.167 35.889 127.389 35.6112 127.445 35.2779H128.389C128.278 35.8335 128 36.3335 127.556 36.7224C127.111 37.1112 126.556 37.2779 125.945 37.2779C125.333 37.2779 124.889 37.1668 124.445 36.889C124 36.6668 123.667 36.3335 123.445 35.889C123.222 35.4446 123.111 34.9446 123.111 34.389C123.111 33.8335 123.222 33.2779 123.445 32.889C123.667 32.4446 124 32.1112 124.389 31.889L124.333 31.8335ZM126.945 32.6668C126.611 32.389 126.222 32.2779 125.722 32.2779C125.222 32.2779 124.889 32.4446 124.611 32.7224C124.333 33.0001 124.111 33.389 124.056 33.8335H127.5C127.5 33.3335 127.278 33.0001 126.945 32.7224V32.6668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path d=\"M130.333 29.4446V37.2224H129.445V29.4446H130.333Z\" fill=\"#141414\" />\r\n <path\r\n d=\"M132.778 36.1668C133.056 36.389 133.445 36.5001 133.889 36.5001C134.333 36.5001 134.611 36.4446 134.889 36.2779C135.111 36.1112 135.278 35.889 135.278 35.6668C135.278 35.4446 135.222 35.2779 135.111 35.1668C135 35.0557 134.833 34.9446 134.667 34.9446C134.5 34.9446 134.222 34.8334 133.833 34.8334C133.333 34.7779 132.945 34.7223 132.611 34.6112C132.278 34.5001 132.056 34.3334 131.833 34.1668C131.611 34.0001 131.556 33.6668 131.556 33.2779C131.556 32.889 131.667 32.6668 131.833 32.389C132 32.1112 132.278 31.9446 132.611 31.7779C132.945 31.6112 133.278 31.5557 133.722 31.5557C134.389 31.5557 134.945 31.7223 135.333 32.0001C135.778 32.3334 136 32.7779 136 33.3334H135.111C135.111 33.0557 134.945 32.7779 134.667 32.6112C134.389 32.4446 134.111 32.3334 133.722 32.3334C133.333 32.3334 133 32.389 132.778 32.5557C132.556 32.7223 132.445 32.9446 132.445 33.1668C132.445 33.389 132.445 33.5001 132.611 33.6112C132.722 33.7223 132.889 33.7779 133.056 33.8334C133.222 33.889 133.5 33.889 133.833 33.9446C134.333 34.0001 134.722 34.1112 135.056 34.1668C135.389 34.2223 135.611 34.4446 135.833 34.6668C136.056 34.889 136.111 35.2223 136.111 35.6112C136.111 36.0001 136 36.2779 135.833 36.5001C135.611 36.7779 135.389 36.9446 135 37.1112C134.667 37.2779 134.278 37.3334 133.889 37.3334C133.167 37.3334 132.556 37.1668 132.111 36.8334C131.667 36.5001 131.445 36.0001 131.445 35.389H132.333C132.333 35.7223 132.5 36.0001 132.778 36.2223V36.1668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M138.222 31.8335C138.611 31.6112 139.111 31.4446 139.611 31.4446C140.111 31.4446 140.611 31.5557 141 31.7779C141.389 32.0001 141.722 32.2779 141.945 32.7224C142.167 33.1668 142.278 33.6112 142.333 34.1668C142.333 34.2224 142.333 34.389 142.333 34.5557H137.945C137.945 35.1668 138.111 35.6112 138.445 35.9446C138.778 36.2779 139.222 36.4446 139.722 36.4446C140.222 36.4446 140.5 36.3335 140.778 36.1112C141.056 35.889 141.278 35.6112 141.333 35.2779H142.278C142.167 35.8335 141.889 36.3335 141.445 36.7224C141 37.1112 140.445 37.2779 139.833 37.2779C139.222 37.2779 138.778 37.1668 138.333 36.889C137.889 36.6668 137.556 36.3335 137.333 35.889C137.111 35.4446 137 34.9446 137 34.389C137 33.8335 137.111 33.2779 137.333 32.889C137.556 32.4446 137.889 32.1112 138.278 31.889L138.222 31.8335ZM140.833 32.6668C140.5 32.389 140.111 32.2779 139.611 32.2779C139.111 32.2779 138.778 32.4446 138.5 32.7224C138.222 33.0001 138 33.389 137.945 33.8335H141.389C141.389 33.3335 141.167 33.0001 140.833 32.7224V32.6668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M148.445 34.0558V37.2225H147.556V34.1114C147.556 33.5002 147.445 33.0558 147.167 32.778C146.889 32.4447 146.5 32.3336 146 32.3336C145.5 32.3336 145.056 32.5002 144.722 32.8891C144.445 33.278 144.278 33.778 144.278 34.3891V37.2225H143.389V31.5558H144.167L144.278 32.3336C144.722 31.778 145.333 31.5002 146.167 31.5002C147 31.5002 147.389 31.7225 147.833 32.1114C148.278 32.5002 148.445 33.1669 148.445 34.0558Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M30.0001 23.8889C30.0001 26.2223 28.6112 28.3889 26.4445 29.0556C25.4445 29.3334 24.4445 29.4445 22.7778 29.4445H13.6112C11.8889 29.4445 11.6667 29.7223 11.6667 31.3889V35.0001C11.6667 36.3334 10.8334 37.2223 9.72228 37.2223C8.61117 37.2223 7.77783 36.3334 7.77783 35.0001V32.5001C7.77783 31.3889 7.77783 30.4445 7.88894 29.9445C8.22228 28.0556 9.33339 26.6112 11.1667 25.9445C11.8889 25.6667 13.1112 25.5001 15.5001 25.5001H23.3334C24.0001 25.5001 24.6667 25.4445 24.9445 25.3334C25.7778 25.0001 26.0556 24.4445 26.0556 23.8334C26.0556 23.2223 25.8334 22.6112 24.9445 22.3334C24.6667 22.2223 24.0001 22.1667 23.3334 22.1667H10.7778C10.2778 22.1667 9.83339 22.1667 9.61117 22.0556C8.77783 21.7778 8.27783 21.0001 8.27783 20.2223C8.27783 19.4445 8.77783 18.6667 9.61117 18.3889C9.88894 18.2778 10.1667 18.2778 10.7223 18.2778H22.7223C24.4445 18.2778 25.7778 18.3889 26.6112 18.7223C28.7778 19.5556 29.9445 21.3334 29.9445 23.8334L30.0001 23.8889ZM53.1667 18.5001C52.8889 18.3889 52.4445 18.3334 51.8334 18.3334H34.2223C33.7778 18.3334 33.3889 18.3334 33.1667 18.4445C32.2223 18.7223 31.6667 19.4445 31.6667 20.2778C31.6667 21.1112 32.1112 21.7778 33.0001 22.0556C33.2778 22.1667 33.7223 22.2223 34.2223 22.2223H41.1112V35.2223C41.1112 36.5556 42.0001 37.2223 43.0556 37.2223C44.1112 37.2223 45.0001 36.5556 45.0001 35.2223V22.2223H51.8334C52.5001 22.2223 52.8334 22.2223 53.0556 22.1112C53.9445 21.8334 54.4445 21.1112 54.4445 20.2778C54.4445 19.4445 54.0001 18.7778 53.1667 18.5001ZM74.1667 26.3334C73.2223 25.8334 72.0001 25.5556 68.9445 25.5556H63.0556C62.1112 25.5556 61.6112 25.5001 61.2778 25.3889C60.3334 25.0556 60.0001 24.4445 60.0001 23.8889C60.0001 23.3334 60.2223 22.6667 61.2223 22.3334C61.5001 22.2223 62.0001 22.2223 62.5001 22.2223H73.3334C73.5556 22.2223 74.1667 22.2223 74.3334 22.2223C75.3334 22.0556 76.1112 21.4445 76.1112 20.3334C76.1112 19.2223 75.3334 18.6667 74.3889 18.4445C74.2223 18.4445 73.8334 18.3889 73.3334 18.3889H63.0556C61.2223 18.3889 59.8889 18.6112 59.0001 19.0001C57.1667 19.8889 56.1112 21.7778 56.1112 23.9445C56.1112 26.1112 57.1112 28.0556 59.1112 28.9445C60.0001 29.3334 61.3334 29.5001 63.0556 29.5001H70.5556C71.5001 29.5001 72.0001 29.6112 72.3334 29.7223C73.1112 30.0001 73.3334 30.7778 73.3334 31.4445C73.3334 32.1112 73.1112 32.9445 72.1667 33.2223C71.8334 33.3334 71.1667 33.3889 70.0556 33.3889H59.1667C58.7223 33.3889 58.2778 33.3889 58.0556 33.5001C57.1667 33.7223 56.6667 34.4445 56.6667 35.3334C56.6667 36.2223 57.2223 36.7778 57.9445 37.0556C58.2223 37.1667 58.8334 37.2778 59.2778 37.2778H68.8889C70.9445 37.2778 72.6112 37.1667 73.6112 36.8334C75.8889 36.1667 77.1667 34.0001 77.1667 31.4445C77.1667 28.8889 76.0001 27.3334 74.1112 26.3889L74.1667 26.3334Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M51.1667 8.72233L51.3889 8.33344C50 6.44455 46.7222 5.11122 43.3889 5.00011H42.7223C39.3889 5.11122 36.1111 6.44455 34.7222 8.33344L34.9445 8.72233C34.3334 8.72233 33.8889 9.11122 33.8889 9.61122L35.1667 15.0001C35.2778 15.3334 35.3889 15.5001 35.8334 15.5001H50.2778C50.6667 15.5001 50.8334 15.2779 50.8889 15.0001L52.1667 9.61122C52.1667 9.11122 51.7222 8.72233 51.1111 8.72233H51.1667ZM38.5 10.4446C38.3889 10.4446 38.2222 10.389 38.1111 10.389C37.5556 10.389 37.1667 10.7779 37.1667 11.2779C37.1667 11.7779 37.5556 12.1112 38.0556 12.1112C38.5556 12.1112 38.5 12.0557 38.6111 11.889C38.6111 12.3334 38.1111 13.3334 37.4445 13.3334H36.0556C35.1111 13.3334 35 12.0557 35 11.9446C35.1111 12.0557 35.3889 12.1112 35.6111 12.1112C36.0556 12.1112 36.4445 11.7779 36.4445 11.2779C36.4445 10.7779 36.0556 10.389 35.5 10.389C34.9445 10.389 35.2778 10.389 35.2223 10.389C35.4445 10.2223 35.6667 9.94455 35.6667 9.61122C35.6667 9.27789 35.5 9.11122 35.2778 8.94455L36.5556 8.33344C37.3889 6.94455 38.8889 5.94455 40.7223 5.55566C39.7223 6.27789 38.8889 7.16678 38.2223 8.33344L38.6667 8.72233C38.2222 8.77789 37.8889 9.16677 37.8889 9.61122C37.8889 10.0557 38.1111 10.2779 38.4445 10.4446H38.5ZM42.6667 10.5001C42.5556 10.4446 42.3334 10.389 42.2222 10.389C41.6667 10.389 41.2778 10.7779 41.2778 11.2779C41.2778 11.7779 41.6667 12.1112 42.1667 12.1112C42.6667 12.1112 42.6111 12.0557 42.7778 11.9446C42.7778 12.389 42.4445 13.3334 41.6667 13.3334H40.2778C39.3889 13.3334 39.1667 12.2223 39.1667 11.889C39.2778 12.0001 39.5 12.1112 39.7778 12.1112C40.2222 12.1112 40.6667 11.7779 40.6667 11.2779C40.6667 10.7779 40.2778 10.389 39.7222 10.389C39.1667 10.389 39.3889 10.389 39.3334 10.4446C39.6667 10.2779 39.8889 10.0001 39.8889 9.61122C39.8889 9.22233 39.6667 8.94455 39.3334 8.83344L40.3334 8.33344C40.6111 7.33344 41.5 5.889 42.4445 5.389C42.3334 5.889 42.2778 6.94455 42.2778 8.33344C42.2778 8.33344 42.5556 8.61122 42.8334 8.77789C42.4445 8.889 42.1667 9.22233 42.1667 9.61122C42.1667 10.0001 42.3889 10.2779 42.7223 10.4446L42.6667 10.5001ZM45.8334 13.3334H44.4445C43.6667 13.3334 43.3334 12.389 43.3334 11.9446C43.4445 12.0557 43.6667 12.1112 43.9445 12.1112C44.4445 12.1112 44.8334 11.7779 44.8334 11.2779C44.8334 10.7779 44.4445 10.389 43.8889 10.389C43.3334 10.389 43.5556 10.389 43.4445 10.5001C43.7778 10.389 44.0556 10.0557 44.0556 9.66678C44.0556 9.27789 43.7778 8.94455 43.3889 8.83344C43.6667 8.66678 43.9445 8.389 43.9445 8.389C43.9445 7.00011 43.8889 5.94455 43.7222 5.44455C44.7222 5.94455 45.6111 7.33344 45.8889 8.389L46.8889 8.889C46.6111 9.00011 46.3334 9.33344 46.3334 9.66678C46.3334 10.0001 46.5556 10.3334 46.8889 10.5001C46.7778 10.5001 46.6111 10.4446 46.5 10.4446C45.9445 10.4446 45.5556 10.8334 45.5556 11.3334C45.5556 11.8334 45.9445 12.1668 46.4445 12.1668C46.9445 12.1668 46.8889 12.1112 47.0556 11.9446C47.0556 12.2223 46.8334 13.389 45.9445 13.389L45.8334 13.3334ZM50 13.3334H48.6111C47.8889 13.3334 47.4445 12.389 47.4445 11.889C47.5556 12.0557 47.7778 12.1112 48.0556 12.1112C48.5 12.1112 48.8889 11.7779 48.8889 11.2779C48.8889 10.7779 48.5 10.389 47.9445 10.389C47.3889 10.389 47.6111 10.389 47.5556 10.4446C47.8889 10.2779 48.1111 10.0001 48.1111 9.61122C48.1111 9.22233 47.7778 8.77789 47.2778 8.72233L47.7778 8.33344C47.1111 7.16678 46.2778 6.33344 45.2778 5.55566C47.0556 5.94455 48.6111 6.889 49.4445 8.33344L50.7778 8.94455C50.5556 9.11122 50.3889 9.33344 50.3889 9.66678C50.3889 10.0001 50.6111 10.3334 50.8889 10.5001C50.8334 10.5001 50.6667 10.4446 50.5556 10.4446C50 10.4446 49.6111 10.8334 49.6111 11.3334C49.6111 11.8334 50 12.1668 50.4445 12.1668C50.8889 12.1668 50.9445 12.1112 51.0556 12.0001C51.0556 12.1112 50.8889 13.389 50 13.389V13.3334ZM43.0556 5.00011C42.2778 5.00011 41.6667 4.389 41.6667 3.61122C41.6667 2.83344 42.1667 2.389 42.7778 2.27789V1.66678H42.2222V1.11122H42.7778V0.555664H43.3334V1.11122H43.8889V1.66678H43.3334V2.27789C43.9445 2.389 44.4445 2.94455 44.4445 3.66678C44.4445 4.389 43.8334 5.05566 43.0556 5.05566V5.00011Z\"\r\n fill=\"#F0AA1E\"\r\n />\r\n <path d=\"M82.2223 18.3335V37.2224\" stroke=\"currentColor\" strokeWidth=\"0.8\" strokeMiterlimit=\"10\" />\r\n </svg>\r\n)\r\n\r\nexport const Logo_en = () => (\r\n <svg width=\"189.0\" height=\"40\" viewBox=\"0 0 189 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\">\r\n <path\r\n d=\"M30.0001 23.8889C30.0001 26.2223 28.6112 28.3889 26.4445 29.0556C25.4445 29.3334 24.4445 29.4445 22.7778 29.4445H13.6112C11.8889 29.4445 11.6667 29.7223 11.6667 31.3889V35.0001C11.6667 36.3334 10.8334 37.2223 9.72228 37.2223C8.61117 37.2223 7.77783 36.3334 7.77783 35.0001V32.5001C7.77783 31.3889 7.77783 30.4445 7.88894 29.9445C8.22228 28.0556 9.33339 26.6112 11.1667 25.9445C11.8889 25.6667 13.1112 25.5001 15.5001 25.5001H23.3334C24.0001 25.5001 24.6667 25.4445 24.9445 25.3334C25.7778 25.0001 26.0556 24.4445 26.0556 23.8334C26.0556 23.2223 25.8334 22.6112 24.9445 22.3334C24.6667 22.2223 24.0001 22.1667 23.3334 22.1667H10.7778C10.2778 22.1667 9.83339 22.1667 9.61117 22.0556C8.77783 21.7778 8.27783 21.0001 8.27783 20.2223C8.27783 19.4445 8.77783 18.6667 9.61117 18.3889C9.88894 18.2778 10.1667 18.2778 10.7223 18.2778H22.7223C24.4445 18.2778 25.7778 18.3889 26.6112 18.7223C28.7778 19.5556 29.9445 21.3334 29.9445 23.8334L30.0001 23.8889ZM53.1667 18.5001C52.8889 18.3889 52.4445 18.3334 51.8334 18.3334H34.2223C33.7778 18.3334 33.3889 18.3334 33.1667 18.4445C32.2223 18.7223 31.6667 19.4445 31.6667 20.2778C31.6667 21.1112 32.1112 21.7778 33.0001 22.0556C33.2778 22.1667 33.7223 22.2223 34.2223 22.2223H41.1112V35.2223C41.1112 36.5556 42.0001 37.2223 43.0556 37.2223C44.1112 37.2223 45.0001 36.5556 45.0001 35.2223V22.2223H51.8334C52.5001 22.2223 52.8334 22.2223 53.0556 22.1112C53.9445 21.8334 54.4445 21.1112 54.4445 20.2778C54.4445 19.4445 54.0001 18.7778 53.1667 18.5001ZM74.1667 26.3334C73.2223 25.8334 72.0001 25.5556 68.9445 25.5556H63.0556C62.1112 25.5556 61.6112 25.5001 61.2778 25.3889C60.3334 25.0556 60.0001 24.4445 60.0001 23.8889C60.0001 23.3334 60.2223 22.6667 61.2223 22.3334C61.5001 22.2223 62.0001 22.2223 62.5001 22.2223H73.3334C73.5556 22.2223 74.1667 22.2223 74.3334 22.2223C75.3334 22.0556 76.1112 21.4445 76.1112 20.3334C76.1112 19.2223 75.3334 18.6667 74.3889 18.4445C74.2223 18.4445 73.8334 18.3889 73.3334 18.3889H63.0556C61.2223 18.3889 59.8889 18.6112 59.0001 19.0001C57.1667 19.8889 56.1112 21.7778 56.1112 23.9445C56.1112 26.1112 57.1112 28.0556 59.1112 28.9445C60.0001 29.3334 61.3334 29.5001 63.0556 29.5001H70.5556C71.5001 29.5001 72.0001 29.6112 72.3334 29.7223C73.1112 30.0001 73.3334 30.7778 73.3334 31.4445C73.3334 32.1112 73.1112 32.9445 72.1667 33.2223C71.8334 33.3334 71.1667 33.3889 70.0556 33.3889H59.1667C58.7223 33.3889 58.2778 33.3889 58.0556 33.5001C57.1667 33.7223 56.6667 34.4445 56.6667 35.3334C56.6667 36.2223 57.2223 36.7778 57.9445 37.0556C58.2223 37.1667 58.8334 37.2778 59.2778 37.2778H68.8889C70.9445 37.2778 72.6112 37.1667 73.6112 36.8334C75.8889 36.1667 77.1667 34.0001 77.1667 31.4445C77.1667 28.8889 76.0001 27.3334 74.1112 26.3889L74.1667 26.3334Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M51.1667 8.72233L51.3889 8.33344C50 6.44455 46.7222 5.11122 43.3889 5.00011H42.7223C39.3889 5.11122 36.1111 6.44455 34.7222 8.33344L34.9445 8.72233C34.3334 8.72233 33.8889 9.11122 33.8889 9.61122L35.1667 15.0001C35.2778 15.3334 35.3889 15.5001 35.8334 15.5001H50.2778C50.6667 15.5001 50.8334 15.2779 50.8889 15.0001L52.1667 9.61122C52.1667 9.11122 51.7222 8.72233 51.1111 8.72233H51.1667ZM38.5 10.4446C38.3889 10.4446 38.2222 10.389 38.1111 10.389C37.5556 10.389 37.1667 10.7779 37.1667 11.2779C37.1667 11.7779 37.5556 12.1112 38.0556 12.1112C38.5556 12.1112 38.5 12.0557 38.6111 11.889C38.6111 12.3334 38.1111 13.3334 37.4445 13.3334H36.0556C35.1111 13.3334 35 12.0557 35 11.9446C35.1111 12.0557 35.3889 12.1112 35.6111 12.1112C36.0556 12.1112 36.4445 11.7779 36.4445 11.2779C36.4445 10.7779 36.0556 10.389 35.5 10.389C34.9445 10.389 35.2778 10.389 35.2223 10.389C35.4445 10.2223 35.6667 9.94455 35.6667 9.61122C35.6667 9.27789 35.5 9.11122 35.2778 8.94455L36.5556 8.33344C37.3889 6.94455 38.8889 5.94455 40.7223 5.55566C39.7223 6.27789 38.8889 7.16678 38.2223 8.33344L38.6667 8.72233C38.2222 8.77789 37.8889 9.16677 37.8889 9.61122C37.8889 10.0557 38.1111 10.2779 38.4445 10.4446H38.5ZM42.6667 10.5001C42.5556 10.4446 42.3334 10.389 42.2222 10.389C41.6667 10.389 41.2778 10.7779 41.2778 11.2779C41.2778 11.7779 41.6667 12.1112 42.1667 12.1112C42.6667 12.1112 42.6111 12.0557 42.7778 11.9446C42.7778 12.389 42.4445 13.3334 41.6667 13.3334H40.2778C39.3889 13.3334 39.1667 12.2223 39.1667 11.889C39.2778 12.0001 39.5 12.1112 39.7778 12.1112C40.2222 12.1112 40.6667 11.7779 40.6667 11.2779C40.6667 10.7779 40.2778 10.389 39.7222 10.389C39.1667 10.389 39.3889 10.389 39.3334 10.4446C39.6667 10.2779 39.8889 10.0001 39.8889 9.61122C39.8889 9.22233 39.6667 8.94455 39.3334 8.83344L40.3334 8.33344C40.6111 7.33344 41.5 5.889 42.4445 5.389C42.3334 5.889 42.2778 6.94455 42.2778 8.33344C42.2778 8.33344 42.5556 8.61122 42.8334 8.77789C42.4445 8.889 42.1667 9.22233 42.1667 9.61122C42.1667 10.0001 42.3889 10.2779 42.7223 10.4446L42.6667 10.5001ZM45.8334 13.3334H44.4445C43.6667 13.3334 43.3334 12.389 43.3334 11.9446C43.4445 12.0557 43.6667 12.1112 43.9445 12.1112C44.4445 12.1112 44.8334 11.7779 44.8334 11.2779C44.8334 10.7779 44.4445 10.389 43.8889 10.389C43.3334 10.389 43.5556 10.389 43.4445 10.5001C43.7778 10.389 44.0556 10.0557 44.0556 9.66678C44.0556 9.27789 43.7778 8.94455 43.3889 8.83344C43.6667 8.66678 43.9445 8.389 43.9445 8.389C43.9445 7.00011 43.8889 5.94455 43.7222 5.44455C44.7222 5.94455 45.6111 7.33344 45.8889 8.389L46.8889 8.889C46.6111 9.00011 46.3334 9.33344 46.3334 9.66678C46.3334 10.0001 46.5556 10.3334 46.8889 10.5001C46.7778 10.5001 46.6111 10.4446 46.5 10.4446C45.9445 10.4446 45.5556 10.8334 45.5556 11.3334C45.5556 11.8334 45.9445 12.1668 46.4445 12.1668C46.9445 12.1668 46.8889 12.1112 47.0556 11.9446C47.0556 12.2223 46.8334 13.389 45.9445 13.389L45.8334 13.3334ZM50 13.3334H48.6111C47.8889 13.3334 47.4445 12.389 47.4445 11.889C47.5556 12.0557 47.7778 12.1112 48.0556 12.1112C48.5 12.1112 48.8889 11.7779 48.8889 11.2779C48.8889 10.7779 48.5 10.389 47.9445 10.389C47.3889 10.389 47.6111 10.389 47.5556 10.4446C47.8889 10.2779 48.1111 10.0001 48.1111 9.61122C48.1111 9.22233 47.7778 8.77789 47.2778 8.72233L47.7778 8.33344C47.1111 7.16678 46.2778 6.33344 45.2778 5.55566C47.0556 5.94455 48.6111 6.889 49.4445 8.33344L50.7778 8.94455C50.5556 9.11122 50.3889 9.33344 50.3889 9.66678C50.3889 10.0001 50.6111 10.3334 50.8889 10.5001C50.8334 10.5001 50.6667 10.4446 50.5556 10.4446C50 10.4446 49.6111 10.8334 49.6111 11.3334C49.6111 11.8334 50 12.1668 50.4445 12.1668C50.8889 12.1668 50.9445 12.1112 51.0556 12.0001C51.0556 12.1112 50.8889 13.389 50 13.389V13.3334ZM43.0556 5.00011C42.2778 5.00011 41.6667 4.389 41.6667 3.61122C41.6667 2.83344 42.1667 2.389 42.7778 2.27789V1.66678H42.2222V1.11122H42.7778V0.555664H43.3334V1.11122H43.8889V1.66678H43.3334V2.27789C43.9445 2.389 44.4445 2.94455 44.4445 3.66678C44.4445 4.389 43.8334 5.05566 43.0556 5.05566V5.00011Z\"\r\n fill=\"#F0AA1E\"\r\n />\r\n <path d=\"M82.2223 18.3335V37.2224\" stroke=\"currentColor\" strokeWidth=\"0.8\" strokeMiterlimit=\"10\" />\r\n <path\r\n d=\"M88.9445 24.8335C89.3334 25.1669 89.8334 25.3335 90.3889 25.3335C90.9445 25.3335 91.3334 25.2224 91.6667 25.0002C92 24.778 92.1667 24.4446 92.1667 24.0002C92.1667 23.5557 92.0556 23.4446 91.8889 23.278C91.7222 23.1113 91.5 22.9446 91.1667 22.8891C90.8334 22.8335 90.5 22.7224 90 22.6113C89.2222 22.5002 88.6111 22.278 88.1667 21.9446C87.7222 21.6669 87.5 21.1669 87.5 20.4446C87.5 19.7224 87.6111 19.6113 87.8334 19.278C88.0556 18.9446 88.3889 18.6669 88.7778 18.5002C89.1667 18.3335 89.6667 18.2224 90.1667 18.2224C90.6667 18.2224 91.2222 18.3335 91.6111 18.5002C92.0556 18.7224 92.3889 19.0002 92.6111 19.3335C92.8334 19.6669 93 20.1113 93 20.5557H92.0556C92 20.1113 91.7778 19.7224 91.4445 19.4446C91.1111 19.1669 90.6667 19.0557 90.1667 19.0557C89.6667 19.0557 89.2223 19.1669 88.9445 19.3891C88.6667 19.6113 88.5 19.9446 88.5 20.3335C88.5 20.7224 88.6111 20.8891 88.7778 21.0557C88.9445 21.2224 89.1667 21.3335 89.4445 21.4446C89.7222 21.5557 90.1111 21.6113 90.6111 21.7224C91.3889 21.8335 92 22.0557 92.5 22.3891C92.9445 22.7224 93.2223 23.1669 93.2223 23.8891C93.2223 24.6113 93.1111 24.7224 92.8889 25.0557C92.6667 25.3891 92.3334 25.6669 91.8889 25.8891C91.4445 26.0557 91 26.1669 90.4445 26.1669C89.8889 26.1669 89.3334 26.0557 88.8334 25.8335C88.3889 25.6113 88.0556 25.3335 87.7778 24.8891C87.5556 24.5002 87.3889 24.0557 87.3889 23.5002H88.3334C88.3334 24.0002 88.5556 24.4446 88.9445 24.778V24.8335Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M94.5557 20.4446L95.9446 25.0557L97.4446 20.4446H98.2779L99.6668 25.0557L101.167 20.4446H102.111L100.222 26.1112H99.2223L97.8334 21.889L96.389 26.1112H95.389L93.5557 20.4446H94.5001H94.5557Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M103.778 20.7224C104.167 20.5002 104.667 20.3335 105.167 20.3335C105.667 20.3335 106.167 20.4446 106.556 20.6668C106.945 20.8891 107.278 21.1668 107.5 21.6113C107.722 22.0002 107.833 22.5002 107.889 23.0557C107.889 23.1113 107.889 23.2779 107.889 23.4446H103.5C103.5 24.0557 103.667 24.5002 104 24.8335C104.333 25.1668 104.778 25.3335 105.278 25.3335C105.778 25.3335 106.056 25.2224 106.333 25.0002C106.611 24.7779 106.833 24.5002 106.889 24.1668H107.833C107.722 24.7224 107.445 25.2224 107 25.6113C106.556 26.0002 106 26.1668 105.389 26.1668C104.778 26.1668 104.333 26.0557 103.889 25.7779C103.445 25.5557 103.111 25.2224 102.889 24.7779C102.667 24.3335 102.556 23.8335 102.556 23.2779C102.556 22.7224 102.667 22.1668 102.889 21.7779C103.111 21.3335 103.445 21.0002 103.833 20.7779L103.778 20.7224ZM106.389 21.5557C106.056 21.2779 105.667 21.1668 105.167 21.1668C104.667 21.1668 104.333 21.3335 104.056 21.6113C103.778 21.8891 103.556 22.2779 103.5 22.7224H106.945C106.945 22.2224 106.722 21.8891 106.389 21.6113V21.5557Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M114.278 26.1114H113.5L113.389 25.2225C112.889 25.8892 112.278 26.2225 111.445 26.2225C110.611 26.2225 110.445 26.1114 110.056 25.8892C109.667 25.6669 109.333 25.3336 109.111 24.8892C108.889 24.4447 108.778 23.9447 108.778 23.3336C108.778 22.7225 108.889 22.2781 109.111 21.8336C109.333 21.3892 109.667 21.0558 110.111 20.8336C110.556 20.6114 111 20.4447 111.5 20.4447C112 20.4447 112.333 20.5003 112.667 20.7225C113 20.8892 113.222 21.1114 113.444 21.3892V18.3892H114.333V26.1669L114.278 26.1114ZM113.111 24.3892C113.278 24.0558 113.333 23.7225 113.333 23.3336C113.333 22.9447 113.278 22.5558 113.111 22.2225C112.945 21.8892 112.722 21.6669 112.444 21.4447C112.167 21.278 111.833 21.1669 111.445 21.1669C110.889 21.1669 110.445 21.3892 110.056 21.7781C109.667 22.1669 109.556 22.6669 109.556 23.2781C109.556 23.8892 109.722 24.3892 110.056 24.778C110.389 25.1669 110.833 25.3892 111.445 25.3892C112.056 25.3892 112.111 25.2781 112.444 25.1114C112.722 24.9447 112.945 24.6669 113.111 24.3892Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M116.556 18.8335C116.556 19.0002 116.5 19.1669 116.389 19.278C116.278 19.3891 116.111 19.4446 115.944 19.4446C115.778 19.4446 115.611 19.3891 115.5 19.278C115.389 19.1669 115.333 19.0002 115.333 18.8335C115.333 18.6669 115.389 18.5002 115.5 18.3891C115.611 18.278 115.778 18.2224 115.944 18.2224C116.111 18.2224 116.278 18.278 116.389 18.3891C116.5 18.5002 116.556 18.6669 116.556 18.8335ZM116.444 20.4446V26.1113H115.556V20.4446H116.444Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M118.833 25.0557C119.111 25.2779 119.5 25.389 119.945 25.389C120.389 25.389 120.667 25.3335 120.945 25.1668C121.167 25.0001 121.333 24.7779 121.333 24.5557C121.333 24.3335 121.278 24.1668 121.167 24.0557C121.056 23.9446 120.889 23.8335 120.722 23.8335C120.556 23.8335 120.278 23.7224 119.889 23.7224C119.389 23.6668 119 23.6112 118.667 23.5001C118.333 23.389 118.111 23.2224 117.889 23.0557C117.722 22.8335 117.611 22.5557 117.611 22.1668C117.611 21.7779 117.722 21.5557 117.889 21.2779C118.056 21.0001 118.333 20.8335 118.667 20.6668C119 20.5001 119.333 20.4446 119.778 20.4446C120.445 20.4446 121 20.6112 121.389 20.889C121.833 21.2224 122.056 21.6668 122.056 22.2224H121.167C121.167 21.9446 121 21.6668 120.722 21.5001C120.445 21.3335 120.167 21.2224 119.778 21.2224C119.389 21.2224 119.056 21.2779 118.833 21.4446C118.611 21.6112 118.5 21.8335 118.5 22.0557C118.5 22.2779 118.5 22.389 118.667 22.5001C118.778 22.6112 118.945 22.6668 119.111 22.7224C119.278 22.7224 119.556 22.7779 119.889 22.8335C120.389 22.889 120.778 23.0001 121.111 23.0557C121.445 23.1668 121.667 23.3335 121.889 23.5557C122.111 23.7779 122.167 24.1112 122.167 24.5001C122.167 24.889 122.056 25.1668 121.889 25.389C121.667 25.6668 121.445 25.8335 121.056 26.0001C120.722 26.1668 120.333 26.2224 119.945 26.2224C119.222 26.2224 118.611 26.0557 118.167 25.7224C117.722 25.389 117.5 24.889 117.5 24.2779H118.389C118.389 24.6112 118.556 24.889 118.833 25.1112V25.0557Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M128.278 22.9446V26.1113H127.389V23.0002C127.389 22.3891 127.278 21.9446 127 21.6668C126.722 21.3335 126.333 21.2224 125.833 21.2224C125.333 21.2224 124.889 21.3891 124.611 21.7779C124.278 22.1668 124.167 22.6668 124.167 23.2779V26.1113H123.278V18.3335H124.167V21.3891C124.333 21.1113 124.611 20.8335 124.889 20.6668C125.222 20.5002 125.556 20.3891 126 20.3891C126.667 20.3891 127.222 20.6113 127.667 21.0002C128.111 21.3891 128.278 22.0557 128.278 22.9446Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M136.833 18.6113C137.222 18.8335 137.556 19.1113 137.722 19.4446C137.945 19.7779 138.056 20.2224 138.056 20.7224C138.056 21.2224 137.945 21.6113 137.722 22.0002C137.5 22.3891 137.222 22.6668 136.833 22.8335C136.445 23.0002 136 23.1113 135.5 23.1113H133.5V26.1113H132.556V18.3335H135.556C136.056 18.3335 136.5 18.4446 136.889 18.6113H136.833ZM135.389 22.2224C135.889 22.2224 136.333 22.1113 136.611 21.8335C136.889 21.5557 137.056 21.1668 137.056 20.7224C137.056 20.2779 136.889 19.8891 136.611 19.6113C136.333 19.3335 135.889 19.2224 135.389 19.2224H133.445V22.2224H135.389Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M138.833 24.778C138.611 24.3336 138.5 23.8336 138.5 23.278C138.5 22.7225 138.611 22.2225 138.833 21.778C139.056 21.3336 139.389 21.0003 139.833 20.778C140.278 20.5558 140.722 20.3892 141.278 20.3892C141.833 20.3892 142.333 20.5003 142.722 20.778C143.167 21.0003 143.5 21.3892 143.722 21.778C143.945 22.2225 144.056 22.7225 144.056 23.278C144.056 23.8336 143.945 24.3336 143.722 24.778C143.5 25.2225 143.167 25.5558 142.722 25.778C142.278 26.0003 141.833 26.1669 141.278 26.1669C140.722 26.1669 140.222 26.0558 139.833 25.778C139.445 25.5003 139.056 25.1669 138.833 24.778ZM142.945 24.3336C143.111 24.0003 143.167 23.6669 143.167 23.278C143.167 22.8892 143.111 22.5003 142.945 22.2225C142.778 21.8892 142.556 21.6669 142.278 21.5003C142 21.3336 141.667 21.2225 141.278 21.2225C140.889 21.2225 140.556 21.3336 140.278 21.5003C140 21.6669 139.778 21.9447 139.611 22.2225C139.445 22.5003 139.389 22.8892 139.389 23.278C139.389 23.6669 139.445 24.0558 139.611 24.3336C139.778 24.6669 140 24.8892 140.278 25.0558C140.556 25.2225 140.889 25.3336 141.278 25.3336C141.667 25.3336 142 25.2225 142.278 25.0558C142.556 24.8892 142.778 24.6114 142.945 24.3336Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M146.278 25.0557C146.556 25.2779 146.945 25.389 147.389 25.389C147.833 25.389 148.111 25.3335 148.389 25.1668C148.611 25.0001 148.778 24.7779 148.778 24.5557C148.778 24.3335 148.722 24.1668 148.611 24.0557C148.5 23.9446 148.333 23.8335 148.167 23.8335C148 23.8335 147.722 23.7224 147.333 23.7224C146.833 23.6668 146.445 23.6112 146.111 23.5001C145.778 23.389 145.556 23.2224 145.333 23.0557C145.167 22.8335 145.056 22.5557 145.056 22.1668C145.056 21.7779 145.167 21.5557 145.333 21.2779C145.5 21.0001 145.778 20.8335 146.111 20.6668C146.445 20.5001 146.778 20.4446 147.222 20.4446C147.889 20.4446 148.445 20.6112 148.833 20.889C149.278 21.2224 149.5 21.6668 149.5 22.2224H148.611C148.611 21.9446 148.445 21.6668 148.167 21.5001C147.889 21.3335 147.611 21.2224 147.222 21.2224C146.833 21.2224 146.5 21.2779 146.278 21.4446C146.056 21.6112 145.945 21.8335 145.945 22.0557C145.945 22.2779 145.945 22.389 146.111 22.5001C146.222 22.6112 146.389 22.6668 146.556 22.7224C146.722 22.7224 147 22.7779 147.333 22.8335C147.833 22.889 148.222 23.0001 148.556 23.0557C148.889 23.1668 149.111 23.3335 149.333 23.5557C149.556 23.7779 149.611 24.1112 149.611 24.5001C149.611 24.889 149.5 25.1668 149.333 25.389C149.111 25.6668 148.889 25.8335 148.5 26.0001C148.167 26.1668 147.778 26.2224 147.389 26.2224C146.667 26.2224 146.056 26.0557 145.611 25.7224C145.167 25.389 144.945 24.889 144.945 24.2779H145.833C145.833 24.6112 146 24.889 146.278 25.1112V25.0557Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M150 21.2779V20.4446H151V18.8335H151.889V20.4446H153.333V21.2779H151.889V24.6113C151.889 24.8335 151.889 25.0002 152 25.1113C152.111 25.2224 152.278 25.2779 152.5 25.2779H153.5V26.1113H152.445C151.889 26.1113 151.556 26.0002 151.278 25.7779C151.056 25.5557 150.945 25.1668 150.945 24.6668V21.3335H149.945L150 21.2779Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M162.445 26.1113H161.945C161.556 26.1113 161.333 26.0557 161.167 25.8891C161 25.7224 160.945 25.5002 160.945 25.2224C160.5 25.8335 159.889 26.1668 159.056 26.1668C158.222 26.1668 157.945 26.0002 157.556 25.7224C157.167 25.4446 157 25.0002 157 24.5002C157 24.0002 157.167 23.5002 157.556 23.1668C157.945 22.8335 158.5 22.7224 159.278 22.7224H160.945V22.3335C160.945 21.9446 160.833 21.6668 160.556 21.4446C160.333 21.2224 159.945 21.1113 159.5 21.1113C159.056 21.1113 158.778 21.2224 158.5 21.3891C158.222 21.5557 158.111 21.7779 158 22.0557H157.111C157.167 21.5002 157.445 21.0557 157.833 20.7779C158.222 20.5002 158.833 20.3335 159.5 20.3335C160.167 20.3335 160.778 20.5002 161.167 20.8891C161.556 21.2224 161.778 21.7224 161.778 22.3891V24.8335C161.778 25.1113 161.889 25.2224 162.167 25.2224H162.445V26.0557V26.1113ZM159.111 23.5002C158.278 23.5002 157.833 23.8335 157.833 24.4446C157.833 25.0557 157.945 24.9446 158.167 25.1113C158.389 25.2779 158.667 25.3891 159.056 25.3891C159.611 25.3891 160.056 25.2224 160.389 24.9446C160.722 24.6668 160.889 24.2779 160.889 23.7779V23.5002H159.111Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M168.167 22.9447V26.1114H167.278V23.0003C167.278 22.3892 167.167 21.9447 166.889 21.6669C166.611 21.3892 166.222 21.2225 165.722 21.2225C165.222 21.2225 164.778 21.3892 164.445 21.778C164.167 22.1669 164 22.6669 164 23.278V26.1114H163.111V20.4447H163.889L164 21.2225C164.445 20.6669 165.056 20.3892 165.889 20.3892C166.722 20.3892 167.111 20.6114 167.556 21.0003C168 21.3892 168.167 22.0558 168.167 22.9447Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M174.722 26.1114H173.945L173.833 25.2225C173.333 25.8892 172.722 26.2225 171.889 26.2225C171.056 26.2225 170.889 26.1114 170.5 25.8892C170.111 25.6669 169.778 25.3336 169.556 24.8892C169.333 24.4447 169.222 23.9447 169.222 23.3336C169.222 22.7225 169.333 22.2781 169.556 21.8336C169.778 21.3892 170.111 21.0558 170.556 20.8336C171 20.6114 171.445 20.4447 171.945 20.4447C172.445 20.4447 172.778 20.5003 173.111 20.7225C173.445 20.8892 173.667 21.1114 173.889 21.3892V18.3892H174.778V26.1669L174.722 26.1114ZM173.611 24.3892C173.778 24.0558 173.833 23.7225 173.833 23.3336C173.833 22.9447 173.778 22.5558 173.611 22.2225C173.445 21.8892 173.222 21.6669 172.945 21.4447C172.667 21.278 172.333 21.1669 171.945 21.1669C171.389 21.1669 170.945 21.3892 170.556 21.7781C170.167 22.1669 170.056 22.6669 170.056 23.2781C170.056 23.8892 170.222 24.3892 170.556 24.778C170.889 25.1669 171.333 25.3892 171.945 25.3892C172.556 25.3892 172.611 25.2781 172.945 25.1114C173.222 24.9447 173.445 24.6669 173.611 24.3892Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M92.6112 29.4446V30.3335H90.1112V37.2224H89.1667V30.3335H86.6667V29.4446H92.6667H92.6112Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M93.6111 31.8335C94 31.6112 94.5 31.4446 95 31.4446C95.5 31.4446 96 31.5557 96.3889 31.7779C96.7778 32.0001 97.1111 32.2779 97.3334 32.7224C97.5556 33.1112 97.6667 33.6112 97.7222 34.1668C97.7222 34.2224 97.7222 34.389 97.7222 34.5557H93.3334C93.3334 35.1668 93.5 35.6112 93.8334 35.9446C94.1667 36.2779 94.6111 36.4446 95.1111 36.4446C95.6111 36.4446 95.8889 36.3335 96.1667 36.1112C96.4445 35.889 96.6667 35.6112 96.7223 35.2779H97.6667C97.5556 35.8335 97.2778 36.3335 96.8334 36.7224C96.3889 37.1112 95.8334 37.2779 95.2222 37.2779C94.6111 37.2779 94.1667 37.1668 93.7222 36.889C93.2778 36.6668 92.9445 36.3335 92.7222 35.889C92.5 35.4446 92.3889 34.9446 92.3889 34.389C92.3889 33.8335 92.5 33.2779 92.7222 32.889C92.9445 32.4446 93.2778 32.1112 93.6667 31.889L93.6111 31.8335ZM96.2222 32.6668C95.8889 32.389 95.5 32.2779 95 32.2779C94.5 32.2779 94.1667 32.4446 93.8889 32.7224C93.5556 33.0001 93.3889 33.389 93.3334 33.8335H96.7778C96.7778 33.3335 96.5556 33.0001 96.2222 32.7224V32.6668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path d=\"M99.6667 29.4446V37.2224H98.7778V29.4446H99.6667Z\" fill=\"#141414\" />\r\n <path\r\n d=\"M102 31.8335C102.389 31.6112 102.889 31.4446 103.389 31.4446C103.889 31.4446 104.389 31.5557 104.778 31.7779C105.167 32.0001 105.5 32.2779 105.722 32.7224C105.945 33.1112 106.056 33.6112 106.111 34.1668C106.111 34.2224 106.111 34.389 106.111 34.5557H101.722C101.722 35.1668 101.889 35.6112 102.222 35.9446C102.556 36.2779 103 36.4446 103.5 36.4446C104 36.4446 104.278 36.3335 104.556 36.1112C104.833 35.889 105.056 35.6112 105.111 35.2779H106.056C105.944 35.8335 105.667 36.3335 105.222 36.7224C104.778 37.1112 104.222 37.2779 103.611 37.2779C103 37.2779 102.556 37.1668 102.111 36.889C101.667 36.6668 101.333 36.3335 101.111 35.889C100.889 35.4446 100.778 34.9446 100.778 34.389C100.778 33.8335 100.889 33.2779 101.111 32.889C101.333 32.4446 101.667 32.1112 102.056 31.889L102 31.8335ZM104.611 32.6668C104.278 32.389 103.889 32.2779 103.389 32.2779C102.889 32.2779 102.556 32.4446 102.278 32.7224C101.945 33.0001 101.778 33.389 101.722 33.8335H105.167C105.167 33.3335 104.945 33.0001 104.611 32.7224V32.6668Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M109.667 37.2779C109.111 37.2779 108.611 37.1668 108.222 36.889C107.833 36.6668 107.5 36.2779 107.278 35.8335C107.056 35.389 106.945 34.889 106.945 34.3335C106.945 33.7779 107.056 33.2779 107.278 32.8335C107.5 32.389 107.833 32.0557 108.278 31.8335C108.722 31.6112 109.167 31.4446 109.722 31.4446C110.278 31.4446 110.945 31.6112 111.389 32.0001C111.833 32.389 112.111 32.8335 112.222 33.4446H111.278C111.167 33.0557 111 32.7779 110.722 32.5557C110.445 32.3335 110.111 32.2224 109.722 32.2224C109.333 32.2224 108.722 32.389 108.389 32.7779C108.056 33.1668 107.889 33.6668 107.889 34.2779C107.889 34.889 108.056 35.389 108.389 35.7779C108.722 36.1668 109.167 36.389 109.722 36.389C110.278 36.389 110.5 36.2779 110.778 36.0557C111.056 35.8335 111.222 35.5557 111.333 35.1668H112.222C112.111 35.7779 111.833 36.2779 111.389 36.6668C110.945 37.0001 110.389 37.2224 109.722 37.2224L109.667 37.2779Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M113.278 35.8891C113.056 35.4447 112.945 34.9447 112.945 34.3891C112.945 33.8336 113.056 33.3336 113.278 32.8891C113.5 32.4447 113.833 32.1114 114.278 31.8891C114.722 31.6669 115.167 31.5002 115.722 31.5002C116.278 31.5002 116.778 31.6114 117.167 31.8891C117.611 32.1114 117.945 32.5002 118.167 32.8891C118.389 33.3336 118.5 33.8336 118.5 34.3891C118.5 34.9447 118.389 35.4447 118.167 35.8891C117.945 36.3336 117.611 36.6669 117.167 36.8891C116.722 37.1114 116.278 37.278 115.722 37.278C115.167 37.278 114.667 37.1669 114.278 36.8891C113.889 36.6114 113.5 36.278 113.278 35.8891ZM117.333 35.4447C117.5 35.1114 117.556 34.778 117.556 34.3891C117.556 34.0002 117.5 33.6114 117.333 33.3336C117.167 33.0002 116.945 32.778 116.667 32.6114C116.389 32.4447 116.056 32.3336 115.667 32.3336C115.278 32.3336 114.945 32.4447 114.667 32.6114C114.389 32.778 114.167 33.0558 114 33.3336C113.833 33.6669 113.778 34.0002 113.778 34.3891C113.778 34.778 113.833 35.1669 114 35.4447C114.167 35.778 114.389 36.0002 114.667 36.1669C114.945 36.3336 115.278 36.4447 115.667 36.4447C116.056 36.4447 116.389 36.3336 116.667 36.1669C116.945 36.0002 117.167 35.7225 117.333 35.4447Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M128.056 33.9446V37.2224H127.167V34.0001C127.167 33.4446 127.056 33.0557 126.833 32.7224C126.611 32.4446 126.278 32.2779 125.833 32.2779C125.389 32.2779 125 32.4446 124.722 32.7779C124.445 33.1112 124.333 33.5557 124.333 34.1668V37.2224H123.445V34.0001C123.445 33.4446 123.333 33.0557 123.111 32.7224C122.889 32.4446 122.556 32.2779 122.111 32.2779C121.667 32.2779 121.278 32.4446 121 32.7779C120.722 33.1112 120.611 33.6112 120.611 34.1668V37.1668H119.722V31.5001H120.5L120.611 32.2779C121 31.7224 121.556 31.4446 122.278 31.4446C123 31.4446 123.056 31.5557 123.389 31.7224C123.722 31.889 123.945 32.1668 124.111 32.5557C124.5 31.8335 125.167 31.5001 126.056 31.5001C126.945 31.5001 127.222 31.7224 127.611 32.1112C128 32.5001 128.222 33.1112 128.222 34.0001L128.056 33.9446Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M134.556 29.4446H135.722L138.667 37.2224H137.611L136.778 35.1112H133.389L132.556 37.2224H131.556L134.5 29.4446H134.556ZM136.556 34.2224L135.167 30.5001L133.778 34.2224H136.611H136.556Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M144.111 37.2223H143.333L143.222 36.4446C142.778 37.0001 142.167 37.2779 141.389 37.2779C140.611 37.2779 140.167 37.0557 139.778 36.6668C139.389 36.2779 139.167 35.6112 139.167 34.7223V31.5557H140.056V34.6668C140.056 35.2779 140.167 35.7223 140.445 36.0001C140.722 36.3334 141.056 36.4446 141.556 36.4446C142.056 36.4446 142.5 36.2779 142.778 35.889C143.056 35.5001 143.222 35.0001 143.222 34.389V31.5557H144.111V37.2223Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M144.722 32.389V31.5557H145.722V29.9446H146.611V31.5557H148.056V32.389H146.611V35.7224C146.611 35.9446 146.611 36.1112 146.722 36.2224C146.833 36.3335 147 36.389 147.222 36.389H148.222V37.2224H147.167C146.611 37.2224 146.278 37.1112 146 36.889C145.778 36.6668 145.667 36.2779 145.667 35.7779V32.4446H144.667L144.722 32.389Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M154 34.0557V37.2224H153.111V34.1112C153.111 33.5001 153 33.0557 152.722 32.7779C152.445 32.4446 152.056 32.3335 151.556 32.3335C151.056 32.3335 150.611 32.5001 150.333 32.889C150 33.2779 149.889 33.7779 149.889 34.389V37.2224H149V29.4446H149.889V32.5001C150.056 32.2224 150.333 31.9446 150.611 31.7779C150.945 31.6112 151.278 31.5001 151.722 31.5001C152.389 31.5001 152.945 31.7224 153.389 32.1112C153.833 32.5001 154 33.1668 154 34.0557Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M155.333 35.8891C155.111 35.4447 155 34.9447 155 34.3891C155 33.8336 155.111 33.3336 155.333 32.8891C155.556 32.4447 155.889 32.1114 156.333 31.8891C156.778 31.6669 157.222 31.5002 157.778 31.5002C158.333 31.5002 158.833 31.6114 159.222 31.8891C159.667 32.1114 160 32.5002 160.222 32.8891C160.445 33.3336 160.556 33.8336 160.556 34.3891C160.556 34.9447 160.445 35.4447 160.222 35.8891C160 36.3336 159.667 36.6669 159.222 36.8891C158.778 37.1114 158.333 37.278 157.778 37.278C157.222 37.278 156.722 37.1669 156.333 36.8891C155.945 36.6114 155.556 36.278 155.333 35.8891ZM159.445 35.4447C159.611 35.1114 159.667 34.778 159.667 34.3891C159.667 34.0002 159.611 33.6114 159.445 33.3336C159.278 33.0002 159.056 32.778 158.778 32.6114C158.5 32.4447 158.167 32.3336 157.778 32.3336C157.389 32.3336 157.056 32.4447 156.778 32.6114C156.5 32.778 156.278 33.0558 156.111 33.3336C155.945 33.6669 155.889 34.0002 155.889 34.3891C155.889 34.778 155.945 35.1669 156.111 35.4447C156.278 35.778 156.5 36.0002 156.778 36.1669C157.056 36.3336 157.389 36.4447 157.778 36.4447C158.167 36.4447 158.5 36.3336 158.778 36.1669C159.056 36.0002 159.278 35.7225 159.445 35.4447Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M164.5 32.4446H164.056C163.5 32.4446 163.111 32.6112 162.889 33.0001C162.667 33.389 162.556 33.8334 162.556 34.3334V37.2223H161.667V31.5557H162.445L162.556 32.389C162.722 32.1112 162.945 31.9446 163.167 31.7779C163.445 31.6112 163.778 31.5557 164.222 31.5557H164.5V32.4446Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M166.389 29.9446C166.389 30.1113 166.333 30.2779 166.222 30.3891C166.111 30.5002 165.945 30.5557 165.778 30.5557C165.611 30.5557 165.445 30.5002 165.333 30.3891C165.222 30.2779 165.167 30.1113 165.167 29.9446C165.167 29.7779 165.222 29.6113 165.333 29.5002C165.445 29.3891 165.611 29.3335 165.778 29.3335C165.945 29.3335 166.111 29.3891 166.222 29.5002C166.333 29.6113 166.389 29.7779 166.389 29.9446ZM166.278 31.5557V37.2224H165.389V31.5557H166.278Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M166.833 32.389V31.5557H167.833V29.9446H168.722V31.5557H170.167V32.389H168.722V35.7224C168.722 35.9446 168.722 36.1112 168.833 36.2224C168.944 36.3335 169.111 36.389 169.333 36.389H170.333V37.2224H169.278C168.722 37.2224 168.389 37.1112 168.111 36.889C167.889 36.6668 167.778 36.2779 167.778 35.7779V32.4446H166.778L166.833 32.389Z\"\r\n fill=\"#141414\"\r\n />\r\n <path\r\n d=\"M173.167 36.1668L174.833 31.5557H175.778L173.167 38.1668C173.056 38.5001 172.889 38.7779 172.833 38.9446C172.778 39.1112 172.611 39.2223 172.445 39.3334C172.278 39.389 172.056 39.4446 171.833 39.4446H170.722V38.6112H171.556C171.722 38.6112 171.889 38.6112 171.945 38.5557C172 38.5001 172.111 38.4446 172.167 38.389C172.167 38.2779 172.278 38.1668 172.389 37.9446L172.667 37.2779L170.445 31.5557H171.389L173.111 36.1668H173.167Z\"\r\n fill=\"#141414\"\r\n />\r\n </svg>\r\n)\r\n","import React, { FC } from 'react';\r\nimport { HeaderProps } from './HeaderStandard.types';\r\nimport { LanguageIcon, Logo_sv, Logo_en } from './Icons';\r\n\r\nconst Header: FC<HeaderProps> = ({\r\n activatedLanguage = 'sv',\r\n useLanguage = true,\r\n SetActivatedLanguage = () => {},\r\n}) => {\r\n const logoLink = activatedLanguage === 'en' ? 'https://pts.se/en' : 'https://pts.se/';\r\n\r\n const handleLanguageClick = () => {\r\n if (activatedLanguage === 'sv') {\r\n SetActivatedLanguage('en');\r\n } else if (activatedLanguage === 'en') {\r\n SetActivatedLanguage('sv');\r\n }\r\n };\r\n\r\n const getLanguageLabel = () => {\r\n if (activatedLanguage === 'sv') return 'English';\r\n else return 'Svenska';\r\n };\r\n\r\n return (\r\n <header className=\"pts-header-container\">\r\n <div className=\"pts-header-content\">\r\n <div className=\"pts-header-logo-container\">\r\n <a\r\n className=\"pts-header-logo\"\r\n href={logoLink}\r\n target=\"_blank\"\r\n aria-label={\r\n activatedLanguage === 'en'\r\n ? 'PTS logotype (to the homepage on pts.se, opens in new tab)'\r\n : 'PTS logotyp (till startsidan på pts.se, öppnas i ny flik)'\r\n }\r\n >\r\n {activatedLanguage === 'en' ? (\r\n <span aria-hidden=\"true\">{<Logo_en />}</span>\r\n ) : (\r\n <span aria-hidden=\"true\">{<Logo_sv />}</span>\r\n )}\r\n </a>\r\n </div>\r\n <div className=\"pts-header-navigation-container\">\r\n {useLanguage && (\r\n <button\r\n lang={activatedLanguage === 'en' ? 'en' : 'sv'}\r\n className=\"pts-languageButton\"\r\n onClick={handleLanguageClick}\r\n >\r\n <div className=\"languageIcon\">\r\n <span aria-hidden=\"true\">{<LanguageIcon />}</span>\r\n </div>\r\n <span aria-hidden=\"true\" className=\"pts-languageButton-text\">\r\n {getLanguageLabel()}\r\n </span>\r\n {activatedLanguage === 'en' && <span className=\"sr-only\">Ändra språk till svenska</span>}\r\n {activatedLanguage === 'sv' && (\r\n <span className=\"sr-only\">Change language to English</span>\r\n )}\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </header>\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React, { FC, useEffect, useState } from 'react';\r\nimport { ModalProps } from './ModalStandard.types';\r\n\r\nconst CONTENT = {\r\n en: {\r\n heading: 'Please wait',\r\n message: 'Your case is being registered. Do not refresh or close the page.',\r\n },\r\n sv: {\r\n heading: 'Vänligen vänta',\r\n message: 'Ditt ärende registreras. Uppdatera eller stäng inte sidan.',\r\n },\r\n};\r\n\r\nconst Modal: FC<ModalProps> = ({ showModal: isOpen, activatedLanguage = '' }: ModalProps) => {\r\n const currentContent = activatedLanguage === 'en' ? CONTENT.en : CONTENT.sv;\r\n\r\n if (!isOpen) return null;\r\n\r\n return (\r\n <div className=\"pts-modal-overlay\">\r\n <div aria-hidden className=\"pts-modal-content\">\r\n <h1>{currentContent.heading}</h1>\r\n <p>{currentContent.message}</p>\r\n <div className=\"pts-spinner-border\"></div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Modal;\r\n","import { FC } from 'react';\r\nimport React from 'react';\r\nconst SkipLink: FC = () => {\r\n function scrollToMainContent() {\r\n const container = document.getElementById(`main-content`);\r\n if (container) {\r\n container.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n container.focus();\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"pts-skipLink-container\">\r\n <a\r\n href=\"#\"\r\n onClick={(e) => {\r\n e.preventDefault();\r\n scrollToMainContent();\r\n }}\r\n >\r\n Till huvudinnehåll\r\n </a>\r\n </div>\r\n );\r\n};\r\n\r\nexport default SkipLink;\r\n","import React, { FC, createElement } from 'react';\r\nimport DOMPurify from 'dompurify';\r\nimport { TextHeadlineAndBodyProps } from './TextHeadlineAndBodyStandard.types';\r\n\r\nconst TextHeadlineAndBody: FC<TextHeadlineAndBodyProps> = ({ data, headlineType = 'h2' }) => {\r\n return (\r\n <section\r\n className=\"pts-textHeadlineAndBody-container\"\r\n // aria-labelledby=\"textHeadlineAndBody-headline\"\r\n >\r\n {data.headline &&\r\n createElement(headlineType, { id: 'textHeadlineAndBody-headline' }, data.headline)}\r\n\r\n {data.body && <div dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(data.body) }}></div>}\r\n\r\n {data.linksForMoreInfo && data.linksForMoreInfo.length > 1 && (\r\n <ul className=\"pts-moreinfo-list\">\r\n {data.linksForMoreInfo.map((link, index) => (\r\n <li key={`more-info-${index}`} className={index > 0 ? 'notFirstInList' : ''}>\r\n <a\r\n href={link.url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n //aria-label={link.ariaLabel}\r\n >\r\n <span className=\"MoreInfoIcon\">\r\n <svg\r\n aria-hidden=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\"\r\n height=\"10\"\r\n viewBox=\"0 0 12 10\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M6.00001 9.63253L5.10321 8.82184L8.62749 5.57905H0.965332V4.42091H8.62749L5.10321 1.17813L6.00001 0.367432L11.0347 4.99998L6.00001 9.63253Z\"\r\n fill=\"#ffffff\"\r\n />\r\n </svg>\r\n </span>\r\n {link.title}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n\r\n {data.linksForMoreInfo && data.linksForMoreInfo.length === 1 && (\r\n <a\r\n href={data.linksForMoreInfo[0].url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n aria-label={data.linksForMoreInfo[0].ariaLabel}\r\n >\r\n <span className=\"MoreInfoIcon\">\r\n <svg\r\n aria-hidden=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\"\r\n height=\"10\"\r\n viewBox=\"0 0 12 10\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M6.00001 9.63253L5.10321 8.82184L8.62749 5.57905H0.965332V4.42091H8.62749L5.10321 1.17813L6.00001 0.367432L11.0347 4.99998L6.00001 9.63253Z\"\r\n fill=\"#ffffff\"\r\n />\r\n </svg>\r\n </span>\r\n {data.linksForMoreInfo[0].title}\r\n </a>\r\n )}\r\n </section>\r\n );\r\n};\r\n\r\nexport default TextHeadlineAndBody;\r\n","import React, { FC } from 'react';\r\nimport { PrincipleOfPublicityProps } from './PrincipleOfPublicityStandard.types';\r\nimport TextHeadlineAndBody from '../TextHeadlineAndBodyStandard/TextHeadlineAndBodyStandard';\r\n\r\nconst CONTENT = {\r\n en: {\r\n headline: 'The principle of publicity and processing of personal data',\r\n paragraph1:\r\n 'The principle of publicity means that everyone has the right to access public documents from authorities. Since PTS is an authority, the messages you send to us will, as a main rule, be public documents that we will disclose upon request if the information is not covered by confidentiality. The Data Protection Regulation does not prevent personal data in public documents from being disclosed.',\r\n paragraph2:\r\n \"You can find more information about the principle of publicity on the Government's website and more information about PTS processing of personal data on pts.se:\",\r\n links: [\r\n {\r\n url: 'https://www.regeringen.se/sa-styrs-sverige/grundlagar-och-demokratiskt-deltagande/offentlighetsprincipen/',\r\n title: 'The principle of publicity (opens in new tab)',\r\n },\r\n {\r\n url: 'https://www.pts.se/om-oss/behandling-av-personuppgifter/',\r\n title: 'PTS processing of personal data (opens in new tab)',\r\n },\r\n ],\r\n },\r\n sv: {\r\n headline: 'Offentlighetsprincipen och behandling av personuppgifter',\r\n paragraph1:\r\n 'Offentlighetsprincipen innebär att var och en har rätt att ta del av allmänna handlingar hos myndigheter. Eftersom PTS är en myndighet blir de meddelanden du skickar till oss som huvudregel allmänna handlingar som vi vid en begäran kommer att lämna ut om uppgifterna inte omfattas av sekretess. Dataskyddsförordningen hindrar inte att personuppgifter i allmänna handlingar lämnas ut.',\r\n paragraph2:\r\n 'Du hittar mer information om offentlighetsprincipen på regeringens webbplats och mer information om PTS behandling av personuppgifter på pts.se:',\r\n links: [\r\n {\r\n url: 'https://www.regeringen.se/sa-styrs-sverige/grundlagar-och-demokratiskt-deltagande/offentlighetsprincipen/',\r\n title: 'Offentlighetsprincipen (öppnas i ny flik)',\r\n },\r\n {\r\n url: 'https://www.pts.se/om-oss/behandling-av-personuppgifter/',\r\n title: 'PTS behandling av personuppgifter (öppnas i ny flik)',\r\n },\r\n ],\r\n },\r\n};\r\n\r\nconst PrincipleOfPublicity: FC<PrincipleOfPublicityProps> = ({ activatedLanguage = '' }) => {\r\n const currentContent = activatedLanguage === 'en' ? CONTENT.en : CONTENT.sv;\r\n\r\n return (\r\n <TextHeadlineAndBody\r\n data={{\r\n headline: currentContent.headline,\r\n body: `<p class=\"first-paragraph\">${currentContent.paragraph1}</p><p>${currentContent.paragraph2}</p>`,\r\n linksForMoreInfo: currentContent.links.map((link) => ({\r\n url: link.url,\r\n title: link.title,\r\n ariaLabel: link.title,\r\n })),\r\n }}\r\n headlineType=\"h2\"\r\n />\r\n );\r\n};\r\n\r\nexport default PrincipleOfPublicity;\r\n","import React, { FC, createElement } from 'react';\r\nimport DOMPurify from 'dompurify';\r\nimport { TextBodyProps } from './TextBody.types';\r\n\r\nconst TextBody: FC<TextBodyProps> = ({ data }) => {\r\n return (\r\n <div className=\"pts-textBody-container\">\r\n {data.body && <div dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(data.body) }}></div>}\r\n\r\n {data.linksForMoreInfo && data.linksForMoreInfo.length > 1 && (\r\n <ul className=\"pts-moreinfo-list\">\r\n {data.linksForMoreInfo.map((link: any, index: any) => (\r\n <li key={`more-info-${index}`} className={index > 0 ? 'notFirstInList' : ''}>\r\n <a\r\n href={link.url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n //aria-label={link.ariaLabel}\r\n >\r\n <span className=\"MoreInfoIcon\">\r\n <svg\r\n aria-hidden=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\"\r\n height=\"10\"\r\n viewBox=\"0 0 12 10\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M6.00001 9.63253L5.10321 8.82184L8.62749 5.57905H0.965332V4.42091H8.62749L5.10321 1.17813L6.00001 0.367432L11.0347 4.99998L6.00001 9.63253Z\"\r\n fill=\"#ffffff\"\r\n />\r\n </svg>\r\n </span>\r\n {link.title}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n\r\n {data.linksForMoreInfo && data.linksForMoreInfo.length === 1 && (\r\n <a\r\n href={data.linksForMoreInfo[0].url}\r\n target=\"_blank\"\r\n rel=\"noopener noreferrer\"\r\n aria-label={data.linksForMoreInfo[0].ariaLabel}\r\n >\r\n <span className=\"MoreInfoIcon\">\r\n <svg\r\n aria-hidden=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"12\"\r\n height=\"10\"\r\n viewBox=\"0 0 12 10\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M6.00001 9.63253L5.10321 8.82184L8.62749 5.57905H0.965332V4.42091H8.62749L5.10321 1.17813L6.00001 0.367432L11.0347 4.99998L6.00001 9.63253Z\"\r\n fill=\"#ffffff\"\r\n />\r\n </svg>\r\n </span>\r\n {data.linksForMoreInfo[0].title}\r\n </a>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default TextBody;\r\n","import { FC } from 'react';\r\nimport React from 'react';\r\nimport { EditPreviewLinkProps } from './EditPreviewLinkStandard.types';\r\n\r\nconst EditPreviewLink: FC<EditPreviewLinkProps> = ({\r\n step,\r\n changeStepHandler,\r\n activatedLanguage = 'sv',\r\n}) => {\r\n return (\r\n <div className=\"pts-editPreviewLink-container\">\r\n <a\r\n href=\"#\"\r\n className=\"pts-edit-step-button\"\r\n onClick={(e) => {\r\n e.preventDefault();\r\n changeStepHandler(step.step);\r\n }}\r\n >\r\n <span className=\"pts-edit-step-text\"> \r\n {activatedLanguage === 'en' \r\n ? `Edit step ${step.step}` \r\n : `Redigera steg ${step.step}`}\r\n </span>\r\n </a>\r\n </div>\r\n );\r\n};\r\n\r\nexport default EditPreviewLink;\r\n","import React from 'react';\r\n\r\ninterface StartApplicationButtonProps {\r\n onClick: (event: React.MouseEvent<HTMLButtonElement>) => void;\r\n label?: string;\r\n className?: string;\r\n}\r\n\r\n/**\r\n * En standardiserad knapp för att starta e-tjänsten.\r\n *\r\n * @param {Function} onClick - Funktion som körs när användaren klickar på knappen.\r\n * @param {string} label - Text som visas på knappen.\r\n * @param {string} className - Extra CSS-klasser för knappen.\r\n */\r\nconst StartApplicationButton: React.FC<StartApplicationButtonProps> = ({\r\n onClick,\r\n label = 'Starta e-tjänsten',\r\n className = '',\r\n}) => {\r\n return (\r\n <button\r\n type=\"button\"\r\n className={`pts-forwardButton pts-start-applicationButton ${className}`}\r\n onClick={onClick}\r\n >\r\n {label}\r\n </button>\r\n );\r\n};\r\nexport default StartApplicationButton;\r\n","import React, { FC } from 'react';\r\nimport { StepperButtonsProps } from './StepperButtonsStandard.types';\r\n\r\n/**\r\n * Renderar navigationsknappar för steg-navigering i ett flerstegsformulär.\r\n *\r\n * Funktionalitet:\r\n * Visar en \"Tillbaka\"-knapp när activeStep > 0.\r\n * Visar \"Nästa\"-knappen fram tills sista steget.\r\n * Byter \"Nästa\"-knappen till \"Skicka\" vid sista steget.\r\n *\r\n * @param {Object} globalLanguageState Objekt med språksträngar för knapparna.\r\n * Förväntas innehålla: backButton, forwardButton, sendButton.\r\n *\r\n * @param {Function} changeStepHandler Callback när användaren går bakåt i stegen.\r\n *\r\n * @param {Function} nextStepButtonHandler Callback när användaren går till nästa steg.\r\n *\r\n * @param {Function} onSubmitHandler Callback när sista steget nås och formuläret ska skickas in.\r\n *\r\n * @param {Array} steps Lista över alla steg i formuläret.\r\n * Används för att räkna ut sista stegnumret.\r\n *\r\n * @param {number} activeStep Det aktuella steget i flerstegsformuläret.\r\n */\r\nconst StepperButtons: FC<StepperButtonsProps> = ({\r\n globalLanguageState,\r\n changeStepHandler,\r\n nextStepButtonHandler,\r\n onSubmitHandler,\r\n steps,\r\n activeStep,\r\n}) => {\r\n const totalSteps = steps ? steps.length : '';\r\n\r\n return (\r\n <div className=\"pts-stepperButtons-container\">\r\n {activeStep !== 0 && (\r\n <button\r\n onClick={() => changeStepHandler(activeStep - 1)}\r\n className=\"pts-backButton\"\r\n type=\"button\"\r\n >\r\n {globalLanguageState ? globalLanguageState.backButton : '<<'}\r\n </button>\r\n )}\r\n <button\r\n type={activeStep === totalSteps ? 'submit' : 'button'}\r\n className=\"pts-forwardButton\"\r\n onClick={activeStep !== totalSteps ? nextStepButtonHandler : onSubmitHandler}\r\n >\r\n {activeStep !== totalSteps && globalLanguageState ? globalLanguageState.forwardButton : ''}\r\n\r\n {activeStep === totalSteps && globalLanguageState ? globalLanguageState.sendButton : ''}\r\n </button>\r\n </div>\r\n );\r\n};\r\n\r\nexport default StepperButtons;\r\n","import React, { FC } from 'react';\r\nimport { StepperProps } from './StepperStandard.types';\r\n\r\nconst Stepper: FC<StepperProps> = ({ arraySteps = [], activeStep = 1 }) => {\r\n return (\r\n <div className=\"pts-stepper-container\" aria-hidden=\"true\">\r\n {arraySteps.map((step, index) => {\r\n const isActive = step.step === activeStep;\r\n const lastElement = arraySteps.length;\r\n const isDone = step.step < activeStep;\r\n return (\r\n <React.Fragment key={`step-${step.step}`}>\r\n <div className=\"pts-stepper-step\" key={index}>\r\n <div\r\n className={\r\n 'pts-stepperDot' +\r\n (isActive ? ' pts-stepperDotActive' : '') +\r\n (isDone ? ' pts-stepperDotDone' : '')\r\n }\r\n >\r\n {isDone ? (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"15\"\r\n height=\"12\"\r\n viewBox=\"0 0 15 12\"\r\n fill=\"none\"\r\n >\r\n <path\r\n d=\"M1.5 5.4375L4.875 10.3125L13.5 1.6875\"\r\n stroke=\"white\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n />\r\n </svg>\r\n ) : (\r\n step.step\r\n )}\r\n </div>\r\n <div className=\"pts-shortNameInStepper\">{step.shortNameInStepper}</div>\r\n </div>\r\n {step.step !== lastElement && <div className=\"pts-stepperLine\"></div>}\r\n </React.Fragment>\r\n );\r\n })}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Stepper;\r\n","import React from 'react'\r\nimport { ValidationErrorSummaryListProps } from './ValidationErrorSummaryList.types'\r\n\r\n/**\r\n * Renderar en summering av valideringsfel.\r\n *\r\n * @param validationErrorsList Lista av fråge-id:n som har valideringsfel.\r\n * @param questions Alla frågor i formuläret (används för att hitta labels m.m.).\r\n * @param activatedLanguage Aktivt språk.\r\n */\r\nexport const ValidationErrorSummaryList: React.FC<ValidationErrorSummaryListProps> = ({\r\n validationErrorsList,\r\n questions,\r\n activatedLanguage,\r\n}) => {\r\n const summaryText =\r\n activatedLanguage === 'sv' ? 'Du behöver åtgärda {count} {plural}' : 'You need to fix {count} {plural}'\r\n\r\n function filterIdsByGroupCheck(ids: number[], questions: any[]): number[] {\r\n const tailIds = new Set<number>() // ids som alltid ska bort (alla utom första i varje grupp)\r\n\r\n for (const q of questions) {\r\n const rules = q.validationType ?? []\r\n for (const rule of rules) {\r\n // Matchar t.ex. \"groupCheck-205-206-207-208\"\r\n const m = /^groupCheck-(\\d+(?:-\\d+)*)$/.exec(rule.trim())\r\n if (!m) continue\r\n\r\n const nums = m[1]\r\n .split('-')\r\n .map(s => Number(s))\r\n .filter(n => Number.isFinite(n))\r\n\r\n if (nums.length > 1) {\r\n for (let i = 1; i < nums.length; i++) {\r\n tailIds.add(nums[i])\r\n }\r\n }\r\n }\r\n }\r\n\r\n return ids.filter(id => !tailIds.has(id))\r\n }\r\n\r\n function scrollToQuestion(questionId: number) {\r\n const container = document.getElementById(`question-${questionId}`)\r\n if (container) {\r\n container.scrollIntoView({ behavior: 'smooth', block: 'center' })\r\n\r\n setTimeout(() => {\r\n const input = container.querySelector('input, textarea, select, button') as HTMLElement | null\r\n if (input) {\r\n input.focus()\r\n }\r\n }, 300)\r\n }\r\n }\r\n\r\n if (!validationErrorsList.length) return <></>\r\n\r\n const filteredIds = filterIdsByGroupCheck(validationErrorsList, questions)\r\n\r\n const count = filteredIds.length\r\n const title = summaryText\r\n .replace('{count}', count.toString())\r\n .replace(\r\n '{plural}',\r\n activatedLanguage === 'sv' ? (count === 1 ? 'sak' : 'saker') : count === 1 ? 'thing' : 'things'\r\n )\r\n\r\n function getQuestionLabelById(id: number): string | undefined {\r\n const found = questions.find(item => item.id === id)\r\n return found?.validationSummaryLabel ?? found?.questionLabel\r\n }\r\n\r\n return (\r\n <div className={`pts-errorSummary-container pts-root-error ${validationErrorsList.length === 0 ? \"cleanPadding\" : \"\"}`}>\r\n <span aria-hidden=\"true\" className=\"errorDot\">\r\n !\r\n </span>\r\n <div className=\"errorSummary-content\" id=\"pts-errorSummary-content\">\r\n <h2 id=\"errorSummary-headline\">{title}</h2>\r\n <ul id=\"errorSummary-ul\">\r\n {filteredIds.map((questionId, i) => (\r\n <li key={questionId || i}>\r\n <a\r\n href=\"#\"\r\n onClick={e => {\r\n e.preventDefault()\r\n scrollToQuestion(questionId)\r\n }}\r\n className=\"errorSummary-text\"\r\n >\r\n {getQuestionLabelById(questionId)}\r\n </a>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\nexport default ValidationErrorSummaryList\r\n","import React from 'react';\r\n\r\ninterface FormStatusMessagesProps {\r\n formStatus: string;\r\n}\r\n\r\n/**\r\n * Visar ett error-meddelande om formuläret misslyckas att skicka in, dvs. status är\r\n * failed. Läser upp att formuläret laddas för skärmläsare när status är loading.\r\n *\r\n * @param {string} formStatus Nuvarande status för formuläret.\r\n *\r\n */\r\nconst FormStatusMessagesScreenReader: React.FC<FormStatusMessagesProps> = ({ formStatus }) => {\r\n return (\r\n <>\r\n {/* Felmeddelande (hög prioritet, läses direkt upp) */}\r\n <p aria-live=\"assertive\">\r\n {formStatus === 'failed' && (\r\n <span className=\"pts-root-mandatoryAsterisk\">\r\n Något gick fel, försök igen senare eller kontakta oss!\r\n </span>\r\n )}\r\n </p>\r\n\r\n {/* Laddningsmeddelande (låg prioritet, läses upp när möjligt) */}\r\n <div aria-live=\"polite\" className=\"visually-hidden\">\r\n {formStatus === 'loading'\r\n ? 'Ditt ärende registreras. Uppdatera eller stäng inte sidan.'\r\n : ''}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default FormStatusMessagesScreenReader;\r\n"],"mappings":"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","names":["import_jsx_runtime","_a","import_react","import_jsx_runtime","_a","import_jsx_runtime","DOMPurify","import_dompurify","import_jsx_runtime","DOMPurify","import_react","import_clsx","import_jsx_runtime","import_react","import_react","import_jsx_runtime","React","import_jsx_runtime","clsx","import_react","import_react","import_clsx","import_jsx_runtime","clsx","import_jsx_runtime","windowWidth","React","import_jsx_runtime","questionObject","clsx","import_react","import_jsx_runtime","_a","_a","_b","questions","import_toolkit","React","import_react","import_react","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_dompurify","import_jsx_runtime","DOMPurify","import_jsx_runtime","CONTENT","import_dompurify","import_jsx_runtime","DOMPurify","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_jsx_runtime","React","import_jsx_runtime","questions","import_jsx_runtime"]}
|