@sikt/sds-header 3.1.1 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/index.css +35 -148
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +5 -17
- package/dist/index.d.ts +5 -17
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [4.0.1](https://gitlab.sikt.no/designsystem/sds-komponentbibliotek/compare/@sikt/sds-header@4.0.0...@sikt/sds-header@4.0.1) (2025-10-17)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **deps:** update @sikt/sds-logo@2.2.2 ([69c79be](https://gitlab.sikt.no/designsystem/sds-komponentbibliotek/commit/69c79bed42ec166e5ef50a00812f8b493d08cef0))
|
|
10
|
+
- **logo:** correct color ([52d66f1](https://gitlab.sikt.no/designsystem/sds-komponentbibliotek/commit/52d66f1c6453a6d5e03a7efdef3a50c7a6371a84))
|
|
11
|
+
|
|
12
|
+
## [4.0.0](https://gitlab.sikt.no/designsystem/sds-komponentbibliotek/compare/@sikt/sds-header@3.1.1...@sikt/sds-header@4.0.0) (2025-10-06)
|
|
13
|
+
|
|
14
|
+
### ⚠ BREAKING CHANGES
|
|
15
|
+
|
|
16
|
+
- **header:** remove header nav & collapsible menu
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
- **header:** add application status slot ([222bdd8](https://gitlab.sikt.no/designsystem/sds-komponentbibliotek/commit/222bdd802e99d96eed1d872fd6b0c009fa6baff3))
|
|
21
|
+
- **header:** add slots for left & right content ([948307f](https://gitlab.sikt.no/designsystem/sds-komponentbibliotek/commit/948307fda27ee0fd610e4d2941cf029b7d6741fa))
|
|
22
|
+
- **header:** remove header nav & collapsible menu ([e76ba09](https://gitlab.sikt.no/designsystem/sds-komponentbibliotek/commit/e76ba09d3d5147276a6c5208978800c4301b0f8b))
|
|
23
|
+
|
|
5
24
|
## [3.1.1](https://gitlab.sikt.no/designsystem/sds-komponentbibliotek/compare/@sikt/sds-header@3.1.0...@sikt/sds-header@3.1.1) (2025-07-08)
|
|
6
25
|
|
|
7
26
|
### Bug Fixes
|
package/dist/index.css
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/* src/header.pcss */
|
|
2
2
|
.sds-header {
|
|
3
3
|
align-items: center;
|
|
4
|
-
position: relative;
|
|
5
4
|
background-color: var(--sds-color-layout-background-primary);
|
|
5
|
+
color: var(--sds-color-text-primary);
|
|
6
|
+
position: relative;
|
|
6
7
|
--header-height: 48px;
|
|
7
8
|
}
|
|
8
9
|
@media (width >= 720px) {
|
|
@@ -15,170 +16,56 @@
|
|
|
15
16
|
--header-height: 72px ;
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
|
-
.sds-header__content {
|
|
19
|
-
min-height: var(--header-height);
|
|
20
|
-
padding: 0 var(--sds-space-padding-medium);
|
|
21
|
-
display: grid;
|
|
22
|
-
grid-gap: 0 var(--sds-space-padding-small);
|
|
23
|
-
grid-template-columns: 1fr auto 1fr;
|
|
24
|
-
align-items: center;
|
|
25
|
-
}
|
|
26
|
-
.sds-header__header-item {
|
|
27
|
-
display: none;
|
|
28
|
-
}
|
|
29
|
-
@media (width >= 720px) {
|
|
30
|
-
.sds-header__header-item {
|
|
31
|
-
display: unset;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
.sds-header__header-item--last-item {
|
|
35
|
-
width: -webkit-fit-content;
|
|
36
|
-
width: fit-content;
|
|
37
|
-
justify-self: end;
|
|
38
|
-
}
|
|
39
19
|
.sds-header__skip-link.sds-screen-reader-only--focusable:focus-within {
|
|
40
20
|
background-color: var(--sds-color-layout-background-primary);
|
|
41
21
|
position: absolute;
|
|
42
22
|
z-index: 1;
|
|
43
23
|
}
|
|
44
|
-
.sds-
|
|
45
|
-
|
|
46
|
-
|
|
24
|
+
.sds-header__logo-link {
|
|
25
|
+
background-color: unset;
|
|
26
|
+
color: inherit;
|
|
27
|
+
text-decoration: none;
|
|
47
28
|
width: -webkit-fit-content;
|
|
48
29
|
width: fit-content;
|
|
49
|
-
margin: var(--sds-focus-outline-width) 0;
|
|
50
30
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
.sds-header-collapsible__menu {
|
|
57
|
-
display: none;
|
|
58
|
-
gap: var(--sds-space-gap-medium);
|
|
59
|
-
flex-direction: column;
|
|
60
|
-
overflow: auto;
|
|
61
|
-
width: 100%;
|
|
62
|
-
border-top: var(--sds-space-border-weight-thin) solid var(--sds-color-interaction-primary-strong-default);
|
|
63
|
-
padding: var(--sds-space-padding-medium);
|
|
64
|
-
}
|
|
65
|
-
.sds-header-collapsible__menu .sds-header__nav-list {
|
|
66
|
-
display: flex;
|
|
67
|
-
flex-direction: column;
|
|
68
|
-
}
|
|
69
|
-
.sds-header-collapsible__dropdown {
|
|
70
|
-
position: absolute;
|
|
71
|
-
top: calc(var(--header-height) + 2 * var(--sds-focus-outline-width));
|
|
72
|
-
left: 0;
|
|
73
|
-
background-color: var(--sds-color-layout-background-primary);
|
|
74
|
-
z-index: calc(var(--sds-base-zindex-drawer) + 1);
|
|
75
|
-
height: 100vh;
|
|
76
|
-
width: 100%;
|
|
77
|
-
max-height: 0;
|
|
78
|
-
transition: max-height 0.25s ease;
|
|
79
|
-
overflow: hidden;
|
|
80
|
-
grid-column: 1 / -1;
|
|
31
|
+
.sds-header__logo-link:active,
|
|
32
|
+
.sds-header__logo-link:focus-visible,
|
|
33
|
+
.sds-header__logo-link:hover {
|
|
34
|
+
background-color: unset;
|
|
81
35
|
}
|
|
82
|
-
.sds-
|
|
83
|
-
|
|
36
|
+
.sds-header__content {
|
|
37
|
+
align-items: center;
|
|
38
|
+
display: grid;
|
|
39
|
+
gap: 0 var(--sds-space-padding-small);
|
|
40
|
+
grid-template-columns: 1fr auto;
|
|
41
|
+
min-height: var(--header-height);
|
|
42
|
+
padding: 0 var(--sds-space-padding-medium);
|
|
84
43
|
}
|
|
85
|
-
@media (width >=
|
|
86
|
-
.sds-
|
|
87
|
-
|
|
44
|
+
@media (width >= 1024px) {
|
|
45
|
+
.sds-header__content {
|
|
46
|
+
grid-template-columns: 1fr auto 1fr;
|
|
88
47
|
}
|
|
89
48
|
}
|
|
90
|
-
.sds-
|
|
49
|
+
.sds-header__content-left {
|
|
50
|
+
align-items: center;
|
|
91
51
|
display: flex;
|
|
52
|
+
flex-direction: row-reverse;
|
|
53
|
+
gap: var(--sds-space-padding-small);
|
|
54
|
+
justify-self: start;
|
|
92
55
|
}
|
|
93
|
-
.sds-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
.sds-header .sds-header__logo-link {
|
|
97
|
-
background-color: unset;
|
|
98
|
-
color: inherit;
|
|
99
|
-
text-decoration: none;
|
|
100
|
-
width: -webkit-fit-content;
|
|
101
|
-
width: fit-content;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/* src/header-nav.pcss */
|
|
105
|
-
.sds-header__nav-list {
|
|
106
|
-
height: 100%;
|
|
107
|
-
list-style-type: none;
|
|
108
|
-
margin: 0;
|
|
56
|
+
.sds-header__content-left .sds-header__logo-link:has(+ .sds-header__content-left-item) {
|
|
57
|
+
border-left: 1px solid #737373;
|
|
58
|
+
padding-left: var(--sds-space-padding-small);
|
|
109
59
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
display: inline-flex;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
.sds-header__nav-link {
|
|
116
|
-
text-decoration: none;
|
|
60
|
+
.sds-header__content-mid {
|
|
61
|
+
display: none;
|
|
117
62
|
}
|
|
118
|
-
@media (width
|
|
119
|
-
.sds-
|
|
120
|
-
|
|
121
|
-
background-color: var( --sds-color-interaction-neutral-transparent-default );
|
|
122
|
-
border: 0 none;
|
|
123
|
-
border-radius: var(--sds-space-border-radius-small);
|
|
124
|
-
color: var(--sds-color-text-primary);
|
|
125
|
-
cursor: pointer;
|
|
126
|
-
display: flex;
|
|
127
|
-
gap: var(--sds-space-gap-small);
|
|
128
|
-
font-size: var(--sds-typography-body-default-fontsize);
|
|
129
|
-
font-weight: var(--sds-typography-body-default-fontweight);
|
|
130
|
-
line-height: var(--sds-typography-body-default-lineheight);
|
|
131
|
-
padding: var(--sds-space-padding-small);
|
|
132
|
-
text-decoration: none;
|
|
133
|
-
width: 100%;
|
|
134
|
-
}
|
|
135
|
-
.sds-header__nav-link:hover,
|
|
136
|
-
.sds-header__nav-link:focus-visible {
|
|
137
|
-
background-color: var( --sds-color-interaction-neutral-transparent-highlight );
|
|
138
|
-
}
|
|
139
|
-
.sds-header__nav-link:active {
|
|
140
|
-
background-color: var( --sds-color-interaction-neutral-transparent-pressed );
|
|
141
|
-
}
|
|
142
|
-
.sds-header__nav-link:focus-visible {
|
|
143
|
-
outline: var(--sds-focus-outline);
|
|
63
|
+
@media (width >= 1024px) {
|
|
64
|
+
.sds-header__content-mid {
|
|
65
|
+
display: unset;
|
|
144
66
|
}
|
|
145
67
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
--tab-hover-background-color: var( --sds-color-interaction-primary-transparent-highlight );
|
|
149
|
-
--tab-active-background-color: var( --sds-color-interaction-primary-transparent-pressed );
|
|
150
|
-
align-items: center;
|
|
151
|
-
border: 0 none;
|
|
152
|
-
border-bottom: var(--sds-space-border-weight-bold) solid transparent;
|
|
153
|
-
color: var(--sds-color-text-primary);
|
|
154
|
-
display: flex;
|
|
155
|
-
gap: var(--sds-space-gap-small);
|
|
156
|
-
font-size: var(--sds-typography-label-l-fontsize);
|
|
157
|
-
font-weight: var(--sds-typography-label-l-fontweight);
|
|
158
|
-
line-height: var(--sds-typography-label-l-lineheight);
|
|
159
|
-
padding: var(--sds-space-padding-medium) var(--sds-space-padding-small);
|
|
160
|
-
}
|
|
161
|
-
.sds-header__nav-link-icon {
|
|
162
|
-
align-items: center;
|
|
163
|
-
display: flex;
|
|
164
|
-
font-size: var(--sds-typography-fontsize-700);
|
|
165
|
-
justify-content: center;
|
|
166
|
-
}
|
|
167
|
-
.sds-header__nav-link--selected,
|
|
168
|
-
.sds-header__nav-link[aria-current=page] {
|
|
169
|
-
border-color: var(--sds-color-interaction-primary-strong-default);
|
|
170
|
-
}
|
|
171
|
-
.sds-header__nav-link:hover,
|
|
172
|
-
.sds-header__nav-link:focus-visible {
|
|
173
|
-
background-color: var(--tab-hover-background-color);
|
|
174
|
-
}
|
|
175
|
-
.sds-header__nav-link:active {
|
|
176
|
-
background-color: var(--tab-active-background-color);
|
|
177
|
-
border-color: var(--sds-color-interaction-primary-strong-pressed);
|
|
178
|
-
}
|
|
179
|
-
.sds-header__nav-link:focus-visible {
|
|
180
|
-
outline: var(--sds-focus-outline);
|
|
181
|
-
outline-offset: 0;
|
|
182
|
-
}
|
|
68
|
+
.sds-header__content-right {
|
|
69
|
+
justify-self: flex-end;
|
|
183
70
|
}
|
|
184
71
|
/*# sourceMappingURL=index.css.map */
|
package/dist/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/header.pcss"
|
|
1
|
+
{"version":3,"sources":["../src/header.pcss"],"sourcesContent":["/**\n * Do not edit directly, this file was auto-generated.\n */\n\n.sds-header {\n align-items: center;\n background-color: var(--sds-color-layout-background-primary);\n color: var(--sds-color-text-primary);\n position: relative;\n\n --header-height: 48px;\n}\n\n@media (width >= 720px) {\n\n.sds-header {\n --header-height: 56px\n}\n }\n\n@media (width >= 1024px) {\n\n.sds-header {\n --header-height: 72px\n}\n }\n\n.sds-header__skip-link.sds-screen-reader-only--focusable:focus-within {\n background-color: var(--sds-color-layout-background-primary);\n position: absolute;\n z-index: 1;\n }\n\n.sds-header__logo-link {\n background-color: unset;\n color: inherit;\n text-decoration: none;\n width: -webkit-fit-content;\n width: fit-content;\n }\n\n.sds-header__logo-link:active,\n .sds-header__logo-link:focus-visible,\n .sds-header__logo-link:hover {\n background-color: unset;\n }\n\n.sds-header__content {\n align-items: center;\n display: grid;\n gap: 0 var(--sds-space-padding-small);\n grid-template-columns: 1fr auto;\n min-height: var(--header-height);\n padding: 0 var(--sds-space-padding-medium);\n }\n\n@media (width >= 1024px) {\n\n.sds-header__content {\n grid-template-columns: 1fr auto 1fr\n }\n }\n\n.sds-header__content-left {\n align-items: center;\n display: flex;\n flex-direction: row-reverse;\n gap: var(--sds-space-padding-small);\n justify-self: start;\n }\n\n.sds-header__content-left .sds-header__logo-link:has(+ .sds-header__content-left-item) {\n border-left: 1px solid #737373;\n padding-left: var(--sds-space-padding-small);\n }\n\n.sds-header__content-mid {\n display: none;\n }\n\n@media (width >= 1024px) {\n\n.sds-header__content-mid {\n display: unset\n }\n }\n\n.sds-header__content-right {\n justify-self: flex-end;\n }\n"],"mappings":";AAIA,CAAC;AACC,eAAa;AACb,oBAAkB,IAAI;AACtB,SAAO,IAAI;AACX,YAAU;AAEV,mBAAiB;AACnB;AAEA,OAAO,CAAC,MAAM,CAAC,EAAE;AAEjB,GAXC;AAYG,qBAAiB;AACrB;AACE;AAEF,OAAO,CAAC,MAAM,CAAC,EAAE;AAEjB,GAlBC;AAmBG,qBAAiB;AACrB;AACE;AAEF,CAAC,qBAAqB,CAAC,iCAAiC;AACpD,oBAAkB,IAAI;AACtB,YAAU;AACV,WAAS;AACX;AAEF,CAAC;AACK,oBAAkB;AAClB,SAAO;AACP,mBAAiB;AACjB,SAAO;AACP,SAAO;AACT;AAEJ,CARC,qBAQqB;AAChB,CATL,qBAS2B;AACtB,CAVL,qBAU2B;AACpB,oBAAkB;AACpB;AAEN,CAAC;AACG,eAAa;AACb,WAAS;AACT,OAAK,EAAE,IAAI;AACX,yBAAuB,IAAI;AAC3B,cAAY,IAAI;AAChB,WAAS,EAAE,IAAI;AACjB;AAEF,OAAO,CAAC,MAAM,CAAC,EAAE;AAEjB,GAXC;AAYK,2BAAuB,IAAI,KAAK;AACpC;AACE;AAEJ,CAAC;AACK,eAAa;AACb,WAAS;AACT,kBAAgB;AAChB,OAAK,IAAI;AACT,gBAAc;AAChB;AAEJ,CARC,yBAQyB,CAtCzB,qBAsC+C,KAAK,EAAE,CAAC;AAC9C,eAAa,IAAI,MAAM;AACvB,gBAAc,IAAI;AACpB;AAER,CAAC;AACK,WAAS;AACX;AAEJ,OAAO,CAAC,MAAM,CAAC,EAAE;AAEjB,GANC;AAOO,aAAS;AACb;AACE;AAEN,CAAC;AACK,gBAAc;AAChB;","names":[]}
|
package/dist/index.d.mts
CHANGED
|
@@ -5,26 +5,14 @@ interface HeaderProps extends HTMLAttributes<HTMLElement> {
|
|
|
5
5
|
className?: string;
|
|
6
6
|
children?: ReactElement<AnchorHTMLAttributes<HTMLAnchorElement>> | ReactElement<AnchorHTMLAttributes<HTMLAnchorElement>>[];
|
|
7
7
|
topSlot?: ReactNode;
|
|
8
|
+
leftSlot?: ReactNode;
|
|
9
|
+
rightSlot?: ReactNode;
|
|
10
|
+
applicationStatus?: ReactNode;
|
|
8
11
|
skipLinkId?: string;
|
|
9
12
|
skipLinkText?: string;
|
|
10
13
|
logoHref?: string;
|
|
11
14
|
logoText?: string;
|
|
12
15
|
}
|
|
13
|
-
declare const Header: ({ children, topSlot, className, skipLinkId, skipLinkText, logoHref, logoText, ...rest }: HeaderProps) => react_jsx_runtime.JSX.Element;
|
|
16
|
+
declare const Header: ({ children, topSlot, leftSlot, rightSlot, applicationStatus, className, skipLinkId, skipLinkText, logoHref, logoText, ...rest }: HeaderProps) => react_jsx_runtime.JSX.Element;
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
children: ReactNode;
|
|
17
|
-
className?: string;
|
|
18
|
-
}
|
|
19
|
-
declare const HeaderNav: ({ children, className, ...rest }: HeaderNavProps) => react_jsx_runtime.JSX.Element;
|
|
20
|
-
|
|
21
|
-
interface HeaderCollapsibleMenuProps {
|
|
22
|
-
children: ReactNode;
|
|
23
|
-
dropdownOpen?: boolean;
|
|
24
|
-
ariaLabelOpenMenu?: string;
|
|
25
|
-
ariaLabelCloseMenu?: string;
|
|
26
|
-
ariaLabelClose?: string;
|
|
27
|
-
}
|
|
28
|
-
declare const HeaderCollapsibleMenu: ({ children, dropdownOpen, ariaLabelOpenMenu, ariaLabelCloseMenu, ariaLabelClose, ...rest }: HeaderCollapsibleMenuProps) => react_jsx_runtime.JSX.Element;
|
|
29
|
-
|
|
30
|
-
export { Header, HeaderCollapsibleMenu, type HeaderCollapsibleMenuProps, HeaderNav, type HeaderNavProps, type HeaderProps };
|
|
18
|
+
export { Header, type HeaderProps };
|
package/dist/index.d.ts
CHANGED
|
@@ -5,26 +5,14 @@ interface HeaderProps extends HTMLAttributes<HTMLElement> {
|
|
|
5
5
|
className?: string;
|
|
6
6
|
children?: ReactElement<AnchorHTMLAttributes<HTMLAnchorElement>> | ReactElement<AnchorHTMLAttributes<HTMLAnchorElement>>[];
|
|
7
7
|
topSlot?: ReactNode;
|
|
8
|
+
leftSlot?: ReactNode;
|
|
9
|
+
rightSlot?: ReactNode;
|
|
10
|
+
applicationStatus?: ReactNode;
|
|
8
11
|
skipLinkId?: string;
|
|
9
12
|
skipLinkText?: string;
|
|
10
13
|
logoHref?: string;
|
|
11
14
|
logoText?: string;
|
|
12
15
|
}
|
|
13
|
-
declare const Header: ({ children, topSlot, className, skipLinkId, skipLinkText, logoHref, logoText, ...rest }: HeaderProps) => react_jsx_runtime.JSX.Element;
|
|
16
|
+
declare const Header: ({ children, topSlot, leftSlot, rightSlot, applicationStatus, className, skipLinkId, skipLinkText, logoHref, logoText, ...rest }: HeaderProps) => react_jsx_runtime.JSX.Element;
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
children: ReactNode;
|
|
17
|
-
className?: string;
|
|
18
|
-
}
|
|
19
|
-
declare const HeaderNav: ({ children, className, ...rest }: HeaderNavProps) => react_jsx_runtime.JSX.Element;
|
|
20
|
-
|
|
21
|
-
interface HeaderCollapsibleMenuProps {
|
|
22
|
-
children: ReactNode;
|
|
23
|
-
dropdownOpen?: boolean;
|
|
24
|
-
ariaLabelOpenMenu?: string;
|
|
25
|
-
ariaLabelCloseMenu?: string;
|
|
26
|
-
ariaLabelClose?: string;
|
|
27
|
-
}
|
|
28
|
-
declare const HeaderCollapsibleMenu: ({ children, dropdownOpen, ariaLabelOpenMenu, ariaLabelCloseMenu, ariaLabelClose, ...rest }: HeaderCollapsibleMenuProps) => react_jsx_runtime.JSX.Element;
|
|
29
|
-
|
|
30
|
-
export { Header, HeaderCollapsibleMenu, type HeaderCollapsibleMenuProps, HeaderNav, type HeaderNavProps, type HeaderProps };
|
|
18
|
+
export { Header, type HeaderProps };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var e=require("@sikt/sds-core"),
|
|
1
|
+
"use strict";var e=require("@sikt/sds-core"),r=require("@sikt/sds-logo"),s=require("clsx/lite"),t=require("react/jsx-runtime"),l=Object.defineProperty,i=Object.defineProperties,a=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,c=Object.prototype.propertyIsEnumerable,d=(e,r,s)=>r in e?l(e,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[r]=s,h=(e,r)=>{for(var s in r||(r={}))o.call(r,s)&&d(e,s,r[s]);if(n)for(var s of n(r))c.call(r,s)&&d(e,s,r[s]);return e};exports.Header=l=>{var d=l,{children:p,topSlot:f,leftSlot:x,rightSlot:m,applicationStatus:j,className:u,skipLinkId:k="main",skipLinkText:_="Gå til innhold",logoHref:g,logoText:v="Sikt"}=d,b=((e,r)=>{var s={};for(var t in e)o.call(e,t)&&r.indexOf(t)<0&&(s[t]=e[t]);if(null!=e&&n)for(var t of n(e))r.indexOf(t)<0&&c.call(e,t)&&(s[t]=e[t]);return s})(d,["children","topSlot","leftSlot","rightSlot","applicationStatus","className","skipLinkId","skipLinkText","logoHref","logoText"]);const N=t.jsx(r.Logo,{productName:v,className:"sds-header__logo"});return t.jsxs(t.Fragment,{children:[t.jsx(e.ScreenReaderOnly,{isFocusable:!0,className:"sds-header__skip-link",children:t.jsx(e.Link,{href:"#".concat(k),children:_})}),f,t.jsx("header",(O=h({className:s.clsx("sds-header",u)},b),S={children:t.jsxs("div",{className:"sds-header__content",children:[t.jsxs("div",{className:"sds-header__content-left",children:[g?t.jsx(e.Link,{href:g,className:"sds-header__logo-link",children:N}):N,x&&t.jsx("div",{className:"sds-header__content-left-item",children:x})]}),p&&t.jsx("div",{className:"sds-header__content-mid",children:p}),m&&t.jsx("div",{className:"sds-header__content-right",children:m})]})},i(O,a(S)))),j]});var O,S};//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Header.tsx","../src/HeaderNav.tsx","../src/HeaderCollapsibleMenu.tsx"],"names":["jsx","Logo","jsxs","Fragment","ScreenReaderOnly","Link","clsx","cloneElement","isValidElement","createContext","useId","useState","useEffect","Children","Button","CancelIcon","MenuIcon"],"mappings":"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","file":"index.js","sourcesContent":["import { Link, ScreenReaderOnly } from \"@sikt/sds-core\";\nimport { Logo } from \"@sikt/sds-logo\";\nimport { clsx } from \"clsx/lite\";\nimport {\n AnchorHTMLAttributes,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n} from \"react\";\nimport \"./header.pcss\";\n\nexport interface HeaderProps extends HTMLAttributes<HTMLElement> {\n className?: string;\n children?:\n | ReactElement<AnchorHTMLAttributes<HTMLAnchorElement>>\n | ReactElement<AnchorHTMLAttributes<HTMLAnchorElement>>[];\n topSlot?: ReactNode;\n skipLinkId?: string;\n skipLinkText?: string;\n logoHref?: string;\n logoText?: string;\n}\n\nexport const Header = ({\n children,\n topSlot,\n className,\n skipLinkId = \"main\",\n skipLinkText = \"Gå til innhold\",\n logoHref,\n logoText,\n ...rest\n}: HeaderProps) => {\n const logoElement = logoText ? (\n <span className=\"sds-header__logo-text sds-typography-body--xl\">\n {logoText}\n </span>\n ) : (\n <Logo variant=\"primary\" className=\"sds-header__logo\" />\n );\n\n return (\n <>\n <ScreenReaderOnly isFocusable className=\"sds-header__skip-link\">\n <Link href={`#${skipLinkId}`}>{skipLinkText}</Link>\n </ScreenReaderOnly>\n {topSlot}\n <header className={clsx(\"sds-header\", className)} {...rest}>\n <div className=\"sds-header__content\">\n {logoHref ? (\n <Link href={logoHref} className=\"sds-header__logo-link\">\n {logoElement}\n </Link>\n ) : (\n logoElement\n )}\n\n {children}\n </div>\n </header>\n </>\n );\n};\n","import { clsx } from \"clsx/lite\";\nimport {\n Children,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n cloneElement,\n isValidElement,\n} from \"react\";\nimport \"./header-nav.pcss\";\n\nexport interface HeaderNavProps extends HTMLAttributes<HTMLElement> {\n children: ReactNode;\n className?: string;\n}\n\ninterface ChildProps {\n className?: string;\n}\n\nconst addClassToChildren = (child: ReactElement<ChildProps>) => {\n return cloneElement(child, {\n className: clsx(\"sds-header__nav-link\", child.props.className),\n });\n};\n\nexport const HeaderNav = ({ children, className, ...rest }: HeaderNavProps) => {\n return (\n <nav className={clsx(\"sds-header__nav\", className)} {...rest}>\n <ul className=\"sds-header__nav-list\">\n {Children.map(children, (child) => {\n if (isValidElement(child)) {\n return (\n <li className=\"sds-header__nav-item\">\n {addClassToChildren(child as ReactElement<ChildProps>)}\n </li>\n );\n }\n })}\n </ul>\n </nav>\n );\n};\n","import { Button } from \"@sikt/sds-button\";\nimport { MenuIcon, CancelIcon } from \"@sikt/sds-icons\";\nimport { clsx } from \"clsx/lite\";\nimport {\n Children,\n Dispatch,\n ReactElement,\n ReactNode,\n SetStateAction,\n cloneElement,\n createContext,\n useEffect,\n useId,\n useState,\n isValidElement,\n PropsWithChildren,\n AnchorHTMLAttributes,\n} from \"react\";\n\nconst MenuOpenContext = createContext<{\n menuOpen: boolean;\n setMenuOpen: Dispatch<SetStateAction<boolean>>;\n}>({\n menuOpen: false,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setMenuOpen: () => {},\n});\nexport interface HeaderCollapsibleMenuProps {\n children: ReactNode;\n dropdownOpen?: boolean;\n ariaLabelOpenMenu?: string;\n ariaLabelCloseMenu?: string;\n ariaLabelClose?: string;\n}\n\nexport const HeaderCollapsibleMenu = ({\n children,\n dropdownOpen = false,\n ariaLabelOpenMenu = \"Åpne meny\",\n ariaLabelCloseMenu = \"Lukk meny\",\n ariaLabelClose = \"Lukk\",\n ...rest\n}: HeaderCollapsibleMenuProps) => {\n const menuId = useId();\n const [menuOpen, setMenuOpen] = useState(dropdownOpen);\n\n function toggleMenu() {\n setMenuOpen(!menuOpen);\n }\n\n function closeMenu() {\n setMenuOpen(false);\n }\n\n useEffect(() => {\n document.body.style.overflow = menuOpen ? \"hidden\" : \"unset\";\n\n const closeWithKeyboard = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n closeMenu();\n }\n };\n\n const closeWithClick = (e: MouseEvent) => {\n if (\n e.target instanceof HTMLAnchorElement ||\n e.target instanceof HTMLButtonElement\n ) {\n closeMenu();\n }\n };\n\n const closeWithSubmit = () => {\n closeMenu();\n };\n\n if (menuOpen) {\n const mobileContent = document.getElementById(\n \"sds-header-collapsible__mobile-content\",\n );\n if (mobileContent) {\n mobileContent.addEventListener(\"click\", closeWithClick);\n mobileContent.addEventListener(\"submit\", closeWithSubmit);\n }\n window.addEventListener(\"keydown\", closeWithKeyboard);\n }\n return () => {\n const mobileContent = document.getElementById(\n \"sds-header-collapsible__mobile-content\",\n );\n if (mobileContent) {\n mobileContent.removeEventListener(\"click\", closeWithClick);\n mobileContent.removeEventListener(\"submit\", closeWithSubmit);\n }\n window.removeEventListener(\"keydown\", closeWithKeyboard);\n };\n }, [menuOpen]);\n\n useEffect(() => {\n setMenuOpen(dropdownOpen);\n }, [dropdownOpen]);\n\n return (\n <MenuOpenContext.Provider value={{ menuOpen, setMenuOpen }}>\n {/* INFO: The desktop mode content of the header */}\n {Children.map(children, (child, index) => {\n return (\n isValidElement(child) &&\n cloneElement(\n child as ReactElement<\n PropsWithChildren<AnchorHTMLAttributes<HTMLAnchorElement>>\n >,\n {\n className: clsx(\n \"sds-header__header-item\",\n index + 1 === Children.count(children) &&\n \"sds-header__header-item--last-item\",\n ),\n },\n )\n );\n })}\n <Button\n variant=\"transparent\"\n icon={menuOpen ? <CancelIcon /> : <MenuIcon />}\n iconVariant={menuOpen ? \"right\" : \"only\"}\n onClick={toggleMenu}\n aria-label={menuOpen ? ariaLabelCloseMenu : ariaLabelOpenMenu}\n aria-controls={menuId}\n aria-expanded={menuOpen}\n className=\"sds-header-collapsible__button\"\n >\n {menuOpen && ariaLabelClose}\n </Button>\n <div\n className={clsx(\n \"sds-header-collapsible__dropdown\",\n menuOpen && \"sds-header-collapsible__dropdown--open\",\n )}\n aria-hidden={!menuOpen}\n id={menuId}\n {...rest}\n >\n <div\n id=\"sds-header-collapsible__mobile-content\"\n className=\"sds-header-collapsible__menu\"\n >\n {/* INFO: The mobile mode content of the header */}\n {children}\n </div>\n </div>\n </MenuOpenContext.Provider>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/Header.tsx"],"names":["jsx","Logo","jsxs","Fragment","ScreenReaderOnly","Link","clsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0Ba,IAAA,MAAA,GAAS,CAAC,EAYJ,KAAA;AAZI,EACrB,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,iBAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAa,GAAA,MAAA;AAAA,IACb,YAAe,GAAA,mBAAA;AAAA,IACf,QAAA;AAAA,IACA,QAAW,GAAA;AAAA,GApCb,GA0BuB,EAWlB,EAAA,IAAA,GAAA,SAAA,CAXkB,EAWlB,EAAA;AAAA,IAVH,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,mBAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,8BACHA,cAAA,CAAAC,YAAA,EAAA,EAAK,WAAa,EAAA,QAAA,EAAU,WAAU,kBAAmB,EAAA,CAAA;AAG5D,EAAA,uBAEIC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAACH,cAAA,CAAAI,wBAAA,EAAA,EAAiB,WAAW,EAAA,IAAA,EAAC,SAAU,EAAA,uBAAA,EACtC,QAAC,kBAAAJ,cAAA,CAAAK,YAAA,EAAA,EAAK,IAAM,EAAA,GAAA,CAAI,MAAe,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,YAAA,EAAa,CAC9C,EAAA,CAAA;AAAA,IACC,OAAA;AAAA,oBACAL,cAAA,CAAA,QAAA,EAAA,aAAA,CAAA,cAAA,CAAA,EAAO,SAAW,EAAAM,SAAA,CAAK,YAAc,EAAA,SAAS,CAAO,EAAA,EAAA,IAAA,CAAA,EAArD,EACC,QAAA,kBAAAJ,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,qBACb,EAAA,QAAA,EAAA;AAAA,sBAACA,eAAA,CAAA,KAAA,EAAA,EAAI,WAAU,0BACZ,EAAA,QAAA,EAAA;AAAA,QAAA,QAAA,kCACEG,YAAK,EAAA,EAAA,IAAA,EAAM,UAAU,SAAU,EAAA,uBAAA,EAC7B,uBACH,CAEA,GAAA,WAAA;AAAA,QAED,QACC,oBAAAL,cAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,iCAAiC,QAAS,EAAA,QAAA,EAAA;AAAA,OAE7D,EAAA,CAAA;AAAA,MACC,QACC,oBAAAA,cAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,2BAA2B,QAAS,EAAA,CAAA;AAAA,MAEpD,SACC,oBAAAA,cAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,6BAA6B,QAAU,EAAA,SAAA,EAAA;AAAA,KAAA,EAE1D,CACF,EAAA,CAAA,CAAA;AAAA,IACC;AAAA,GACH,EAAA,CAAA;AAEJ","file":"index.js","sourcesContent":["import { Link, ScreenReaderOnly } from \"@sikt/sds-core\";\nimport { Logo } from \"@sikt/sds-logo\";\nimport { clsx } from \"clsx/lite\";\nimport {\n AnchorHTMLAttributes,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n} from \"react\";\nimport \"./header.pcss\";\n\nexport interface HeaderProps extends HTMLAttributes<HTMLElement> {\n className?: string;\n children?:\n | ReactElement<AnchorHTMLAttributes<HTMLAnchorElement>>\n | ReactElement<AnchorHTMLAttributes<HTMLAnchorElement>>[];\n topSlot?: ReactNode;\n leftSlot?: ReactNode;\n rightSlot?: ReactNode;\n applicationStatus?: ReactNode;\n skipLinkId?: string;\n skipLinkText?: string;\n logoHref?: string;\n logoText?: string;\n}\n\nexport const Header = ({\n children,\n topSlot,\n leftSlot,\n rightSlot,\n applicationStatus,\n className,\n skipLinkId = \"main\",\n skipLinkText = \"Gå til innhold\",\n logoHref,\n logoText = \"Sikt\",\n ...rest\n}: HeaderProps) => {\n const logoElement = (\n <Logo productName={logoText} className=\"sds-header__logo\" />\n );\n\n return (\n <>\n <ScreenReaderOnly isFocusable className=\"sds-header__skip-link\">\n <Link href={`#${skipLinkId}`}>{skipLinkText}</Link>\n </ScreenReaderOnly>\n {topSlot}\n <header className={clsx(\"sds-header\", className)} {...rest}>\n <div className=\"sds-header__content\">\n <div className=\"sds-header__content-left\">\n {logoHref ? (\n <Link href={logoHref} className=\"sds-header__logo-link\">\n {logoElement}\n </Link>\n ) : (\n logoElement\n )}\n {leftSlot && (\n <div className=\"sds-header__content-left-item\">{leftSlot}</div>\n )}\n </div>\n {children && (\n <div className=\"sds-header__content-mid\">{children}</div>\n )}\n {rightSlot && (\n <div className=\"sds-header__content-right\">{rightSlot}</div>\n )}\n </div>\n </header>\n {applicationStatus}\n </>\n );\n};\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ScreenReaderOnly as e,Link as r}from"@sikt/sds-core";import{Logo as
|
|
1
|
+
import{ScreenReaderOnly as e,Link as r}from"@sikt/sds-core";import{Logo as t}from"@sikt/sds-logo";import{clsx as l}from"clsx/lite";import{jsxs as s,Fragment as i,jsx as o}from"react/jsx-runtime";var a=Object.defineProperty,n=Object.defineProperties,c=Object.getOwnPropertyDescriptors,d=Object.getOwnPropertySymbols,h=Object.prototype.hasOwnProperty,p=Object.prototype.propertyIsEnumerable,m=(e,r,t)=>r in e?a(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,f=(e,r)=>{for(var t in r||(r={}))h.call(r,t)&&m(e,t,r[t]);if(d)for(var t of d(r))p.call(r,t)&&m(e,t,r[t]);return e},_=a=>{var m=a,{children:_,topSlot:k,leftSlot:v,rightSlot:g,applicationStatus:u,className:b,skipLinkId:N="main",skipLinkText:O="Gå til innhold",logoHref:S,logoText:x="Sikt"}=m,y=((e,r)=>{var t={};for(var l in e)h.call(e,l)&&r.indexOf(l)<0&&(t[l]=e[l]);if(null!=e&&d)for(var l of d(e))r.indexOf(l)<0&&p.call(e,l)&&(t[l]=e[l]);return t})(m,["children","topSlot","leftSlot","rightSlot","applicationStatus","className","skipLinkId","skipLinkText","logoHref","logoText"]);const j=o(t,{productName:x,className:"sds-header__logo"});return s(i,{children:[o(e,{isFocusable:!0,className:"sds-header__skip-link",children:o(r,{href:"#".concat(N),children:O})}),k,o("header",(P=f({className:l("sds-header",b)},y),w={children:s("div",{className:"sds-header__content",children:[s("div",{className:"sds-header__content-left",children:[S?o(r,{href:S,className:"sds-header__logo-link",children:j}):j,v&&o("div",{className:"sds-header__content-left-item",children:v})]}),_&&o("div",{className:"sds-header__content-mid",children:_}),g&&o("div",{className:"sds-header__content-right",children:g})]})},n(P,c(w)))),u]});var P,w};export{_ as Header};//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/Header.tsx","../src/HeaderNav.tsx","../src/HeaderCollapsibleMenu.tsx"],"names":["clsx","jsx","jsxs","Children","isValidElement","cloneElement"],"mappings":"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","file":"index.mjs","sourcesContent":["import { Link, ScreenReaderOnly } from \"@sikt/sds-core\";\nimport { Logo } from \"@sikt/sds-logo\";\nimport { clsx } from \"clsx/lite\";\nimport {\n AnchorHTMLAttributes,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n} from \"react\";\nimport \"./header.pcss\";\n\nexport interface HeaderProps extends HTMLAttributes<HTMLElement> {\n className?: string;\n children?:\n | ReactElement<AnchorHTMLAttributes<HTMLAnchorElement>>\n | ReactElement<AnchorHTMLAttributes<HTMLAnchorElement>>[];\n topSlot?: ReactNode;\n skipLinkId?: string;\n skipLinkText?: string;\n logoHref?: string;\n logoText?: string;\n}\n\nexport const Header = ({\n children,\n topSlot,\n className,\n skipLinkId = \"main\",\n skipLinkText = \"Gå til innhold\",\n logoHref,\n logoText,\n ...rest\n}: HeaderProps) => {\n const logoElement = logoText ? (\n <span className=\"sds-header__logo-text sds-typography-body--xl\">\n {logoText}\n </span>\n ) : (\n <Logo variant=\"primary\" className=\"sds-header__logo\" />\n );\n\n return (\n <>\n <ScreenReaderOnly isFocusable className=\"sds-header__skip-link\">\n <Link href={`#${skipLinkId}`}>{skipLinkText}</Link>\n </ScreenReaderOnly>\n {topSlot}\n <header className={clsx(\"sds-header\", className)} {...rest}>\n <div className=\"sds-header__content\">\n {logoHref ? (\n <Link href={logoHref} className=\"sds-header__logo-link\">\n {logoElement}\n </Link>\n ) : (\n logoElement\n )}\n\n {children}\n </div>\n </header>\n </>\n );\n};\n","import { clsx } from \"clsx/lite\";\nimport {\n Children,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n cloneElement,\n isValidElement,\n} from \"react\";\nimport \"./header-nav.pcss\";\n\nexport interface HeaderNavProps extends HTMLAttributes<HTMLElement> {\n children: ReactNode;\n className?: string;\n}\n\ninterface ChildProps {\n className?: string;\n}\n\nconst addClassToChildren = (child: ReactElement<ChildProps>) => {\n return cloneElement(child, {\n className: clsx(\"sds-header__nav-link\", child.props.className),\n });\n};\n\nexport const HeaderNav = ({ children, className, ...rest }: HeaderNavProps) => {\n return (\n <nav className={clsx(\"sds-header__nav\", className)} {...rest}>\n <ul className=\"sds-header__nav-list\">\n {Children.map(children, (child) => {\n if (isValidElement(child)) {\n return (\n <li className=\"sds-header__nav-item\">\n {addClassToChildren(child as ReactElement<ChildProps>)}\n </li>\n );\n }\n })}\n </ul>\n </nav>\n );\n};\n","import { Button } from \"@sikt/sds-button\";\nimport { MenuIcon, CancelIcon } from \"@sikt/sds-icons\";\nimport { clsx } from \"clsx/lite\";\nimport {\n Children,\n Dispatch,\n ReactElement,\n ReactNode,\n SetStateAction,\n cloneElement,\n createContext,\n useEffect,\n useId,\n useState,\n isValidElement,\n PropsWithChildren,\n AnchorHTMLAttributes,\n} from \"react\";\n\nconst MenuOpenContext = createContext<{\n menuOpen: boolean;\n setMenuOpen: Dispatch<SetStateAction<boolean>>;\n}>({\n menuOpen: false,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setMenuOpen: () => {},\n});\nexport interface HeaderCollapsibleMenuProps {\n children: ReactNode;\n dropdownOpen?: boolean;\n ariaLabelOpenMenu?: string;\n ariaLabelCloseMenu?: string;\n ariaLabelClose?: string;\n}\n\nexport const HeaderCollapsibleMenu = ({\n children,\n dropdownOpen = false,\n ariaLabelOpenMenu = \"Åpne meny\",\n ariaLabelCloseMenu = \"Lukk meny\",\n ariaLabelClose = \"Lukk\",\n ...rest\n}: HeaderCollapsibleMenuProps) => {\n const menuId = useId();\n const [menuOpen, setMenuOpen] = useState(dropdownOpen);\n\n function toggleMenu() {\n setMenuOpen(!menuOpen);\n }\n\n function closeMenu() {\n setMenuOpen(false);\n }\n\n useEffect(() => {\n document.body.style.overflow = menuOpen ? \"hidden\" : \"unset\";\n\n const closeWithKeyboard = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n closeMenu();\n }\n };\n\n const closeWithClick = (e: MouseEvent) => {\n if (\n e.target instanceof HTMLAnchorElement ||\n e.target instanceof HTMLButtonElement\n ) {\n closeMenu();\n }\n };\n\n const closeWithSubmit = () => {\n closeMenu();\n };\n\n if (menuOpen) {\n const mobileContent = document.getElementById(\n \"sds-header-collapsible__mobile-content\",\n );\n if (mobileContent) {\n mobileContent.addEventListener(\"click\", closeWithClick);\n mobileContent.addEventListener(\"submit\", closeWithSubmit);\n }\n window.addEventListener(\"keydown\", closeWithKeyboard);\n }\n return () => {\n const mobileContent = document.getElementById(\n \"sds-header-collapsible__mobile-content\",\n );\n if (mobileContent) {\n mobileContent.removeEventListener(\"click\", closeWithClick);\n mobileContent.removeEventListener(\"submit\", closeWithSubmit);\n }\n window.removeEventListener(\"keydown\", closeWithKeyboard);\n };\n }, [menuOpen]);\n\n useEffect(() => {\n setMenuOpen(dropdownOpen);\n }, [dropdownOpen]);\n\n return (\n <MenuOpenContext.Provider value={{ menuOpen, setMenuOpen }}>\n {/* INFO: The desktop mode content of the header */}\n {Children.map(children, (child, index) => {\n return (\n isValidElement(child) &&\n cloneElement(\n child as ReactElement<\n PropsWithChildren<AnchorHTMLAttributes<HTMLAnchorElement>>\n >,\n {\n className: clsx(\n \"sds-header__header-item\",\n index + 1 === Children.count(children) &&\n \"sds-header__header-item--last-item\",\n ),\n },\n )\n );\n })}\n <Button\n variant=\"transparent\"\n icon={menuOpen ? <CancelIcon /> : <MenuIcon />}\n iconVariant={menuOpen ? \"right\" : \"only\"}\n onClick={toggleMenu}\n aria-label={menuOpen ? ariaLabelCloseMenu : ariaLabelOpenMenu}\n aria-controls={menuId}\n aria-expanded={menuOpen}\n className=\"sds-header-collapsible__button\"\n >\n {menuOpen && ariaLabelClose}\n </Button>\n <div\n className={clsx(\n \"sds-header-collapsible__dropdown\",\n menuOpen && \"sds-header-collapsible__dropdown--open\",\n )}\n aria-hidden={!menuOpen}\n id={menuId}\n {...rest}\n >\n <div\n id=\"sds-header-collapsible__mobile-content\"\n className=\"sds-header-collapsible__menu\"\n >\n {/* INFO: The mobile mode content of the header */}\n {children}\n </div>\n </div>\n </MenuOpenContext.Provider>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/Header.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0Ba,IAAA,MAAA,GAAS,CAAC,EAYJ,KAAA;AAZI,EACrB,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,iBAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAa,GAAA,MAAA;AAAA,IACb,YAAe,GAAA,mBAAA;AAAA,IACf,QAAA;AAAA,IACA,QAAW,GAAA;AAAA,GApCb,GA0BuB,EAWlB,EAAA,IAAA,GAAA,SAAA,CAXkB,EAWlB,EAAA;AAAA,IAVH,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,mBAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,8BACH,GAAA,CAAA,IAAA,EAAA,EAAK,WAAa,EAAA,QAAA,EAAU,WAAU,kBAAmB,EAAA,CAAA;AAG5D,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAC,GAAA,CAAA,gBAAA,EAAA,EAAiB,WAAW,EAAA,IAAA,EAAC,SAAU,EAAA,uBAAA,EACtC,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EAAK,IAAM,EAAA,GAAA,CAAI,MAAe,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,YAAA,EAAa,CAC9C,EAAA,CAAA;AAAA,IACC,OAAA;AAAA,oBACA,GAAA,CAAA,QAAA,EAAA,aAAA,CAAA,cAAA,CAAA,EAAO,SAAW,EAAA,IAAA,CAAK,YAAc,EAAA,SAAS,CAAO,EAAA,EAAA,IAAA,CAAA,EAArD,EACC,QAAA,kBAAA,IAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,qBACb,EAAA,QAAA,EAAA;AAAA,sBAAC,IAAA,CAAA,KAAA,EAAA,EAAI,WAAU,0BACZ,EAAA,QAAA,EAAA;AAAA,QAAA,QAAA,uBACE,IAAK,EAAA,EAAA,IAAA,EAAM,UAAU,SAAU,EAAA,uBAAA,EAC7B,uBACH,CAEA,GAAA,WAAA;AAAA,QAED,QACC,oBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,iCAAiC,QAAS,EAAA,QAAA,EAAA;AAAA,OAE7D,EAAA,CAAA;AAAA,MACC,QACC,oBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,2BAA2B,QAAS,EAAA,CAAA;AAAA,MAEpD,SACC,oBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,6BAA6B,QAAU,EAAA,SAAA,EAAA;AAAA,KAAA,EAE1D,CACF,EAAA,CAAA,CAAA;AAAA,IACC;AAAA,GACH,EAAA,CAAA;AAEJ","file":"index.mjs","sourcesContent":["import { Link, ScreenReaderOnly } from \"@sikt/sds-core\";\nimport { Logo } from \"@sikt/sds-logo\";\nimport { clsx } from \"clsx/lite\";\nimport {\n AnchorHTMLAttributes,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n} from \"react\";\nimport \"./header.pcss\";\n\nexport interface HeaderProps extends HTMLAttributes<HTMLElement> {\n className?: string;\n children?:\n | ReactElement<AnchorHTMLAttributes<HTMLAnchorElement>>\n | ReactElement<AnchorHTMLAttributes<HTMLAnchorElement>>[];\n topSlot?: ReactNode;\n leftSlot?: ReactNode;\n rightSlot?: ReactNode;\n applicationStatus?: ReactNode;\n skipLinkId?: string;\n skipLinkText?: string;\n logoHref?: string;\n logoText?: string;\n}\n\nexport const Header = ({\n children,\n topSlot,\n leftSlot,\n rightSlot,\n applicationStatus,\n className,\n skipLinkId = \"main\",\n skipLinkText = \"Gå til innhold\",\n logoHref,\n logoText = \"Sikt\",\n ...rest\n}: HeaderProps) => {\n const logoElement = (\n <Logo productName={logoText} className=\"sds-header__logo\" />\n );\n\n return (\n <>\n <ScreenReaderOnly isFocusable className=\"sds-header__skip-link\">\n <Link href={`#${skipLinkId}`}>{skipLinkText}</Link>\n </ScreenReaderOnly>\n {topSlot}\n <header className={clsx(\"sds-header\", className)} {...rest}>\n <div className=\"sds-header__content\">\n <div className=\"sds-header__content-left\">\n {logoHref ? (\n <Link href={logoHref} className=\"sds-header__logo-link\">\n {logoElement}\n </Link>\n ) : (\n logoElement\n )}\n {leftSlot && (\n <div className=\"sds-header__content-left-item\">{leftSlot}</div>\n )}\n </div>\n {children && (\n <div className=\"sds-header__content-mid\">{children}</div>\n )}\n {rightSlot && (\n <div className=\"sds-header__content-right\">{rightSlot}</div>\n )}\n </div>\n </header>\n {applicationStatus}\n </>\n );\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sikt/sds-header",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"homepage": "https://designsystem.sikt.no/",
|
|
6
6
|
"repository": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@sikt/sds-button": "^4.2.0",
|
|
39
39
|
"@sikt/sds-core": "^4.6.0",
|
|
40
40
|
"@sikt/sds-icons": "^3.0.0",
|
|
41
|
-
"@sikt/sds-logo": "^2.
|
|
41
|
+
"@sikt/sds-logo": "^2.2.2"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"@types/react": "^18.0.0 || ^19.0.0",
|