+
onLayoutSetClick(event.target.value)}
value={selectedFormLayoutSetName}
className={classes.layoutSetsDropDown}
diff --git a/frontend/packages/ux-editor/src/components/Preview/Preview.test.tsx b/frontend/packages/ux-editor/src/components/Preview/Preview.test.tsx
index 8466c45fcec..0f756774937 100644
--- a/frontend/packages/ux-editor/src/components/Preview/Preview.test.tsx
+++ b/frontend/packages/ux-editor/src/components/Preview/Preview.test.tsx
@@ -60,18 +60,22 @@ describe('Preview', () => {
it('should be possible to toggle preview window', async () => {
const user = userEvent.setup();
- render();
+ const view = render();
const hidePreviewButton = screen.getByRole('button', {
name: textMock('ux_editor.close_preview'),
});
await user.click(hidePreviewButton);
+ expect(collapseToggle).toHaveBeenCalledTimes(1);
+ view.rerender();
expect(hidePreviewButton).not.toBeInTheDocument();
const showPreviewButton = screen.getByRole('button', {
name: textMock('ux_editor.open_preview'),
});
await user.click(showPreviewButton);
+ expect(collapseToggle).toHaveBeenCalledTimes(2);
+ view.rerender();
expect(showPreviewButton).not.toBeInTheDocument();
});
@@ -91,7 +95,7 @@ describe('Preview', () => {
const newSelectedFormLayoutName = 'test';
appContextMock.selectedFormLayoutName = newSelectedFormLayoutName;
- view.rerender();
+ view.rerender();
expect(appContextMock.previewIframeRef?.current?.src).toBe(
'http://localhost' +
@@ -106,5 +110,11 @@ describe('Preview', () => {
});
});
-export const render = (options: Partial = {}) =>
- renderWithProviders(, options);
+const collapseToggle = jest.fn();
+
+export const render = (options: Partial = {}) => {
+ return renderWithProviders(
+ ,
+ options,
+ );
+};
diff --git a/frontend/packages/ux-editor/src/components/Preview/Preview.tsx b/frontend/packages/ux-editor/src/components/Preview/Preview.tsx
index 09ec6bf48fa..eb907396a9b 100644
--- a/frontend/packages/ux-editor/src/components/Preview/Preview.tsx
+++ b/frontend/packages/ux-editor/src/components/Preview/Preview.tsx
@@ -6,30 +6,32 @@ import { useTranslation } from 'react-i18next';
import { useAppContext, useSelectedTaskId } from '../../hooks';
import { useChecksum } from '../../hooks/useChecksum.ts';
import { previewPage } from 'app-shared/api/paths';
-import { Paragraph } from '@digdir/design-system-react';
+import { Paragraph } from '@digdir/designsystemet-react';
import { StudioButton, StudioCenter } from '@studio/components';
import type { SupportedView } from './ViewToggler/ViewToggler';
import { ViewToggler } from './ViewToggler/ViewToggler';
-import { ArrowRightIcon } from '@studio/icons';
+import { ShrinkIcon } from '@studio/icons';
import { PreviewLimitationsInfo } from 'app-shared/components/PreviewLimitationsInfo/PreviewLimitationsInfo';
-export const Preview = () => {
+export type PreviewProps = {
+ collapsed: boolean;
+ onCollapseToggle: () => void;
+ hidePreview?: boolean;
+};
+
+export const Preview = ({ collapsed, onCollapseToggle, hidePreview }: PreviewProps) => {
const { t } = useTranslation();
- const [isPreviewHidden, setIsPreviewHidden] = useState(false);
const { selectedFormLayoutName } = useAppContext();
const noPageSelected =
selectedFormLayoutName === 'default' || selectedFormLayoutName === undefined;
- const togglePreview = (): void => {
- setIsPreviewHidden((prev: boolean) => !prev);
- };
-
- return isPreviewHidden ? (
+ return collapsed ? (
{t('ux_editor.open_preview')}
@@ -38,12 +40,30 @@ export const Preview = () => {
}
+ icon={}
title={t('ux_editor.close_preview')}
className={classes.closePreviewButton}
- onClick={togglePreview}
+ onClick={onCollapseToggle}
/>
- {noPageSelected ? : }
+ {noPageSelected ? (
+
+ ) : (
+ <>
+ {hidePreview && (
+
+ )}
+
+ >
+ )}
);
};
diff --git a/frontend/packages/ux-editor/src/components/Preview/ViewToggler/ViewToggler.tsx b/frontend/packages/ux-editor/src/components/Preview/ViewToggler/ViewToggler.tsx
index 859d5176291..f6b77821b1a 100644
--- a/frontend/packages/ux-editor/src/components/Preview/ViewToggler/ViewToggler.tsx
+++ b/frontend/packages/ux-editor/src/components/Preview/ViewToggler/ViewToggler.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { Switch } from '@digdir/design-system-react';
+import { Switch } from '@digdir/designsystemet-react';
import { useTranslation } from 'react-i18next';
import classes from './ViewToggler.module.css';
diff --git a/frontend/packages/ux-editor/src/components/Properties/ConditionalRendering.tsx b/frontend/packages/ux-editor/src/components/Properties/ConditionalRendering.tsx
index 540f3559cd5..6b56c40e9f0 100644
--- a/frontend/packages/ux-editor/src/components/Properties/ConditionalRendering.tsx
+++ b/frontend/packages/ux-editor/src/components/Properties/ConditionalRendering.tsx
@@ -1,5 +1,5 @@
import React, { useState } from 'react';
-import { Alert } from '@digdir/design-system-react';
+import { Alert } from '@digdir/designsystemet-react';
import classes from './ConditionalRendering.module.css';
import { PlusIcon } from '@studio/icons';
import { ConditionalRenderingModal } from '../toolbar/ConditionalRenderingModal';
diff --git a/frontend/packages/ux-editor/src/components/Properties/DataModelBindings.tsx b/frontend/packages/ux-editor/src/components/Properties/DataModelBindings.tsx
index 87ef49d5505..d595d4c9e64 100644
--- a/frontend/packages/ux-editor/src/components/Properties/DataModelBindings.tsx
+++ b/frontend/packages/ux-editor/src/components/Properties/DataModelBindings.tsx
@@ -1,7 +1,7 @@
import React, { useState } from 'react';
import { EditDataModelBindings } from '../config/editModal/EditDataModelBindings/EditDataModelBindings';
import { StudioProperty, StudioSpinner } from '@studio/components';
-import { Alert, Switch } from '@digdir/design-system-react';
+import { Alert, Switch } from '@digdir/designsystemet-react';
import { useComponentSchemaQuery } from '../../hooks/queries/useComponentSchemaQuery';
import { useFormItemContext } from '../../containers/FormItemContext';
import { useText, useSelectedFormLayout } from '../../hooks';
diff --git a/frontend/packages/ux-editor/src/components/Properties/Dynamics.tsx b/frontend/packages/ux-editor/src/components/Properties/Dynamics.tsx
index 10766fc59ab..7e69fec82f3 100644
--- a/frontend/packages/ux-editor/src/components/Properties/Dynamics.tsx
+++ b/frontend/packages/ux-editor/src/components/Properties/Dynamics.tsx
@@ -1,5 +1,5 @@
import React, { useState } from 'react';
-import { Switch } from '@digdir/design-system-react';
+import { Switch } from '@digdir/designsystemet-react';
import { ConditionalRendering } from './ConditionalRendering';
import { Expressions } from '../config/Expressions';
import { useText } from '../../hooks';
diff --git a/frontend/packages/ux-editor/src/components/Properties/OldDynamicsInfo.tsx b/frontend/packages/ux-editor/src/components/Properties/OldDynamicsInfo.tsx
index fa8538b1318..389c845e348 100644
--- a/frontend/packages/ux-editor/src/components/Properties/OldDynamicsInfo.tsx
+++ b/frontend/packages/ux-editor/src/components/Properties/OldDynamicsInfo.tsx
@@ -5,7 +5,7 @@ import { useTranslation } from 'react-i18next';
import { giteaEditLink, altinnDocsUrl } from 'app-shared/ext-urls';
import { useStudioEnvironmentParams } from 'app-shared/hooks/useStudioEnvironmentParams';
import { useAppContext } from '../../hooks';
-import { Link } from '@digdir/design-system-react';
+import { Link } from '@digdir/designsystemet-react';
export const OldDynamicsInfo = () => {
const { t } = useTranslation();
diff --git a/frontend/packages/ux-editor/src/components/Properties/PageConfigPanel/PageConfigPanel.tsx b/frontend/packages/ux-editor/src/components/Properties/PageConfigPanel/PageConfigPanel.tsx
index 4f657641a32..7f72891f4f8 100644
--- a/frontend/packages/ux-editor/src/components/Properties/PageConfigPanel/PageConfigPanel.tsx
+++ b/frontend/packages/ux-editor/src/components/Properties/PageConfigPanel/PageConfigPanel.tsx
@@ -1,5 +1,5 @@
import React, { useEffect, useRef } from 'react';
-import { Accordion } from '@digdir/design-system-react';
+import { Accordion } from '@digdir/designsystemet-react';
import { FileIcon } from '@studio/icons';
import { StudioSectionHeader } from '@studio/components';
import { useText, useTextResourcesSelector, useAppContext, useFormLayouts } from '../../../hooks';
diff --git a/frontend/packages/ux-editor/src/components/Properties/PageConfigPanel/PageConfigWarning.tsx b/frontend/packages/ux-editor/src/components/Properties/PageConfigPanel/PageConfigWarning.tsx
index 91a69ac5f6a..29c92844698 100644
--- a/frontend/packages/ux-editor/src/components/Properties/PageConfigPanel/PageConfigWarning.tsx
+++ b/frontend/packages/ux-editor/src/components/Properties/PageConfigPanel/PageConfigWarning.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { List, Link, Heading } from '@digdir/design-system-react';
+import { List, Link, Heading } from '@digdir/designsystemet-react';
import { repositoryLayoutPath } from 'app-shared/api/paths';
import { useStudioEnvironmentParams } from 'app-shared/hooks/useStudioEnvironmentParams';
import { getDuplicatedIds } from '../../../utils/formLayoutUtils';
diff --git a/frontend/packages/ux-editor/src/components/Properties/PageConfigPanel/PageConfigWarningModal/PageConfigWarningModal.tsx b/frontend/packages/ux-editor/src/components/Properties/PageConfigPanel/PageConfigWarningModal/PageConfigWarningModal.tsx
index e8a3c001a64..a3898bc2ae3 100644
--- a/frontend/packages/ux-editor/src/components/Properties/PageConfigPanel/PageConfigWarningModal/PageConfigWarningModal.tsx
+++ b/frontend/packages/ux-editor/src/components/Properties/PageConfigPanel/PageConfigWarningModal/PageConfigWarningModal.tsx
@@ -1,7 +1,7 @@
import type { ReactNode } from 'react';
import React from 'react';
import classes from './PageConfigWarningModal.module.css';
-import { Modal } from '@digdir/design-system-react';
+import { Modal } from '@digdir/designsystemet-react';
import { useTranslation } from 'react-i18next';
export interface PageConfigWarningModalProps {
diff --git a/frontend/packages/ux-editor/src/components/Properties/Properties.tsx b/frontend/packages/ux-editor/src/components/Properties/Properties.tsx
index 6e8fb180f57..219262ee772 100644
--- a/frontend/packages/ux-editor/src/components/Properties/Properties.tsx
+++ b/frontend/packages/ux-editor/src/components/Properties/Properties.tsx
@@ -2,7 +2,7 @@ import React from 'react';
import { Calculations } from './Calculations';
import { Text } from './Text';
import { useTranslation } from 'react-i18next';
-import { Accordion } from '@digdir/design-system-react';
+import { Accordion } from '@digdir/designsystemet-react';
import { useFormItemContext } from '../../containers/FormItemContext';
import classes from './Properties.module.css';
import { Dynamics } from './Dynamics';
diff --git a/frontend/packages/ux-editor/src/components/Properties/PropertiesHeader/EditComponentIdRow/EditComponentIdRow.tsx b/frontend/packages/ux-editor/src/components/Properties/PropertiesHeader/EditComponentIdRow/EditComponentIdRow.tsx
index 03794fbee67..0f0c87c0ffe 100644
--- a/frontend/packages/ux-editor/src/components/Properties/PropertiesHeader/EditComponentIdRow/EditComponentIdRow.tsx
+++ b/frontend/packages/ux-editor/src/components/Properties/PropertiesHeader/EditComponentIdRow/EditComponentIdRow.tsx
@@ -1,6 +1,6 @@
import React, { useState } from 'react';
import { StudioToggleableTextfieldSchema, type SchemaValidationError } from '@studio/components';
-import { Alert } from '@digdir/design-system-react';
+import { Alert } from '@digdir/designsystemet-react';
import { KeyVerticalIcon } from '@studio/icons';
import classes from './EditComponentIdRow.module.css';
import { idExists } from '../../../../utils/formLayoutsUtils';
diff --git a/frontend/packages/ux-editor/src/components/Properties/Text.test.tsx b/frontend/packages/ux-editor/src/components/Properties/Text.test.tsx
index c09522b99d6..6387c959e2f 100644
--- a/frontend/packages/ux-editor/src/components/Properties/Text.test.tsx
+++ b/frontend/packages/ux-editor/src/components/Properties/Text.test.tsx
@@ -114,23 +114,6 @@ describe('TextTab', () => {
expect(screen.getByText(descriptionTextValue)).toBeInTheDocument();
});
- it('should not render options section if component schema does not have options/optionsId property', () => {
- render({
- props: {
- ...props,
- formItem: {
- ...layoutMock.components[component1IdMock],
- },
- },
- });
-
- expect(
- screen.queryByRole('heading', {
- name: textMock('ux_editor.properties_panel.texts.options_title'),
- }),
- ).not.toBeInTheDocument();
- });
-
it('should render options section if component schema has options property', () => {
render({
props: {
diff --git a/frontend/packages/ux-editor/src/components/Properties/Text.tsx b/frontend/packages/ux-editor/src/components/Properties/Text.tsx
index 9945d8d3264..df4de0d79c7 100644
--- a/frontend/packages/ux-editor/src/components/Properties/Text.tsx
+++ b/frontend/packages/ux-editor/src/components/Properties/Text.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import { useFormItemContext } from '../../containers/FormItemContext';
import { useTranslation } from 'react-i18next';
-import { Alert } from '@digdir/design-system-react';
+import { Alert } from '@digdir/designsystemet-react';
import { EditTextResourceBindings } from '../config/editModal/EditTextResourceBindings/EditTextResourceBindings';
import { useComponentSchemaQuery } from '../../hooks/queries/useComponentSchemaQuery';
import { StudioSpinner } from '@studio/components';
diff --git a/frontend/packages/ux-editor/src/components/TextResource/TextResource.test.tsx b/frontend/packages/ux-editor/src/components/TextResource/TextResource.test.tsx
index 6f8be04c011..1083b8f3eeb 100644
--- a/frontend/packages/ux-editor/src/components/TextResource/TextResource.test.tsx
+++ b/frontend/packages/ux-editor/src/components/TextResource/TextResource.test.tsx
@@ -8,7 +8,7 @@ import { renderWithProviders } from '../../testing/mocks';
import { screen } from '@testing-library/react';
import { textMock } from '@studio/testing/mocks/i18nMock';
import { DEFAULT_LANGUAGE } from 'app-shared/constants';
-import { typedLocalStorage } from 'app-shared/utils/webStorage';
+import { typedLocalStorage } from '@studio/components/src/hooks/webStorage';
import { QueryKey } from 'app-shared/types/QueryKey';
import type { ServicesContextProps } from 'app-shared/contexts/ServicesContext';
import { appContextMock } from '../../testing/appContextMock';
diff --git a/frontend/packages/ux-editor/src/components/TextResource/TextResourceEditor/TextResourceEditor.tsx b/frontend/packages/ux-editor/src/components/TextResource/TextResourceEditor/TextResourceEditor.tsx
index 9389f2be27c..4d88686b07a 100644
--- a/frontend/packages/ux-editor/src/components/TextResource/TextResourceEditor/TextResourceEditor.tsx
+++ b/frontend/packages/ux-editor/src/components/TextResource/TextResourceEditor/TextResourceEditor.tsx
@@ -1,5 +1,5 @@
import React, { useState } from 'react';
-import { Tabs } from '@digdir/design-system-react';
+import { Tabs } from '@digdir/designsystemet-react';
import { TextResourceValueEditor } from './TextResourceValueEditor';
import { TextResourcePicker } from './TextResourcePicker';
import classes from './TextResourceEditor.module.css';
diff --git a/frontend/packages/ux-editor/src/components/TextResource/TextResourceEditor/TextResourceValueEditor/TextResourceValueEditor.test.tsx b/frontend/packages/ux-editor/src/components/TextResource/TextResourceEditor/TextResourceValueEditor/TextResourceValueEditor.test.tsx
index 0c60e910619..80968127efa 100644
--- a/frontend/packages/ux-editor/src/components/TextResource/TextResourceEditor/TextResourceValueEditor/TextResourceValueEditor.test.tsx
+++ b/frontend/packages/ux-editor/src/components/TextResource/TextResourceEditor/TextResourceValueEditor/TextResourceValueEditor.test.tsx
@@ -8,7 +8,7 @@ import { renderWithProviders } from '../../../../testing/mocks';
import { screen } from '@testing-library/react';
import { textMock } from '@studio/testing/mocks/i18nMock';
import { DEFAULT_LANGUAGE } from 'app-shared/constants';
-import { typedLocalStorage } from 'app-shared/utils/webStorage';
+import { typedLocalStorage } from '@studio/components/src/hooks/webStorage';
import { QueryKey } from 'app-shared/types/QueryKey';
import type { ServicesContextProps } from 'app-shared/contexts/ServicesContext';
import { appContextMock } from '../../../../testing/appContextMock';
diff --git a/frontend/packages/ux-editor/src/components/UnknownComponentAlert/UnknownComponentAlert.tsx b/frontend/packages/ux-editor/src/components/UnknownComponentAlert/UnknownComponentAlert.tsx
index 57ea58affa6..e5e927980d5 100644
--- a/frontend/packages/ux-editor/src/components/UnknownComponentAlert/UnknownComponentAlert.tsx
+++ b/frontend/packages/ux-editor/src/components/UnknownComponentAlert/UnknownComponentAlert.tsx
@@ -1,6 +1,6 @@
import React from 'react';
-import type { AlertProps } from '@digdir/design-system-react';
-import { Alert } from '@digdir/design-system-react';
+import type { AlertProps } from '@digdir/designsystemet-react';
+import { Alert } from '@digdir/designsystemet-react';
import { useTranslation } from 'react-i18next';
export type UnknownComponentAlertProps = {
diff --git a/frontend/packages/ux-editor/src/components/UnsupportedVersionMessage/UnsupportedVersionMessage.tsx b/frontend/packages/ux-editor/src/components/UnsupportedVersionMessage/UnsupportedVersionMessage.tsx
index ea05de3a7ba..b68a82c5671 100644
--- a/frontend/packages/ux-editor/src/components/UnsupportedVersionMessage/UnsupportedVersionMessage.tsx
+++ b/frontend/packages/ux-editor/src/components/UnsupportedVersionMessage/UnsupportedVersionMessage.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import classes from './UnsupportedVersionMessage.module.css';
-import { Alert, Heading, Paragraph } from '@digdir/design-system-react';
+import { Alert, Heading, Paragraph } from '@digdir/designsystemet-react';
import { useTranslation } from 'react-i18next';
export interface UnsupportedVersionMessageProps {
diff --git a/frontend/packages/ux-editor/src/components/config/EditFormComponent.tsx b/frontend/packages/ux-editor/src/components/config/EditFormComponent.tsx
index d0d00005ba9..c113d2850b4 100644
--- a/frontend/packages/ux-editor/src/components/config/EditFormComponent.tsx
+++ b/frontend/packages/ux-editor/src/components/config/EditFormComponent.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import { ComponentSpecificContent } from './componentSpecificContent';
-import { Fieldset } from '@digdir/design-system-react';
+import { Fieldset } from '@digdir/designsystemet-react';
import classes from './EditFormComponent.module.css';
import { useComponentSchemaQuery } from '../../hooks/queries/useComponentSchemaQuery';
import { StudioSpinner } from '@studio/components';
diff --git a/frontend/packages/ux-editor/src/components/config/ExpressionContent/ExpressionContent.tsx b/frontend/packages/ux-editor/src/components/config/ExpressionContent/ExpressionContent.tsx
index c5c1e1c8949..6e5d2825994 100644
--- a/frontend/packages/ux-editor/src/components/config/ExpressionContent/ExpressionContent.tsx
+++ b/frontend/packages/ux-editor/src/components/config/ExpressionContent/ExpressionContent.tsx
@@ -6,7 +6,7 @@ import { DataLookupFuncName, StudioDeleteButton } from '@studio/components';
import { useFormLayoutsQuery } from '../../../hooks/queries/useFormLayoutsQuery';
import { useStudioEnvironmentParams } from 'app-shared/hooks/useStudioEnvironmentParams';
import { useDataModelMetadataQuery } from '../../../hooks/queries/useDataModelMetadataQuery';
-import { Paragraph } from '@digdir/design-system-react';
+import { Paragraph } from '@digdir/designsystemet-react';
import classes from './ExpressionContent.module.css';
import { Expression as ExpressionWithTexts } from 'app-shared/components/Expression';
import { useText, useAppContext } from '../../../hooks';
diff --git a/frontend/packages/ux-editor/src/components/config/Expressions/Expressions.tsx b/frontend/packages/ux-editor/src/components/config/Expressions/Expressions.tsx
index 5d022ae73bb..c893b4d655f 100644
--- a/frontend/packages/ux-editor/src/components/config/Expressions/Expressions.tsx
+++ b/frontend/packages/ux-editor/src/components/config/Expressions/Expressions.tsx
@@ -1,5 +1,5 @@
import React, { useContext } from 'react';
-import { Paragraph, Link } from '@digdir/design-system-react';
+import { Paragraph, Link } from '@digdir/designsystemet-react';
import { ExpressionContent } from '../ExpressionContent';
import classes from './Expressions.module.css';
import { FormItemContext } from '../../../containers/FormItemContext';
diff --git a/frontend/packages/ux-editor/src/components/config/Expressions/NewExpressionButton/NewExpressionButton.tsx b/frontend/packages/ux-editor/src/components/config/Expressions/NewExpressionButton/NewExpressionButton.tsx
index 9a21f9b9b75..61fb368a6f4 100644
--- a/frontend/packages/ux-editor/src/components/config/Expressions/NewExpressionButton/NewExpressionButton.tsx
+++ b/frontend/packages/ux-editor/src/components/config/Expressions/NewExpressionButton/NewExpressionButton.tsx
@@ -1,5 +1,4 @@
import React from 'react';
-import { DropdownMenu } from '@digdir/design-system-react';
import { PlusIcon } from '@studio/icons';
import { useText } from '../../../../hooks';
import { StudioDropdownMenu } from '@studio/components';
@@ -48,7 +47,7 @@ const MenuItem = ({ property }: { property: FormItemProperty }) => {
await debounceSave(); // Todo: handleSave does not work here. Will probably be fixed by https://github.com/Altinn/altinn-studio/issues/12383.
};
- return
{text};
+ return
{text};
};
const useAddExpressionText = (property: FormItemProperty) => {
diff --git a/frontend/packages/ux-editor/src/components/config/FormComponentConfig.tsx b/frontend/packages/ux-editor/src/components/config/FormComponentConfig.tsx
index 41c11e378ae..f74c62576b7 100644
--- a/frontend/packages/ux-editor/src/components/config/FormComponentConfig.tsx
+++ b/frontend/packages/ux-editor/src/components/config/FormComponentConfig.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { Alert, Card, Heading, Paragraph } from '@digdir/design-system-react';
+import { Alert, Card, Heading, Paragraph } from '@digdir/designsystemet-react';
import type { FormComponent } from '../../types/FormComponent';
import { EditBooleanValue } from './editModal/EditBooleanValue';
import { EditNumberValue } from './editModal/EditNumberValue';
diff --git a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Address/AddressComponent.module.css b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Address/AddressComponent.module.css
deleted file mode 100644
index 63eaa171d31..00000000000
--- a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Address/AddressComponent.module.css
+++ /dev/null
@@ -1,5 +0,0 @@
-.root > div {
- display: flex;
- flex-direction: column;
- gap: var(--fieldset-gap);
-}
diff --git a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Address/AddressComponent.test.tsx b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Address/AddressComponent.test.tsx
deleted file mode 100644
index 7f9f59fdd91..00000000000
--- a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Address/AddressComponent.test.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import React from 'react';
-import type { IGenericEditComponent } from '../../componentConfig';
-import { renderWithProviders, renderHookWithProviders } from '../../../../testing/mocks';
-import { useLayoutSchemaQuery } from '../../../../hooks/queries/useLayoutSchemaQuery';
-import { AddressComponent } from './AddressComponent';
-import { ComponentType } from 'app-shared/types/ComponentType';
-import type { FormAddressComponent } from '../../../../types/FormComponent';
-import { waitFor, screen } from '@testing-library/react';
-import userEvent from '@testing-library/user-event';
-
-// Test data:
-const component: FormAddressComponent = {
- type: ComponentType.Address,
- dataModelBindings: {
- address: 'address',
- zipCode: 'zipCode',
- postPlace: 'postPlace',
- },
- id: '1',
- simplified: false,
- itemType: 'COMPONENT',
-};
-const handleComponentChange = jest.fn();
-const defaultProps: IGenericEditComponent
= {
- component,
- handleComponentChange,
-};
-
-const user = userEvent.setup();
-
-describe('AddressComponent', () => {
- it('Renders without errors', async () => {
- await render();
- expect(screen.getByRole('group')).toBeInTheDocument();
- });
-
- it('Handles switch toggle correctly', async () => {
- await render();
- const switchElement = screen.getByRole('checkbox');
- await user.click(switchElement);
- expect(handleComponentChange).toHaveBeenCalledWith({
- ...component,
- simplified: true,
- });
- });
-});
-
-const waitForData = async () => {
- const layoutSchemaResult = renderHookWithProviders(() => useLayoutSchemaQuery()).result;
- await waitFor(() => expect(layoutSchemaResult.current[0].isSuccess).toBe(true));
-};
-
-const render = async (props?: Partial>) => {
- await waitForData();
-
- return renderWithProviders();
-};
diff --git a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Address/AddressComponent.tsx b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Address/AddressComponent.tsx
deleted file mode 100644
index 87ae8211b49..00000000000
--- a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Address/AddressComponent.tsx
+++ /dev/null
@@ -1,72 +0,0 @@
-import React from 'react';
-import { Switch, Fieldset } from '@digdir/design-system-react';
-import classes from './AddressComponent.module.css';
-import { useText } from '../../../../hooks';
-import type { IGenericEditComponent } from '../../componentConfig';
-import { AddressKeys, getTextResourceByAddressKey } from '../../../../utils/component';
-import { EditDataModelBindings } from '../../editModal/EditDataModelBindings/EditDataModelBindings';
-import type { FormAddressComponent } from '../../../../types/FormComponent';
-import { FormField } from '../../../FormField';
-import type { ComponentType } from 'app-shared/types/ComponentType';
-import { StudioProperty } from '@studio/components';
-
-export const AddressComponent = ({
- component,
- handleComponentChange,
-}: IGenericEditComponent) => {
- const t = useText();
-
- const handleToggleAddressSimple = (isChecked: boolean) => {
- handleComponentChange({
- ...component,
- simplified: isChecked,
- });
- };
-
- return (
-
- );
-};
diff --git a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Address/index.ts b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Address/index.ts
deleted file mode 100644
index 4d019dd6e83..00000000000
--- a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Address/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { AddressComponent } from './AddressComponent';
diff --git a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/AttachmentList/AttachmentListContent.tsx b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/AttachmentList/AttachmentListContent.tsx
index 9334485ab05..ea62c6e78c0 100644
--- a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/AttachmentList/AttachmentListContent.tsx
+++ b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/AttachmentList/AttachmentListContent.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { Combobox, Label, Checkbox } from '@digdir/design-system-react';
+import { Combobox, Label, Checkbox } from '@digdir/designsystemet-react';
import { useTranslation } from 'react-i18next';
import classes from './AttachmentListContent.module.css';
diff --git a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/AttachmentList/AttachmentListInternalFormat.tsx b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/AttachmentList/AttachmentListInternalFormat.tsx
index 808de95fe80..090d52729fb 100644
--- a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/AttachmentList/AttachmentListInternalFormat.tsx
+++ b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/AttachmentList/AttachmentListInternalFormat.tsx
@@ -1,5 +1,5 @@
import React, { useState, useEffect } from 'react';
-import { Fieldset, Switch } from '@digdir/design-system-react';
+import { Fieldset, Switch } from '@digdir/designsystemet-react';
import { AttachmentListContent } from './AttachmentListContent';
import { useTranslation } from 'react-i18next';
import { extractCurrentAvailableAttachments, isSelectionValid } from './attachmentListUtils';
diff --git a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/FileUpload/FileUploadComponent.tsx b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/FileUpload/FileUploadComponent.tsx
index 327bc3729d6..a88d1b211c2 100644
--- a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/FileUpload/FileUploadComponent.tsx
+++ b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/FileUpload/FileUploadComponent.tsx
@@ -1,5 +1,6 @@
import React from 'react';
-import { Fieldset, LegacyTextField, Radio, Textfield } from '@digdir/design-system-react';
+import { Fieldset, Radio, Textfield } from '@digdir/designsystemet-react';
+import { LegacyTextField } from '@digdir/design-system-react';
import classes from './FileUploadComponent.module.css';
import { useText } from '../../../../hooks';
import type { IGenericEditComponent } from '../../componentConfig';
diff --git a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Image/ImageComponent.tsx b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Image/ImageComponent.tsx
index 9ca411d4b15..477fd22dc09 100644
--- a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Image/ImageComponent.tsx
+++ b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Image/ImageComponent.tsx
@@ -1,5 +1,6 @@
import React from 'react';
-import { LegacySelect, Textfield, Fieldset } from '@digdir/design-system-react';
+import { Textfield, Fieldset } from '@digdir/designsystemet-react';
+import { LegacySelect } from '@digdir/design-system-react';
import classes from './ImageComponent.module.css';
import { useText } from '../../../../hooks';
import type { IGenericEditComponent } from '../../componentConfig';
diff --git a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Panel/PanelComponent.tsx b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Panel/PanelComponent.tsx
index 4db26f612b6..550e790294c 100644
--- a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Panel/PanelComponent.tsx
+++ b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/Panel/PanelComponent.tsx
@@ -1,5 +1,6 @@
import React from 'react';
-import { Switch, LegacySelect } from '@digdir/design-system-react';
+import { Switch } from '@digdir/designsystemet-react';
+import { LegacySelect } from '@digdir/design-system-react';
import type { IGenericEditComponent } from '../../componentConfig';
import { useText } from '../../../../hooks';
import { FormPanelVariant } from 'app-shared/types/FormPanelVariant';
diff --git a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/RepeatingGroup/RepeatingGroupComponent.tsx b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/RepeatingGroup/RepeatingGroupComponent.tsx
index 8d5b0d829fb..6fd098a35c5 100644
--- a/frontend/packages/ux-editor/src/components/config/componentSpecificContent/RepeatingGroup/RepeatingGroupComponent.tsx
+++ b/frontend/packages/ux-editor/src/components/config/componentSpecificContent/RepeatingGroup/RepeatingGroupComponent.tsx
@@ -1,6 +1,7 @@
import React, { useState } from 'react';
import classes from './RepeatingGroupComponent.module.css';
-import { Checkbox, LegacyFieldSet, LegacyTextField } from '@digdir/design-system-react';
+import { Checkbox } from '@digdir/designsystemet-react';
+import { LegacyFieldSet, LegacyTextField } from '@digdir/design-system-react';
import { FormField } from '../../../FormField';
import { getTextResource } from '../../../../utils/language';
import {
diff --git a/frontend/packages/ux-editor/src/components/config/editModal/EditAutoComplete.tsx b/frontend/packages/ux-editor/src/components/config/editModal/EditAutoComplete.tsx
index 5f1e7576240..504b89f9c2d 100644
--- a/frontend/packages/ux-editor/src/components/config/editModal/EditAutoComplete.tsx
+++ b/frontend/packages/ux-editor/src/components/config/editModal/EditAutoComplete.tsx
@@ -1,7 +1,7 @@
import type { ChangeEvent } from 'react';
import React from 'react';
import type { IGenericEditComponent } from '../componentConfig';
-import { NativeSelect } from '@digdir/design-system-react';
+import { NativeSelect } from '@digdir/designsystemet-react';
import { HTMLAutoCompleteValue } from 'app-shared/types/HTMLAutoCompleteValue';
import { useTranslation } from 'react-i18next';
import type { ComponentType } from 'app-shared/types/ComponentType';
diff --git a/frontend/packages/ux-editor/src/components/config/editModal/EditBooleanValue.tsx b/frontend/packages/ux-editor/src/components/config/editModal/EditBooleanValue.tsx
index 195cb35407d..7a4b09c74d1 100644
--- a/frontend/packages/ux-editor/src/components/config/editModal/EditBooleanValue.tsx
+++ b/frontend/packages/ux-editor/src/components/config/editModal/EditBooleanValue.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { Switch } from '@digdir/design-system-react';
+import { Switch } from '@digdir/designsystemet-react';
import type { IGenericEditComponent } from '../componentConfig';
import { useText } from '../../../hooks';
import { FormField } from '../../FormField';
diff --git a/frontend/packages/ux-editor/src/components/config/editModal/EditCodeList/EditCodeList.tsx b/frontend/packages/ux-editor/src/components/config/editModal/EditCodeList/EditCodeList.tsx
index b653e6d6c1b..af4364dce4c 100644
--- a/frontend/packages/ux-editor/src/components/config/editModal/EditCodeList/EditCodeList.tsx
+++ b/frontend/packages/ux-editor/src/components/config/editModal/EditCodeList/EditCodeList.tsx
@@ -1,5 +1,6 @@
import React, { useEffect, useState } from 'react';
-import { Alert, LegacySelect, Textfield, ErrorMessage } from '@digdir/design-system-react';
+import { Alert, Textfield, ErrorMessage } from '@digdir/designsystemet-react';
+import { LegacySelect } from '@digdir/design-system-react';
import type { IGenericEditComponent } from '../../componentConfig';
import { useOptionListIdsQuery } from '../../../../hooks/queries/useOptionListIdsQuery';
import { useTranslation, Trans } from 'react-i18next';
diff --git a/frontend/packages/ux-editor/src/components/config/editModal/EditGrid/EditGrid.tsx b/frontend/packages/ux-editor/src/components/config/editModal/EditGrid/EditGrid.tsx
index feddfea47f2..5b17a0971ec 100644
--- a/frontend/packages/ux-editor/src/components/config/editModal/EditGrid/EditGrid.tsx
+++ b/frontend/packages/ux-editor/src/components/config/editModal/EditGrid/EditGrid.tsx
@@ -1,7 +1,7 @@
import type { ReactNode } from 'react';
import React, { useState } from 'react';
import type { IGenericEditComponent } from '../../componentConfig';
-import { Tabs } from '@digdir/design-system-react';
+import { Tabs } from '@digdir/designsystemet-react';
import classes from './EditGrid.module.css';
import { EditGridForGivenViewSize } from './EditGridForGivenViewSize';
import { LaptopIcon, MobileIcon, MobileSmallIcon, MonitorIcon, TabletIcon } from '@studio/icons';
diff --git a/frontend/packages/ux-editor/src/components/config/editModal/EditGrid/EditGridForGivenViewSize.tsx b/frontend/packages/ux-editor/src/components/config/editModal/EditGrid/EditGridForGivenViewSize.tsx
index 88c1271e157..b58843d9f85 100644
--- a/frontend/packages/ux-editor/src/components/config/editModal/EditGrid/EditGridForGivenViewSize.tsx
+++ b/frontend/packages/ux-editor/src/components/config/editModal/EditGrid/EditGridForGivenViewSize.tsx
@@ -2,7 +2,7 @@ import React from 'react';
import { useText } from '../../../../hooks';
import type { GridSize } from '@studio/components';
import { StudioGridSelector } from '@studio/components';
-import { Paragraph, Switch } from '@digdir/design-system-react';
+import { Paragraph, Switch } from '@digdir/designsystemet-react';
import { PadlockLockedFillIcon } from '@studio/icons';
import classes from './EditGridForGivenViewSize.module.css';
import { ObjectUtils } from '@studio/pure-functions';
diff --git a/frontend/packages/ux-editor/src/components/config/editModal/EditOptions.tsx b/frontend/packages/ux-editor/src/components/config/editModal/EditOptions.tsx
index 1727d636554..31e956d33c5 100644
--- a/frontend/packages/ux-editor/src/components/config/editModal/EditOptions.tsx
+++ b/frontend/packages/ux-editor/src/components/config/editModal/EditOptions.tsx
@@ -1,6 +1,6 @@
import React, { useEffect, useMemo, useRef, useState } from 'react';
import type { IOption } from '../../../types/global';
-import { Paragraph, Switch, ErrorMessage } from '@digdir/design-system-react';
+import { Paragraph, Switch, ErrorMessage } from '@digdir/designsystemet-react';
import classes from './EditOptions.module.css';
import type { IGenericEditComponent } from '../componentConfig';
import { EditCodeList } from './EditCodeList';
diff --git a/frontend/packages/ux-editor/src/components/config/editModal/EditPreselectedIndex.tsx b/frontend/packages/ux-editor/src/components/config/editModal/EditPreselectedIndex.tsx
index 697e3f86f68..875064bc7a2 100644
--- a/frontend/packages/ux-editor/src/components/config/editModal/EditPreselectedIndex.tsx
+++ b/frontend/packages/ux-editor/src/components/config/editModal/EditPreselectedIndex.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { Textfield } from '@digdir/design-system-react';
+import { Textfield } from '@digdir/designsystemet-react';
import type { IGenericEditComponent } from '../componentConfig';
import { useText } from '../../../hooks';
import { ComponentType } from 'app-shared/types/ComponentType';
diff --git a/frontend/packages/ux-editor/src/components/config/editModal/EditReadOnly.tsx b/frontend/packages/ux-editor/src/components/config/editModal/EditReadOnly.tsx
index c46d788ed59..83d5b533426 100644
--- a/frontend/packages/ux-editor/src/components/config/editModal/EditReadOnly.tsx
+++ b/frontend/packages/ux-editor/src/components/config/editModal/EditReadOnly.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { Switch } from '@digdir/design-system-react';
+import { Switch } from '@digdir/designsystemet-react';
import type { IGenericEditComponent } from '../componentConfig';
import { useText } from '../../../hooks';
import { FormField } from '../../FormField';
diff --git a/frontend/packages/ux-editor/src/components/config/editModal/EditRequired.tsx b/frontend/packages/ux-editor/src/components/config/editModal/EditRequired.tsx
index ab2dc649cd5..d168e981cb1 100644
--- a/frontend/packages/ux-editor/src/components/config/editModal/EditRequired.tsx
+++ b/frontend/packages/ux-editor/src/components/config/editModal/EditRequired.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { Switch } from '@digdir/design-system-react';
+import { Switch } from '@digdir/designsystemet-react';
import type { IGenericEditComponent } from '../componentConfig';
import { useText } from '../../../hooks';
import { FormField } from '../../FormField';
diff --git a/frontend/packages/ux-editor/src/components/config/editModal/EditStringValue.tsx b/frontend/packages/ux-editor/src/components/config/editModal/EditStringValue.tsx
index 6afe9ebf795..56f13a1b107 100644
--- a/frontend/packages/ux-editor/src/components/config/editModal/EditStringValue.tsx
+++ b/frontend/packages/ux-editor/src/components/config/editModal/EditStringValue.tsx
@@ -2,7 +2,8 @@ import React from 'react';
import type { IGenericEditComponent } from '../componentConfig';
import { useTranslation } from 'react-i18next';
import { FormField } from '../../FormField';
-import { LegacySelect, Textfield } from '@digdir/design-system-react';
+import { Textfield } from '@digdir/designsystemet-react';
+import { LegacySelect } from '@digdir/design-system-react';
import { useComponentPropertyLabel } from '../../../hooks/useComponentPropertyLabel';
export interface EditStringValueProps extends IGenericEditComponent {
diff --git a/frontend/packages/ux-editor/src/components/toolbar/InformationPanelComponent.tsx b/frontend/packages/ux-editor/src/components/toolbar/InformationPanelComponent.tsx
index b215b5fde31..b73cc6def6a 100644
--- a/frontend/packages/ux-editor/src/components/toolbar/InformationPanelComponent.tsx
+++ b/frontend/packages/ux-editor/src/components/toolbar/InformationPanelComponent.tsx
@@ -9,7 +9,7 @@ import {
import { useTranslation } from 'react-i18next';
import { StudioLabelAsParagraph, StudioPopover } from '@studio/components';
import { InformationIcon } from '@studio/icons';
-import { Paragraph } from '@digdir/design-system-react';
+import { Paragraph } from '@digdir/designsystemet-react';
export type InformationPanelProvidedProps = {
isOpen: boolean;
diff --git a/frontend/packages/ux-editor/src/components/toolbar/ToolbarItemComponent.module.css b/frontend/packages/ux-editor/src/components/toolbar/ToolbarItemComponent.module.css
index 821b8f93db5..003a59688f3 100644
--- a/frontend/packages/ux-editor/src/components/toolbar/ToolbarItemComponent.module.css
+++ b/frontend/packages/ux-editor/src/components/toolbar/ToolbarItemComponent.module.css
@@ -16,7 +16,6 @@
}
.componentLabel {
- white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
flex: 1 1 auto;
diff --git a/frontend/packages/ux-editor/src/containers/DesignView/DesignView.test.tsx b/frontend/packages/ux-editor/src/containers/DesignView/DesignView.test.tsx
index 3bde49dd736..008d933fd70 100644
--- a/frontend/packages/ux-editor/src/containers/DesignView/DesignView.test.tsx
+++ b/frontend/packages/ux-editor/src/containers/DesignView/DesignView.test.tsx
@@ -8,7 +8,7 @@ import { DragAndDrop } from 'app-shared/components/dragAndDrop';
import { BASE_CONTAINER_ID } from 'app-shared/constants';
import userEvent from '@testing-library/user-event';
import { queriesMock } from 'app-shared/mocks/queriesMock';
-import { typedLocalStorage } from 'app-shared/utils/webStorage';
+import { typedLocalStorage } from '@studio/components/src/hooks/webStorage';
import { createQueryClientMock } from 'app-shared/mocks/queryClientMock';
import { QueryKey } from 'app-shared/types/QueryKey';
import {
diff --git a/frontend/packages/ux-editor/src/containers/DesignView/DesignView.tsx b/frontend/packages/ux-editor/src/containers/DesignView/DesignView.tsx
index 8afe256569c..5ad26dae871 100644
--- a/frontend/packages/ux-editor/src/containers/DesignView/DesignView.tsx
+++ b/frontend/packages/ux-editor/src/containers/DesignView/DesignView.tsx
@@ -3,7 +3,7 @@ import React, { useMemo } from 'react';
import classes from './DesignView.module.css';
import { useTranslation } from 'react-i18next';
import { useStudioEnvironmentParams } from 'app-shared/hooks/useStudioEnvironmentParams';
-import { Accordion } from '@digdir/design-system-react';
+import { Accordion } from '@digdir/designsystemet-react';
import type { IFormLayouts } from '../../types/global';
import type { FormLayoutPage } from '../../types/FormLayoutPage';
import { useFormLayoutSettingsQuery } from '../../hooks/queries/useFormLayoutSettingsQuery';
diff --git a/frontend/packages/ux-editor/src/containers/DesignView/FormLayout.tsx b/frontend/packages/ux-editor/src/containers/DesignView/FormLayout.tsx
index 96a51bff4a2..0627bc6018e 100644
--- a/frontend/packages/ux-editor/src/containers/DesignView/FormLayout.tsx
+++ b/frontend/packages/ux-editor/src/containers/DesignView/FormLayout.tsx
@@ -3,7 +3,7 @@ import { FormTree } from './FormTree';
import React from 'react';
import { hasMultiPageGroup } from '../../utils/formLayoutUtils';
import { useTranslation } from 'react-i18next';
-import { Alert, Paragraph } from '@digdir/design-system-react';
+import { Alert, Paragraph } from '@digdir/designsystemet-react';
import { FormLayoutWarning } from './FormLayoutWarning';
export interface FormLayoutProps {
diff --git a/frontend/packages/ux-editor/src/containers/DesignView/FormLayoutWarning.tsx b/frontend/packages/ux-editor/src/containers/DesignView/FormLayoutWarning.tsx
index 87c618e1bdc..67747e90b86 100644
--- a/frontend/packages/ux-editor/src/containers/DesignView/FormLayoutWarning.tsx
+++ b/frontend/packages/ux-editor/src/containers/DesignView/FormLayoutWarning.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import type { IInternalLayout } from '../../types/global';
import { getDuplicatedIds } from '../../utils/formLayoutUtils';
-import { Paragraph } from '@digdir/design-system-react';
+import { Paragraph } from '@digdir/designsystemet-react';
import { useTranslation } from 'react-i18next';
import classes from './FormLayoutWarning.module.css';
diff --git a/frontend/packages/ux-editor/src/containers/DesignView/FormTree/UnknownReferencedItem/UnknownReferencedItem.tsx b/frontend/packages/ux-editor/src/containers/DesignView/FormTree/UnknownReferencedItem/UnknownReferencedItem.tsx
index a612494dfa1..b8c13f8fa3f 100644
--- a/frontend/packages/ux-editor/src/containers/DesignView/FormTree/UnknownReferencedItem/UnknownReferencedItem.tsx
+++ b/frontend/packages/ux-editor/src/containers/DesignView/FormTree/UnknownReferencedItem/UnknownReferencedItem.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
-import { HelpText } from '@digdir/design-system-react';
+import { HelpText } from '@digdir/designsystemet-react';
import { StudioButton } from '@studio/components';
import { QuestionmarkDiamondIcon, TrashIcon } from '@studio/icons';
import type { IInternalLayout } from '../../../../types/global';
diff --git a/frontend/packages/ux-editor/src/containers/DesignView/PageAccordion/NavigationMenu/NavigationMenu.tsx b/frontend/packages/ux-editor/src/containers/DesignView/PageAccordion/NavigationMenu/NavigationMenu.tsx
index e3bae9ccb0d..2c29c3d7d38 100644
--- a/frontend/packages/ux-editor/src/containers/DesignView/PageAccordion/NavigationMenu/NavigationMenu.tsx
+++ b/frontend/packages/ux-editor/src/containers/DesignView/PageAccordion/NavigationMenu/NavigationMenu.tsx
@@ -1,6 +1,6 @@
import React, { useState } from 'react';
import { useTranslation } from 'react-i18next';
-import { DropdownMenu } from '@digdir/design-system-react';
+import { DropdownMenu } from '@digdir/designsystemet-react';
import { MenuElipsisVerticalIcon, ArrowUpIcon, ArrowDownIcon } from '@studio/icons';
import { useFormLayoutSettingsQuery } from '../../../../hooks/queries/useFormLayoutSettingsQuery';
import { useUpdateLayoutOrderMutation } from '../../../../hooks/mutations/useUpdateLayoutOrderMutation';
diff --git a/frontend/packages/ux-editor/src/containers/DesignView/PageAccordion/PageAccordion.module.css b/frontend/packages/ux-editor/src/containers/DesignView/PageAccordion/PageAccordion.module.css
index cd2f4365f14..08dc35e2277 100644
--- a/frontend/packages/ux-editor/src/containers/DesignView/PageAccordion/PageAccordion.module.css
+++ b/frontend/packages/ux-editor/src/containers/DesignView/PageAccordion/PageAccordion.module.css
@@ -19,7 +19,7 @@
background-color: var(--fds-semantic-surface-neutral-default);
}
-.accordionItem {
+.accordionItem:not(:first-child) {
border-top: 1px solid var(--fds-semantic-border-neutral-subtle);
}
diff --git a/frontend/packages/ux-editor/src/containers/DesignView/PageAccordion/PageAccordion.tsx b/frontend/packages/ux-editor/src/containers/DesignView/PageAccordion/PageAccordion.tsx
index b72a1872f6a..eb11e0b3df8 100644
--- a/frontend/packages/ux-editor/src/containers/DesignView/PageAccordion/PageAccordion.tsx
+++ b/frontend/packages/ux-editor/src/containers/DesignView/PageAccordion/PageAccordion.tsx
@@ -2,7 +2,7 @@ import type { ReactNode } from 'react';
import React from 'react';
import classes from './PageAccordion.module.css';
import cn from 'classnames';
-import { Accordion } from '@digdir/design-system-react';
+import { Accordion } from '@digdir/designsystemet-react';
import { NavigationMenu } from './NavigationMenu';
import { pageAccordionContentId } from '@studio/testing/testids';
import { TrashIcon } from '@studio/icons';
diff --git a/frontend/packages/ux-editor/src/containers/DesignView/ReceiptContent/ReceiptContent.tsx b/frontend/packages/ux-editor/src/containers/DesignView/ReceiptContent/ReceiptContent.tsx
index 2b4e3bee2dd..9c7a239dc9d 100644
--- a/frontend/packages/ux-editor/src/containers/DesignView/ReceiptContent/ReceiptContent.tsx
+++ b/frontend/packages/ux-editor/src/containers/DesignView/ReceiptContent/ReceiptContent.tsx
@@ -2,7 +2,7 @@ import React from 'react';
import classes from './ReceiptContent.module.css';
import type { FormLayoutPage } from '../../../types/FormLayoutPage';
import { PageAccordion } from '../PageAccordion';
-import { Accordion } from '@digdir/design-system-react';
+import { Accordion } from '@digdir/designsystemet-react';
import { FormTree } from '../FormTree';
export type ReceiptContentProps = {
diff --git a/frontend/packages/ux-editor/src/containers/FormDesigner.module.css b/frontend/packages/ux-editor/src/containers/FormDesigner.module.css
index 871738b7c49..1a73b049ba4 100644
--- a/frontend/packages/ux-editor/src/containers/FormDesigner.module.css
+++ b/frontend/packages/ux-editor/src/containers/FormDesigner.module.css
@@ -29,9 +29,10 @@
}
.container > * {
+ --header-with-toolbar-height: calc(var(--header-height) + var(--subtoolbar-height));
padding: 0;
overflow-y: auto;
- max-height: calc(100vh - var(--header-height));
+ max-height: calc(100vh - var(--header-with-toolbar-height));
}
.container > div:not(:last-child) {
diff --git a/frontend/packages/ux-editor/src/containers/FormDesigner.test.tsx b/frontend/packages/ux-editor/src/containers/FormDesigner.test.tsx
index f422ccbcfb3..4bb3ba30717 100644
--- a/frontend/packages/ux-editor/src/containers/FormDesigner.test.tsx
+++ b/frontend/packages/ux-editor/src/containers/FormDesigner.test.tsx
@@ -19,12 +19,14 @@ import { FormItemContext } from './FormItemContext';
import { formItemContextProviderMock } from '../testing/formItemContextMocks';
import { appContextMock } from '../testing/appContextMock';
import { app, org } from '@studio/testing/testids';
+import userEvent from '@testing-library/user-event';
// Test data:
const defaultTexts: ITextResources = {
[DEFAULT_LANGUAGE]: [],
};
const dataModelName = undefined;
+const user = userEvent.setup();
const render = () => {
const queryClient = createQueryClientMock();
@@ -128,4 +130,34 @@ describe('FormDesigner', () => {
expect(appContextMock.refetchLayouts).toHaveBeenCalledTimes(1);
expect(appContextMock.refetchLayouts).toHaveBeenCalledWith('test-layout-set');
});
+
+ it('should be able to collapse and uncollapse components', async () => {
+ await waitForData();
+ render();
+
+ await waitFor(() =>
+ expect(screen.queryByText(textMock('ux_editor.loading_form_layout'))).not.toBeInTheDocument(),
+ );
+
+ await user.click(screen.getByTitle(textMock('left_menu.close_components')));
+ expect(screen.getByTitle(textMock('left_menu.open_components'))).toBeInTheDocument();
+
+ await user.click(screen.getByTitle(textMock('left_menu.open_components')));
+ expect(screen.getByTitle(textMock('left_menu.close_components'))).toBeInTheDocument();
+ });
+
+ it('should be able to collapse and uncollapse preview', async () => {
+ await waitForData();
+ render();
+
+ await waitFor(() =>
+ expect(screen.queryByText(textMock('ux_editor.loading_form_layout'))).not.toBeInTheDocument(),
+ );
+
+ await user.click(screen.getByTitle(textMock('ux_editor.open_preview')));
+ expect(screen.getByTitle(textMock('ux_editor.close_preview'))).toBeInTheDocument();
+
+ await user.click(screen.getByTitle(textMock('ux_editor.close_preview')));
+ expect(screen.getByTitle(textMock('ux_editor.open_preview'))).toBeInTheDocument();
+ });
});
diff --git a/frontend/packages/ux-editor/src/containers/FormDesigner.tsx b/frontend/packages/ux-editor/src/containers/FormDesigner.tsx
index e40b35505d5..63e3e56e810 100644
--- a/frontend/packages/ux-editor/src/containers/FormDesigner.tsx
+++ b/frontend/packages/ux-editor/src/containers/FormDesigner.tsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React, { useState } from 'react';
import { Properties } from '../components/Properties';
import { DesignView } from './DesignView';
import classes from './FormDesigner.module.css';
@@ -9,10 +9,10 @@ import { useFormLayoutsQuery } from '../hooks/queries/useFormLayoutsQuery';
import { useFormLayoutSettingsQuery } from '../hooks/queries/useFormLayoutSettingsQuery';
import { useRuleModelQuery } from '../hooks/queries/useRuleModelQuery';
import { ErrorPage } from '../components/ErrorPage';
-import { StudioPageSpinner } from '@studio/components';
+import { StudioPageSpinner, StudioResizableLayout } from '@studio/components';
import { BASE_CONTAINER_ID } from 'app-shared/constants';
import { useRuleConfigQuery } from '../hooks/queries/useRuleConfigQuery';
-import { useInstanceIdQuery } from 'app-shared/hooks/queries';
+import { useInstanceIdQuery, useUserQuery } from 'app-shared/hooks/queries';
import { useStudioEnvironmentParams } from 'app-shared/hooks/useStudioEnvironmentParams';
import type { HandleAdd, HandleMove } from 'app-shared/types/dndTypes';
import type { ComponentType } from 'app-shared/types/ComponentType';
@@ -28,10 +28,12 @@ import { useAddItemToLayoutMutation } from '../hooks/mutations/useAddItemToLayou
import { useFormLayoutMutation } from '../hooks/mutations/useFormLayoutMutation';
import { Preview } from '../components/Preview';
import { DragAndDropTree } from 'app-shared/components/DragAndDropTree';
+import { FormDesignerToolbar } from './FormDesignerToolbar';
export const FormDesigner = (): JSX.Element => {
const { org, app } = useStudioEnvironmentParams();
const { data: instanceId } = useInstanceIdQuery(org, app);
+ const { data: user } = useUserQuery();
const { selectedFormLayoutSetName, selectedFormLayoutName, refetchLayouts } = useAppContext();
const { data: formLayouts, isError: layoutFetchedError } = useFormLayoutsQuery(
org,
@@ -61,6 +63,9 @@ export const FormDesigner = (): JSX.Element => {
selectedFormLayoutSetName,
);
const { handleEdit } = useFormItemContext();
+ const [previewCollapsed, setPreviewCollapsed] = useState(true);
+ const [elementsCollapsed, setElementsCollapsed] = useState(false);
+ const [hidePreview, setHidePreview] = useState(false);
const t = useText();
@@ -142,11 +147,41 @@ export const FormDesigner = (): JSX.Element => {
return (
+
-
-
-
-
+
+
+ setElementsCollapsed((prev) => !prev)}
+ />
+
+
+
+
+ setHidePreview(resizing)}>
+
+
+
+ setPreviewCollapsed((prev) => !prev)}
+ hidePreview={hidePreview}
+ />
+
+
diff --git a/frontend/packages/ux-editor/src/containers/FormDesignerToolbar.module.css b/frontend/packages/ux-editor/src/containers/FormDesignerToolbar.module.css
new file mode 100644
index 00000000000..e1c0d8b41fc
--- /dev/null
+++ b/frontend/packages/ux-editor/src/containers/FormDesignerToolbar.module.css
@@ -0,0 +1,6 @@
+.toolbar {
+ align-items: center;
+ display: flex;
+ padding: 8px;
+ border-bottom: 1px solid #c9c9c9;
+}
diff --git a/frontend/packages/ux-editor/src/containers/FormDesignerToolbar.tsx b/frontend/packages/ux-editor/src/containers/FormDesignerToolbar.tsx
new file mode 100644
index 00000000000..26a38a78a44
--- /dev/null
+++ b/frontend/packages/ux-editor/src/containers/FormDesignerToolbar.tsx
@@ -0,0 +1,13 @@
+import React from 'react';
+import { useStudioEnvironmentParams } from 'app-shared/hooks/useStudioEnvironmentParams';
+import classes from './FormDesignerToolbar.module.css';
+import { useLayoutSetsQuery } from 'app-shared/hooks/queries/useLayoutSetsQuery';
+import { LayoutSetsContainer } from '../components/Elements/LayoutSetsContainer';
+
+export const FormDesignerToolbar = () => {
+ const { org, app } = useStudioEnvironmentParams();
+ const layoutSetsQuery = useLayoutSetsQuery(org, app);
+ const layoutSetNames = layoutSetsQuery?.data?.sets;
+
+ return ;
+};
diff --git a/frontend/packages/ux-editor/src/hooks/useSelectedFormLayoutSetName.test.tsx b/frontend/packages/ux-editor/src/hooks/useSelectedFormLayoutSetName.test.tsx
index 04f832f735f..a27b011622f 100644
--- a/frontend/packages/ux-editor/src/hooks/useSelectedFormLayoutSetName.test.tsx
+++ b/frontend/packages/ux-editor/src/hooks/useSelectedFormLayoutSetName.test.tsx
@@ -11,7 +11,7 @@ import { createQueryClientMock } from 'app-shared/mocks/queryClientMock';
import type { QueryClient } from '@tanstack/react-query';
import { QueryKey } from 'app-shared/types/QueryKey';
import { app, org } from '@studio/testing/testids';
-import { typedLocalStorage } from 'app-shared/utils/webStorage';
+import { typedLocalStorage } from '@studio/components/src/hooks/webStorage';
// Test data:
const selectedLayoutSet = layoutSet1NameMock;
diff --git a/frontend/packages/ux-editor/src/hooks/useSelectedFormLayoutSetName.ts b/frontend/packages/ux-editor/src/hooks/useSelectedFormLayoutSetName.ts
index f5b4f1ccfa1..63cfd45d792 100644
--- a/frontend/packages/ux-editor/src/hooks/useSelectedFormLayoutSetName.ts
+++ b/frontend/packages/ux-editor/src/hooks/useSelectedFormLayoutSetName.ts
@@ -1,7 +1,7 @@
import { useStudioEnvironmentParams } from 'app-shared/hooks/useStudioEnvironmentParams';
import { useLayoutSetsQuery } from 'app-shared/hooks/queries/useLayoutSetsQuery';
import { useEffect, useState } from 'react';
-import { typedLocalStorage } from 'app-shared/utils/webStorage';
+import { typedLocalStorage } from '@studio/components/src/hooks/webStorage';
export type UseSelectedFormLayoutSetNameResult = {
selectedFormLayoutSetName: string;
diff --git a/frontend/packages/ux-editor/src/testing/schemas/json/component/Dropdown.schema.v1.json b/frontend/packages/ux-editor/src/testing/schemas/json/component/Dropdown.schema.v1.json
index 6112433c186..b23665427e7 100644
--- a/frontend/packages/ux-editor/src/testing/schemas/json/component/Dropdown.schema.v1.json
+++ b/frontend/packages/ux-editor/src/testing/schemas/json/component/Dropdown.schema.v1.json
@@ -252,6 +252,12 @@
},
"required": ["simpleBinding"],
"additionalProperties": false
+ },
+ "alertOnChange": {
+ "title": "Alert on change",
+ "description": "Boolean value indicating if the component should alert on change",
+ "default": false,
+ "$ref": "expression.schema.v1.json#/definitions/boolean"
}
},
"required": ["id", "type", "dataModelBindings"],
diff --git a/frontend/packages/ux-editor/src/testing/schemas/json/component/Input.schema.v1.json b/frontend/packages/ux-editor/src/testing/schemas/json/component/Input.schema.v1.json
index f004d94851a..6b603f6a491 100644
--- a/frontend/packages/ux-editor/src/testing/schemas/json/component/Input.schema.v1.json
+++ b/frontend/packages/ux-editor/src/testing/schemas/json/component/Input.schema.v1.json
@@ -136,6 +136,16 @@
"title": "Accessible summary title",
"description": "Title used for aria-label on the edit button in the summary view (overrides the default and summary title)",
"$ref": "expression.schema.v1.json#/definitions/string"
+ },
+ "prefix": {
+ "title": "Prefix",
+ "description": "Prefix shown before the input field",
+ "$ref": "expression.schema.v1.json#/definitions/string"
+ },
+ "suffix": {
+ "title": "Suffix",
+ "description": "Suffix shown after the input field",
+ "$ref": "expression.schema.v1.json#/definitions/string"
}
}
},
@@ -170,7 +180,6 @@
"properties": {
"currency": {
"title": "Language-sensitive currency formatting",
- "type": "string",
"description": "Enables currency to be language sensitive based on selected app language. Note: parts that already exist in number property are not overridden by this prop.",
"enum": [
"AED",
diff --git a/frontend/packages/ux-editor/src/testing/schemas/json/component/MultipleSelect.schema.v1.json b/frontend/packages/ux-editor/src/testing/schemas/json/component/MultipleSelect.schema.v1.json
index 82e6ee24a56..e24783a778a 100644
--- a/frontend/packages/ux-editor/src/testing/schemas/json/component/MultipleSelect.schema.v1.json
+++ b/frontend/packages/ux-editor/src/testing/schemas/json/component/MultipleSelect.schema.v1.json
@@ -252,6 +252,12 @@
},
"required": ["simpleBinding"],
"additionalProperties": false
+ },
+ "alertOnChange": {
+ "title": "Alert on change",
+ "description": "Boolean value indicating if the component should alert on change",
+ "default": false,
+ "$ref": "expression.schema.v1.json#/definitions/boolean"
}
},
"required": ["id", "type", "dataModelBindings"],
diff --git a/frontend/packages/ux-editor/src/types/FormComponent.ts b/frontend/packages/ux-editor/src/types/FormComponent.ts
index b30ba06e1d9..89dd53ce202 100644
--- a/frontend/packages/ux-editor/src/types/FormComponent.ts
+++ b/frontend/packages/ux-editor/src/types/FormComponent.ts
@@ -39,7 +39,6 @@ export type FormFileUploaderWithTagComponent = FormComponent;
-export type FormAddressComponent = FormComponent;
export type FormAttachmentListComponent = FormComponent;
export type FormComponent = {
diff --git a/frontend/packages/ux-editor/src/utils/component.ts b/frontend/packages/ux-editor/src/utils/component.ts
index 26ae191d227..684f5fa08be 100644
--- a/frontend/packages/ux-editor/src/utils/component.ts
+++ b/frontend/packages/ux-editor/src/utils/component.ts
@@ -11,37 +11,6 @@ import type { FormItem } from '../types/FormItem';
import type { KeyValuePairs } from 'app-shared/types/KeyValuePairs';
import type { FilterKeysOfType } from 'app-shared/types/FilterKeysOfType';
-export function getTextResourceByAddressKey(key: AddressKeys, t: (key: string) => string): string {
- switch (key) {
- case AddressKeys.address: {
- return t('ux_editor.modal_configure_address_component_address');
- }
- case AddressKeys.zipCode: {
- return t('ux_editor.modal_configure_address_component_zip_code');
- }
- case AddressKeys.houseNumber: {
- return t('ux_editor.modal_configure_address_component_house_number');
- }
- case AddressKeys.careOf: {
- return t('ux_editor.modal_configure_address_component_care_of');
- }
- case AddressKeys.postPlace: {
- return t('ux_editor.modal_configure_address_component_post_place');
- }
- default: {
- return '';
- }
- }
-}
-
-export enum AddressKeys {
- address = 'address',
- zipCode = 'zipCode',
- postPlace = 'postPlace',
- careOf = 'careOf',
- houseNumber = 'houseNumber',
-}
-
export enum PropertyTypes {
boolean = 'boolean',
number = 'number',
diff --git a/frontend/resourceadm/components/AccessListDetails/AccessListDetail.tsx b/frontend/resourceadm/components/AccessListDetails/AccessListDetail.tsx
index ae262a98ff5..c9973dda6b3 100644
--- a/frontend/resourceadm/components/AccessListDetails/AccessListDetail.tsx
+++ b/frontend/resourceadm/components/AccessListDetails/AccessListDetail.tsx
@@ -2,7 +2,7 @@ import React, { useRef, useState } from 'react';
import { useNavigate, Link } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { toast } from 'react-toastify';
-import { Textfield, Modal, Heading, Link as DigdirLink } from '@digdir/design-system-react';
+import { Textfield, Modal, Heading, Link as DigdirLink } from '@digdir/designsystemet-react';
import classes from './AccessListDetail.module.css';
import type { AccessList, ResourceError } from 'app-shared/types/ResourceAdm';
import { FieldWrapper } from '../FieldWrapper';
diff --git a/frontend/resourceadm/components/AccessListEnvLinks/AccessListEnvLinks.tsx b/frontend/resourceadm/components/AccessListEnvLinks/AccessListEnvLinks.tsx
index 3c5a958543b..0c4324b2d52 100644
--- a/frontend/resourceadm/components/AccessListEnvLinks/AccessListEnvLinks.tsx
+++ b/frontend/resourceadm/components/AccessListEnvLinks/AccessListEnvLinks.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import { Link } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
-import { Alert, List, Paragraph } from '@digdir/design-system-react';
+import { Alert, List, Paragraph } from '@digdir/designsystemet-react';
import { getResourcePageURL } from '../../utils/urlUtils';
import { useUrlParams } from '../../hooks/useUrlParams';
import { getAvailableEnvironments } from '../../utils/resourceUtils';
diff --git a/frontend/resourceadm/components/AccessListErrorMessage/AccessListErrorMessage.tsx b/frontend/resourceadm/components/AccessListErrorMessage/AccessListErrorMessage.tsx
index 68af8229d22..950f0097261 100644
--- a/frontend/resourceadm/components/AccessListErrorMessage/AccessListErrorMessage.tsx
+++ b/frontend/resourceadm/components/AccessListErrorMessage/AccessListErrorMessage.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
-import { Alert } from '@digdir/design-system-react';
+import { Alert } from '@digdir/designsystemet-react';
import { getEnvLabel } from '../../utils/resourceUtils';
import { type EnvId } from '../../utils/resourceUtils';
import type { ResourceError } from 'app-shared/types/ResourceAdm';
diff --git a/frontend/resourceadm/components/AccessListMembers/AccessListMembers.tsx b/frontend/resourceadm/components/AccessListMembers/AccessListMembers.tsx
index 41756926101..6a189fe19db 100644
--- a/frontend/resourceadm/components/AccessListMembers/AccessListMembers.tsx
+++ b/frontend/resourceadm/components/AccessListMembers/AccessListMembers.tsx
@@ -1,7 +1,7 @@
import React, { useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { toast } from 'react-toastify';
-import { Alert, Textfield, Radio } from '@digdir/design-system-react';
+import { Alert, Textfield, Radio } from '@digdir/designsystemet-react';
import classes from './AccessListMembers.module.css';
import type { AccessList, AccessListMember, ResourceError } from 'app-shared/types/ResourceAdm';
import { FieldWrapper } from '../FieldWrapper';
diff --git a/frontend/resourceadm/components/AccessListMembers/AccessListMembersTable.tsx b/frontend/resourceadm/components/AccessListMembers/AccessListMembersTable.tsx
index 7a85ec40eeb..890e5214dd2 100644
--- a/frontend/resourceadm/components/AccessListMembers/AccessListMembersTable.tsx
+++ b/frontend/resourceadm/components/AccessListMembers/AccessListMembersTable.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import cn from 'classnames';
-import { ErrorMessage } from '@digdir/design-system-react';
+import { ErrorMessage } from '@digdir/designsystemet-react';
import type { AccessListMember } from 'app-shared/types/ResourceAdm';
import { StudioButton, StudioTableLocalPagination } from '@studio/components';
import type { Columns } from '@studio/components';
diff --git a/frontend/resourceadm/components/ErrorMessage/ErrorMessage.tsx b/frontend/resourceadm/components/ErrorMessage/ErrorMessage.tsx
index 41d34a1e911..69d34d461f4 100644
--- a/frontend/resourceadm/components/ErrorMessage/ErrorMessage.tsx
+++ b/frontend/resourceadm/components/ErrorMessage/ErrorMessage.tsx
@@ -1,7 +1,7 @@
import type { ReactNode } from 'react';
import React from 'react';
import classes from './errorMessage.module.css';
-import { Heading, Paragraph } from '@digdir/design-system-react';
+import { Heading, Paragraph } from '@digdir/designsystemet-react';
import { useTranslation } from 'react-i18next';
type ErrorMessageProps = {
diff --git a/frontend/resourceadm/components/FieldWrapper/FieldWrapper.tsx b/frontend/resourceadm/components/FieldWrapper/FieldWrapper.tsx
index 77ba370f49e..3de274bf15d 100644
--- a/frontend/resourceadm/components/FieldWrapper/FieldWrapper.tsx
+++ b/frontend/resourceadm/components/FieldWrapper/FieldWrapper.tsx
@@ -1,6 +1,6 @@
import type { ReactNode } from 'react';
import React from 'react';
-import { Label, Paragraph } from '@digdir/design-system-react';
+import { Label, Paragraph } from '@digdir/designsystemet-react';
interface FieldWrapperProps {
label: string;
diff --git a/frontend/resourceadm/components/FieldsetWrapper/FieldsetWrapper.tsx b/frontend/resourceadm/components/FieldsetWrapper/FieldsetWrapper.tsx
index a2f14afded4..e02e3a50b02 100644
--- a/frontend/resourceadm/components/FieldsetWrapper/FieldsetWrapper.tsx
+++ b/frontend/resourceadm/components/FieldsetWrapper/FieldsetWrapper.tsx
@@ -1,6 +1,6 @@
import React, { useRef, useState } from 'react';
import { useTranslation } from 'react-i18next';
-import { Modal } from '@digdir/design-system-react';
+import { Modal } from '@digdir/designsystemet-react';
import classes from './FieldsetWrapper.module.css';
import { StudioButton } from '@studio/components';
import { TrashIcon, PlusIcon } from '@studio/icons';
diff --git a/frontend/resourceadm/components/ImportAltinn3ResourceModal/ImportAltinn3ResourceModal.tsx b/frontend/resourceadm/components/ImportAltinn3ResourceModal/ImportAltinn3ResourceModal.tsx
index dd7b37fb49e..d2917a6370e 100644
--- a/frontend/resourceadm/components/ImportAltinn3ResourceModal/ImportAltinn3ResourceModal.tsx
+++ b/frontend/resourceadm/components/ImportAltinn3ResourceModal/ImportAltinn3ResourceModal.tsx
@@ -1,6 +1,6 @@
import React, { forwardRef, useState } from 'react';
import { useTranslation } from 'react-i18next';
-import { Modal, Radio } from '@digdir/design-system-react';
+import { Modal, Radio } from '@digdir/designsystemet-react';
import { StudioButton } from '@studio/components';
import { getEnvLabel } from '../../utils/resourceUtils';
import type { EnvId } from '../../utils/resourceUtils';
diff --git a/frontend/resourceadm/components/ImportResourceModal/ImportResourceModal.tsx b/frontend/resourceadm/components/ImportResourceModal/ImportResourceModal.tsx
index b2d98195eb0..a76f4703e97 100644
--- a/frontend/resourceadm/components/ImportResourceModal/ImportResourceModal.tsx
+++ b/frontend/resourceadm/components/ImportResourceModal/ImportResourceModal.tsx
@@ -2,7 +2,7 @@ import React, { useState } from 'react';
import { toast } from 'react-toastify';
import classes from './ImportResourceModal.module.css';
import { Modal } from '../Modal';
-import { Combobox, Paragraph, Textfield } from '@digdir/design-system-react';
+import { Combobox, Paragraph, Textfield } from '@digdir/designsystemet-react';
import { useTranslation } from 'react-i18next';
import type { EnvironmentType } from '../../types/EnvironmentType';
import { useNavigate } from 'react-router-dom';
diff --git a/frontend/resourceadm/components/ImportResourceModal/ServiceContent/ServiceContent.tsx b/frontend/resourceadm/components/ImportResourceModal/ServiceContent/ServiceContent.tsx
index 7c19fce7165..73b6e0e11d8 100644
--- a/frontend/resourceadm/components/ImportResourceModal/ServiceContent/ServiceContent.tsx
+++ b/frontend/resourceadm/components/ImportResourceModal/ServiceContent/ServiceContent.tsx
@@ -1,7 +1,7 @@
import type { ReactNode } from 'react';
import React from 'react';
import classes from './ServiceContent.module.css';
-import { Alert, ErrorMessage, Combobox, Paragraph, Spinner } from '@digdir/design-system-react';
+import { Alert, ErrorMessage, Combobox, Paragraph, Spinner } from '@digdir/designsystemet-react';
import { StudioCenter } from '@studio/components';
import { useTranslation } from 'react-i18next';
import { useGetAltinn2LinkServicesQuery } from '../../../hooks/queries';
diff --git a/frontend/resourceadm/components/LinkButton/LinkButton.tsx b/frontend/resourceadm/components/LinkButton/LinkButton.tsx
index 5ddc94540f0..65d6ee0a94c 100644
--- a/frontend/resourceadm/components/LinkButton/LinkButton.tsx
+++ b/frontend/resourceadm/components/LinkButton/LinkButton.tsx
@@ -1,7 +1,7 @@
import type { ReactNode } from 'react';
import React from 'react';
import classes from './LinkButton.module.css';
-import { Link } from '@digdir/design-system-react';
+import { Link } from '@digdir/designsystemet-react';
export type LinkButtonProps = {
/**
diff --git a/frontend/resourceadm/components/MergeConflictModal/MergeConflictModal.tsx b/frontend/resourceadm/components/MergeConflictModal/MergeConflictModal.tsx
index 07ebab03380..decdcee9eb1 100644
--- a/frontend/resourceadm/components/MergeConflictModal/MergeConflictModal.tsx
+++ b/frontend/resourceadm/components/MergeConflictModal/MergeConflictModal.tsx
@@ -2,7 +2,7 @@ import React, { useState } from 'react';
import { toast } from 'react-toastify';
import classes from './MergeConflictModal.module.css';
import { useTranslation } from 'react-i18next';
-import { Link, Paragraph, Label } from '@digdir/design-system-react';
+import { Link, Paragraph, Label } from '@digdir/designsystemet-react';
import { repoDownloadPath } from 'app-shared/api/paths';
import { RemoveChangesModal } from './RemoveChangesModal';
import { Modal } from '../Modal';
diff --git a/frontend/resourceadm/components/MergeConflictModal/RemoveChangesModal/RemoveChangesModal.tsx b/frontend/resourceadm/components/MergeConflictModal/RemoveChangesModal/RemoveChangesModal.tsx
index 6d9095a5e16..679082def63 100644
--- a/frontend/resourceadm/components/MergeConflictModal/RemoveChangesModal/RemoveChangesModal.tsx
+++ b/frontend/resourceadm/components/MergeConflictModal/RemoveChangesModal/RemoveChangesModal.tsx
@@ -1,6 +1,6 @@
import React, { useState } from 'react';
import { Trans, useTranslation } from 'react-i18next';
-import { Textfield, Paragraph } from '@digdir/design-system-react';
+import { Textfield, Paragraph } from '@digdir/designsystemet-react';
import classes from './RemoveChangesModal.module.css';
import { Modal } from '../../../components/Modal';
import { StudioButton } from '@studio/components';
diff --git a/frontend/resourceadm/components/MigrationStep/MigrationStep.tsx b/frontend/resourceadm/components/MigrationStep/MigrationStep.tsx
index 460113f659e..5b17b3b2ce4 100644
--- a/frontend/resourceadm/components/MigrationStep/MigrationStep.tsx
+++ b/frontend/resourceadm/components/MigrationStep/MigrationStep.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import { Trans } from 'react-i18next';
-import { Alert, Paragraph } from '@digdir/design-system-react';
+import { Alert, Paragraph } from '@digdir/designsystemet-react';
import { LinkButton } from '../LinkButton';
import { StudioLabelAsParagraph } from '@studio/components';
diff --git a/frontend/resourceadm/components/Modal/Modal.tsx b/frontend/resourceadm/components/Modal/Modal.tsx
index e8649b9e5be..5b96d79909e 100644
--- a/frontend/resourceadm/components/Modal/Modal.tsx
+++ b/frontend/resourceadm/components/Modal/Modal.tsx
@@ -2,7 +2,7 @@ import type { ReactNode } from 'react';
import React from 'react';
import classes from './Modal.module.css';
import cn from 'classnames';
-import { Heading } from '@digdir/design-system-react';
+import { Heading } from '@digdir/designsystemet-react';
import { StudioModal } from '@studio/components';
import { useTranslation } from 'react-i18next';
diff --git a/frontend/resourceadm/components/NavigationModal/NavigationModal.tsx b/frontend/resourceadm/components/NavigationModal/NavigationModal.tsx
index f901fed0d9b..75ae9aa047c 100644
--- a/frontend/resourceadm/components/NavigationModal/NavigationModal.tsx
+++ b/frontend/resourceadm/components/NavigationModal/NavigationModal.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import classes from './NavigationModal.module.css';
-import { Paragraph } from '@digdir/design-system-react';
+import { Paragraph } from '@digdir/designsystemet-react';
import { Modal } from '../Modal';
import { useTranslation } from 'react-i18next';
import { StudioButton } from '@studio/components';
diff --git a/frontend/resourceadm/components/NewAccessListModal/NewAccessListModal.tsx b/frontend/resourceadm/components/NewAccessListModal/NewAccessListModal.tsx
index 81ec3bc9b5f..8e5b9d5abfa 100644
--- a/frontend/resourceadm/components/NewAccessListModal/NewAccessListModal.tsx
+++ b/frontend/resourceadm/components/NewAccessListModal/NewAccessListModal.tsx
@@ -3,7 +3,7 @@ import { useNavigate } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { toast } from 'react-toastify';
import { useCreateAccessListMutation } from '../../hooks/mutations/useCreateAccessListMutation';
-import { Modal, Paragraph } from '@digdir/design-system-react';
+import { Modal, Paragraph } from '@digdir/designsystemet-react';
import { ResourceNameAndId } from '../../components/ResourceNameAndId';
import { ServerCodes } from 'app-shared/enums/ServerCodes';
import { StudioButton } from '@studio/components';
diff --git a/frontend/resourceadm/components/NewResourceModal/NewResourceModal.tsx b/frontend/resourceadm/components/NewResourceModal/NewResourceModal.tsx
index 22d68d49c9a..886b50d8203 100644
--- a/frontend/resourceadm/components/NewResourceModal/NewResourceModal.tsx
+++ b/frontend/resourceadm/components/NewResourceModal/NewResourceModal.tsx
@@ -1,7 +1,7 @@
import React, { forwardRef, useState } from 'react';
import { useNavigate } from 'react-router-dom';
import { toast } from 'react-toastify';
-import { Paragraph, Modal } from '@digdir/design-system-react';
+import { Paragraph, Modal } from '@digdir/designsystemet-react';
import { ResourceNameAndId } from '../ResourceNameAndId';
import { useCreateResourceMutation } from '../../hooks/mutations';
import type { NewResource } from 'app-shared/types/ResourceAdm';
diff --git a/frontend/resourceadm/components/ResourceAccessLists/ResourceAccessLists.tsx b/frontend/resourceadm/components/ResourceAccessLists/ResourceAccessLists.tsx
index d3781038269..df252127542 100644
--- a/frontend/resourceadm/components/ResourceAccessLists/ResourceAccessLists.tsx
+++ b/frontend/resourceadm/components/ResourceAccessLists/ResourceAccessLists.tsx
@@ -1,7 +1,7 @@
import React, { useEffect, useState, useRef } from 'react';
import { Link } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
-import { Checkbox, Heading, Link as DigdirLink } from '@digdir/design-system-react';
+import { Checkbox, Heading, Link as DigdirLink } from '@digdir/designsystemet-react';
import classes from './ResourceAccessLists.module.css';
import { StudioSpinner, StudioButton } from '@studio/components';
import { PencilWritingIcon, PlusIcon } from '@studio/icons';
diff --git a/frontend/resourceadm/components/ResourceContactPointFields/ResourceContactPointFieldset.tsx b/frontend/resourceadm/components/ResourceContactPointFields/ResourceContactPointFieldset.tsx
index a025a709df6..d0cedf01283 100644
--- a/frontend/resourceadm/components/ResourceContactPointFields/ResourceContactPointFieldset.tsx
+++ b/frontend/resourceadm/components/ResourceContactPointFields/ResourceContactPointFieldset.tsx
@@ -1,6 +1,6 @@
import React, { useState } from 'react';
import type { ResourceContactPoint, ResourceFormError } from 'app-shared/types/ResourceAdm';
-import { Fieldset, HelpText, Textfield } from '@digdir/design-system-react';
+import { Fieldset, HelpText, Textfield } from '@digdir/designsystemet-react';
import { useTranslation } from 'react-i18next';
import { InputFieldErrorMessage } from '../ResourcePageInputs/InputFieldErrorMessage';
import { ResourceFieldHeader } from '../ResourcePageInputs/ResourceFieldHeader';
diff --git a/frontend/resourceadm/components/ResourceDeployEnvCard/ResourceDeployEnvCard.tsx b/frontend/resourceadm/components/ResourceDeployEnvCard/ResourceDeployEnvCard.tsx
index 57183656f00..4017eb363ee 100644
--- a/frontend/resourceadm/components/ResourceDeployEnvCard/ResourceDeployEnvCard.tsx
+++ b/frontend/resourceadm/components/ResourceDeployEnvCard/ResourceDeployEnvCard.tsx
@@ -1,7 +1,7 @@
import React, { useState } from 'react';
import { toast } from 'react-toastify';
import { useTranslation } from 'react-i18next';
-import { Tag, Paragraph, Spinner, Alert } from '@digdir/design-system-react';
+import { Tag, Paragraph, Spinner, Alert } from '@digdir/designsystemet-react';
import classes from './ResourceDeployEnvCard.module.css';
import { ArrowRightIcon } from '@studio/icons';
import { StudioButton } from '@studio/components';
diff --git a/frontend/resourceadm/components/ResourceDeployStatus/ResourceDeployStatus.tsx b/frontend/resourceadm/components/ResourceDeployStatus/ResourceDeployStatus.tsx
index 3a4848040ce..0b53158381a 100644
--- a/frontend/resourceadm/components/ResourceDeployStatus/ResourceDeployStatus.tsx
+++ b/frontend/resourceadm/components/ResourceDeployStatus/ResourceDeployStatus.tsx
@@ -4,7 +4,7 @@ import classes from './ResourceDeployStatus.module.css';
import { ArrowRightIcon } from '@studio/icons';
import type { NavigationBarPage } from '../../types/NavigationBarPage';
import type { DeployError } from '../../types/DeployError';
-import { Alert, Paragraph } from '@digdir/design-system-react';
+import { Alert, Paragraph } from '@digdir/designsystemet-react';
import { LinkButton } from '../LinkButton';
import { StudioLabelAsParagraph } from '@studio/components';
diff --git a/frontend/resourceadm/components/ResourceNameAndId/ResourceNameAndId.tsx b/frontend/resourceadm/components/ResourceNameAndId/ResourceNameAndId.tsx
index 74070c5700c..79f2870f97c 100644
--- a/frontend/resourceadm/components/ResourceNameAndId/ResourceNameAndId.tsx
+++ b/frontend/resourceadm/components/ResourceNameAndId/ResourceNameAndId.tsx
@@ -1,4 +1,4 @@
-import { Paragraph, Textfield } from '@digdir/design-system-react';
+import { Paragraph, Textfield } from '@digdir/designsystemet-react';
import { StudioButton } from '@studio/components';
import { CheckmarkIcon, MultiplyIcon, PencilWritingIcon } from '@studio/icons';
import React, { useEffect, useState } from 'react';
diff --git a/frontend/resourceadm/components/ResourcePageInputs/InputFieldErrorMessage.tsx b/frontend/resourceadm/components/ResourcePageInputs/InputFieldErrorMessage.tsx
index 9c68ce298f5..b1012d16a9e 100644
--- a/frontend/resourceadm/components/ResourcePageInputs/InputFieldErrorMessage.tsx
+++ b/frontend/resourceadm/components/ResourcePageInputs/InputFieldErrorMessage.tsx
@@ -1,4 +1,4 @@
-import { ErrorMessage } from '@digdir/design-system-react';
+import { ErrorMessage } from '@digdir/designsystemet-react';
import classes from './ResourcePageInputs.module.css';
import React from 'react';
diff --git a/frontend/resourceadm/components/ResourcePageInputs/ResourceCheckboxGroup.tsx b/frontend/resourceadm/components/ResourcePageInputs/ResourceCheckboxGroup.tsx
index 7625dffb14e..e6a3d1035fb 100644
--- a/frontend/resourceadm/components/ResourcePageInputs/ResourceCheckboxGroup.tsx
+++ b/frontend/resourceadm/components/ResourcePageInputs/ResourceCheckboxGroup.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import classes from './ResourcePageInputs.module.css';
-import { Checkbox } from '@digdir/design-system-react';
+import { Checkbox } from '@digdir/designsystemet-react';
import { useTranslation } from 'react-i18next';
import { InputFieldErrorMessage } from './InputFieldErrorMessage';
import { ResourceFieldHeader } from './ResourceFieldHeader';
diff --git a/frontend/resourceadm/components/ResourcePageInputs/ResourceFieldHeader.tsx b/frontend/resourceadm/components/ResourcePageInputs/ResourceFieldHeader.tsx
index 413b0e7b954..6efc3c64476 100644
--- a/frontend/resourceadm/components/ResourcePageInputs/ResourceFieldHeader.tsx
+++ b/frontend/resourceadm/components/ResourcePageInputs/ResourceFieldHeader.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
-import { Tag } from '@digdir/design-system-react';
+import { Tag } from '@digdir/designsystemet-react';
import classes from './ResourcePageInputs.module.css';
interface ResourceFieldHeaderProps {
diff --git a/frontend/resourceadm/components/ResourcePageInputs/ResourceLanguageTextField.tsx b/frontend/resourceadm/components/ResourcePageInputs/ResourceLanguageTextField.tsx
index df2e3022e17..0f075c68429 100644
--- a/frontend/resourceadm/components/ResourcePageInputs/ResourceLanguageTextField.tsx
+++ b/frontend/resourceadm/components/ResourcePageInputs/ResourceLanguageTextField.tsx
@@ -1,6 +1,6 @@
import React, { useState } from 'react';
import classes from './ResourcePageInputs.module.css';
-import { Textarea, Textfield } from '@digdir/design-system-react';
+import { Textarea, Textfield } from '@digdir/designsystemet-react';
import { RightTranslationBar } from '../RightTranslationBar';
import type { ResourceFormError, SupportedLanguage } from 'app-shared/types/ResourceAdm';
import { ResourceFieldHeader } from './ResourceFieldHeader';
diff --git a/frontend/resourceadm/components/ResourcePageInputs/ResourceRadioGroup.tsx b/frontend/resourceadm/components/ResourcePageInputs/ResourceRadioGroup.tsx
index 456dfd31e8c..81da3027d24 100644
--- a/frontend/resourceadm/components/ResourcePageInputs/ResourceRadioGroup.tsx
+++ b/frontend/resourceadm/components/ResourcePageInputs/ResourceRadioGroup.tsx
@@ -1,6 +1,6 @@
import React, { useState } from 'react';
import classes from './ResourcePageInputs.module.css';
-import { Radio } from '@digdir/design-system-react';
+import { Radio } from '@digdir/designsystemet-react';
import { InputFieldErrorMessage } from './InputFieldErrorMessage';
import { ResourceFieldHeader } from './ResourceFieldHeader';
import type { ResourceFormError } from 'app-shared/types/ResourceAdm';
diff --git a/frontend/resourceadm/components/ResourcePageInputs/ResourceSwitchInput.tsx b/frontend/resourceadm/components/ResourcePageInputs/ResourceSwitchInput.tsx
index 22571316891..1f17db217a9 100644
--- a/frontend/resourceadm/components/ResourcePageInputs/ResourceSwitchInput.tsx
+++ b/frontend/resourceadm/components/ResourcePageInputs/ResourceSwitchInput.tsx
@@ -1,6 +1,6 @@
import React, { useState } from 'react';
import classes from './ResourcePageInputs.module.css';
-import { Label, Paragraph, Switch } from '@digdir/design-system-react';
+import { Label, Paragraph, Switch } from '@digdir/designsystemet-react';
import { useTranslation } from 'react-i18next';
type ResourceSwitchInputProps = {
diff --git a/frontend/resourceadm/components/ResourcePageInputs/ResourceTextField.tsx b/frontend/resourceadm/components/ResourcePageInputs/ResourceTextField.tsx
index 906537c7dda..5ddb983d036 100644
--- a/frontend/resourceadm/components/ResourcePageInputs/ResourceTextField.tsx
+++ b/frontend/resourceadm/components/ResourcePageInputs/ResourceTextField.tsx
@@ -1,6 +1,6 @@
import React, { useState, forwardRef } from 'react';
import classes from './ResourcePageInputs.module.css';
-import { Textfield } from '@digdir/design-system-react';
+import { Textfield } from '@digdir/designsystemet-react';
import { InputFieldErrorMessage } from './InputFieldErrorMessage';
import { ResourceFieldHeader } from './ResourceFieldHeader';
diff --git a/frontend/resourceadm/components/ResourceReferenceFields/ResourceReferenceFieldset.tsx b/frontend/resourceadm/components/ResourceReferenceFields/ResourceReferenceFieldset.tsx
index 88c52ac7657..ce563584eea 100644
--- a/frontend/resourceadm/components/ResourceReferenceFields/ResourceReferenceFieldset.tsx
+++ b/frontend/resourceadm/components/ResourceReferenceFields/ResourceReferenceFieldset.tsx
@@ -1,6 +1,6 @@
import React, { useState } from 'react';
import { useTranslation } from 'react-i18next';
-import { Fieldset, Textfield, NativeSelect } from '@digdir/design-system-react';
+import { Fieldset, Textfield, NativeSelect } from '@digdir/designsystemet-react';
import type {
ResourceFormError,
ResourceReference,
diff --git a/frontend/resourceadm/components/ResourceSeachBox/ResourceSeachBox.tsx b/frontend/resourceadm/components/ResourceSeachBox/ResourceSeachBox.tsx
index 445599a654c..de9f4ed4159 100644
--- a/frontend/resourceadm/components/ResourceSeachBox/ResourceSeachBox.tsx
+++ b/frontend/resourceadm/components/ResourceSeachBox/ResourceSeachBox.tsx
@@ -1,7 +1,7 @@
import type { ChangeEvent } from 'react';
import React from 'react';
import classes from './ResourceSeachBox.module.css';
-import { Textfield } from '@digdir/design-system-react';
+import { Textfield } from '@digdir/designsystemet-react';
import { useTranslation } from 'react-i18next';
export type SearchBoxProps = {
diff --git a/frontend/resourceadm/components/ResourceTable/ResourceTable.tsx b/frontend/resourceadm/components/ResourceTable/ResourceTable.tsx
index bc8bb75bb4f..4d0e1b87109 100644
--- a/frontend/resourceadm/components/ResourceTable/ResourceTable.tsx
+++ b/frontend/resourceadm/components/ResourceTable/ResourceTable.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import classes from './ResourceTable.module.css';
import { PencilIcon, FileImportIcon } from '@studio/icons';
-import { Tag } from '@digdir/design-system-react';
+import { Tag } from '@digdir/designsystemet-react';
import { StudioButton, StudioSpinner, StudioTableLocalPagination } from '@studio/components';
import type { Columns } from '@studio/components';
import type { ResourceListItem } from 'app-shared/types/ResourceAdm';
diff --git a/frontend/resourceadm/components/RightTranslationBar/RightTranslationBar.tsx b/frontend/resourceadm/components/RightTranslationBar/RightTranslationBar.tsx
index 27f2a362bc1..79a99da3a5a 100644
--- a/frontend/resourceadm/components/RightTranslationBar/RightTranslationBar.tsx
+++ b/frontend/resourceadm/components/RightTranslationBar/RightTranslationBar.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import classes from './RightTranslationBar.module.css';
import { GlobeIcon } from '@studio/icons';
-import { Textfield, Alert, Paragraph, Heading, Textarea } from '@digdir/design-system-react';
+import { Textfield, Alert, Paragraph, Heading, Textarea } from '@digdir/designsystemet-react';
import { useTranslation } from 'react-i18next';
import { mapLanguageKeyToLanguageText } from '../../utils/resourceUtils';
import type {
diff --git a/frontend/resourceadm/pages/AboutResourcePage/AboutResourcePage.tsx b/frontend/resourceadm/pages/AboutResourcePage/AboutResourcePage.tsx
index aaa4210cf7f..bb280a13d1a 100644
--- a/frontend/resourceadm/pages/AboutResourcePage/AboutResourcePage.tsx
+++ b/frontend/resourceadm/pages/AboutResourcePage/AboutResourcePage.tsx
@@ -1,6 +1,6 @@
import React, { useState } from 'react';
import classes from './AboutResourcePage.module.css';
-import { ErrorSummary, Heading } from '@digdir/design-system-react';
+import { ErrorSummary, Heading } from '@digdir/designsystemet-react';
import type { Translation } from '../../types/Translation';
import type {
Resource,
diff --git a/frontend/resourceadm/pages/AccessListPage/AccessListPage.tsx b/frontend/resourceadm/pages/AccessListPage/AccessListPage.tsx
index ba0ae496b65..2f233047457 100644
--- a/frontend/resourceadm/pages/AccessListPage/AccessListPage.tsx
+++ b/frontend/resourceadm/pages/AccessListPage/AccessListPage.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
-import { Alert } from '@digdir/design-system-react';
+import { Alert } from '@digdir/designsystemet-react';
import { StudioSpinner } from '@studio/components';
import { AccessListDetail } from '../../components/AccessListDetails';
import { useGetAccessListQuery } from '../../hooks/queries/useGetAccessListQuery';
diff --git a/frontend/resourceadm/pages/DeployResourcePage/DeployResourcePage.tsx b/frontend/resourceadm/pages/DeployResourcePage/DeployResourcePage.tsx
index b8785d4b046..b8af8828b24 100644
--- a/frontend/resourceadm/pages/DeployResourcePage/DeployResourcePage.tsx
+++ b/frontend/resourceadm/pages/DeployResourcePage/DeployResourcePage.tsx
@@ -11,7 +11,7 @@ import {
Link,
Alert,
ErrorMessage,
-} from '@digdir/design-system-react';
+} from '@digdir/designsystemet-react';
import type { NavigationBarPage } from '../../types/NavigationBarPage';
import type { DeployError } from '../../types/DeployError';
import {
diff --git a/frontend/resourceadm/pages/ErrorPage/ErrorPage.tsx b/frontend/resourceadm/pages/ErrorPage/ErrorPage.tsx
index 06961624654..ad9dcd8a43e 100644
--- a/frontend/resourceadm/pages/ErrorPage/ErrorPage.tsx
+++ b/frontend/resourceadm/pages/ErrorPage/ErrorPage.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import classes from './ErrorPage.module.css';
-import { Heading, Link } from '@digdir/design-system-react';
+import { Heading, Link } from '@digdir/designsystemet-react';
import { useTranslation } from 'react-i18next';
/**
diff --git a/frontend/resourceadm/pages/ListAdminPage/ListAdminPage.tsx b/frontend/resourceadm/pages/ListAdminPage/ListAdminPage.tsx
index 396ef29f989..35f0f9ba469 100644
--- a/frontend/resourceadm/pages/ListAdminPage/ListAdminPage.tsx
+++ b/frontend/resourceadm/pages/ListAdminPage/ListAdminPage.tsx
@@ -1,7 +1,7 @@
import React, { useRef, useEffect, useCallback } from 'react';
import { Link, useNavigate } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
-import { Heading, Link as DigdirLink, ToggleGroup } from '@digdir/design-system-react';
+import { Heading, Link as DigdirLink, ToggleGroup } from '@digdir/designsystemet-react';
import { StudioSpinner, StudioButton } from '@studio/components';
import { PencilWritingIcon, PlusIcon } from '@studio/icons';
import classes from './ListAdminPage.module.css';
diff --git a/frontend/resourceadm/pages/MigrationPage/MigrationPage.tsx b/frontend/resourceadm/pages/MigrationPage/MigrationPage.tsx
index 2b5bf3ac208..3c1c6b7f974 100644
--- a/frontend/resourceadm/pages/MigrationPage/MigrationPage.tsx
+++ b/frontend/resourceadm/pages/MigrationPage/MigrationPage.tsx
@@ -14,7 +14,7 @@ import {
Label,
Link,
Radio,
-} from '@digdir/design-system-react';
+} from '@digdir/designsystemet-react';
import type { NavigationBarPage } from '../../types/NavigationBarPage';
import { useTranslation } from 'react-i18next';
import { useUrlParams } from '../../hooks/useUrlParams';
diff --git a/frontend/resourceadm/pages/PolicyEditorPage/PolicyEditorPage.tsx b/frontend/resourceadm/pages/PolicyEditorPage/PolicyEditorPage.tsx
index 0576e149bfb..d187a5b86ff 100644
--- a/frontend/resourceadm/pages/PolicyEditorPage/PolicyEditorPage.tsx
+++ b/frontend/resourceadm/pages/PolicyEditorPage/PolicyEditorPage.tsx
@@ -6,7 +6,7 @@ import {
mergeSubjectsFromPolicyWithSubjectOptions,
} from '@altinn/policy-editor';
import type { Policy } from '@altinn/policy-editor';
-import { Spinner, Heading } from '@digdir/design-system-react';
+import { Spinner, Heading } from '@digdir/designsystemet-react';
import { useResourcePolicyQuery } from '../../hooks/queries';
import { useEditResourcePolicyMutation } from '../../hooks/mutations';
import { useTranslation } from 'react-i18next';
diff --git a/frontend/resourceadm/pages/ResourceDashboardPage/ResourceDashboardPage.tsx b/frontend/resourceadm/pages/ResourceDashboardPage/ResourceDashboardPage.tsx
index ff47c6aaa22..b3ce59c3e05 100644
--- a/frontend/resourceadm/pages/ResourceDashboardPage/ResourceDashboardPage.tsx
+++ b/frontend/resourceadm/pages/ResourceDashboardPage/ResourceDashboardPage.tsx
@@ -3,7 +3,7 @@ import { useNavigate, Link } from 'react-router-dom';
import { toast } from 'react-toastify';
import classes from './ResourceDashboardPage.module.css';
import { PlusCircleIcon, MigrationIcon, TasklistIcon } from '@studio/icons';
-import { Spinner, Heading } from '@digdir/design-system-react';
+import { Spinner, Heading } from '@digdir/designsystemet-react';
import { ResourceTable } from '../../components/ResourceTable';
import { SearchBox } from '../../components/ResourceSeachBox';
import { useGetResourceListQuery, useOrganizationsQuery } from '../../hooks/queries';
diff --git a/frontend/resourceadm/pages/ResourcePage/ResourcePage.tsx b/frontend/resourceadm/pages/ResourcePage/ResourcePage.tsx
index 8b25ce094a4..9ab1872adc5 100644
--- a/frontend/resourceadm/pages/ResourcePage/ResourcePage.tsx
+++ b/frontend/resourceadm/pages/ResourcePage/ResourcePage.tsx
@@ -13,7 +13,7 @@ import {
import { MergeConflictModal } from '../../components/MergeConflictModal';
import { AboutResourcePage } from '../AboutResourcePage';
import { NavigationModal } from '../../components/NavigationModal';
-import { Spinner } from '@digdir/design-system-react';
+import { Spinner } from '@digdir/designsystemet-react';
import { useEditResourceMutation } from '../../hooks/mutations';
import { MigrationPage } from '../MigrationPage';
import { useRepoStatusQuery } from 'app-shared/hooks/queries';
diff --git a/frontend/resourceadm/testing/playwright/pages/ResourcePage.ts b/frontend/resourceadm/testing/playwright/pages/ResourcePage.ts
index fe809aec19e..f84de38cbca 100644
--- a/frontend/resourceadm/testing/playwright/pages/ResourcePage.ts
+++ b/frontend/resourceadm/testing/playwright/pages/ResourcePage.ts
@@ -22,6 +22,7 @@ export class ResourcePage extends ResourceEnvironment {
private readonly availableForTypeCheckbox: Locator;
private readonly categoryTextField: Locator;
private readonly policyTab: Locator;
+ private readonly ruleHeader: Locator;
private readonly addPolicyRuleButton: Locator;
private readonly policyActionDropdown: Locator;
private readonly policySubjectDropdown: Locator;
@@ -81,6 +82,7 @@ export class ResourcePage extends ResourceEnvironment {
this.availableForTypeCheckbox = this.page.getByRole('checkbox', {
name: textMock('resourceadm.about_resource_available_for_type_private'),
});
+ this.ruleHeader = this.page.getByLabel(textMock('policy_editor.rule'));
this.categoryTextField = this.page.getByLabel(
textMock('resourceadm.about_resource_contact_label_category'),
);
@@ -165,7 +167,9 @@ export class ResourcePage extends ResourceEnvironment {
}
public async setAvailableForType(): Promise {
- await this.availableForTypeCheckbox.click();
+ if (!this.availableForTypeCheckbox.isChecked()) {
+ await this.availableForTypeCheckbox.click();
+ }
}
public async writeCategoryTextField(value: string): Promise {
@@ -176,17 +180,21 @@ export class ResourcePage extends ResourceEnvironment {
await this.policyTab.click();
}
- public async clickAddPolicyRule(): Promise {
- await this.addPolicyRuleButton.click();
+ public async addPolicyRule(): Promise {
+ if (!this.ruleHeader.isVisible()) {
+ await this.addPolicyRuleButton.click();
+ await this.setPolicyAction();
+ await this.setPolicySubject();
+ }
}
- public async setPolicyAction(): Promise {
+ private async setPolicyAction(): Promise {
await this.policyActionDropdown.click();
await this.policyActionDropdown.press('ArrowDown');
await this.policyActionDropdown.press('Enter');
}
- public async setPolicySubject(): Promise {
+ private async setPolicySubject(): Promise {
await this.policySubjectDropdown.click();
await this.policySubjectDropdown.press('ArrowDown');
await this.policySubjectDropdown.press('Enter');
diff --git a/frontend/resourceadm/testing/playwright/tests/validate-resource/validate-resource.spec.ts b/frontend/resourceadm/testing/playwright/tests/validate-resource/validate-resource.spec.ts
index 8ce79d30030..5ce383aeedf 100644
--- a/frontend/resourceadm/testing/playwright/tests/validate-resource/validate-resource.spec.ts
+++ b/frontend/resourceadm/testing/playwright/tests/validate-resource/validate-resource.spec.ts
@@ -2,26 +2,16 @@ import { expect, test } from '@playwright/test';
import { DesignerApi } from '../../helpers/DesignerApi';
import type { StorageState } from '../../types/StorageState';
import { ResourcePage } from '../../pages/ResourcePage';
-import { GiteaApi } from '../../helpers/GiteaApi';
const resourceId = 'playwright_deploy_resource';
test.beforeAll(async ({ request, storageState }) => {
- // re-create resources repo
- const giteaApi = new GiteaApi();
- await giteaApi.deleteResourcesRepo(request);
- await giteaApi.createResourcesRepo(request);
-
const designerApi = new DesignerApi(resourceId);
const resetResponse = await designerApi.resetResourceRepo(request, storageState as StorageState);
expect(resetResponse.ok()).toBeTruthy();
- // create resource
- const createResourceResponse = await designerApi.createResource(
- request,
- storageState as StorageState,
- );
- expect(createResourceResponse.ok()).toBeTruthy();
+ // create resource (if it does not exist)
+ await designerApi.createResource(request, storageState as StorageState);
});
test('should be able to validate resource so it is ready to be deployed', async ({
@@ -43,9 +33,7 @@ test('should be able to validate resource so it is ready to be deployed', async
await resourcePage.writeCategoryTextField('category');
await resourcePage.setAvailableForType();
await resourcePage.gotoPolicyTab();
- await resourcePage.clickAddPolicyRule();
- await resourcePage.setPolicyAction();
- await resourcePage.setPolicySubject();
+ await resourcePage.addPolicyRule();
await resourcePage.gotoPublishTab();
await resourcePage.writeVersionTextField(`${Date.now()}`);
await resourcePage.verifyRepoNotInSyncVisible();
diff --git a/frontend/studio-root/app/App.tsx b/frontend/studio-root/app/App.tsx
index 2ea92384cbf..f20c8a16205 100644
--- a/frontend/studio-root/app/App.tsx
+++ b/frontend/studio-root/app/App.tsx
@@ -2,7 +2,7 @@ import React from 'react';
import classes from './App.module.css';
import { Route, Routes } from 'react-router-dom';
import { StudioNotFoundPage } from '@studio/components';
-import { Paragraph, Link } from '@digdir/design-system-react';
+import { Paragraph, Link } from '@digdir/designsystemet-react';
import { useTranslation, Trans } from 'react-i18next';
import './App.css';
diff --git a/frontend/studio-root/pages/Contact/Contact.tsx b/frontend/studio-root/pages/Contact/Contact.tsx
index fee8df7daa3..0e0a0570340 100644
--- a/frontend/studio-root/pages/Contact/Contact.tsx
+++ b/frontend/studio-root/pages/Contact/Contact.tsx
@@ -1,6 +1,6 @@
import React from 'react';
import classes from './Contact.module.css';
-import { Heading, Link, Paragraph } from '@digdir/design-system-react';
+import { Heading, Link, Paragraph } from '@digdir/designsystemet-react';
import { Trans, useTranslation } from 'react-i18next';
import { EnvelopeClosedIcon, SlackIcon, GitHubIcon } from '@studio/icons';
import { PageContainer } from 'app-shared/components/PageContainer/PageContainer';
diff --git a/frontend/testing/playwright/components/SettingsModal.ts b/frontend/testing/playwright/components/SettingsModal.ts
index 37c43b13d36..af75a7cb375 100644
--- a/frontend/testing/playwright/components/SettingsModal.ts
+++ b/frontend/testing/playwright/components/SettingsModal.ts
@@ -14,13 +14,17 @@ export class SettingsModal extends BasePage {
.getByRole('heading', {
name: this.textMock('settings_modal.heading'),
level: 1,
+ exact: true,
})
.isVisible();
}
public async clickOnCloseSettingsModalButton(): Promise {
await this.page
- .getByRole('button', { name: this.textMock('settings_modal.close_button_label') })
+ .getByRole('button', {
+ name: this.textMock('settings_modal.close_button_label'),
+ exact: true,
+ })
.click();
}
@@ -29,13 +33,14 @@ export class SettingsModal extends BasePage {
.getByRole('heading', {
name: this.textMock('settings_modal.heading'),
level: 1,
+ exact: true,
})
.isHidden();
}
public async navigateToTab(tab: SettingsModalTab): Promise {
await this.page
- .getByRole('tab', { name: this.textMock(`settings_modal.left_nav_tab_${tab}`) })
+ .getByRole('tab', { name: this.textMock(`settings_modal.left_nav_tab_${tab}`), exact: true })
.click();
}
@@ -44,6 +49,7 @@ export class SettingsModal extends BasePage {
.getByRole('heading', {
name: this.textMock(`settings_modal.${tabHeading}_tab_heading`),
level: 2,
+ exact: true,
})
.isVisible();
}
@@ -53,6 +59,7 @@ export class SettingsModal extends BasePage {
.getByRole('heading', {
name: this.textMock(`settings_modal.${tabHeading}_tab_heading`),
level: 2,
+ exact: true,
})
.isHidden();
}
diff --git a/frontend/testing/playwright/pages/DashboardPage.ts b/frontend/testing/playwright/pages/DashboardPage.ts
index 83af0a2b783..78c8b8d94b0 100644
--- a/frontend/testing/playwright/pages/DashboardPage.ts
+++ b/frontend/testing/playwright/pages/DashboardPage.ts
@@ -118,6 +118,6 @@ export class DashboardPage extends BasePage {
}
public async clickOnLogOutButton(): Promise {
- await this.page.getByRole('menuitem', { name: this.textMock('dashboard.logout') }).click();
+ await this.page.getByRole('menuitem', { name: this.textMock('shared.header_logout') }).click();
}
}
diff --git a/frontend/testing/playwright/pages/UiEditorPage.ts b/frontend/testing/playwright/pages/UiEditorPage.ts
index a1dc554f48b..7a2b5a76c0d 100644
--- a/frontend/testing/playwright/pages/UiEditorPage.ts
+++ b/frontend/testing/playwright/pages/UiEditorPage.ts
@@ -161,6 +161,7 @@ export class UiEditorPage extends BasePage {
await this.page
.getByRole('button', {
name: this.textMock('general.close'),
+ exact: true,
})
.click();
}
@@ -217,6 +218,7 @@ export class UiEditorPage extends BasePage {
await this.page
.getByRole('button', {
name: this.textMock('general.close'),
+ exact: true,
})
.click();
}
diff --git a/package.json b/package.json
index 08406cc0bec..48eef9c580e 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"dependencies": {
"@altinn/altinn-design-system": "0.30.0",
"@altinn/figma-design-tokens": "6.0.1",
- "@digdir/design-system-react": "0.53.12",
+ "@digdir/design-system-react": "0.54.0",
"@digdir/design-system-tokens": "0.13.0",
"@digdir/designsystemet-css": "0.10.0",
"@digdir/designsystemet-react": "0.63.0",
@@ -96,7 +96,7 @@
"syncpack": "npx syncpack fix-mismatches && npx syncpack format && npx syncpack set-semver-ranges",
"test": "jest --maxWorkers=50% --config=frontend/jest.config.js",
"test:ci": "jest --ci --coverage --max-workers=2 --cacheDirectory=$(yarn config get cacheFolder) --config=frontend/jest.config.js",
- "typecheck": "yarn workspaces foreach -A run typecheck",
+ "typecheck": "tsc --noEmit -p frontend",
"playwright:test:all": "yarn workspace playwright-studio test:all",
"playwright:test:ui": "yarn workspace playwright-studio test:ui",
"resourceadm:playwright:test:ui": "yarn workspace playwright-resourceadm resourceadm:test:ui",
diff --git a/yarn.lock b/yarn.lock
index b21d8640c3b..676f2d3a579 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3397,19 +3397,19 @@ __metadata:
languageName: node
linkType: hard
-"@digdir/design-system-react@npm:0.53.12":
- version: 0.53.12
- resolution: "@digdir/design-system-react@npm:0.53.12"
+"@digdir/design-system-react@npm:0.54.0":
+ version: 0.54.0
+ resolution: "@digdir/design-system-react@npm:0.54.0"
dependencies:
"@altinn/figma-design-tokens": "npm:^6.0.1"
- "@digdir/designsystemet-react": "npm:^0.62.0"
+ "@digdir/designsystemet-theme": "npm:0.15.3"
"@floating-ui/react": "npm:0.26.4"
"@navikt/aksel-icons": "npm:^5.12.2"
react-number-format: "npm:5.3.1"
peerDependencies:
react: ">=18.3.1"
react-dom: ">=18.3.1"
- checksum: 10/72d40ab401b1e627820c6a22644d3a6617ae208ec28622c489f56127b0a5c661c84d057d44eeb653493f76de453ef09bf7f6d9551db998f7b1a47fac6ae79734
+ checksum: 10/d2311330f2cd4c9ccb5cc593cfdedf2b546316c49a92ae9d8db67059d12298f533377258d8554484d4154ffc78b0a9ff9df34ac656d8f0af236fa947a9ffaf31
languageName: node
linkType: hard
@@ -3449,21 +3449,6 @@ __metadata:
languageName: node
linkType: hard
-"@digdir/designsystemet-react@npm:^0.62.0":
- version: 0.62.0
- resolution: "@digdir/designsystemet-react@npm:0.62.0"
- dependencies:
- "@floating-ui/react": "npm:0.26.12"
- "@navikt/aksel-icons": "npm:^5.12.2"
- "@radix-ui/react-slot": "npm:^1.0.2"
- "@tanstack/react-virtual": "npm:^3.2.0"
- peerDependencies:
- react: ">=18.3.1"
- react-dom: ">=18.3.1"
- checksum: 10/c1f488c482a5358c9b6d4fd9a15390bbe923cba824cd6dddb47cbbf55e7be07fd4e2e4358767498995d95209352890a1a662a2cc748e37ed005a07ae9e35303f
- languageName: node
- linkType: hard
-
"@digdir/designsystemet-theme@npm:0.15.3":
version: 0.15.3
resolution: "@digdir/designsystemet-theme@npm:0.15.3"
@@ -8946,7 +8931,7 @@ __metadata:
dependencies:
"@altinn/altinn-design-system": "npm:0.30.0"
"@altinn/figma-design-tokens": "npm:6.0.1"
- "@digdir/design-system-react": "npm:0.53.12"
+ "@digdir/design-system-react": "npm:0.54.0"
"@digdir/design-system-tokens": "npm:0.13.0"
"@digdir/designsystemet-css": "npm:0.10.0"
"@digdir/designsystemet-react": "npm:0.63.0"