mirror of
https://github.com/navikt/aksel.git
synced 2026-10-13 01:02:02 +00:00
Compare commits
13
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
43b0301d7c | ||
|
|
d77b766a56 | ||
|
|
98c06b0be2 | ||
|
|
61b84e14fb | ||
|
|
edbbc53cdb | ||
|
|
5c78776941 | ||
|
|
70eeb24b38 | ||
|
|
2b98dd9c15 | ||
|
|
84946d4d4d | ||
|
|
ce7af9dd13 | ||
|
|
b769d21d7c | ||
|
|
241b2e678f | ||
|
|
c3e7bc0ada |
No files matched your search
@@ -1,5 +1,11 @@
|
||||
# @navikt/ds-codemod
|
||||
|
||||
## 2.4.1
|
||||
|
||||
## 2.4.0
|
||||
|
||||
## 2.3.1
|
||||
|
||||
## 2.3.0
|
||||
|
||||
## 2.2.0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@navikt/ds-codemod",
|
||||
"version": "2.3.0",
|
||||
"version": "2.4.1",
|
||||
"description": "Aksel codemods for NAVs designsystem",
|
||||
"author": "Aksel | NAV designsystem team",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -39,8 +39,8 @@
|
||||
"build-pict": "svgr --silent --index-template index-template.js --out-dir src/pictograms pictograms"
|
||||
},
|
||||
"dependencies": {
|
||||
"@navikt/ds-icons": "^2.3.0",
|
||||
"@navikt/ds-react": "^2.3.0",
|
||||
"@navikt/ds-icons": "^2.4.1",
|
||||
"@navikt/ds-react": "^2.4.1",
|
||||
"clsx": "^1.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# @navikt/ds-css
|
||||
|
||||
## 2.4.1
|
||||
|
||||
## 2.4.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- [#1807](https://github.com/navikt/aksel/pull/1807) [`70eeb24b3`](https://github.com/navikt/aksel/commit/70eeb24b38ac871c7f2e31e1621b949669c401b6) Thanks [@kschieren](https://github.com/kschieren)! - Added List component
|
||||
|
||||
## 2.3.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [`241b2e678`](https://github.com/navikt/aksel/commit/241b2e678f1f40909e2d36fe095dcbce8673f174) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Fikset feil bruk av fallback-tokens i textarea, timeline
|
||||
|
||||
## 2.3.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
}
|
||||
|
||||
.navds-textarea__counter--error {
|
||||
color: var(--ac-textarea-counter-error-text, var(--a-surface-danger));
|
||||
color: var(--ac-textarea-counter-error-text, var(--a-text-danger));
|
||||
}
|
||||
|
||||
.navds-textarea--resize .navds-textarea__input {
|
||||
|
||||
@@ -26,3 +26,4 @@
|
||||
@import "stepper.css";
|
||||
@import "table.css";
|
||||
@import "tabs.css";
|
||||
@import "list.css";
|
||||
@@ -0,0 +1,57 @@
|
||||
.navds-list ul,
|
||||
.navds-list ol {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.navds-list li:not(:first-child) {
|
||||
margin-top: var(--a-spacing-5);
|
||||
}
|
||||
|
||||
.navds-list ul .navds-list__item {
|
||||
display: grid;
|
||||
grid-template-columns: auto 1fr;
|
||||
gap: var(--a-spacing-3);
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
.navds-list ul .navds-list__item::marker {
|
||||
content: none;
|
||||
}
|
||||
|
||||
.navds-list ol .navds-list__item-marker--icon {
|
||||
grid-column: 1 / 2;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.navds-list .navds-list__item-marker--bullet {
|
||||
display: flex;
|
||||
margin-top: 6px;
|
||||
grid-column: 1 / 2;
|
||||
/* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */
|
||||
color: var(--ac-list-marker-ul-color, var(--ac-list-marker-color, var(--a-icon-default)));
|
||||
}
|
||||
|
||||
.navds-list__item-marker--icon {
|
||||
/* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */
|
||||
color: var(--ac-list-marker-icon-color, var(--ac-list-marker-color, var(--a-icon-default)));
|
||||
}
|
||||
|
||||
.navds-list ul .navds-list__item-content {
|
||||
grid-column: 2 / 3;
|
||||
}
|
||||
|
||||
.navds-list ol {
|
||||
padding-left: var(--a-spacing-2);
|
||||
}
|
||||
|
||||
.navds-list ol li {
|
||||
padding-left: var(--a-spacing-1);
|
||||
margin-left: var(--a-spacing-2);
|
||||
}
|
||||
|
||||
.navds-list ol li::marker {
|
||||
font-weight: var(--a-font-weight-bold);
|
||||
font-size: var(--a-font-size-medium);
|
||||
/* stylelint-disable-next-line csstools/value-no-unknown-custom-properties */
|
||||
color: var(--ac-list-marker-ol-color, var(--ac-list-marker-color, var(--a-icon-default)));
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@navikt/ds-css",
|
||||
"version": "2.3.0",
|
||||
"version": "2.4.1",
|
||||
"description": "CSS for NAV Designsystem",
|
||||
"author": "Aksel | NAV designsystem team",
|
||||
"keywords": [
|
||||
@@ -20,7 +20,7 @@
|
||||
"watch": "postcss --watch --use postcss-import -o dist/index.css index.css"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@navikt/ds-tokens": "^2.3.0",
|
||||
"@navikt/ds-tokens": "^2.4.1",
|
||||
"normalize.css": "^8.0.1",
|
||||
"postcss": "^8.4.0",
|
||||
"postcss-cli": "^9.0.0",
|
||||
|
||||
@@ -129,6 +129,12 @@
|
||||
"--ac-link-active-bg": "--a-border-focus",
|
||||
"--ac-link-active-border": "--a-border-focus"
|
||||
},
|
||||
"list": {
|
||||
"--ac-list-marker-ul-color": "--ac-list-marker-color",
|
||||
"--ac-list-marker-icon-color": "--ac-list-marker-color",
|
||||
"--ac-list-marker-ol-color": "--ac-list-marker-color",
|
||||
"--ac-list-marker-color": "--a-icon-default"
|
||||
},
|
||||
"loader": {
|
||||
"--ac-loader-stroke": "--a-border-default",
|
||||
"--ac-loader-stroke-bg": "--a-surface-active",
|
||||
@@ -324,7 +330,7 @@
|
||||
"--ac-textarea-placeholder": "--a-text-subtle",
|
||||
"--ac-textarea-hover-border": "--a-border-action",
|
||||
"--ac-textarea-counter-text": "--a-text-subtle",
|
||||
"--ac-textarea-counter-error-text": "--a-surface-danger",
|
||||
"--ac-textarea-counter-error-text": "--a-text-danger",
|
||||
"--ac-textarea-error-border": "--a-border-danger"
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,32 @@
|
||||
# @navikt/ds-react
|
||||
|
||||
## 2.4.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#1827](https://github.com/navikt/aksel/pull/1827) [`98c06b0be`](https://github.com/navikt/aksel/commit/98c06b0be20debff9969af874d5239ec920fa401) Thanks [@kschieren](https://github.com/kschieren)! - Added fixedWeeks prop to standalone datepicker
|
||||
|
||||
- Updated dependencies []:
|
||||
- @navikt/ds-icons@2.4.1
|
||||
|
||||
## 2.4.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- [#1807](https://github.com/navikt/aksel/pull/1807) [`70eeb24b3`](https://github.com/navikt/aksel/commit/70eeb24b38ac871c7f2e31e1621b949669c401b6) Thanks [@kschieren](https://github.com/kschieren)! - Added List component
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @navikt/ds-icons@2.4.0
|
||||
|
||||
## 2.3.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @navikt/ds-icons@2.3.1
|
||||
|
||||
## 2.3.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@navikt/ds-react",
|
||||
"version": "2.3.0",
|
||||
"version": "2.4.1",
|
||||
"description": "Aksel react-components for NAV designsystem",
|
||||
"author": "Aksel | NAV designsystem team",
|
||||
"license": "MIT",
|
||||
@@ -37,7 +37,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@floating-ui/react": "0.17.0",
|
||||
"@navikt/ds-icons": "^2.3.0",
|
||||
"@navikt/ds-icons": "^2.4.1",
|
||||
"@radix-ui/react-tabs": "1.0.0",
|
||||
"@radix-ui/react-toggle-group": "1.0.0",
|
||||
"clsx": "^1.2.1",
|
||||
|
||||
@@ -24,6 +24,11 @@ interface DatePickerStandaloneDefaultProps
|
||||
* Datepicker classname
|
||||
*/
|
||||
className?: string;
|
||||
/**
|
||||
* If datepicker should be fixed to 6 weeks, regardless of actual weeks in month
|
||||
* @default true
|
||||
*/
|
||||
fixedWeeks?: boolean;
|
||||
}
|
||||
|
||||
export type DatePickerStandaloneProps = DatePickerStandaloneDefaultProps &
|
||||
@@ -50,6 +55,7 @@ export const DatePickerStandalone: DatePickerStandaloneType = forwardRef<
|
||||
id,
|
||||
defaultSelected,
|
||||
onSelect,
|
||||
fixedWeeks = true,
|
||||
...rest
|
||||
},
|
||||
ref
|
||||
@@ -113,7 +119,7 @@ export const DatePickerStandalone: DatePickerStandaloneType = forwardRef<
|
||||
weekend: "rdp-day__weekend",
|
||||
}}
|
||||
showWeekNumber={showWeekNumber}
|
||||
fixedWeeks
|
||||
fixedWeeks={fixedWeeks}
|
||||
showOutsideDays
|
||||
{...omit(rest, ["onSelect"])}
|
||||
/>
|
||||
|
||||
@@ -1,27 +1,28 @@
|
||||
export * from "./accordion";
|
||||
export * from "./alert";
|
||||
export * from "./provider";
|
||||
export * from "./button";
|
||||
export * from "./chat";
|
||||
export * from "./chips";
|
||||
export * from "./date";
|
||||
export * from "./form";
|
||||
export * from "./grid";
|
||||
export * from "./help-text";
|
||||
export * from "./guide-panel";
|
||||
export * from "./help-text";
|
||||
export * from "./link";
|
||||
export * from "./link-panel";
|
||||
export * from "./list";
|
||||
export * from "./loader";
|
||||
export * from "./modal";
|
||||
export * from "./pagination";
|
||||
export * from "./panel";
|
||||
export * from "./popover";
|
||||
export * from "./provider";
|
||||
export * from "./read-more";
|
||||
export * from "./chat";
|
||||
export * from "./chips";
|
||||
export * from "./stepper";
|
||||
export * from "./tag";
|
||||
export * from "./toggle-group";
|
||||
export * from "./table";
|
||||
export * from "./tabs";
|
||||
export * from "./tag";
|
||||
export * from "./toggle-group";
|
||||
export * from "./tooltip";
|
||||
export * from "./typography";
|
||||
export * from "./util";
|
||||
@@ -0,0 +1,85 @@
|
||||
import cl from "clsx";
|
||||
import React, { createContext, forwardRef } from "react";
|
||||
import { BodyShort, Heading } from "../typography";
|
||||
import { useId } from "../util/useId";
|
||||
import { ListItem, ListItemType } from "./ListItem";
|
||||
|
||||
export interface ListProps extends React.HTMLAttributes<HTMLDivElement> {
|
||||
children: React.ReactNode;
|
||||
/**
|
||||
* HTML list element to render
|
||||
* @default "ul"
|
||||
*/
|
||||
as?: "ul" | "ol";
|
||||
/**
|
||||
* List heading title
|
||||
*/
|
||||
title?: string;
|
||||
/**
|
||||
* List heading description
|
||||
*/
|
||||
description?: string;
|
||||
/**
|
||||
* Allows setting a different HTML h-tag
|
||||
* @default "h3"
|
||||
*/
|
||||
headingTag?: React.ElementType<any>;
|
||||
}
|
||||
|
||||
interface ListComponent extends React.ForwardRefExoticComponent<ListProps> {
|
||||
Item: ListItemType;
|
||||
}
|
||||
|
||||
interface ListContextProps {
|
||||
listType: "ul" | "ol";
|
||||
}
|
||||
|
||||
export const ListContext = createContext<ListContextProps>({
|
||||
listType: "ul",
|
||||
});
|
||||
|
||||
export const List = forwardRef<HTMLDivElement, ListProps>(
|
||||
(
|
||||
{
|
||||
children,
|
||||
className,
|
||||
as: ListTag = "ul",
|
||||
title,
|
||||
description,
|
||||
headingTag = "h3",
|
||||
...rest
|
||||
},
|
||||
ref
|
||||
) => {
|
||||
const ariaId = useId();
|
||||
|
||||
return (
|
||||
<ListContext.Provider
|
||||
value={{
|
||||
listType: ListTag,
|
||||
}}
|
||||
>
|
||||
<div {...rest} ref={ref} className={cl("navds-list", className)}>
|
||||
{title && (
|
||||
<Heading id={`tittel-${ariaId}`} size="small" as={headingTag}>
|
||||
{title}
|
||||
</Heading>
|
||||
)}
|
||||
{description && (
|
||||
<BodyShort id={`description-${ariaId}`}>{description}</BodyShort>
|
||||
)}
|
||||
<ListTag
|
||||
aria-labelledby={title && `tittel-${ariaId}`}
|
||||
aria-describedby={description && `description-${ariaId}`}
|
||||
>
|
||||
{children}
|
||||
</ListTag>
|
||||
</div>
|
||||
</ListContext.Provider>
|
||||
);
|
||||
}
|
||||
) as ListComponent;
|
||||
|
||||
List.Item = ListItem;
|
||||
|
||||
export default List;
|
||||
@@ -0,0 +1,71 @@
|
||||
import cl from "clsx";
|
||||
import React, { forwardRef, useContext } from "react";
|
||||
import { BodyShort, Label } from "../typography";
|
||||
import { ListContext } from "./List";
|
||||
|
||||
export interface ListItemProps extends React.HTMLAttributes<HTMLLIElement> {
|
||||
/**
|
||||
* Content for description of the list item
|
||||
*/
|
||||
children: React.ReactNode;
|
||||
/**
|
||||
* Title for the list item
|
||||
*/
|
||||
title?: string;
|
||||
/*
|
||||
* Icon to be used as list marker
|
||||
*/
|
||||
icon?: React.ReactNode;
|
||||
}
|
||||
|
||||
export interface ListItemType
|
||||
extends React.ForwardRefExoticComponent<
|
||||
ListItemProps & React.RefAttributes<HTMLLIElement>
|
||||
> {}
|
||||
|
||||
export const ListItem: ListItemType = forwardRef(
|
||||
({ className, children, title, icon, ...rest }, ref) => {
|
||||
const { listType } = useContext(ListContext);
|
||||
|
||||
return (
|
||||
<li {...rest} ref={ref} className={cl("navds-list__item", className)}>
|
||||
{listType === "ul" && (
|
||||
<div
|
||||
className={cl({
|
||||
"navds-list__item-marker--icon": icon,
|
||||
"navds-list__item-marker--bullet": !icon,
|
||||
})}
|
||||
>
|
||||
{icon ? (
|
||||
icon
|
||||
) : (
|
||||
<svg
|
||||
width="6"
|
||||
height="6"
|
||||
viewBox="0 0 6 6"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
aria-hidden
|
||||
focusable={false}
|
||||
role="img"
|
||||
>
|
||||
<rect width="6" height="6" rx="3" fill="currentColor" />
|
||||
</svg>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
|
||||
<BodyShort as="div" size="small" className="navds-list__item-content">
|
||||
{title && (
|
||||
<Label as="p" size="small">
|
||||
{title}
|
||||
</Label>
|
||||
)}
|
||||
{children}
|
||||
</BodyShort>
|
||||
</li>
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
export default ListItem;
|
||||
@@ -0,0 +1,2 @@
|
||||
export { default as List } from "./List";
|
||||
export type { ListProps } from "./List";
|
||||
@@ -0,0 +1,119 @@
|
||||
import {
|
||||
BabyChangingRoom,
|
||||
Braille,
|
||||
Cognition,
|
||||
Refresh,
|
||||
} from "@navikt/ds-icons";
|
||||
import { Meta } from "@storybook/react";
|
||||
import React from "react";
|
||||
import { List } from "..";
|
||||
|
||||
export default {
|
||||
title: "ds-react/List",
|
||||
component: List,
|
||||
} as Meta;
|
||||
|
||||
export const Default = {
|
||||
render: () => {
|
||||
return (
|
||||
<List>
|
||||
<List.Item title="Lorem Ipsum Dolor Sit Amet">
|
||||
Lorem Ipsum Dolor Sit Amet
|
||||
</List.Item>
|
||||
<List.Item title="Consectetur Adipiscing Elit">
|
||||
Beskrivelse på punktet i lista. Prøv å hold den kort og konsis.
|
||||
</List.Item>
|
||||
<List.Item title="Sed Do Eiusmod Tempor Incididunt">
|
||||
Beskrivelse på punktet i lista. Prøv å hold den kort og konsis.
|
||||
</List.Item>
|
||||
</List>
|
||||
);
|
||||
},
|
||||
};
|
||||
|
||||
export const Ordered = {
|
||||
render: () => {
|
||||
return (
|
||||
<List as="ol">
|
||||
<List.Item title="Lorem Ipsum Dolor Sit Amet">
|
||||
Lorem Ipsum Dolor Sit Amet
|
||||
</List.Item>
|
||||
<List.Item title="Consectetur Adipiscing Elit">
|
||||
Beskrivelse på punktet i lista. Prøv å hold den kort og konsis.
|
||||
</List.Item>
|
||||
<List.Item title="Sed Do Eiusmod Tempor Incididunt">
|
||||
Beskrivelse på punktet i lista. Prøv å hold den kort og konsis.
|
||||
</List.Item>
|
||||
<List.Item title="Ut Labore Et Dolore Magna Aliqua">
|
||||
Beskrivelse på punktet i lista. Prøv å hold den kort og konsis.
|
||||
</List.Item>
|
||||
<List.Item title="Enim Ad Minim Veniam">
|
||||
Beskrivelse på punktet i lista. Prøv å hold den kort og konsis.
|
||||
</List.Item>
|
||||
<List.Item title="Quis Nostrud Exercitation Ullamco">
|
||||
Beskrivelse på punktet i lista. Prøv å hold den kort og konsis.
|
||||
</List.Item>
|
||||
<List.Item title="Laboris Nisi Ut Aliquip Ex Ea Commodo">
|
||||
Beskrivelse på punktet i lista. Prøv å hold den kort og konsis.
|
||||
</List.Item>
|
||||
<List.Item title="Duis Aute Irure Dolor In Reprehenderit">
|
||||
Beskrivelse på punktet i lista. Prøv å hold den kort og konsis.
|
||||
</List.Item>
|
||||
<List.Item title="Voluptate Velit Esse Cillum Dolore">
|
||||
Beskrivelse på punktet i lista. Prøv å hold den kort og konsis.
|
||||
</List.Item>
|
||||
<List.Item title="Eu Fugiat Nulla Pariatur">
|
||||
Beskrivelse på punktet i lista. Prøv å hold den kort og konsis.
|
||||
</List.Item>
|
||||
</List>
|
||||
);
|
||||
},
|
||||
};
|
||||
|
||||
export const WithHeading = {
|
||||
render: () => {
|
||||
return (
|
||||
<List
|
||||
title="Lorem Ipsum Dolor Sit Amet"
|
||||
description="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vel risus volutpat."
|
||||
>
|
||||
<List.Item title="Lorem Ipsum Dolor Sit Amet">
|
||||
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
||||
</List.Item>
|
||||
<List.Item title="Consectetur Adipiscing Elit">
|
||||
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
||||
</List.Item>
|
||||
<List.Item title="Sed Do Eiusmod Tempor Incididunt">
|
||||
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
||||
</List.Item>
|
||||
</List>
|
||||
);
|
||||
},
|
||||
};
|
||||
|
||||
export const Icons = {
|
||||
render: () => {
|
||||
return (
|
||||
<List>
|
||||
<List.Item
|
||||
title="Lorem Ipsum Dolor Sit Amet"
|
||||
icon={<Braille aria-hidden />}
|
||||
>
|
||||
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
||||
</List.Item>
|
||||
<List.Item
|
||||
title="Consectetur Adipiscing Elit"
|
||||
icon={<Cognition aria-hidden />}
|
||||
>
|
||||
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
||||
</List.Item>
|
||||
<List.Item icon={<BabyChangingRoom aria-hidden />}>
|
||||
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
||||
</List.Item>
|
||||
<List.Item icon={<Refresh aria-hidden />}>
|
||||
Beskrivelsen på punkter er nærmere forklart <a href="/">her</a>
|
||||
</List.Item>
|
||||
</List>
|
||||
);
|
||||
},
|
||||
};
|
||||
@@ -42,7 +42,13 @@ function showContent(element: HTMLDivElement | null, height: Height) {
|
||||
// ------------------ Component
|
||||
|
||||
interface AnimateHeightProps extends React.HTMLAttributes<HTMLDivElement> {
|
||||
/**
|
||||
* @default 250ms
|
||||
*/
|
||||
duration?: number;
|
||||
/**
|
||||
* @default ease
|
||||
*/
|
||||
easing?: string;
|
||||
height: Height;
|
||||
innerClassName?: string;
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @navikt/ds-tailwind
|
||||
|
||||
## 2.4.1
|
||||
|
||||
## 2.4.0
|
||||
|
||||
## 2.3.1
|
||||
|
||||
## 2.3.0
|
||||
|
||||
## 2.2.0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@navikt/ds-tailwind",
|
||||
"version": "2.3.0",
|
||||
"version": "2.4.1",
|
||||
"description": "Tailwind config based on @navikt/ds-tokens",
|
||||
"author": "Aksel | NAV designsystem team",
|
||||
"keywords": [
|
||||
@@ -22,7 +22,7 @@
|
||||
"directory": "@navikt/core/tailwind"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@navikt/ds-tokens": "^2.3.0",
|
||||
"@navikt/ds-tokens": "^2.4.1",
|
||||
"@types/jest": "^29.0.0",
|
||||
"color": "4.2.3",
|
||||
"jest": "^29.0.0",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @navikt/ds-tokens
|
||||
|
||||
## 2.4.1
|
||||
|
||||
## 2.4.0
|
||||
|
||||
## 2.3.1
|
||||
|
||||
## 2.3.0
|
||||
|
||||
## 2.2.0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@navikt/ds-tokens",
|
||||
"version": "2.3.0",
|
||||
"version": "2.4.1",
|
||||
"description": "Design-tokens for NAV designsystem",
|
||||
"author": "Aksel | NAV designsystem team",
|
||||
"keywords": [
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @navikt/ds-icons
|
||||
|
||||
## 2.4.1
|
||||
|
||||
## 2.4.0
|
||||
|
||||
## 2.3.1
|
||||
|
||||
## 2.3.0
|
||||
|
||||
## 2.2.0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@navikt/ds-icons",
|
||||
"version": "2.3.0",
|
||||
"version": "2.4.1",
|
||||
"description": "Aksel icons for NAV",
|
||||
"author": "Aksel | NAV designsystem team",
|
||||
"repository": {
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @navikt/ds-css-internal
|
||||
|
||||
## 2.4.1
|
||||
|
||||
## 2.4.0
|
||||
|
||||
## 2.3.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [`241b2e678`](https://github.com/navikt/aksel/commit/241b2e678f1f40909e2d36fe095dcbce8673f174) Thanks [@KenAJoh](https://github.com/KenAJoh)! - Fikset feil bruk av fallback-tokens i textarea, timeline
|
||||
|
||||
## 2.3.0
|
||||
|
||||
## 2.2.0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@navikt/ds-css-internal",
|
||||
"version": "2.3.0",
|
||||
"version": "2.4.1",
|
||||
"description": "CSS for NAV internal Designsystem-components",
|
||||
"author": "Aksel | NAV designsystem team",
|
||||
"keywords": [
|
||||
|
||||
@@ -246,7 +246,7 @@
|
||||
}
|
||||
|
||||
.navdsi-timeline__zoom-button:not([aria-pressed="true"]):hover {
|
||||
background: var(--ac-timeline-zoom-hover, var(--a-surface-action-subtle-hover));
|
||||
background: var(--ac-timeline-zoom-bg-hover, var(--a-surface-action-subtle-hover));
|
||||
}
|
||||
|
||||
.navdsi-timeline__zoom-button[aria-pressed="true"] {
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
"--ac-timeline-pin-bg-hover": "--a-surface-danger-hover",
|
||||
"--ac-timeline-zoom-border": "--a-border-default",
|
||||
"--ac-timeline-zoom-bg": "--a-surface-default",
|
||||
"--ac-timeline-zoom-hover": "--a-surface-action-subtle-hover",
|
||||
"--ac-timeline-zoom-bg-hover": "--a-surface-action-subtle-hover",
|
||||
"--ac-timeline-zoom-selected-bg": "--a-surface-inverted",
|
||||
"--ac-timeline-zoom-selected-text": "--a-text-on-inverted",
|
||||
"--ac-timeline-axislabel-text": "--a-text-subtle"
|
||||
|
||||
@@ -1,5 +1,29 @@
|
||||
# @navikt/ds-react-internal
|
||||
|
||||
## 2.4.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`98c06b0be`](https://github.com/navikt/aksel/commit/98c06b0be20debff9969af874d5239ec920fa401)]:
|
||||
- @navikt/ds-react@2.4.1
|
||||
- @navikt/ds-icons@2.4.1
|
||||
|
||||
## 2.4.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`70eeb24b3`](https://github.com/navikt/aksel/commit/70eeb24b38ac871c7f2e31e1621b949669c401b6)]:
|
||||
- @navikt/ds-react@2.4.0
|
||||
- @navikt/ds-icons@2.4.0
|
||||
|
||||
## 2.3.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @navikt/ds-react@2.3.1
|
||||
- @navikt/ds-icons@2.3.1
|
||||
|
||||
## 2.3.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@navikt/ds-react-internal",
|
||||
"version": "2.3.0",
|
||||
"version": "2.4.1",
|
||||
"description": "Aksel react components for internal UIs in NAV",
|
||||
"author": "Aksel | NAV designsystem team",
|
||||
"license": "MIT",
|
||||
@@ -35,8 +35,8 @@
|
||||
"watch": "tsc --watch -p tsconfig.esm.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"@navikt/ds-icons": "^2.3.0",
|
||||
"@navikt/ds-react": "^2.3.0",
|
||||
"@navikt/ds-icons": "^2.4.1",
|
||||
"@navikt/ds-react": "^2.4.1",
|
||||
"clsx": "^1.1.1",
|
||||
"copy-to-clipboard": "^3.3.1"
|
||||
},
|
||||
|
||||
@@ -15,16 +15,16 @@
|
||||
"website"
|
||||
],
|
||||
"dependencies": {
|
||||
"@navikt/ds-codemod": "^2.3.0",
|
||||
"@navikt/ds-css": "^2.3.0",
|
||||
"@navikt/ds-css-internal": "^2.3.0",
|
||||
"@navikt/ds-icons": "^2.3.0",
|
||||
"@navikt/ds-react": "^2.3.0",
|
||||
"@navikt/ds-react-internal": "^2.3.0",
|
||||
"@navikt/ds-tailwind": "^2.3.0",
|
||||
"@navikt/ds-tokens": "^2.3.0"
|
||||
"@navikt/ds-codemod": "^2.4.1",
|
||||
"@navikt/ds-css": "^2.4.1",
|
||||
"@navikt/ds-css-internal": "^2.4.1",
|
||||
"@navikt/ds-icons": "^2.4.1",
|
||||
"@navikt/ds-react": "^2.4.1",
|
||||
"@navikt/ds-react-internal": "^2.4.1",
|
||||
"@navikt/ds-tailwind": "^2.4.1",
|
||||
"@navikt/ds-tokens": "^2.4.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"prettier-plugin-tailwindcss": "^0.1.13"
|
||||
"prettier-plugin-tailwindcss": "^0.2.3"
|
||||
}
|
||||
}
|
||||
@@ -190,7 +190,7 @@ const serializers = {
|
||||
}
|
||||
if (href && href.startsWith("mailto:")) {
|
||||
return (
|
||||
<NextLink href={href} passHref>
|
||||
<NextLink href={href} passHref legacyBehavior>
|
||||
<Link
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
@@ -222,7 +222,7 @@ const serializers = {
|
||||
{children} <ExternalLink title="åpner lenken i ny fane" />
|
||||
</Link>
|
||||
) : (
|
||||
<NextLink href={href} passHref>
|
||||
<NextLink href={href} passHref legacyBehavior>
|
||||
<Link
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
@@ -244,7 +244,7 @@ const serializers = {
|
||||
|
||||
const href = `/${slug?.current}`;
|
||||
return (
|
||||
<NextLink href={href} passHref>
|
||||
<NextLink href={href} passHref legacyBehavior>
|
||||
<Link
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
|
||||
@@ -21,14 +21,22 @@ const Footer = () => {
|
||||
</Heading>
|
||||
<BodyShort as="ul" className="mt-5 grid gap-2">
|
||||
<li>
|
||||
<NextLink href="/god-praksis/artikler/om-aksel" passHref>
|
||||
<NextLink
|
||||
href="/god-praksis/artikler/om-aksel"
|
||||
passHref
|
||||
legacyBehavior
|
||||
>
|
||||
<Link className="text-text-on-inverted focus:shadow-focus focus:text-text-default focus:bg-blue-200 focus:shadow-blue-200">
|
||||
Om Aksel
|
||||
</Link>
|
||||
</NextLink>
|
||||
</li>
|
||||
<li>
|
||||
<NextLink href="/god-praksis/artikler/skriv-for-aksel" passHref>
|
||||
<NextLink
|
||||
href="/god-praksis/artikler/skriv-for-aksel"
|
||||
passHref
|
||||
legacyBehavior
|
||||
>
|
||||
<Link className="text-text-on-inverted focus:shadow-focus focus:text-text-default focus:bg-blue-200 focus:shadow-blue-200">
|
||||
Skriv for Aksel
|
||||
</Link>
|
||||
@@ -98,23 +106,22 @@ const Footer = () => {
|
||||
Arbeids- og velferdsetaten
|
||||
</div>
|
||||
<span className="mb-1 self-end xl:mb-0" />
|
||||
{/* <BodyShort className="mb-1 self-end xl:mb-0">
|
||||
Redaktør: Eidar Grande Vollan
|
||||
</BodyShort> */}
|
||||
<div className="hidden self-end xl:block">
|
||||
<p>© {new Date().getFullYear()} NAV</p>
|
||||
<NextLink href="/side/personvernerklaering" passHref>
|
||||
<a className="focus:bg-border-focus-on-inverted focus:text-text-default focus:ring-border-focus-on-inverted outline-none hover:underline focus:no-underline focus:ring">
|
||||
Personvernerklæring og informasjonskapsler
|
||||
</a>
|
||||
<NextLink
|
||||
href="/side/personvernerklaering"
|
||||
className="focus:bg-border-focus-on-inverted focus:text-text-default focus:ring-border-focus-on-inverted outline-none hover:underline focus:no-underline focus:ring"
|
||||
>
|
||||
Personvernerklæring og informasjonskapsler
|
||||
</NextLink>
|
||||
</div>
|
||||
<div className="block self-end xl:hidden">
|
||||
© 2022 NAV |{" "}
|
||||
<NextLink href="/side/personvernerklaering" passHref>
|
||||
<a className="focus:bg-border-focus-on-inverted focus:ring-border-focus-on-inverted outline-none hover:underline focus:no-underline focus:ring">
|
||||
Personvernerklæring og informasjonskapsler
|
||||
</a>
|
||||
© {new Date().getFullYear()} NAV |{" "}
|
||||
<NextLink
|
||||
href="/side/personvernerklaering"
|
||||
className="focus:bg-border-focus-on-inverted focus:ring-border-focus-on-inverted outline-none hover:underline focus:no-underline focus:ring"
|
||||
>
|
||||
Personvernerklæring og informasjonskapsler
|
||||
</NextLink>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -11,27 +11,27 @@ const LinkElement = ({ name, href, onClick }) => {
|
||||
const { asPath } = useRouter();
|
||||
return (
|
||||
<li className="flex h-11 items-center">
|
||||
<Link href={href} passHref>
|
||||
<a
|
||||
className={cl(
|
||||
"hover:bg-surface-action-subtle-hover focus-visible:shadow-focus-inset relative flex h-full w-full items-center rounded px-2 focus:outline-none",
|
||||
{
|
||||
"before:bg-surface-action-selected pl-4 font-semibold before:absolute before:left-0 before:h-6 before:w-1 before:rounded-full":
|
||||
asPath.startsWith(href),
|
||||
"": !asPath.startsWith(href),
|
||||
}
|
||||
)}
|
||||
onClick={(e) => {
|
||||
logNav(
|
||||
"header",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
);
|
||||
onClick();
|
||||
}}
|
||||
>
|
||||
{name}
|
||||
</a>
|
||||
<Link
|
||||
href={href}
|
||||
passHref
|
||||
className={cl(
|
||||
"hover:bg-surface-action-subtle-hover focus-visible:shadow-focus-inset relative flex h-full w-full items-center rounded px-2 focus:outline-none",
|
||||
{
|
||||
"before:bg-surface-action-selected pl-4 font-semibold before:absolute before:left-0 before:h-6 before:w-1 before:rounded-full":
|
||||
asPath.startsWith(href),
|
||||
"": !asPath.startsWith(href),
|
||||
}
|
||||
)}
|
||||
onClick={(e) => {
|
||||
logNav(
|
||||
"header",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
);
|
||||
onClick();
|
||||
}}
|
||||
>
|
||||
{name}
|
||||
</Link>
|
||||
</li>
|
||||
);
|
||||
|
||||
@@ -10,27 +10,27 @@ const LinkElement = ({ name, href }) => {
|
||||
const { asPath } = useRouter();
|
||||
return (
|
||||
<li>
|
||||
<Link href={href} passHref>
|
||||
<a
|
||||
className={cl(
|
||||
"text-deepblue-800 focus-visible:shadow-focus relative grid h-full place-items-center rounded px-2 focus:outline-none",
|
||||
{
|
||||
"before:bg-border-action-selected font-semibold before:absolute before:bottom-[1px] before:z-10 before:h-1 before:w-[calc(100%_-_16px)] before:rounded-full":
|
||||
asPath.startsWith(href),
|
||||
"hover:before:bg-border-subtle-hover before:absolute before:bottom-[1px] before:z-10 before:h-1 before:w-[calc(100%_-_16px)] before:rounded-full":
|
||||
!asPath.startsWith(href),
|
||||
}
|
||||
)}
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"header",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
<Link
|
||||
href={href}
|
||||
passHref
|
||||
className={cl(
|
||||
"text-deepblue-800 focus-visible:shadow-focus relative grid h-full place-items-center rounded px-2 focus:outline-none",
|
||||
{
|
||||
"before:bg-border-action-selected font-semibold before:absolute before:bottom-[1px] before:z-10 before:h-1 before:w-[calc(100%_-_16px)] before:rounded-full":
|
||||
asPath.startsWith(href),
|
||||
"hover:before:bg-border-subtle-hover before:absolute before:bottom-[1px] before:z-10 before:h-1 before:w-[calc(100%_-_16px)] before:rounded-full":
|
||||
!asPath.startsWith(href),
|
||||
}
|
||||
>
|
||||
{name}
|
||||
</a>
|
||||
)}
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"header",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
>
|
||||
{name}
|
||||
</Link>
|
||||
</li>
|
||||
);
|
||||
@@ -56,20 +56,20 @@ export const Header = ({
|
||||
>
|
||||
<div className="mx-auto flex h-full max-w-screen-2xl items-center pr-4 pt-3 lg:pr-6">
|
||||
<div className="xs:pr-6 xs:pl-4 flex h-11 items-center pr-4 pl-4">
|
||||
<Link href="/" passHref>
|
||||
<a
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"header",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
className="focus-visible:shadow-focus grid h-full place-items-center rounded px-2 focus:outline-none"
|
||||
>
|
||||
<Logo />
|
||||
<span className="sr-only">Aksel</span>
|
||||
</a>
|
||||
<Link
|
||||
href="/"
|
||||
passHref
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"header",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
className="focus-visible:shadow-focus grid h-full place-items-center rounded px-2 focus:outline-none"
|
||||
>
|
||||
<Logo />
|
||||
<span className="sr-only">Aksel</span>
|
||||
</Link>
|
||||
</div>
|
||||
<nav
|
||||
|
||||
@@ -2,9 +2,9 @@ import { urlFor } from "@/lib";
|
||||
import { isNew } from "@/utils";
|
||||
import { Tag } from "@navikt/ds-react";
|
||||
import cl from "classnames";
|
||||
import Image from "next/legacy/image";
|
||||
import { StatusTag } from "components/website-modules/StatusTag";
|
||||
import { SearchHit } from "lib/types/search";
|
||||
import Image from "next/image";
|
||||
import NextLink from "next/link";
|
||||
|
||||
export function Hit({
|
||||
@@ -29,16 +29,16 @@ export function Hit({
|
||||
)}
|
||||
>
|
||||
<div className="px-2 py-6">
|
||||
<NextLink href={`/${hit.item.slug}`} passHref>
|
||||
<a
|
||||
onClick={() => logSuccess(index, `/${(hit.item as any).slug}`)}
|
||||
className="flex items-center gap-2 text-xl font-semibold after:absolute after:inset-0 focus:outline-none"
|
||||
>
|
||||
<span className="group-hover:underline">
|
||||
{highlightStr(hit.item.heading, query)}
|
||||
</span>
|
||||
<StatusTag status={hit?.item?.status?.tag} aria-hidden />
|
||||
</a>
|
||||
<NextLink
|
||||
href={`/${hit.item.slug}`}
|
||||
passHref
|
||||
onClick={() => logSuccess(index, `/${(hit.item as any).slug}`)}
|
||||
className="flex items-center gap-2 text-xl font-semibold after:absolute after:inset-0 focus:outline-none"
|
||||
>
|
||||
<span className="group-hover:underline">
|
||||
{highlightStr(hit.item.heading, query)}
|
||||
</span>
|
||||
<StatusTag status={hit?.item?.status?.tag} aria-hidden />
|
||||
</NextLink>
|
||||
<span className="font-regular text-text-subtle text-lg" aria-hidden>
|
||||
{hit.highlight.shouldHightlight ? (
|
||||
@@ -62,8 +62,8 @@ export function Hit({
|
||||
<Image
|
||||
src={urlFor(hit.item.status.bilde).auto("format").url()}
|
||||
decoding="sync"
|
||||
width="96px"
|
||||
height="96px"
|
||||
width="96"
|
||||
height="96"
|
||||
layout="fixed"
|
||||
objectFit="contain"
|
||||
alt={hit.item?.heading + " thumbnail"}
|
||||
@@ -100,20 +100,17 @@ export function IconHit({
|
||||
<NextLink
|
||||
href={`/grunnleggende/staesj/ikoner?icon=${hit.item.name}`}
|
||||
passHref
|
||||
onClick={() => logSuccess(index, `/${(hit.item as any).name}`)}
|
||||
className="flex items-center gap-2 text-xl font-semibold after:absolute after:inset-0 focus:outline-none"
|
||||
>
|
||||
<a
|
||||
onClick={() => logSuccess(index, `/${(hit.item as any).name}`)}
|
||||
className="flex items-center gap-2 text-xl font-semibold after:absolute after:inset-0 focus:outline-none"
|
||||
>
|
||||
<span className="group-hover:underline">
|
||||
{highlightStr(hit.item.name, query)}
|
||||
</span>
|
||||
{isNew(hit.item?.created_at ?? "") && (
|
||||
<Tag variant="info" size="small" aria-hidden>
|
||||
Ny
|
||||
</Tag>
|
||||
)}
|
||||
</a>
|
||||
<span className="group-hover:underline">
|
||||
{highlightStr(hit.item.name, query)}
|
||||
</span>
|
||||
{isNew(hit.item?.created_at ?? "") && (
|
||||
<Tag variant="info" size="small" aria-hidden>
|
||||
Ny
|
||||
</Tag>
|
||||
)}
|
||||
</NextLink>
|
||||
</div>
|
||||
|
||||
@@ -121,8 +118,8 @@ export function IconHit({
|
||||
<Image
|
||||
src={`https://raw.githubusercontent.com/navikt/aksel/main/%40navikt/icons/svg/${hit.item.name}.svg`}
|
||||
decoding="sync"
|
||||
width="24px"
|
||||
height="24px"
|
||||
width="24"
|
||||
height="24"
|
||||
layout="fixed"
|
||||
objectFit="contain"
|
||||
alt={hit.item.name + " thumbnail"}
|
||||
|
||||
@@ -154,6 +154,7 @@ const AkselArtikkelTemplate = ({
|
||||
key={title}
|
||||
href={`/god-praksis/${slug.current}`}
|
||||
passHref
|
||||
legacyBehavior
|
||||
>
|
||||
<BodyShort
|
||||
size="small"
|
||||
|
||||
@@ -8,7 +8,7 @@ import { ReactNode } from "react";
|
||||
import cl from "clsx";
|
||||
import NextLink from "next/link";
|
||||
import { capitalize } from "@/utils";
|
||||
import Image from "next/image";
|
||||
import Image from "next/legacy/image";
|
||||
import { TableOfContentsv2 } from "components/website-modules/TOCv2";
|
||||
|
||||
const HeaderCube = ({ ...props }) => (
|
||||
@@ -96,6 +96,7 @@ export const WithSidebar = ({
|
||||
<NextLink
|
||||
href={`/${pageType.type.toLowerCase()}`}
|
||||
passHref
|
||||
legacyBehavior
|
||||
>
|
||||
<Link className="text-text-default">
|
||||
{capitalize(pageType.type)}
|
||||
|
||||
@@ -31,7 +31,7 @@ const NavItem = ({
|
||||
}
|
||||
)}
|
||||
>
|
||||
<Link href={`/${link.slug}`} passHref>
|
||||
<Link href={`/${link.slug}`} passHref legacyBehavior>
|
||||
<BodyShort
|
||||
as="a"
|
||||
size="small"
|
||||
|
||||
@@ -102,6 +102,7 @@ const TokenTable = ({ node }: { node: SanityT.Schema.token_kategori }) => {
|
||||
<NextLink
|
||||
href="https://aksel.nav.no/grunnleggende/styling/design-tokens#hec62d38bc813"
|
||||
passHref
|
||||
legacyBehavior
|
||||
>
|
||||
<Link>guiden vår</Link>
|
||||
</NextLink>{" "}
|
||||
|
||||
@@ -58,7 +58,7 @@ const Bilde = ({
|
||||
{node?.kilde?.link ? (
|
||||
<>
|
||||
{`${node?.kilde?.prefix}: `}
|
||||
<NextLink href={node.kilde.link} passHref>
|
||||
<NextLink href={node.kilde.link} passHref legacyBehavior>
|
||||
<Link className="break-normal">{node?.kilde?.tekst}</Link>
|
||||
</NextLink>
|
||||
</>
|
||||
|
||||
@@ -42,25 +42,22 @@ const ArtikkelCard = ({
|
||||
},
|
||||
}}
|
||||
passHref
|
||||
className="after:absolute after:inset-0 after:z-10 after:rounded-lg focus:outline-none"
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"artikkel-kort",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
>
|
||||
<a
|
||||
className="after:absolute after:inset-0 after:z-10 after:rounded-lg focus:outline-none"
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"artikkel-kort",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
<Heading
|
||||
level={level}
|
||||
size="small"
|
||||
className="text-deepblue-700 group-hover:underline"
|
||||
>
|
||||
<Heading
|
||||
level={level}
|
||||
size="small"
|
||||
className="text-deepblue-700 group-hover:underline"
|
||||
>
|
||||
{heading}
|
||||
</Heading>
|
||||
</a>
|
||||
{heading}
|
||||
</Heading>
|
||||
</NextLink>
|
||||
{ingress && <BodyShort className="mt-2">{ingress}</BodyShort>}
|
||||
{variant === "god-praksis" ? (
|
||||
|
||||
@@ -20,7 +20,7 @@ const BloggCard = ({
|
||||
return (
|
||||
<li key={blog._id} className="border-b-border-subtle h-fit border-b pb-8">
|
||||
<Heading size="medium" as="div">
|
||||
<NextLink href={`/${blog.slug}`} passHref>
|
||||
<NextLink href={`/${blog.slug}`} passHref legacyBehavior>
|
||||
<Link
|
||||
className="text-deepblue-500 no-underline hover:underline"
|
||||
onClick={(e) =>
|
||||
|
||||
@@ -2,7 +2,7 @@ import { withErrorBoundary } from "@/error-boundary";
|
||||
import { BodyShort } from "@navikt/ds-react";
|
||||
import cl from "clsx";
|
||||
import NextLink from "next/link";
|
||||
import Image from "next/image";
|
||||
import Image from "next/legacy/image";
|
||||
import { logNav } from "@/utils";
|
||||
import { SanityT, urlFor } from "@/lib";
|
||||
|
||||
@@ -32,19 +32,19 @@ const GodPraksisCard = ({ node }: { node: AkselTemaT }) => {
|
||||
priority
|
||||
/>
|
||||
</div>
|
||||
<NextLink href={`/god-praksis/${node.slug.current}`} passHref>
|
||||
<a
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"card",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
className="navds-heading--medium text-deepblue-700 navds-heading mb-4 no-underline after:absolute after:inset-0 after:rounded-lg focus:outline-none group-hover:underline"
|
||||
>
|
||||
{node.title}
|
||||
</a>
|
||||
<NextLink
|
||||
href={`/god-praksis/${node.slug.current}`}
|
||||
passHref
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"card",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
className="navds-heading--medium text-deepblue-700 navds-heading mb-4 no-underline after:absolute after:inset-0 after:rounded-lg focus:outline-none group-hover:underline"
|
||||
>
|
||||
{node.title}
|
||||
</NextLink>
|
||||
<BodyShort className={cl("mb-2 lg:mb-6")}>{node.oppsummering}</BodyShort>
|
||||
<BodyShort size="small" className="text-text-subtle">
|
||||
|
||||
@@ -23,19 +23,19 @@ const InnholdsKort = ({
|
||||
id={node._key}
|
||||
className="algolia-index-lvl3 text-deepblue-500 scroll-mt-28 focus:outline-none group-hover:underline"
|
||||
>
|
||||
<NextLink href={`/${node?.lenke}`} passHref>
|
||||
<a
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"prinsipp-kort",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
className="z-10 before:absolute before:inset-0 focus:outline-none"
|
||||
>
|
||||
{node.title}
|
||||
</a>
|
||||
<NextLink
|
||||
href={`/${node?.lenke}`}
|
||||
passHref
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"prinsipp-kort",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
className="z-10 before:absolute before:inset-0 focus:outline-none"
|
||||
>
|
||||
{node.title}
|
||||
</NextLink>
|
||||
</Heading>
|
||||
<SanityBlockContent blocks={node.body} noLastMargin />
|
||||
|
||||
@@ -31,32 +31,33 @@ const RelatertInnhold = ({
|
||||
)}
|
||||
>
|
||||
{node.lenker.map((x) => (
|
||||
<NextLink href={getHref(x)} passHref key={x._key}>
|
||||
<a
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"relatert-innhold",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
className="algolia-ignore-index shadow-small focus-visible:shadow-focus bg-surface-default ring-border-subtle group grid rounded border-2 border-transparent px-4 py-3 ring-1 focus:outline-none"
|
||||
<NextLink
|
||||
href={getHref(x)}
|
||||
passHref
|
||||
key={x._key}
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"relatert-innhold",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
className="algolia-ignore-index shadow-small focus-visible:shadow-focus bg-surface-default ring-border-subtle group grid rounded border-2 border-transparent px-4 py-3 ring-1 focus:outline-none"
|
||||
>
|
||||
<Heading
|
||||
as="span"
|
||||
size="xsmall"
|
||||
className="underline group-hover:no-underline"
|
||||
>
|
||||
<Heading
|
||||
as="span"
|
||||
size="xsmall"
|
||||
className="underline group-hover:no-underline"
|
||||
>
|
||||
{x.title}
|
||||
</Heading>
|
||||
<BodyShort
|
||||
size="small"
|
||||
className="text-text-subtle mt-1 self-end break-words"
|
||||
as="span"
|
||||
>
|
||||
{x.ekstern_domene ? <>{getTag(x)}</> : `aksel.nav.no`}
|
||||
</BodyShort>
|
||||
</a>
|
||||
{x.title}
|
||||
</Heading>
|
||||
<BodyShort
|
||||
size="small"
|
||||
className="text-text-subtle mt-1 self-end break-words"
|
||||
as="span"
|
||||
>
|
||||
{x.ekstern_domene ? <>{getTag(x)}</> : `aksel.nav.no`}
|
||||
</BodyShort>
|
||||
</NextLink>
|
||||
))}
|
||||
</div>
|
||||
|
||||
@@ -109,7 +109,7 @@ const ComponentExamples = ({
|
||||
height={frameState}
|
||||
onLoad={() => handleExampleLoad()}
|
||||
id={iframeId}
|
||||
aria-label="Komponent eksempler"
|
||||
aria-label={`${node?.dir?.title} ${fil.navn} eksempel`}
|
||||
className={cl(
|
||||
"min-w-80 block w-full max-w-full resize-x overflow-auto bg-white shadow-[20px_0_20px_-20px_rgba(0,0,0,0.22)]"
|
||||
)}
|
||||
@@ -123,7 +123,7 @@ const ComponentExamples = ({
|
||||
".tsx",
|
||||
""
|
||||
)}`}
|
||||
className="text-gray-900"
|
||||
className="si-ignore text-gray-900"
|
||||
target="_blank"
|
||||
>
|
||||
Åpne i nytt vindu
|
||||
|
||||
@@ -3,7 +3,7 @@ import { SanityT, urlFor } from "@/lib";
|
||||
import { Heading } from "@navikt/ds-react";
|
||||
import Nextlink from "next/link";
|
||||
import cl from "clsx";
|
||||
import Image from "next/image";
|
||||
import Image from "next/legacy/image";
|
||||
import { StatusTag } from "components/website-modules/StatusTag";
|
||||
|
||||
const ComponentOverview = ({
|
||||
@@ -58,8 +58,8 @@ const ComponentOverview = ({
|
||||
<Image
|
||||
src={urlFor(x.status?.bilde).auto("format").url()}
|
||||
decoding="async"
|
||||
width="200px"
|
||||
height="200px"
|
||||
width="200"
|
||||
height="200"
|
||||
layout="fixed"
|
||||
objectFit="contain"
|
||||
alt={x?.heading + " thumbnail"}
|
||||
@@ -106,7 +106,11 @@ const ComponentOverview = ({
|
||||
|
||||
<div className="grid p-6 pt-0">
|
||||
<span className="flex items-center justify-between">
|
||||
<Nextlink href={`/${x?.slug.current}`} passHref>
|
||||
<Nextlink
|
||||
href={`/${x?.slug.current}`}
|
||||
passHref
|
||||
legacyBehavior
|
||||
>
|
||||
<Heading
|
||||
as="a"
|
||||
size="small"
|
||||
|
||||
@@ -62,6 +62,7 @@ const Filter = ({
|
||||
}}
|
||||
size="small"
|
||||
defaultValue="outline"
|
||||
variant="neutral"
|
||||
>
|
||||
<ToggleGroup.Item value="outline">Outline</ToggleGroup.Item>
|
||||
<ToggleGroup.Item value="filled">Filled</ToggleGroup.Item>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import meta from "@navikt/ds-icons/meta.json";
|
||||
import { BodyShort, Button, Detail, Heading } from "@navikt/ds-react";
|
||||
import Image from "next/image";
|
||||
import { useEffect, useState } from "react";
|
||||
import Image from "next/legacy/image";
|
||||
|
||||
import {
|
||||
AmplitudeEvents,
|
||||
@@ -136,8 +136,8 @@ import ${icon} from "@navikt/ds-icons/svg/${icon}.svg";`,
|
||||
<Image
|
||||
src={`https://raw.githubusercontent.com/navikt/aksel/main/%40navikt/icons/svg/${icon}.svg`}
|
||||
decoding="sync"
|
||||
width="96px"
|
||||
height="96px"
|
||||
width="96"
|
||||
height="96"
|
||||
layout="fixed"
|
||||
objectFit="contain"
|
||||
alt={icon + "eksempel lyst"}
|
||||
@@ -149,8 +149,8 @@ import ${icon} from "@navikt/ds-icons/svg/${icon}.svg";`,
|
||||
src={`https://raw.githubusercontent.com/navikt/aksel/main/%40navikt/icons/svg/${icon}.svg`}
|
||||
decoding="sync"
|
||||
className="invert"
|
||||
width="96px"
|
||||
height="96px"
|
||||
width="96"
|
||||
height="96"
|
||||
layout="fixed"
|
||||
objectFit="contain"
|
||||
alt={icon + " eksempel mørk bakgrunn"}
|
||||
|
||||
@@ -16,49 +16,45 @@ const AkselLink = ({
|
||||
className?: string;
|
||||
}) => {
|
||||
return (
|
||||
<Link href={href} passHref>
|
||||
<a
|
||||
<Link
|
||||
href={href}
|
||||
passHref
|
||||
className={cl("group relative w-fit pr-5 focus:outline-none", className, {
|
||||
"white focus-visible:text-text-default focus-visible:bg-blue-200 focus-visible:shadow-[0_0_0_3px_var(--a-blue-200)]":
|
||||
inverted,
|
||||
"text-deepblue-500 focus-visible:text-text-on-action group-hover:text-deepblue-800 focus-visible:bg-blue-800 focus-visible:shadow-[0_0_0_3px_var(--a-blue-800)]":
|
||||
!inverted,
|
||||
})}
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"link",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
>
|
||||
{children}
|
||||
<svg
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className={cl(
|
||||
"group relative w-fit pr-5 focus:outline-none",
|
||||
className,
|
||||
{
|
||||
"white focus-visible:text-text-default focus-visible:bg-blue-200 focus-visible:shadow-[0_0_0_3px_var(--a-blue-200)]":
|
||||
inverted,
|
||||
"text-deepblue-500 focus-visible:text-text-on-action group-hover:text-deepblue-800 focus-visible:bg-blue-800 focus-visible:shadow-[0_0_0_3px_var(--a-blue-800)]":
|
||||
!inverted,
|
||||
}
|
||||
"ml-2 h-[20px] w-[10px] scale-[0.85] transition-[width,right] group-hover:w-[16px]",
|
||||
"absolute right-[5px] top-1/2 -translate-y-1/2 rotate-180 group-hover:right-0"
|
||||
)}
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"link",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
aria-hidden
|
||||
>
|
||||
{children}
|
||||
<svg
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className={cl(
|
||||
"ml-2 h-[20px] w-[10px] scale-[0.85] transition-[width,right] group-hover:w-[16px]",
|
||||
"absolute right-[5px] top-1/2 -translate-y-1/2 rotate-180 group-hover:right-0"
|
||||
)}
|
||||
aria-hidden
|
||||
>
|
||||
<path
|
||||
d="M8 17.5L2.12132 11.6213C0.949744 10.4497 0.949746 8.55025 2.12132 7.37868L8 1.5"
|
||||
stroke="currentColor"
|
||||
strokeWidth="1.5"
|
||||
/>
|
||||
<path
|
||||
d="M16 9.72266L8 9.72266"
|
||||
strokeWidth="1.5"
|
||||
stroke="currentColor"
|
||||
className="hidden group-hover:block"
|
||||
/>
|
||||
</svg>
|
||||
</a>
|
||||
<path
|
||||
d="M8 17.5L2.12132 11.6213C0.949744 10.4497 0.949746 8.55025 2.12132 7.37868L8 1.5"
|
||||
stroke="currentColor"
|
||||
strokeWidth="1.5"
|
||||
/>
|
||||
<path
|
||||
d="M16 9.72266L8 9.72266"
|
||||
strokeWidth="1.5"
|
||||
stroke="currentColor"
|
||||
className="hidden group-hover:block"
|
||||
/>
|
||||
</svg>
|
||||
</Link>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -69,7 +69,11 @@ export const BloggAd = () => {
|
||||
</BodyLong>
|
||||
<BodyLong>
|
||||
Ta kontakt med{" "}
|
||||
<NextLink href="https://nav-it.slack.com/archives/C7NE7A8UF" passHref>
|
||||
<NextLink
|
||||
href="https://nav-it.slack.com/archives/C7NE7A8UF"
|
||||
passHref
|
||||
legacyBehavior
|
||||
>
|
||||
<Link className="font-semibold text-[#831843]">
|
||||
#Aksel-designsystemet
|
||||
</Link>
|
||||
|
||||
@@ -18,34 +18,35 @@ export const BreadCrumbs = ({
|
||||
}
|
||||
|
||||
return (
|
||||
<NextLink href={href ?? `/god-praksis/${router.query.tema}`} passHref>
|
||||
<a className="text-deepblue-500 hover:text-deepblue-800 group mb-1 flex w-fit items-center justify-start focus:underline focus:outline-none">
|
||||
<svg
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className={cl(
|
||||
"transition-width text-deepblue-500 group-hover:text-deepblue-800 mr-2 h-[20px] w-[10px] group-hover:w-[16px]"
|
||||
)}
|
||||
aria-hidden
|
||||
>
|
||||
<path
|
||||
d="M8 17.5L2.12132 11.6213C0.949744 10.4497 0.949746 8.55025 2.12132 7.37868L8 1.5"
|
||||
stroke="currentColor"
|
||||
strokeWidth="1.5"
|
||||
/>
|
||||
<path
|
||||
d="M16 9.72266L8 9.72266"
|
||||
strokeWidth="1.5"
|
||||
stroke="currentColor"
|
||||
className="hidden group-hover:block"
|
||||
/>
|
||||
</svg>
|
||||
|
||||
{text ??
|
||||
(router.query.tema as string).replace(/(^\w|\s\w)/g, (m) =>
|
||||
m.toUpperCase()
|
||||
)}
|
||||
</a>
|
||||
<NextLink
|
||||
href={href ?? `/god-praksis/${router.query.tema}`}
|
||||
passHref
|
||||
className="text-deepblue-500 hover:text-deepblue-800 group mb-1 flex w-fit items-center justify-start focus:underline focus:outline-none"
|
||||
>
|
||||
<svg
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
className={cl(
|
||||
"transition-width text-deepblue-500 group-hover:text-deepblue-800 mr-2 h-[20px] w-[10px] group-hover:w-[16px]"
|
||||
)}
|
||||
aria-hidden
|
||||
>
|
||||
<path
|
||||
d="M8 17.5L2.12132 11.6213C0.949744 10.4497 0.949746 8.55025 2.12132 7.37868L8 1.5"
|
||||
stroke="currentColor"
|
||||
strokeWidth="1.5"
|
||||
/>
|
||||
<path
|
||||
d="M16 9.72266L8 9.72266"
|
||||
strokeWidth="1.5"
|
||||
stroke="currentColor"
|
||||
className="hidden group-hover:block"
|
||||
/>
|
||||
</svg>
|
||||
{text ??
|
||||
(router.query.tema as string).replace(/(^\w|\s\w)/g, (m) =>
|
||||
m.toUpperCase()
|
||||
)}
|
||||
</NextLink>
|
||||
);
|
||||
};
|
||||
@@ -1,4 +1,4 @@
|
||||
import Image from "next/image";
|
||||
import Image from "next/legacy/image";
|
||||
import NextLink from "next/link";
|
||||
import { dateStr } from "@/utils";
|
||||
import { BodyLong, BodyShort, Heading, Link } from "@navikt/ds-react";
|
||||
@@ -98,7 +98,7 @@ export const LatestBloggposts = ({
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
<NextLink href={`/${bloggs[0].slug}`} passHref>
|
||||
<NextLink href={`/${bloggs[0].slug}`} passHref legacyBehavior>
|
||||
<Link className="text-deepblue-500 no-underline hover:underline">
|
||||
<Heading
|
||||
size="large"
|
||||
@@ -163,7 +163,7 @@ export const LatestBloggposts = ({
|
||||
</div>
|
||||
)}
|
||||
<div>
|
||||
<NextLink href={`/${blog.slug}`} passHref>
|
||||
<NextLink href={`/${blog.slug}`} passHref legacyBehavior>
|
||||
<Link className="text-deepblue-500 no-underline hover:underline">
|
||||
<Heading
|
||||
size="small"
|
||||
@@ -236,7 +236,7 @@ export const LatestBloggposts = ({
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
<NextLink href={`/${bloggs[0].slug}`} passHref>
|
||||
<NextLink href={`/${bloggs[0].slug}`} passHref legacyBehavior>
|
||||
<Link className="text-deepblue-500 no-underline hover:underline">
|
||||
<Heading
|
||||
size="large"
|
||||
@@ -295,7 +295,7 @@ export const LatestBloggposts = ({
|
||||
</div>
|
||||
)}
|
||||
<div>
|
||||
<NextLink href={`/${blog.slug}`} passHref>
|
||||
<NextLink href={`/${blog.slug}`} passHref legacyBehavior>
|
||||
<Link className="text-deepblue-500 no-underline hover:underline">
|
||||
<Heading
|
||||
size="small"
|
||||
|
||||
@@ -41,8 +41,9 @@ function PreviewBanner(): JSX.Element {
|
||||
<Link
|
||||
href="https://aksel.nav.no/god-praksis/artikler/ny-redaktor-i-aksel"
|
||||
passHref
|
||||
className="underline"
|
||||
>
|
||||
<a className="underline">Les mer om hvordan du får tilgang</a>
|
||||
Les mer om hvordan du får tilgang
|
||||
</Link>
|
||||
</div>
|
||||
</>
|
||||
|
||||
@@ -77,7 +77,7 @@ export const ToolCard = () => {
|
||||
<div className="-rotate-45">{t.icon}</div>
|
||||
</div>
|
||||
<div>
|
||||
<NextLink href={t.href} passHref>
|
||||
<NextLink href={t.href} passHref legacyBehavior>
|
||||
<Link
|
||||
className="text-text-default mb-1 font-semibold"
|
||||
onClick={(e) =>
|
||||
|
||||
@@ -196,7 +196,12 @@ const contributorsSingle = `contributors[0]->{
|
||||
export const akselBloggPosts = `*[_type == "blogg_landingsside"][0]{
|
||||
"page": {..., intro[]{...,${deRefs}}},
|
||||
"bloggposts": *[_type == "aksel_blogg"] | order(_createdAt desc){
|
||||
...,
|
||||
seo,
|
||||
heading,
|
||||
ingress,
|
||||
publishedAt,
|
||||
_createdAt,
|
||||
_id,
|
||||
"slug": slug.current,
|
||||
${contributorsAll}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/* eslint-disable @typescript-eslint/no-var-requires */
|
||||
/* eslint-disable no-undef */
|
||||
|
||||
const withTM = require("next-transpile-modules")(["@navikt/ds-tokens"]);
|
||||
const withBundleAnalyzer = require("@next/bundle-analyzer")({
|
||||
enabled: process.env.ANALYZE === "true",
|
||||
});
|
||||
@@ -51,81 +50,72 @@ const securityHeaders = [
|
||||
];
|
||||
|
||||
const config = () =>
|
||||
withBundleAnalyzer(
|
||||
withTM({
|
||||
serverRuntimeConfig: {
|
||||
// Will only be available on the server side
|
||||
azureAppClientId: process.env.AZURE_APP_CLIENT_ID,
|
||||
azureJwksUri: process.env.AZURE_OPENID_CONFIG_JWKS_URI,
|
||||
azureAppIssuer: process.env.AZURE_OPENID_CONFIG_ISSUER,
|
||||
azureAppWellKnownUrl: process.env.AZURE_APP_WELL_KNOWN_URL,
|
||||
azureAppJWK: process.env.AZURE_APP_JWK,
|
||||
},
|
||||
publicRuntimeConfig: {
|
||||
NEXT_PUBLIC_TEST: process.env.NEXT_PUBLIC_TEST,
|
||||
},
|
||||
async headers() {
|
||||
return [
|
||||
{
|
||||
source: "/:path*",
|
||||
headers: securityHeaders,
|
||||
},
|
||||
];
|
||||
},
|
||||
rewrites: async () => [
|
||||
withBundleAnalyzer({
|
||||
transpilePackages: ["@navikt/ds-tokens"],
|
||||
serverRuntimeConfig: {
|
||||
// Will only be available on the server side
|
||||
azureAppClientId: process.env.AZURE_APP_CLIENT_ID,
|
||||
azureJwksUri: process.env.AZURE_OPENID_CONFIG_JWKS_URI,
|
||||
azureAppIssuer: process.env.AZURE_OPENID_CONFIG_ISSUER,
|
||||
azureAppWellKnownUrl: process.env.AZURE_APP_WELL_KNOWN_URL,
|
||||
azureAppJWK: process.env.AZURE_APP_JWK,
|
||||
},
|
||||
publicRuntimeConfig: {
|
||||
NEXT_PUBLIC_TEST: process.env.NEXT_PUBLIC_TEST,
|
||||
},
|
||||
async headers() {
|
||||
return [
|
||||
{
|
||||
source: "/sitemap.xml",
|
||||
destination: "/api/sitemap",
|
||||
source: "/:path*",
|
||||
headers: securityHeaders,
|
||||
},
|
||||
],
|
||||
async redirects() {
|
||||
return [
|
||||
{
|
||||
source: "/studio",
|
||||
destination: "/admin",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/storybook",
|
||||
destination:
|
||||
"https://main--5f801fb2aea7820022de2936.chromatic.com/",
|
||||
permanent: false,
|
||||
},
|
||||
{
|
||||
source: "/prinsipper",
|
||||
destination: "/",
|
||||
permanent: false,
|
||||
},
|
||||
{
|
||||
source: "/preview/:slug*",
|
||||
destination: "/api/preview?slug=:slug*",
|
||||
permanent: true,
|
||||
},
|
||||
];
|
||||
];
|
||||
},
|
||||
rewrites: async () => [
|
||||
{
|
||||
source: "/sitemap.xml",
|
||||
destination: "/api/sitemap",
|
||||
},
|
||||
],
|
||||
async redirects() {
|
||||
return [
|
||||
{
|
||||
source: "/studio",
|
||||
destination: "/admin",
|
||||
permanent: true,
|
||||
},
|
||||
{
|
||||
source: "/storybook",
|
||||
destination: "https://main--5f801fb2aea7820022de2936.chromatic.com/",
|
||||
permanent: false,
|
||||
},
|
||||
{
|
||||
source: "/prinsipper",
|
||||
destination: "/",
|
||||
permanent: false,
|
||||
},
|
||||
{
|
||||
source: "/preview/:slug*",
|
||||
destination: "/api/preview?slug=:slug*",
|
||||
permanent: true,
|
||||
},
|
||||
];
|
||||
},
|
||||
webpack(config) {
|
||||
config.module.rules.push({
|
||||
test: /\.svg$/,
|
||||
use: ["@svgr/webpack"],
|
||||
});
|
||||
|
||||
webpack(config) {
|
||||
config.module.rules.push({
|
||||
test: /\.svg$/,
|
||||
use: ["@svgr/webpack"],
|
||||
});
|
||||
|
||||
return config;
|
||||
},
|
||||
images: {
|
||||
domains: ["cdn.sanity.io", "raw.githubusercontent.com"],
|
||||
dangerouslyAllowSVG: true,
|
||||
},
|
||||
/* swcMinify: true,
|
||||
httpAgentOptions: {
|
||||
keepAlive: false,
|
||||
}, */
|
||||
})
|
||||
);
|
||||
return config;
|
||||
},
|
||||
images: {
|
||||
domains: ["cdn.sanity.io", "raw.githubusercontent.com"],
|
||||
dangerouslyAllowSVG: true,
|
||||
},
|
||||
});
|
||||
|
||||
if (process.env.NODE_ENV === "production") {
|
||||
/* console.log("sentry is enabled");
|
||||
module.exports = withSentryConfig(config(), { silent: true }); */
|
||||
module.exports = config();
|
||||
} else {
|
||||
module.exports = config();
|
||||
|
||||
@@ -25,17 +25,17 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@sanity/block-content-to-react": "^3.0.0",
|
||||
"@sanity/client": "^4.0.1",
|
||||
"@sanity/client": "^5.2.2",
|
||||
"@sanity/code-input": "4.0.0",
|
||||
"@sanity/color-input": "^3.0.2",
|
||||
"@sanity/icons": "2.2.2",
|
||||
"@sanity/image-url": "1.0.2",
|
||||
"@sanity/preview-kit": "^1.3.2",
|
||||
"@sanity/preview-kit": "^1.3.4",
|
||||
"@sanity/table": "1.0.1",
|
||||
"@sanity/ui": "^1.2.0",
|
||||
"@sanity/vision": "3.2.6",
|
||||
"@sanity/ui": "^1.2.5",
|
||||
"@sanity/vision": "3.5.0",
|
||||
"@svgr/webpack": "^5.5.0",
|
||||
"amplitude-js": "^8.8.0",
|
||||
"amplitude-js": "^8.21.5",
|
||||
"boring-avatars": "1.7.0",
|
||||
"clsx": "^1.2.1",
|
||||
"codesandbox": "^2.2.3",
|
||||
@@ -46,7 +46,7 @@
|
||||
"jose": "4.10.0",
|
||||
"jwt-decode": "3.1.2",
|
||||
"lodash": "^4.17.21",
|
||||
"next": "^12.2.0",
|
||||
"next": "^13.2.1",
|
||||
"next-sanity": "^4.1.2",
|
||||
"prettier": "2.7.1",
|
||||
"prism-react-renderer": "^1.3.0",
|
||||
@@ -55,10 +55,10 @@
|
||||
"react-dom": "^18.0.0",
|
||||
"react-modal": "3.15.1",
|
||||
"recharts": "^2.2.0",
|
||||
"sanity": "3.2.6",
|
||||
"sanity": "3.5.0",
|
||||
"sanity-plugin-asset-source-unsplash": "^1.0.6",
|
||||
"sanity-plugin-iframe-pane": "^2.1.1",
|
||||
"sanity-plugin-media": "^2.0.4",
|
||||
"sanity-plugin-media": "^2.0.5",
|
||||
"sitemap": "^7.0.0",
|
||||
"styled-components": "^5.2",
|
||||
"swr": "^1.1.2",
|
||||
@@ -83,7 +83,6 @@
|
||||
"jest": "^29.0.0",
|
||||
"jest-environment-jsdom": "^29.0.0",
|
||||
"json5": "2.2.1",
|
||||
"next-transpile-modules": "^9.0.0",
|
||||
"postcss": "^8.4.0",
|
||||
"postcss-import": "^14.1.0",
|
||||
"postcss-loader": "7.0.0",
|
||||
|
||||
@@ -24,7 +24,7 @@ function Page() {
|
||||
<BodyLong className="mb-2">
|
||||
Vi fant ikke siden du var ute etter{" "}
|
||||
</BodyLong>
|
||||
<NextLink href="/" passHref>
|
||||
<NextLink href="/" passHref legacyBehavior>
|
||||
<Link>Tilbake til forsiden</Link>
|
||||
</NextLink>
|
||||
</div>
|
||||
|
||||
@@ -85,7 +85,7 @@ export default async function logPageView(
|
||||
// If last week is not same as current week, add new week
|
||||
await client
|
||||
.patch(metrics._id)
|
||||
.prepend("weekObj.weeks", [
|
||||
.prepend("weeksObj.weeks", [
|
||||
{
|
||||
week: format(new Date(), "yyyy-MM-dd"),
|
||||
views: 1,
|
||||
|
||||
@@ -4,7 +4,7 @@ import Link from "next/link";
|
||||
|
||||
const Example = () => {
|
||||
return (
|
||||
<Link href="#" passHref>
|
||||
<Link href="#" passHref legacyBehavior>
|
||||
<Button as="a">Lenke</Button>
|
||||
</Link>
|
||||
);
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
import {
|
||||
BabyChangingRoom,
|
||||
Braille,
|
||||
Cognition,
|
||||
Refresh,
|
||||
} from "@navikt/ds-icons";
|
||||
import { List } from "@navikt/ds-react";
|
||||
import { withDsExample } from "components/website-modules/examples/withDsExample";
|
||||
|
||||
const Example = () => {
|
||||
return (
|
||||
<List>
|
||||
<List.Item icon={<Braille aria-hidden />}>
|
||||
Blinkende innhold. Vi vil ikke gi brukerne våre anfall.
|
||||
</List.Item>
|
||||
<List.Item icon={<Cognition aria-hidden />}>
|
||||
Kritiske problemer og problemer med høye barrierer på innhold med høy
|
||||
effekt.
|
||||
</List.Item>
|
||||
<List.Item icon={<BabyChangingRoom aria-hidden />}>
|
||||
Middels barrierer på innhold med høy effekt.
|
||||
</List.Item>
|
||||
<List.Item icon={<Refresh aria-hidden />}>
|
||||
Middels barrierer på innhold med middels effekt.
|
||||
</List.Item>
|
||||
</List>
|
||||
);
|
||||
};
|
||||
|
||||
export default withDsExample(Example);
|
||||
|
||||
/* Storybook story */
|
||||
export const Demo = {
|
||||
render: Example,
|
||||
};
|
||||
|
||||
export const args = {
|
||||
index: 2,
|
||||
desc: "Husk å sette aria-hidden på ikonet.",
|
||||
};
|
||||
@@ -0,0 +1,33 @@
|
||||
import { List } from "@navikt/ds-react";
|
||||
import { withDsExample } from "components/website-modules/examples/withDsExample";
|
||||
|
||||
const Example = () => {
|
||||
return (
|
||||
<List as="ol" title="Vi bør fikse uu-issues i følgende rekkefølge:">
|
||||
<List.Item>
|
||||
Blinkende innhold. Vi vil ikke gi brukerne våre anfall.
|
||||
</List.Item>
|
||||
<List.Item>
|
||||
Beskrivelse på punktet i lista. Prøv å hold den kort og konsis.
|
||||
</List.Item>
|
||||
<List.Item>
|
||||
Kritiske problemer og problemer med høye barrierer på innhold med høy
|
||||
effekt.
|
||||
</List.Item>
|
||||
<List.Item>Middels barrierer på innhold med høy effekt.</List.Item>
|
||||
<List.Item>Middels barrierer på innhold med middels effekt.</List.Item>
|
||||
</List>
|
||||
);
|
||||
};
|
||||
|
||||
export default withDsExample(Example);
|
||||
|
||||
/* Storybook story */
|
||||
export const Demo = {
|
||||
render: Example,
|
||||
};
|
||||
|
||||
export const args = {
|
||||
index: 1,
|
||||
desc: "Husk å sette riktig nivå/tag på List elementet hvis du bruker en tittel.",
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
import { List } from "@navikt/ds-react";
|
||||
import { withDsExample } from "components/website-modules/examples/withDsExample";
|
||||
|
||||
const Example = () => {
|
||||
return (
|
||||
<List as="ul">
|
||||
<List.Item title="Kritiske">
|
||||
disse er problemer som må løses så fort som mulig—de hindrer folk i å
|
||||
bruke siden i det hele tatt og kan være direkte farlig.
|
||||
</List.Item>
|
||||
<List.Item title="Høy">
|
||||
brukere er forhindret i å forstå innholdet eller utføre kritiske
|
||||
oppgaver, og det finnes ingen forsvarsstrategier eller alternative
|
||||
løsninger.
|
||||
</List.Item>
|
||||
<List.Item title="Medium">
|
||||
det er vanskelig, tidkrevende eller frustrerende for brukere å få
|
||||
tilgang til innhold eller funksjonalitet.
|
||||
</List.Item>
|
||||
<List.Item title="Lav">
|
||||
brukeren få tilgang til alt innhold og funksjonalitet, men
|
||||
brukeropplevelsen er dårlig.
|
||||
</List.Item>
|
||||
</List>
|
||||
);
|
||||
};
|
||||
|
||||
export default withDsExample(Example);
|
||||
|
||||
/* Storybook story */
|
||||
export const Demo = {
|
||||
render: Example,
|
||||
};
|
||||
|
||||
export const args = {
|
||||
index: 3,
|
||||
};
|
||||
@@ -0,0 +1,25 @@
|
||||
import { List } from "@navikt/ds-react";
|
||||
import { withDsExample } from "components/website-modules/examples/withDsExample";
|
||||
|
||||
const Example = () => {
|
||||
return (
|
||||
<List as="ul" title="Vi bør fikse uu-issues i følgende rekkefølge:">
|
||||
<List.Item>
|
||||
Rammeverket, inkludert navigasjon, påloggings- og søkefunksjoner
|
||||
</List.Item>
|
||||
<List.Item>Gjenbrukbare komponenter</List.Item>
|
||||
<List.Item>Nøkkelstier gjennom nettstedet</List.Item>
|
||||
</List>
|
||||
);
|
||||
};
|
||||
|
||||
export default withDsExample(Example);
|
||||
|
||||
/* Storybook story */
|
||||
export const Demo = {
|
||||
render: Example,
|
||||
};
|
||||
|
||||
export const args = {
|
||||
index: 0,
|
||||
};
|
||||
@@ -10,7 +10,7 @@ import ArtikkelCard from "components/sanity-modules/cards/ArtikkelCard";
|
||||
import { AkselCubeStatic } from "components/website-modules/cube";
|
||||
import { PreviewSuspense } from "next-sanity/preview";
|
||||
import Head from "next/head";
|
||||
import Image from "next/image";
|
||||
import Image from "next/legacy/image";
|
||||
import { lazy } from "react";
|
||||
import NotFotfund from "../404";
|
||||
|
||||
@@ -84,8 +84,8 @@ const Page = ({ tema: page }: PageProps): JSX.Element => {
|
||||
<Image
|
||||
src={urlFor(page.pictogram.url).auto("format").url()}
|
||||
decoding="sync"
|
||||
width="72px"
|
||||
height="72px"
|
||||
width="72"
|
||||
height="72"
|
||||
layout="fixed"
|
||||
priority
|
||||
aria-hidden
|
||||
|
||||
@@ -3,14 +3,8 @@ import { Footer } from "@/layout";
|
||||
import { akselForsideQuery, SanityT, urlFor } from "@/lib";
|
||||
import { getClient } from "@/sanity-client";
|
||||
import { BodyLong, Heading } from "@navikt/ds-react";
|
||||
import { logNav } from "../components";
|
||||
import {
|
||||
ComponentIcon,
|
||||
DownloadIcon,
|
||||
PauseIcon,
|
||||
PlayIcon,
|
||||
TokenIcon,
|
||||
} from "@sanity/icons";
|
||||
import { ComponentIcon, PauseIcon, PlayIcon } from "@sanity/icons";
|
||||
import cl from "clsx";
|
||||
import { Header } from "components/layout/header/Header";
|
||||
import ArtikkelCard from "components/sanity-modules/cards/ArtikkelCard";
|
||||
import GodPraksisCard from "components/sanity-modules/cards/GodPraksisCard";
|
||||
@@ -22,7 +16,7 @@ import { PreviewSuspense } from "next-sanity/preview";
|
||||
import Head from "next/head";
|
||||
import Link from "next/link";
|
||||
import { lazy, useEffect, useState } from "react";
|
||||
import cl from "clsx";
|
||||
import { logNav } from "../components";
|
||||
|
||||
function getPrefersReducedMotion() {
|
||||
const QUERY = "(prefers-reduced-motion: no-preference)";
|
||||
@@ -120,25 +114,25 @@ const IntroCards = () => {
|
||||
<ul className="centered-layout xs:mb-36 mb-40 grid w-full max-w-screen-md grid-cols-2 gap-4 md:gap-6">
|
||||
{introcards.map(({ icon: Icon, title, desc, href }) => (
|
||||
<li key={title} className="grid">
|
||||
<Link href={href} passHref>
|
||||
<a
|
||||
className="focus-visible:shadow-focus bg-surface-default hover:shadow-small hover:ring-border-subtle group z-10 rounded-lg p-4 hover:ring-1 focus:outline-none"
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"intro-kort",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
>
|
||||
<span className="xs:flex items-center gap-2">
|
||||
<Icon aria-hidden className="shrink-0 text-2xl" role="img" />
|
||||
<span className="text-xl font-semibold group-hover:underline">
|
||||
{title}
|
||||
</span>
|
||||
<Link
|
||||
href={href}
|
||||
passHref
|
||||
className="focus-visible:shadow-focus bg-surface-default hover:shadow-small hover:ring-border-subtle group z-10 rounded-lg p-4 hover:ring-1 focus:outline-none"
|
||||
onClick={(e) =>
|
||||
logNav(
|
||||
"intro-kort",
|
||||
window.location.pathname,
|
||||
e.currentTarget.getAttribute("href")
|
||||
)
|
||||
}
|
||||
>
|
||||
<span className="xs:flex items-center gap-2">
|
||||
<Icon aria-hidden className="shrink-0 text-2xl" role="img" />
|
||||
<span className="text-xl font-semibold group-hover:underline">
|
||||
{title}
|
||||
</span>
|
||||
<div className="text-text-subtle mt-2">{desc}</div>
|
||||
</a>
|
||||
</span>
|
||||
<div className="text-text-subtle mt-2">{desc}</div>
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
@@ -314,7 +308,7 @@ const Forside = ({
|
||||
</ul>
|
||||
<div className="mx-auto mt-8">
|
||||
<AkselLink href="/god-praksis">
|
||||
{`Utforsk alle ${temaCount} god praksis tema`}
|
||||
{`Utforsk alle ${temaCount} tema i god praksis`}
|
||||
</AkselLink>
|
||||
</div>
|
||||
<div className="mt-20">
|
||||
@@ -332,7 +326,7 @@ const Forside = ({
|
||||
))}
|
||||
</div>
|
||||
<AkselLink href="/god-praksis/artikler">
|
||||
Se alle artikler i god praksis
|
||||
Utforsk alle artikler i god praksis
|
||||
</AkselLink>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
import { komponentLandingQuery, SanityT, SidebarT, urlFor } from "@/lib";
|
||||
import { SanityBlockContent } from "@/sanity-block";
|
||||
import { getClient } from "@/sanity-client";
|
||||
import { Heading, Ingress } from "@navikt/ds-react";
|
||||
import { logAmplitudeEvent } from "@/utils";
|
||||
import { BodyShort, Heading, Ingress } from "@navikt/ds-react";
|
||||
import cl from "clsx";
|
||||
import {
|
||||
GithubIcon,
|
||||
YarnIcon,
|
||||
FigmaIcon,
|
||||
ChangelogIcon,
|
||||
} from "components/assets";
|
||||
import { WithSidebar } from "components/layout/page-templates/WithSidebar";
|
||||
import ComponentOverview from "components/sanity-modules/component-overview";
|
||||
import { SuggestionBlock } from "components/website-modules/suggestionblock";
|
||||
@@ -11,6 +18,76 @@ import Head from "next/head";
|
||||
import { lazy } from "react";
|
||||
import { komponentKategorier } from "../../sanity/config";
|
||||
|
||||
function Links() {
|
||||
return (
|
||||
<BodyShort
|
||||
as="span"
|
||||
size="small"
|
||||
className="text-text-subtle mb-6 flex flex-wrap gap-4"
|
||||
>
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
href="https://github.com/navikt/aksel/tree/main/%40navikt"
|
||||
className="hover:text-text-default focus:text-text-on-inverted focus:shadow-focus flex items-center gap-1 underline hover:no-underline focus:bg-blue-800 focus:no-underline focus:outline-none"
|
||||
onClick={() =>
|
||||
logAmplitudeEvent("link", {
|
||||
kilde: "intro-lenker ikonside",
|
||||
til: "github",
|
||||
})
|
||||
}
|
||||
>
|
||||
<GithubIcon /> Github
|
||||
</a>
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
href="https://yarnpkg.com/package/@navikt/ds-react"
|
||||
className="hover:text-text-default focus:text-text-on-inverted focus:shadow-focus flex items-center gap-1 underline hover:no-underline focus:bg-blue-800 focus:no-underline focus:outline-none"
|
||||
onClick={() =>
|
||||
logAmplitudeEvent("link", {
|
||||
kilde: "intro-lenker ikonside",
|
||||
til: "yarn",
|
||||
})
|
||||
}
|
||||
>
|
||||
<YarnIcon />
|
||||
Yarn
|
||||
</a>
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
href="/grunnleggende/kode/endringslogg"
|
||||
className="hover:text-text-default focus:text-text-on-inverted focus:shadow-focus flex items-center gap-1 underline hover:no-underline focus:bg-blue-800 focus:no-underline focus:outline-none"
|
||||
onClick={() =>
|
||||
logAmplitudeEvent("link", {
|
||||
kilde: "intro-lenker komponenter",
|
||||
til: "endringslogg",
|
||||
})
|
||||
}
|
||||
>
|
||||
<ChangelogIcon />
|
||||
Endringslogg
|
||||
</a>
|
||||
|
||||
<a
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
href="https://www.figma.com/@nav_aksel"
|
||||
className="hover:text-text-default focus:text-text-on-inverted focus:shadow-focus flex items-center gap-1 underline hover:no-underline focus:bg-blue-800 focus:no-underline focus:outline-none"
|
||||
onClick={() =>
|
||||
logAmplitudeEvent("link", {
|
||||
kilde: "intro-lenker ikonside",
|
||||
til: "figma",
|
||||
})
|
||||
}
|
||||
>
|
||||
<FigmaIcon /> Figma
|
||||
</a>
|
||||
</BodyShort>
|
||||
);
|
||||
}
|
||||
|
||||
const Page = ({
|
||||
page,
|
||||
sidebar,
|
||||
@@ -58,6 +135,7 @@ const Page = ({
|
||||
intro={<Ingress className="text-text-on-action">{page?.intro}</Ingress>}
|
||||
pageProps={page}
|
||||
>
|
||||
<Links />
|
||||
<SuggestionBlock variant="komponenter" />
|
||||
{komponentKategorier
|
||||
.filter(
|
||||
|
||||
@@ -13,7 +13,7 @@ import TableOfContents from "components/website-modules/TOC";
|
||||
import { getImage } from "components/website-modules/utils/get-image";
|
||||
import { PreviewSuspense } from "next-sanity/preview";
|
||||
import Head from "next/head";
|
||||
import Image from "next/image";
|
||||
import Image from "next/legacy/image";
|
||||
import { GetServerSideProps } from "next/types";
|
||||
import { lazy } from "react";
|
||||
import NotFotfund from "../404";
|
||||
|
||||
@@ -187,7 +187,7 @@ export const serializers = {
|
||||
}) => {
|
||||
if (href && href.startsWith("mailto:")) {
|
||||
return (
|
||||
<NextLink href={href} passHref>
|
||||
<NextLink href={href} passHref legacyBehavior>
|
||||
<Link className="inline">{children}</Link>
|
||||
</NextLink>
|
||||
);
|
||||
@@ -197,7 +197,7 @@ export const serializers = {
|
||||
{children} <ExternalLink title="åpner lenken i ny fane" />
|
||||
</Link>
|
||||
) : (
|
||||
<NextLink href={href} passHref>
|
||||
<NextLink href={href} passHref legacyBehavior>
|
||||
<Link className="inline">{children}</Link>
|
||||
</NextLink>
|
||||
);
|
||||
@@ -209,7 +209,7 @@ export const serializers = {
|
||||
|
||||
const href = `/${slug?.current}`;
|
||||
return (
|
||||
<NextLink href={href} passHref>
|
||||
<NextLink href={href} passHref legacyBehavior>
|
||||
<Link>{children}</Link>
|
||||
</NextLink>
|
||||
);
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"@navikt/ds-css": "2.3.0",
|
||||
"@navikt/ds-react": "2.3.0",
|
||||
"@navikt/ds-css": "2.4.1",
|
||||
"@navikt/ds-react": "2.4.1",
|
||||
"react": "^18.0.0",
|
||||
"react-dom": "^18.0.0"
|
||||
},
|
||||
|
||||
+10
-10
@@ -190,15 +190,15 @@
|
||||
"devDependencies": {
|
||||
"@changesets/changelog-github": "0.4.7",
|
||||
"@changesets/cli": "2.25.0",
|
||||
"@storybook/addon-a11y": "7.0.0-beta.45",
|
||||
"@storybook/addon-actions": "7.0.0-beta.45",
|
||||
"@storybook/addon-essentials": "7.0.0-beta.45",
|
||||
"@storybook/addon-storysource": "7.0.0-beta.45",
|
||||
"@storybook/addons": "7.0.0-beta.45",
|
||||
"@storybook/csf-tools": "7.0.0-beta.45",
|
||||
"@storybook/react": "7.0.0-beta.45",
|
||||
"@storybook/react-vite": "7.0.0-beta.45",
|
||||
"@storybook/theming": "7.0.0-beta.45",
|
||||
"@storybook/addon-a11y": "7.0.0-beta.54",
|
||||
"@storybook/addon-actions": "7.0.0-beta.54",
|
||||
"@storybook/addon-essentials": "7.0.0-beta.54",
|
||||
"@storybook/addon-storysource": "7.0.0-beta.54",
|
||||
"@storybook/addons": "7.0.0-beta.54",
|
||||
"@storybook/csf-tools": "7.0.0-beta.54",
|
||||
"@storybook/react": "7.0.0-beta.54",
|
||||
"@storybook/react-vite": "7.0.0-beta.54",
|
||||
"@storybook/theming": "7.0.0-beta.54",
|
||||
"@typescript-eslint/parser": "^5.41.0",
|
||||
"@whitespace/storybook-addon-html": "^5.0.3",
|
||||
"chromatic": "6.5.4",
|
||||
@@ -219,7 +219,7 @@
|
||||
"react": "^18.0.0",
|
||||
"react-docgen-typescript": "2.2.2",
|
||||
"react-dom": "^18.0.0",
|
||||
"storybook": "7.0.0-beta.45",
|
||||
"storybook": "7.0.0-beta.54",
|
||||
"stylelint": "^14.8.5",
|
||||
"stylelint-config-prettier": "^9.0.3",
|
||||
"stylelint-config-standard": "^25.0.0",
|
||||
|
||||
Reference in new issue
Block a user