Compare commits

...
Author SHA1 Message Date
github-actions[bot]andgithub-actions[bot] f7789522c6 Version Packages (#3307)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-10-31 12:27:02 +01:00
Julian Nymark a9a1182eff Website: 🐛 code example chip to same on first page (#3310)
* 🐛 fix bug still appearing on first page load

* Website: ♻️
2024-10-31 11:50:32 +01:00
Ken 35f7355233 bug: Checks if autocomplete should actually be used when pressing enter (#3306) 2024-10-31 09:56:16 +01:00
Julian NymarkandHalvor Haugan bbc06a3eab ErrorSummary: add translation support (#3245)
* ErrorSummary: add translation support

* Update @navikt/core/react/src/form/error-summary/ErrorSummary.tsx

Co-authored-by: Halvor Haugan <83693529+HalvorHaugan@users.noreply.github.com>

* Update @navikt/core/react/src/util/i18n/locales/nn.ts

Co-authored-by: Halvor Haugan <83693529+HalvorHaugan@users.noreply.github.com>

* ErrorSummary: fix broken object notation (thanks github conflict webGUI! 😂)

* ErrorSummary: use proper casing for translations object

---------

Co-authored-by: Halvor Haugan <83693529+HalvorHaugan@users.noreply.github.com>
2024-10-30 16:07:47 +01:00
Halvor Haugan 6e49de805f Textarea: translations (#3302) 2024-10-30 15:31:37 +01:00
31 changed files with 191 additions and 95 deletions

No files matched your search

+2
View File
@@ -1,5 +1,7 @@
# @navikt/aksel-icons
## 7.4.2
## 7.4.1
## 7.4.0
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/aksel-icons",
"version": "7.4.1",
"version": "7.4.2",
"author": "Aksel | NAV",
"homepage": "https://aksel.nav.no/ikoner",
"repository": {
+2
View File
@@ -1,5 +1,7 @@
# @navikt/aksel-stylelint
## 7.4.2
## 7.4.1
## 7.4.0
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/aksel-stylelint",
"version": "7.4.1",
"version": "7.4.2",
"author": "Aksel | NAV",
"homepage": "https://aksel.nav.no/grunnleggende/kode/stylelint",
"repository": {
@@ -35,8 +35,8 @@
"dev": "yarn watch:lint"
},
"devDependencies": {
"@navikt/ds-css": "^7.4.1",
"@navikt/ds-tokens": "^7.4.1",
"@navikt/ds-css": "^7.4.2",
"@navikt/ds-tokens": "^7.4.2",
"concurrently": "9.0.1",
"postcss-selector-parser": "^6.0.13",
"postcss-value-parser": "^4.2.0",
+7
View File
@@ -1,5 +1,12 @@
# @navikt/aksel
## 7.4.2
### Patch Changes
- Updated dependencies []:
- @navikt/ds-css@7.4.2
## 7.4.1
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/aksel",
"version": "7.4.1",
"version": "7.4.2",
"description": "Aksel command line interface. Handles css-imports, codemods and more",
"author": "Aksel | NAV designsystem team",
"license": "MIT",
@@ -29,7 +29,7 @@
},
"homepage": "https://aksel.nav.no/grunnleggende/kode/kommandolinje",
"dependencies": {
"@navikt/ds-css": "7.4.1",
"@navikt/ds-css": "7.4.2",
"axios": "1.7.4",
"chalk": "4.1.0",
"clipboardy": "^2.3.0",
+2
View File
@@ -1,5 +1,7 @@
# @navikt/ds-css
## 7.4.2
## 7.4.1
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/ds-css",
"version": "7.4.1",
"version": "7.4.2",
"description": "CSS for NAV Designsystem",
"author": "Aksel | NAV designsystem team",
"keywords": [
@@ -27,7 +27,7 @@
"css:get-version": "node config/get-version.js"
},
"devDependencies": {
"@navikt/ds-tokens": "^7.4.1",
"@navikt/ds-tokens": "^7.4.2",
"autoprefixer": "^10.4.20",
"cssnano": "6.0.0",
"fast-glob": "3.2.11",
+10
View File
@@ -1,5 +1,15 @@
# @navikt/ds-react
## 7.4.2
### Patch Changes
- Combobox: Pressing 'Enter' after canceling autocomplete could result in using matching options in list. ([#3306](https://github.com/navikt/aksel/pull/3306))
- Updated dependencies []:
- @navikt/ds-tokens@7.4.2
- @navikt/aksel-icons@7.4.2
## 7.4.1
### Patch Changes
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/ds-react",
"version": "7.4.1",
"version": "7.4.2",
"description": "React components from the Norwegian Labour and Welfare Administration.",
"author": "Aksel, a team part of the Norwegian Labour and Welfare Administration.",
"license": "MIT",
@@ -604,8 +604,8 @@
"dependencies": {
"@floating-ui/react": "0.25.4",
"@floating-ui/react-dom": "^2.0.9",
"@navikt/aksel-icons": "^7.4.1",
"@navikt/ds-tokens": "^7.4.1",
"@navikt/aksel-icons": "^7.4.2",
"@navikt/ds-tokens": "^7.4.2",
"clsx": "^2.1.0",
"date-fns": "^3.0.0",
"react-day-picker": "8.10.1"
@@ -100,9 +100,22 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
value,
filteredOptions,
);
/*
* User can have matching results, while not using the autocomplete result
* E.g. User types "Oslo", list has is "Oslo kommune", but user hits backspace, canceling autocomplete.
*/
const autoCompleteMatchesValue =
filteredOptionsUtil.normalizeText(value) ===
filteredOptionsUtil.normalizeText(autoCompletedOption?.label ?? "");
let selectedValue: ComboboxOption | undefined;
if (shouldAutocomplete && autoCompletedOption) {
if (
shouldAutocomplete &&
autoCompletedOption &&
autoCompleteMatchesValue
) {
selectedValue = autoCompletedOption;
} else if (allowNewValues && isValueNew) {
selectedValue = { label: value, value };
@@ -3,6 +3,7 @@ import React, { HTMLAttributes, forwardRef, useRef } from "react";
import { BodyShort, Heading } from "../../typography";
import { composeEventHandlers } from "../../util/composeEventHandlers";
import { useMergeRefs } from "../../util/hooks";
import { useI18n } from "../../util/i18n/i18n.context";
import ErrorSummaryItem from "./ErrorSummaryItem";
export interface ErrorSummaryProps
@@ -72,11 +73,12 @@ export const ErrorSummary = forwardRef<HTMLDivElement, ErrorSummaryProps>(
className,
size = "medium",
headingTag = "h2",
heading = "Du må rette disse feilene før du kan fortsette:",
heading,
...rest
},
ref,
) => {
const translate = useI18n("ErrorSummary");
const wrapperRef = useRef<HTMLDivElement>(null);
const headingRef = useRef<HTMLHeadingElement>(null);
@@ -105,7 +107,7 @@ export const ErrorSummary = forwardRef<HTMLDivElement, ErrorSummaryProps>(
ref={headingRef}
tabIndex={-1}
>
{heading}
{heading ?? translate("heading")}
</Heading>
<BodyShort as="ul" size={size} className="navds-error-summary__list">
{children}
@@ -2,6 +2,8 @@ import { Meta, StoryObj } from "@storybook/react";
import { expect, userEvent, within } from "@storybook/test";
import React, { useRef } from "react";
import { VStack } from "../../layout/stack";
import UNSAFE_AkselLanguageProvider from "../../provider/i18n/LanguageProvider";
import nn from "../../util/i18n/locales/nn";
import { ErrorSummary } from "./ErrorSummary";
export default {
@@ -134,3 +136,18 @@ export const Chromatic: Story = {
chromatic: { disable: false },
},
};
export const ProvidedTranslations: Story = {
render: () => {
return (
<UNSAFE_AkselLanguageProvider translations={nn}>
<ErrorSummary size="small">
<ErrorSummary.Item href="#1">Checkbox må fylles ut</ErrorSummary.Item>
<ErrorSummary.Item href="#2">
Tekstfeltet må ha en godkjent e-mail
</ErrorSummary.Item>
</ErrorSummary>
</UNSAFE_AkselLanguageProvider>
);
},
};
@@ -105,9 +105,7 @@ export const FormProgress = forwardRef<HTMLDivElement, FormProgressProps>(
<Collapsible lazy open={open} onOpenChange={onOpenChange}>
<HStack justify="space-between" align="center">
<BodyShort as="span">
{translate("step", {
replacements: { activeStep, totalSteps },
})}
{translate("step", { activeStep, totalSteps })}
</BodyShort>
<Collapsible.Trigger asChild aria-expanded={undefined}>
<Button
@@ -180,17 +180,13 @@ export const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(
{...(describedBy ? { "aria-describedby": describedBy } : {})}
/>
{hasMaxLength && !readOnly && !inputProps.disabled && (
<>
<span id={maxLengthId} className="navds-sr-only">
{`Tekstområde med plass til ${maxLength} tegn.`}
</span>
<Counter
maxLength={maxLength}
currentLength={props.value?.length ?? uncontrolledValue.length}
size={size}
i18n={i18n}
/>
</>
<Counter
maxLengthId={maxLengthId}
maxLength={maxLength}
currentLength={props.value?.length ?? uncontrolledValue.length}
size={size}
i18n={i18n}
/>
)}
<div
className="navds-form-field__error"
@@ -2,18 +2,32 @@ import cl from "clsx";
import React, { useEffect, useState } from "react";
import { BodyShort } from "../../typography";
import debounce from "../../util/debounce";
import { useI18n } from "../../util/i18n/i18n.context";
import type { TextareaProps } from "./Textarea";
interface Props {
maxLengthId: string;
maxLength: number;
currentLength: number;
size: TextareaProps["size"];
i18n: TextareaProps["i18n"];
}
const TextareaCounter = ({ maxLength, currentLength, size, i18n }: Props) => {
const difference = maxLength - currentLength;
const TextareaCounter = ({
maxLengthId,
maxLength,
currentLength,
size,
i18n,
}: Props) => {
const translate = useI18n("Textarea", {
charsLeft: i18n?.counterLeft ? `{chars} ${i18n.counterLeft}` : undefined,
charsTooMany: i18n?.counterTooMuch
? `{chars} ${i18n.counterTooMuch}`
: undefined,
});
const difference = maxLength - currentLength;
const [debouncedDiff, setDebouncedDiff] = useState(difference);
useEffect(() => {
@@ -29,12 +43,16 @@ const TextareaCounter = ({ maxLength, currentLength, size, i18n }: Props) => {
return (
<>
<span id={maxLengthId} className="navds-sr-only">
{translate("maxLength", { maxLength })}
</span>
{difference < 20 && (
<span
role="status"
className="navds-textarea__sr-counter navds-sr-only"
>
{getCounterText(debouncedDiff, i18n)}
{getCounterText(debouncedDiff, translate)}
</span>
)}
@@ -44,15 +62,21 @@ const TextareaCounter = ({ maxLength, currentLength, size, i18n }: Props) => {
})}
size={size}
>
{getCounterText(difference, i18n)}
{getCounterText(difference, translate)}
</BodyShort>
</>
);
};
const getCounterText = (difference: number, i18n: TextareaProps["i18n"]) =>
const getCounterText = (
difference: number,
translate: (
key: "charsTooMany" | "charsLeft",
replacements?: { chars: number },
) => string,
) =>
difference < 0
? `${Math.abs(difference)} ${i18n?.counterTooMuch ?? "tegn for mye"}`
: `${difference} ${i18n?.counterLeft ?? "tegn igjen"}`;
? translate("charsTooMany", { chars: Math.abs(difference) })
: translate("charsLeft", { chars: difference });
export default TextareaCounter;
@@ -16,16 +16,11 @@ export default meta;
type Story = StoryObj<typeof Textarea>;
export const Default: StoryObj<typeof Textarea> = {
render: (props) => {
return <Textarea {...props} />;
},
export const Default: Story = {
args: {
maxLength: 0,
label: "Ipsum enim quis culpa",
},
argTypes: {
resize: {
control: { type: "radio" },
@@ -122,13 +122,11 @@ export const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(
aria-valuetext={
simulated?.seconds
? translate("progressUnknown", {
replacements: { seconds: Math.round(simulated?.seconds) },
seconds: Math.round(simulated?.seconds),
})
: translate("progress", {
replacements: {
current: Math.round(value),
max: Math.round(valueMax),
},
current: Math.round(value),
max: Math.round(valueMax),
})
}
// biome-ignore lint/a11y/useAriaPropsForRole: We found that adding valueMin was not needed
@@ -79,17 +79,15 @@ describe("useI18n", () => {
};
const { result } = renderHook(() => useI18n("FileUpload", i18n));
const translate = result.current;
expect(
translate("item.uploading", { replacements: { name: "John", cnt: 3 } }),
).toBe("Hello, John. You have 3 messages.");
expect(translate("item.uploading", { name: "John", cnt: 3 })).toBe(
"Hello, John. You have 3 messages.",
);
});
test("should throw an error if replacement key is not found", () => {
const i18n = { item: { uploading: "Hello, {name}" } };
const { result } = renderHook(() => useI18n("FileUpload", i18n));
const translate = result.current;
expect(() =>
translate("item.uploading", { replacements: { other: "John" } }),
).toThrowError();
expect(() => translate("item.uploading", { other: "John" })).toThrowError();
});
});
@@ -27,7 +27,7 @@ export function useI18n<T extends Component>(
*/
const translate = (
keypath: NestedKeyOf<Translations[T]>,
options?: { replacements: Record<string, string | number> },
replacements?: Record<string, string | number>,
) => {
const text = get(
keypath,
@@ -37,19 +37,19 @@ export function useI18n<T extends Component>(
: [i18n[componentName]]),
);
if (options?.replacements) {
if (replacements) {
return text.replace(REPLACE_REGEX, (match) => {
const replacement = match.substring(1, match.length - 1);
if (options.replacements[replacement] === undefined) {
const replacementData = JSON.stringify(options.replacements);
if (replacements[replacement] === undefined) {
const replacementData = JSON.stringify(replacements);
throw new Error(
`Error translating key '${keypath}'. No replacement syntax ({}) found for key '${replacement}'. The following replacements were passed: '${replacementData}'`,
);
}
return options.replacements[replacement] as string; // can also be a number, but JS doesn't mind...
return replacements[replacement] as string; // can also be a number, but JS doesn't mind...
});
}
@@ -42,6 +42,9 @@ export default {
labelSuffix: "delete",
},
},
ErrorSummary: {
heading: "You must correct the following errors before you can continue:",
},
Loader: {
title: "Waiting…",
},
@@ -61,4 +64,9 @@ export default {
clear: "Clear",
search: "Search",
},
Textarea: {
maxLength: "Text area with a {maxLength} character limit.",
charsTooMany: "{chars} characters too many",
charsLeft: "{chars} characters left",
},
} satisfies Translations;
@@ -49,6 +49,9 @@ export default {
labelSuffix: "slett",
},
},
ErrorSummary: {
heading: "Du må rette disse feilene før du kan fortsette:",
},
Loader: {
title: "Venter…",
},
@@ -68,4 +71,10 @@ export default {
clear: "Tøm",
search: "Søk",
},
Textarea: {
/** Screen readers only */
maxLength: "Tekstområde med plass til {maxLength} tegn.",
charsTooMany: "{chars} tegn for mye",
charsLeft: "{chars} tegn igjen",
},
} satisfies TranslationMap;
@@ -42,6 +42,9 @@ export default {
labelSuffix: "slett",
},
},
ErrorSummary: {
heading: "Du må rette desse feila før du kan halde fram:",
},
Loader: {
title: "Ventar…",
},
@@ -61,4 +64,9 @@ export default {
clear: "Tøm",
search: "Søk",
},
Textarea: {
maxLength: "Tekstområde med plass til {maxLength} teikn.",
charsTooMany: "{chars} teikn for mykje",
charsLeft: "{chars} teikn igjen",
},
} satisfies Translations;
+2
View File
@@ -1,5 +1,7 @@
# @navikt/ds-tailwind
## 7.4.2
## 7.4.1
## 7.4.0
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/ds-tailwind",
"version": "7.4.1",
"version": "7.4.2",
"description": "Tailwind config based on @navikt/ds-tokens",
"author": "Aksel | NAV designsystem team",
"keywords": [
@@ -25,7 +25,7 @@
"directory": "@navikt/core/tailwind"
},
"devDependencies": {
"@navikt/ds-tokens": "^7.4.1",
"@navikt/ds-tokens": "^7.4.2",
"color": "4.2.3",
"lodash": "^4.17.21",
"tailwindcss": "^3.3.3",
+2
View File
@@ -1,5 +1,7 @@
# @navikt/ds-tokens
## 7.4.2
## 7.4.1
## 7.4.0
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@navikt/ds-tokens",
"version": "7.4.1",
"version": "7.4.2",
"description": "Design-tokens for NAV designsystem",
"author": "Aksel | NAV designsystem team",
"keywords": [
+12 -10
View File
@@ -4,25 +4,27 @@
### @navikt/ds-react
- Tabs.List: Remove redundant icon titles ([#3282](https://github.com/navikt/aksel/pull/3282))
- Combobox: Pressing 'Enter' after canceling autocomplete could result in using matching options in list. ([#3306](https://github.com/navikt/aksel/pull/3306))
- Combobox: onToggleSelected is now called with correct value when autocomplete and new values are allowed. ([#3287](https://github.com/navikt/aksel/pull/3287))
* Tabs.List: Remove redundant icon titles ([#3282](https://github.com/navikt/aksel/pull/3282))
- Combobox: :bug: Fix scroll issue when using arrow keys to navigate list ([#3269](https://github.com/navikt/aksel/pull/3269))
* Combobox: onToggleSelected is now called with correct value when autocomplete and new values are allowed. ([#3287](https://github.com/navikt/aksel/pull/3287))
- Search: Remove redundant role attribute ([#3280](https://github.com/navikt/aksel/pull/3280))
* Combobox: :bug: Fix scroll issue when using arrow keys to navigate list ([#3269](https://github.com/navikt/aksel/pull/3269))
- Monthpicker: Add allowed input format 'MMyyyy'. ([#3285](https://github.com/navikt/aksel/pull/3285))
* Search: Remove redundant role attribute ([#3280](https://github.com/navikt/aksel/pull/3280))
* Combobox: Enable option to add a new value while autocompleting and highlight matches in FilteredOptions. ([#3225](https://github.com/navikt/aksel/pull/3225))
* Monthpicker: Add allowed input format 'MMyyyy'. ([#3285](https://github.com/navikt/aksel/pull/3285))
- Date/MonthPicker: Upgrade react-day-picker to fix issue with React 19 ([#3268](https://github.com/navikt/aksel/pull/3268))
- Combobox: Enable option to add a new value while autocompleting and highlight matches in FilteredOptions. ([#3225](https://github.com/navikt/aksel/pull/3225))
- Combobox: Don't scroll when browsing list with mouse ([#3265](https://github.com/navikt/aksel/pull/3265))
* Date/MonthPicker: Upgrade react-day-picker to fix issue with React 19 ([#3268](https://github.com/navikt/aksel/pull/3268))
- Avoid warning about element.ref in React 19 ([#3268](https://github.com/navikt/aksel/pull/3268))
* Combobox: Don't scroll when browsing list with mouse ([#3265](https://github.com/navikt/aksel/pull/3265))
- Checkbox: Remove redundant attribute aria-checked ([#3274](https://github.com/navikt/aksel/pull/3274))
* Avoid warning about element.ref in React 19 ([#3268](https://github.com/navikt/aksel/pull/3268))
* Checkbox: Remove redundant attribute aria-checked ([#3274](https://github.com/navikt/aksel/pull/3274))
### @navikt/ds-css
+5 -5
View File
@@ -15,10 +15,10 @@
"playroom"
],
"dependencies": {
"@navikt/aksel-icons": "^7.4.1",
"@navikt/ds-css": "^7.4.1",
"@navikt/ds-react": "^7.4.1",
"@navikt/ds-tailwind": "^7.4.1",
"@navikt/ds-tokens": "^7.4.1"
"@navikt/aksel-icons": "^7.4.2",
"@navikt/ds-css": "^7.4.2",
"@navikt/ds-react": "^7.4.2",
"@navikt/ds-tailwind": "^7.4.2",
"@navikt/ds-tokens": "^7.4.2"
}
}
@@ -101,17 +101,18 @@ const ComponentExamples = ({ node }: CodeExamplesProps) => {
<Chips>
{node.dir.filer.map((fil) => {
const id = `${node.dir.title.toLowerCase()}demo-${fil.navn}`;
const isSelected = active === fil.navn;
return (
<Chips.Toggle
checkmark={false}
key={fil._key}
value={fil.navn}
selected={active === fil.navn}
selected={isSelected}
id={id}
onClick={() => {
const newPath = `${router.asPath.split("#")[0]}#${id}`;
if (newPath === router.asPath) return;
if (isSelected) return;
setUnloaded(true);
const newPath = `${router.asPath.split("#")[0]}#${id}`;
router.replace(newPath);
}}
>
+17 -17
View File
@@ -3711,7 +3711,7 @@ __metadata:
languageName: node
linkType: hard
"@navikt/aksel-icons@npm:^7.4.0, @navikt/aksel-icons@workspace:@navikt/aksel-icons":
"@navikt/aksel-icons@npm:^7.4.1, @navikt/aksel-icons@workspace:@navikt/aksel-icons":
version: 0.0.0-use.local
resolution: "@navikt/aksel-icons@workspace:@navikt/aksel-icons"
dependencies:
@@ -3742,8 +3742,8 @@ __metadata:
version: 0.0.0-use.local
resolution: "@navikt/aksel-stylelint@workspace:@navikt/aksel-stylelint"
dependencies:
"@navikt/ds-css": "npm:^7.4.0"
"@navikt/ds-tokens": "npm:^7.4.0"
"@navikt/ds-css": "npm:^7.4.1"
"@navikt/ds-tokens": "npm:^7.4.1"
concurrently: "npm:9.0.1"
postcss-selector-parser: "npm:^6.0.13"
postcss-value-parser: "npm:^4.2.0"
@@ -3758,7 +3758,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "@navikt/aksel@workspace:@navikt/aksel"
dependencies:
"@navikt/ds-css": "npm:7.4.0"
"@navikt/ds-css": "npm:7.4.1"
axios: "npm:1.7.4"
chalk: "npm:4.1.0"
clipboardy: "npm:^2.3.0"
@@ -3779,11 +3779,11 @@ __metadata:
languageName: unknown
linkType: soft
"@navikt/ds-css@npm:*, @navikt/ds-css@npm:7.4.0, @navikt/ds-css@npm:^7.4.0, @navikt/ds-css@workspace:@navikt/core/css":
"@navikt/ds-css@npm:*, @navikt/ds-css@npm:7.4.1, @navikt/ds-css@npm:^7.4.1, @navikt/ds-css@workspace:@navikt/core/css":
version: 0.0.0-use.local
resolution: "@navikt/ds-css@workspace:@navikt/core/css"
dependencies:
"@navikt/ds-tokens": "npm:^7.4.0"
"@navikt/ds-tokens": "npm:^7.4.1"
autoprefixer: "npm:^10.4.20"
cssnano: "npm:6.0.0"
fast-glob: "npm:3.2.11"
@@ -3797,14 +3797,14 @@ __metadata:
languageName: unknown
linkType: soft
"@navikt/ds-react@npm:*, @navikt/ds-react@npm:^7.4.0, @navikt/ds-react@workspace:@navikt/core/react":
"@navikt/ds-react@npm:*, @navikt/ds-react@npm:^7.4.1, @navikt/ds-react@workspace:@navikt/core/react":
version: 0.0.0-use.local
resolution: "@navikt/ds-react@workspace:@navikt/core/react"
dependencies:
"@floating-ui/react": "npm:0.25.4"
"@floating-ui/react-dom": "npm:^2.0.9"
"@navikt/aksel-icons": "npm:^7.4.0"
"@navikt/ds-tokens": "npm:^7.4.0"
"@navikt/aksel-icons": "npm:^7.4.1"
"@navikt/ds-tokens": "npm:^7.4.1"
"@testing-library/dom": "npm:9.3.4"
"@testing-library/jest-dom": "npm:^5.16.0"
"@testing-library/react": "npm:^15.0.7"
@@ -3832,11 +3832,11 @@ __metadata:
languageName: unknown
linkType: soft
"@navikt/ds-tailwind@npm:^7.4.0, @navikt/ds-tailwind@workspace:@navikt/core/tailwind":
"@navikt/ds-tailwind@npm:^7.4.1, @navikt/ds-tailwind@workspace:@navikt/core/tailwind":
version: 0.0.0-use.local
resolution: "@navikt/ds-tailwind@workspace:@navikt/core/tailwind"
dependencies:
"@navikt/ds-tokens": "npm:^7.4.0"
"@navikt/ds-tokens": "npm:^7.4.1"
color: "npm:4.2.3"
lodash: "npm:^4.17.21"
tailwindcss: "npm:^3.3.3"
@@ -3846,7 +3846,7 @@ __metadata:
languageName: unknown
linkType: soft
"@navikt/ds-tokens@npm:^7.4.0, @navikt/ds-tokens@workspace:@navikt/core/tokens":
"@navikt/ds-tokens@npm:^7.4.1, @navikt/ds-tokens@workspace:@navikt/core/tokens":
version: 0.0.0-use.local
resolution: "@navikt/ds-tokens@workspace:@navikt/core/tokens"
dependencies:
@@ -7729,11 +7729,11 @@ __metadata:
version: 0.0.0-use.local
resolution: "aksel.nav.no@workspace:aksel.nav.no"
dependencies:
"@navikt/aksel-icons": "npm:^7.4.0"
"@navikt/ds-css": "npm:^7.4.0"
"@navikt/ds-react": "npm:^7.4.0"
"@navikt/ds-tailwind": "npm:^7.4.0"
"@navikt/ds-tokens": "npm:^7.4.0"
"@navikt/aksel-icons": "npm:^7.4.1"
"@navikt/ds-css": "npm:^7.4.1"
"@navikt/ds-react": "npm:^7.4.1"
"@navikt/ds-tailwind": "npm:^7.4.1"
"@navikt/ds-tokens": "npm:^7.4.1"
languageName: unknown
linkType: soft