@statsbygg/layout 0.1.16 → 0.1.18
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/README.md +1 -1
- package/dist/GlobalFooter.module.css +316 -13
- package/dist/assets/images/facebook.png +0 -0
- package/dist/assets/images/footer.png +0 -0
- package/dist/assets/images/instagram.png +0 -0
- package/dist/assets/images/linkedin.png +0 -0
- package/dist/assets/images/vimeo.png +0 -0
- package/dist/assets/images/youtube.png +0 -0
- package/dist/index.d.ts +20 -1
- package/dist/index.js +152 -16
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,28 +1,331 @@
|
|
|
1
1
|
.footer {
|
|
2
|
-
background-color: var(--ds-color-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
background-color: var(--ds-color-accent-base-active);
|
|
3
|
+
color: var(--ds-color-background-tinted);
|
|
4
|
+
padding: var(--ds-size-12) var(--ds-size-8) var(--ds-size-12) var(--ds-size-8);
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
.
|
|
8
|
-
|
|
7
|
+
.footer a,
|
|
8
|
+
.footer a:hover,
|
|
9
|
+
.footer a:active,
|
|
10
|
+
.footer a:focus,
|
|
11
|
+
.footer a:visited {
|
|
12
|
+
color: var(--ds-color-background-tinted);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.footerContent {
|
|
16
|
+
font-family: var(--ds-font-family);
|
|
17
|
+
display: grid;
|
|
18
|
+
grid-template-columns: 2fr 1fr;
|
|
19
|
+
column-gap: var(--ds-size-8);
|
|
20
|
+
row-gap: var(--ds-size-13);
|
|
21
|
+
max-width: 90rem;
|
|
9
22
|
margin: 0 auto;
|
|
10
|
-
padding: var(--ds-spacing-6) var(--ds-spacing-4);
|
|
11
23
|
}
|
|
12
24
|
|
|
13
|
-
.
|
|
25
|
+
.footerLeft {
|
|
26
|
+
display: grid;
|
|
27
|
+
grid-template-columns: 1fr 1fr;
|
|
28
|
+
gap: 0;
|
|
29
|
+
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.shortcutsContainer {
|
|
33
|
+
column-gap: var(--ds-size-8);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.contactSectionsContainer {
|
|
37
|
+
display: grid;
|
|
38
|
+
grid-template-columns: 1fr 1fr 1fr;
|
|
39
|
+
grid-template-rows: auto 1fr;
|
|
40
|
+
grid-column: span 2;
|
|
41
|
+
column-gap: var(--ds-size-8);
|
|
42
|
+
row-gap: 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.footerLeftWide {
|
|
46
|
+
gap: var(--ds-size-13);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.footerLogo {
|
|
50
|
+
align-self: end;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.sectionHeading {
|
|
54
|
+
font-family: "IBM Plex Sans";
|
|
55
|
+
font-size: var(--ds-font-size-4);
|
|
56
|
+
font-style: normal;
|
|
57
|
+
font-weight: 400;
|
|
58
|
+
line-height: 130%;
|
|
59
|
+
letter-spacing: 0.027px;
|
|
60
|
+
text-transform: uppercase;
|
|
61
|
+
padding-bottom: var(--ds-size-1);
|
|
62
|
+
margin: 0;
|
|
63
|
+
border-bottom: 1px solid rgba(255, 255, 255, 0.3);
|
|
64
|
+
margin-bottom: var(--ds-size-4);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.hidden {
|
|
68
|
+
visibility: hidden;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.footerList {
|
|
72
|
+
list-style: none;
|
|
73
|
+
padding: 0;
|
|
74
|
+
margin: 0;
|
|
75
|
+
display: flex;
|
|
76
|
+
flex-direction: column;
|
|
77
|
+
line-height: var(--ds-size-8);
|
|
78
|
+
gap: var(--ds-size-1);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.footerList li {
|
|
82
|
+
margin-top: 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.footerSection a {
|
|
86
|
+
text-decoration: none;
|
|
87
|
+
font-size: var(--ds-font-size-3);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.externalLink {
|
|
91
|
+
display: inline-box;
|
|
92
|
+
align-items: center;
|
|
93
|
+
gap: var(--ds-size-1);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.externalLink svg {
|
|
97
|
+
vertical-align: middle;
|
|
98
|
+
margin-left: var(--ds-size-1);
|
|
99
|
+
width: 17.5px;
|
|
100
|
+
height: 17.5px;
|
|
101
|
+
margin-bottom: var(--ds-size-1);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.socialLink {
|
|
14
105
|
display: flex;
|
|
15
|
-
justify-content: space-between;
|
|
16
106
|
align-items: center;
|
|
17
|
-
gap: var(--ds-
|
|
18
|
-
|
|
107
|
+
gap: var(--ds-size-1);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.socialIcon {
|
|
111
|
+
width: 24px;
|
|
112
|
+
height: 24px;
|
|
113
|
+
flex-shrink: 0;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.vimeoIcon {
|
|
117
|
+
font-size: 1.125rem;
|
|
118
|
+
font-weight: bold;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.footerBottom {
|
|
122
|
+
display: grid;
|
|
123
|
+
grid-template-columns: 1fr 1fr 1fr 1fr;
|
|
124
|
+
gap: var(--ds-size-10);
|
|
125
|
+
padding-top: var(--ds-size-10);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.contactHeadingWide,
|
|
129
|
+
.shortcutsHeadingWide {
|
|
130
|
+
margin-top: 0;
|
|
131
|
+
font-family: var(--ds-font-family);
|
|
132
|
+
font-size: var(--ds-font-size-4);
|
|
133
|
+
font-style: normal;
|
|
134
|
+
font-weight: 600;
|
|
135
|
+
line-height: 130%; /* 23.4px */
|
|
136
|
+
letter-spacing: 0.027px;
|
|
137
|
+
grid-column: span 3;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.contactHeading {
|
|
141
|
+
margin-top: 0;
|
|
142
|
+
margin-bottom: var(--ds-size-2);
|
|
143
|
+
font-family: var(--ds-font-family);
|
|
144
|
+
font-size: var(--ds-font-size-4);
|
|
145
|
+
font-style: normal;
|
|
146
|
+
font-weight: 600;
|
|
147
|
+
line-height: 130%; /* 23.4px */
|
|
148
|
+
letter-spacing: 0.027px;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.contactSection p,
|
|
152
|
+
.contactSection a {
|
|
153
|
+
font-size: 0.875rem;
|
|
154
|
+
line-height: 1.6;
|
|
155
|
+
text-decoration: none;
|
|
156
|
+
margin: 0;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.contactSection p {
|
|
160
|
+
margin-bottom: var(--ds-spacing-2);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.contactSection a:hover {
|
|
164
|
+
text-decoration: underline;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.logoSection {
|
|
168
|
+
display: flex;
|
|
169
|
+
justify-content: flex-end;
|
|
170
|
+
align-items: center;
|
|
171
|
+
background-size: 228px auto;
|
|
172
|
+
background-repeat: no-repeat;
|
|
173
|
+
background-position: top center;
|
|
174
|
+
width: 228px;
|
|
175
|
+
height: 73px;
|
|
176
|
+
overflow: hidden;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.tagline {
|
|
180
|
+
font-size: 1.25rem;
|
|
181
|
+
font-weight: bold;
|
|
182
|
+
text-transform: uppercase;
|
|
183
|
+
letter-spacing: 0.05em;
|
|
184
|
+
text-align: right;
|
|
185
|
+
margin: 0;
|
|
19
186
|
}
|
|
20
187
|
|
|
21
188
|
@media (max-width: 768px) {
|
|
22
|
-
.
|
|
23
|
-
|
|
24
|
-
|
|
189
|
+
.footerLogo {
|
|
190
|
+
grid-column: span 2;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.footer {
|
|
194
|
+
padding: var(--ds-size-12) var(--ds-size-6) var(--ds-size-12) var(--ds-size-6);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.footerContent {
|
|
198
|
+
grid-template-columns: 1fr 1fr;
|
|
199
|
+
row-gap: var(--ds-size-13);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.footerLeft {
|
|
203
|
+
grid-template-columns: 1fr 1fr;
|
|
204
|
+
gap: 0;
|
|
205
|
+
grid-column: span 2;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.footerLeftWide {
|
|
209
|
+
grid-template-columns: 1fr;
|
|
210
|
+
gap: var(--ds-size-13);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.contactSectionsContainer {
|
|
214
|
+
grid-template-columns: 1fr;
|
|
215
|
+
gap: 0;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.contactSectionsContainer .contactSection:last-child {
|
|
219
|
+
grid-column: 1 / -1;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.contactHeadingWide {
|
|
223
|
+
grid-column: span 1;
|
|
224
|
+
margin-top: 0;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.shortcutsHeadingWide {
|
|
228
|
+
grid-column: span 2;
|
|
229
|
+
margin-top: 0;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.footerBottom {
|
|
233
|
+
grid-template-columns: 1fr 1fr;
|
|
234
|
+
gap: var(--ds-size-10);
|
|
235
|
+
align-items: start;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.contactSection:first-child {
|
|
239
|
+
grid-column: 1 / -1;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.logoSection {
|
|
243
|
+
grid-column: 1 / -1;
|
|
244
|
+
justify-content: flex-start;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
.tagline {
|
|
248
|
+
text-align: left;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.shortcutsContainer {
|
|
252
|
+
column-gap: var(--ds-size-8);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
.contactSectionsContainer > .contactSection:nth-child(2) {
|
|
256
|
+
margin-bottom: var(--ds-size-6);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
.contactSectionsContainer > .contactSection:nth-child(3) {
|
|
260
|
+
margin-bottom: var(--ds-size-6);
|
|
25
261
|
}
|
|
26
262
|
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
@media (max-width: 480px) {
|
|
266
|
+
.footer {
|
|
267
|
+
padding: var(--ds-size-12) var(--ds-size-4) var(--ds-size-12) var(--ds-size-4);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.footerContent {
|
|
271
|
+
row-gap: var(--ds-size-10);
|
|
272
|
+
grid-template-columns: 1fr;
|
|
273
|
+
column-gap: 0;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.footerLeft {
|
|
277
|
+
grid-template-columns: 1fr;
|
|
278
|
+
gap: 0;
|
|
279
|
+
grid-column: span 1;
|
|
280
|
+
}
|
|
27
281
|
|
|
282
|
+
.footerLeftWide {
|
|
283
|
+
grid-template-columns: 1fr;
|
|
284
|
+
gap: var(--ds-size-13);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
.contactSectionsContainer {
|
|
288
|
+
grid-template-columns: 1fr;
|
|
289
|
+
gap: 0;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.contactSectionsContainer .contactSection:last-child {
|
|
293
|
+
grid-column: 1;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
.sectionHeading.hidden {
|
|
297
|
+
border-bottom: none;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.socialLinks .footerList {
|
|
301
|
+
flex-direction: row;
|
|
302
|
+
flex-wrap: wrap;
|
|
303
|
+
row-gap: var(--ds-size-1);
|
|
304
|
+
column-gap: var(--ds-size-4);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.socialLinks .footerList li {
|
|
308
|
+
margin-bottom: 0;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.footerBottom {
|
|
312
|
+
grid-template-columns: 1fr;
|
|
313
|
+
gap: var(--ds-size-10);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.contactSection:first-child {
|
|
317
|
+
grid-column: 1;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.logoSection {
|
|
321
|
+
grid-column: 1;
|
|
322
|
+
margin-top: var(--ds-spacing-5);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.tagline {
|
|
326
|
+
font-size: 1.125rem;
|
|
327
|
+
}
|
|
328
|
+
.footerSection {
|
|
329
|
+
grid-column: span 2;
|
|
330
|
+
}
|
|
28
331
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/dist/index.d.ts
CHANGED
|
@@ -19,6 +19,17 @@ type AncestorChain = {
|
|
|
19
19
|
declare function findAppRootWithAncestors(node: RouteNode, ancestors?: RouteNode[]): AncestorChain;
|
|
20
20
|
declare function getBreadcrumbs(routes: RouteNode, pathname: string): BreadcrumbItem[];
|
|
21
21
|
|
|
22
|
+
type GlobalHeaderProps = {
|
|
23
|
+
className?: string;
|
|
24
|
+
routes: RouteNode;
|
|
25
|
+
appBasePath?: string;
|
|
26
|
+
pathname?: string;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
declare function GlobalHeader({ className, routes, appBasePath, pathname }: GlobalHeaderProps & {
|
|
30
|
+
pathname?: string;
|
|
31
|
+
}): react_jsx_runtime.JSX.Element;
|
|
32
|
+
|
|
22
33
|
type RootLayoutProps = {
|
|
23
34
|
children: React.ReactNode;
|
|
24
35
|
routes: RouteNode;
|
|
@@ -28,6 +39,14 @@ type RootLayoutProps = {
|
|
|
28
39
|
|
|
29
40
|
declare function RootLayout({ children, routes, appBasePath, className }: RootLayoutProps): react_jsx_runtime.JSX.Element;
|
|
30
41
|
|
|
42
|
+
interface GlobalFooterProps {
|
|
43
|
+
className?: string;
|
|
44
|
+
logoUrl?: string;
|
|
45
|
+
logoAlt?: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
declare function GlobalFooter({ className, logoUrl, logoAlt }: GlobalFooterProps): react_jsx_runtime.JSX.Element;
|
|
49
|
+
|
|
31
50
|
type Theme = 'light' | 'dark' | 'system';
|
|
32
51
|
type GlobalState = {
|
|
33
52
|
user?: {
|
|
@@ -98,4 +117,4 @@ type MenuSection = {
|
|
|
98
117
|
subsections?: MenuSubsection[];
|
|
99
118
|
};
|
|
100
119
|
|
|
101
|
-
export { type BreadcrumbItem, type GlobalState, type MenuItem, type MenuSection, type MenuSubsection, RootLayout, type RootLayoutProps, type RouteNode, SmartLink, type SmartLinkProps, findAppRootWithAncestors, getBreadcrumbs, useBreadcrumbs, useGlobalStore };
|
|
120
|
+
export { type BreadcrumbItem, GlobalFooter, type GlobalFooterProps, GlobalHeader, type GlobalHeaderProps, type GlobalState, type MenuItem, type MenuSection, type MenuSubsection, RootLayout, type RootLayoutProps, type RouteNode, SmartLink, type SmartLinkProps, findAppRootWithAncestors, getBreadcrumbs, useBreadcrumbs, useGlobalStore };
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
// src/components/RootLayout/RootLayout.tsx
|
|
4
|
-
import { useEffect as useEffect2 } from "react";
|
|
5
|
-
import clsx5 from "clsx";
|
|
6
|
-
import { SkipLink } from "@digdir/designsystemet-react";
|
|
7
|
-
|
|
8
3
|
// src/components/GlobalHeader/GlobalHeader.tsx
|
|
9
4
|
import { Button as Button2, Link as Link3 } from "@digdir/designsystemet-react";
|
|
10
5
|
import { Search as Search2 } from "lucide-react";
|
|
@@ -160,7 +155,26 @@ var translations = {
|
|
|
160
155
|
"common.youAreHere": "Du er her:",
|
|
161
156
|
"common.skipLink": "Hopp til hovedinnhold",
|
|
162
157
|
"common.home": "Hjem",
|
|
163
|
-
"footer.
|
|
158
|
+
"footer.shortcuts": "Snarveier",
|
|
159
|
+
"footer.news": "Nyheter",
|
|
160
|
+
"footer.press": "For pressen",
|
|
161
|
+
"footer.whistleblowing": "Varsling",
|
|
162
|
+
"footer.privacy": "Personvern og informasjonskapsler",
|
|
163
|
+
"footer.accessibility": "Tilgjengelighet",
|
|
164
|
+
"footer.about": "About Statsbygg / Statsbygg birra",
|
|
165
|
+
"footer.publications": "Publikasjoner",
|
|
166
|
+
"footer.stateFacilities": "Statens lokaler",
|
|
167
|
+
"footer.mmfmHelpdesk": "MMFM \u2013 helpdesk",
|
|
168
|
+
"footer.simba": "Simba \u2013 Statsbyggs BIM-sider",
|
|
169
|
+
"footer.stateRental": "Statens innleie",
|
|
170
|
+
"footer.publicJournal": "S\xF8k innsyn via offentlig postjournal",
|
|
171
|
+
"footer.followUs": "F\xF8lg oss",
|
|
172
|
+
"footer.contactUs": "Kontakt oss",
|
|
173
|
+
"footer.phone": "Telefon",
|
|
174
|
+
"footer.findEmployee": "Finn en ansatt",
|
|
175
|
+
"footer.visitAddress": "Bes\xF8ksadresse",
|
|
176
|
+
"footer.postalAddress": "Postadresse",
|
|
177
|
+
"footer.tagline": "Bygg med mening",
|
|
164
178
|
"menu.helpTitle": "Hva kan vi hjelpe deg med?",
|
|
165
179
|
"menu.mainMenuLabel": "Hovedmeny",
|
|
166
180
|
"menu.closeMenu": "Lukk meny",
|
|
@@ -197,8 +211,8 @@ function BreadcrumbLink({
|
|
|
197
211
|
// src/components/Breadcrumbs/Breadcrumbs.tsx
|
|
198
212
|
import styles from "./Breadcrumbs.module.css";
|
|
199
213
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
200
|
-
function SbBreadcrumbs({ className, routes, appBasePath }) {
|
|
201
|
-
const pathname = usePathname();
|
|
214
|
+
function SbBreadcrumbs({ className, routes, appBasePath, pathname: propPathname }) {
|
|
215
|
+
const pathname = propPathname != null ? propPathname : usePathname();
|
|
202
216
|
const manualBreadcrumbs = useGlobalStore((state) => state.breadcrumbs);
|
|
203
217
|
const { t } = useLayoutTranslation();
|
|
204
218
|
const breadcrumbs = useMemo(() => {
|
|
@@ -596,7 +610,7 @@ function MenuButton({ className, appBasePath }) {
|
|
|
596
610
|
// src/components/GlobalHeader/GlobalHeader.tsx
|
|
597
611
|
import styles4 from "./GlobalHeader.module.css";
|
|
598
612
|
import { Fragment as Fragment3, jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
599
|
-
function GlobalHeader({ className, routes, appBasePath }) {
|
|
613
|
+
function GlobalHeader({ className, routes, appBasePath, pathname }) {
|
|
600
614
|
const isMenuOpen = useGlobalStore((state) => state.isMenuOpen);
|
|
601
615
|
const setIsMenuOpen = useGlobalStore((state) => state.setIsMenuOpen);
|
|
602
616
|
const setTheme = useGlobalStore((state) => state.setTheme);
|
|
@@ -635,23 +649,143 @@ function GlobalHeader({ className, routes, appBasePath }) {
|
|
|
635
649
|
/* @__PURE__ */ jsx7(MenuButton, { appBasePath })
|
|
636
650
|
] })
|
|
637
651
|
] }),
|
|
638
|
-
/* @__PURE__ */ jsx7(SbBreadcrumbs, { routes, appBasePath })
|
|
652
|
+
/* @__PURE__ */ jsx7(SbBreadcrumbs, { routes, appBasePath, pathname })
|
|
639
653
|
] }) });
|
|
640
654
|
}
|
|
641
655
|
|
|
656
|
+
// src/components/RootLayout/RootLayout.tsx
|
|
657
|
+
import { useEffect as useEffect2 } from "react";
|
|
658
|
+
import clsx5 from "clsx";
|
|
659
|
+
import { SkipLink } from "@digdir/designsystemet-react";
|
|
660
|
+
|
|
642
661
|
// src/components/GlobalFooter/GlobalFooter.tsx
|
|
643
|
-
import { Paragraph } from "@digdir/designsystemet-react";
|
|
662
|
+
import { Link as Link4, Heading as Heading2, List as List2, Paragraph } from "@digdir/designsystemet-react";
|
|
663
|
+
import { ExternalLink as ExternalLink2 } from "lucide-react";
|
|
644
664
|
import clsx4 from "clsx";
|
|
645
665
|
import styles5 from "./GlobalFooter.module.css";
|
|
646
|
-
|
|
647
|
-
|
|
666
|
+
|
|
667
|
+
// src/assets/images/footer.png
|
|
668
|
+
var footer_default = "data:image/png;base64,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";
|
|
669
|
+
|
|
670
|
+
// src/assets/images/linkedin.png
|
|
671
|
+
var linkedin_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+oCEAs7B/9RA8EAAAGISURBVEjH7ZU9TyNBDIYfhxWbFR8nQHy1oUCiQFDdCYmWgt+AhEAIJH5FWnoorkJ8NZQU/AG6a6juylNEgQQku4QgdmZJMAVJWE5ZBcI2J/FW4xl7Xttje+ALbSBxwQ/tDsKGiHR1cpmqPgH7g1l3pSVBYOwdIn2fclm1MpB1+xui889xpumJsqtQE2FVRJxOs9LaUNkb9Ny1etqqCJudBpRJCjSm8fSZjDkJQS6XQluVDI8o62+DToMAbiVDDkCEEjCmqmcIFmVEIAecKHqFyBTKgoi0dyMw9j6wkQbWnjZL19jDwEZ6UXwYB7gJw/nrcnkiblcMw6UXu0gDYyvveYNEDHve2Z/z88JlpTLU2Nve2jpS+PuRR05EoVBwp3/M/fa63aJvzAZAPp9XUf2VCoE3OjorwmTdfPG1v/BTIXBq0vNaberF1tVUCNJqtP+HIKnRZn0THdcb7TtAb6/z0zeRAR2J6U039ICZtpMvpXF9N5B1v7VMkQp7qlrr/G6tqXDw9Y9/CM/e8Z8u4UfBnwAAAABJRU5ErkJggg==";
|
|
672
|
+
|
|
673
|
+
// src/assets/images/instagram.png
|
|
674
|
+
var instagram_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+oCEAs6J90kEkgAAALjSURBVEjH3VVNbxNJEH0VG0g0DvEFx9o9JFo4grSr3PcHoPyQ3EMQR5+zSMsN/keWnAcCQlkZWIL4ktgVJo4Ue+zuCWQyVR1nikMmaGzPWHBkW+rD1FTXx6uqV8CPfmhU0ArDqndhZmWKcJ2ILqvqDAHnQeQNKap+UuCEiGJV/TdRbEYS31uoVsNCB0EU/Voun7sP4CcAUGgHoAiKAaCfR2KbBaEMqEeg+VS4NxgcL1/yvH+QF7kVt2dYkj7zercbzX8rDN1uNN9nXjcsiRXX/hCGc2NKvVhuWXHaZ17/HoyDKPrNxHLzba9X6TOvW3Hai+XWmKJheWhYkqLIG40GtYKo3gqieqPRoMy7v604NbGstYKoblgSw/JgzIAV1zYinVF5s9ksm1huWnG7Vpymd9fEsub7fqnHvGJZHncOD68BgBHpWHHtcQcsB4bduzHjzBtWnFqWI8vyKL1HVpwa5o1ms1keRsK9sywHeQ4iy+71kPJp5GpYtvfDcPFMvh+GC4ZlO4XmxrAd99qyRHk1EMuyk8Xcitu1LEf7Ybgwqr8fhgtpJq1sTSzLjmGRPAeJYXn+tW2DqJ5Cs1XUQZZly4rTTuewlrHzzLCcnH1PFT2eTjT5ViZQD1qkkHUwIKB09nH37u0AwEcASwUQLSqwBOBjvVIJMh7LAAZ56R7lFHmtoMiLmSKvTipytsUGmskAAP579fLPX65e/Z1oavn89Mwby/L0lKOwRETTqtjY2X5yZ4gDgRLlZiBuL2/QfN8vmVhuWHGtzKC1TCyrvu+XxpplwqBtGZakFUT1SaQ2iQTzqOJrkU8U94mIKrOl1SIDtZrXqdW8TtH/ymxplYgIis0ium6ndP3HpEzyIu8z307pejdL13kL5y8AP6cLpwvQIYAEqsP8QjR3ioBWCHQ2aO3jwfFyzfNeFK7MD2E4d/HCzApOV+aVdGWWQHRxZGVGCrh0Zb6HYvOTxPcWq9UD/K/OFyS7VUlMESf+AAAAAElFTkSuQmCC";
|
|
675
|
+
|
|
676
|
+
// src/assets/images/facebook.png
|
|
677
|
+
var facebook_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+oCEAs5MpvUpWAAAAF9SURBVEjH7VW7SgNBFD13ZpPNQppICj8goEKwVhBsRVLYBCHrL9hbWNj5A1a2YuIPWPkFdsKiBivBKhgMiYHJY3euTQaSNZvsJthIbjX3MnPOzJk7Z4BVzAkKF5pKuZLEGQObRGTFAWFmn4B6wPoy7zjVSIKmUidSyJtldhzowB0nmSBo9foeiIpLacLs5TL2tkknJGBgi+KBfGvGHYB3AgIQ7xGJksEYnzpBQEQyht7DgT/cWc9mX0ztS/UHIJRGGFYkQcyueDTgn51OQabsIxDvT+mXxQgY1DBjmc64RLiIAgcAkfACnwH9YFKt/Set+ZoZb7HeQas/4Nm756s12z4N11u93j1IHJo8Z6dpoRMQUGgotWvyRrdb/FKqzCQ2otYkvAM6SJHsAigDQMqyjonE+awV4q+96J8RMLO/LGAYwwp1SR3APLNLf7TbuZHvOPS7015n2XVFCnm7pF1X8o5TmypR3nGqgQ5cMHtJ5GJmH8ze6C+orf7xRPED2beQY4MoJMwAAAAASUVORK5CYII=";
|
|
678
|
+
|
|
679
|
+
// src/assets/images/youtube.png
|
|
680
|
+
var youtube_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+oCEAs3ENA3yQoAAAFkSURBVEjH7VQ9TgJRGJx5i8uuECL+JEY7GgsrLyCxsPEQmtiamOgFvIE30MRD2BkTPYNYqZ2EBIKEKCyRfWODgCzrT8BGme69fDPfmzf5PmCCPw/2HypBkDfiNgxyEJdITEtKEXBAZj4wpbqAkGRDQgNQEcKDpc7mPe8q0qASBHkDXpI0o7xYkg1lNxZ8/xoAumIG3B1VHABIGodmt6fbw+oYv3410oDE0mcM+2o3IRW+6WIx6kDIfEaaS3sXxfu7NVkdSqp9EcRMJORq0GqTdOI42aTbrX2s12d91z0CuDeMI6k96yWnBjP4FZg+K8FXxYVCYarabB34bvKeNPtxjvu1En3J1ACk4sTLL60tx+ExiZVvpFyLNJBUIrkcx0kkeP6DYSsNm4ObMX79baRBKHsqyY6q3FkVJ0OXXbnZXHdgdmCQo7gIIiUp3Rme7IDQU+f+GcKLqBIsHkLYs/c9NME/wRuiKYYuo9BUkwAAAABJRU5ErkJggg==";
|
|
681
|
+
|
|
682
|
+
// src/assets/images/vimeo.png
|
|
683
|
+
var vimeo_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IB2cksfwAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAAd0SU1FB+oCEAs1NjAMLnUAAAJvSURBVEjH7VVNaBNBFH5vEppN0zZtQgO1VRDNxSAIIgV/MBch9VgLIl7FW0FBehAPe7K9WMSDeBJvQvAg3lR6smAL1YNaKAaKGBt1sz9NTHZ3dpM8DzYxmd1E1B77YGHn8b3vm/czMwB79q+WzWZZscqnNNOc2VDVgW64b5VKSrPtBd12nuo2f6SZ5vQfybd0fcKw+bLBHTK4Q4btrK8VCmERp1v8um5zt4Xb+VTLutzEMDGoaFlnwv2Rt4B4quVEOHJwOH61HaeZ5jQyXETEoMjBkM36CmimeSGA7AUijopBGICp5r8sy4gseLtHEZK/99Yi57PI4C4iMr8IItJjUii+k+XpAGO3gCCGiCd8wD9GpNBQRwbI8Cwg5qlBc0SkejJAjH3RtHEAgNFweDkWCmXuLcxPEtEbn/2893jypdLIuqJEAABUy7okNs7gDilVO+NpNOdLIk63+JynB/ujUSOVSFQBAD6srmYJSBHJggyPtq8/bW9HgeCkUB6L15yHXacIACCdTtepAc88pUU43r4ekqQ5RJQ6MECLY4ODak+BX8j6c8/4AWRyuVwfAECxXD6MgNfESn8tl+eFGH8zXXeJiOpCp6PD+w6cWysUwoG+0BNA7G+bMmrUGleaZfaMqZ/pNl9BxEnxoBNRERGPtTsb1LgTl6QbPln3Mnrp4xwXyYFoRc/nb/ox9BSok6+A5+qqViszyWTS+WsBZXPzNRFp3ROkkltzz0/E41vdID0FUqmUC0D3fbmBvtfqtXQiEnn3X+/ChqoO6LbzseO02vyVUiod2rXH57NqjmkWf2DY/LFuWRdlWca9J3nX7Cd8NE/XacTiWgAAAABJRU5ErkJggg==";
|
|
684
|
+
|
|
685
|
+
// src/components/GlobalFooter/GlobalFooter.tsx
|
|
686
|
+
import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
687
|
+
function GlobalFooter({
|
|
688
|
+
className,
|
|
689
|
+
logoUrl = footer_default,
|
|
690
|
+
logoAlt
|
|
691
|
+
}) {
|
|
648
692
|
const { t } = useLayoutTranslation();
|
|
649
|
-
return /* @__PURE__ */ jsx8("footer", { className: clsx4(styles5.footer, className), children: /* @__PURE__ */
|
|
693
|
+
return /* @__PURE__ */ jsx8("footer", { className: clsx4(styles5.footer, className), children: /* @__PURE__ */ jsxs5("div", { className: styles5.footerContent, children: [
|
|
694
|
+
/* @__PURE__ */ jsxs5("div", { className: clsx4(styles5.footerLeft, styles5.shortcutsContainer), children: [
|
|
695
|
+
/* @__PURE__ */ jsx8("div", { className: styles5.shortcutsHeadingWide, children: /* @__PURE__ */ jsx8(Heading2, { level: 2, "data-size": "2xs", className: styles5.sectionHeading, children: t("footer.shortcuts") }) }),
|
|
696
|
+
/* @__PURE__ */ jsx8("div", { className: styles5.footerSection, children: /* @__PURE__ */ jsxs5(List2.Unordered, { className: styles5.footerList, children: [
|
|
697
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsx8(Link4, { href: "#", children: t("footer.news") }) }),
|
|
698
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsx8(Link4, { href: "#", children: t("footer.press") }) }),
|
|
699
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsx8(Link4, { href: "#", children: t("footer.whistleblowing") }) }),
|
|
700
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsx8(Link4, { href: "#", children: t("footer.privacy") }) }),
|
|
701
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsx8(Link4, { href: "#", children: t("footer.accessibility") }) }),
|
|
702
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsx8(Link4, { href: "#", children: t("footer.about") }) })
|
|
703
|
+
] }) }),
|
|
704
|
+
/* @__PURE__ */ jsx8("div", { className: styles5.footerSection, children: /* @__PURE__ */ jsxs5(List2.Unordered, { className: styles5.footerList, children: [
|
|
705
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsx8(Link4, { href: "#", children: t("footer.publications") }) }),
|
|
706
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsx8(Link4, { href: "#", children: t("footer.stateFacilities") }) }),
|
|
707
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsx8(Link4, { href: "#", children: t("footer.mmfmHelpdesk") }) }),
|
|
708
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsxs5(Link4, { href: "https://simba.statsbygg.no/", className: styles5.externalLink, target: "_blank", rel: "noopener noreferrer", children: [
|
|
709
|
+
t("footer.simba"),
|
|
710
|
+
/* @__PURE__ */ jsx8(ExternalLink2, { size: 14, "aria-hidden": "true" })
|
|
711
|
+
] }) }),
|
|
712
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsxs5(Link4, { href: "https://statensinnleie.no", className: styles5.externalLink, target: "_blank", rel: "noopener noreferrer", children: [
|
|
713
|
+
t("footer.stateRental"),
|
|
714
|
+
/* @__PURE__ */ jsx8(ExternalLink2, { size: 14, "aria-hidden": "true" })
|
|
715
|
+
] }) }),
|
|
716
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsxs5(Link4, { href: "https://einnsyn.no/sok?f=0279324b-adee-4116-ae84-3895f61c0db9", className: styles5.externalLink, target: "_blank", rel: "noopener noreferrer", children: [
|
|
717
|
+
t("footer.publicJournal"),
|
|
718
|
+
/* @__PURE__ */ jsx8(ExternalLink2, { size: 14, "aria-hidden": "true" })
|
|
719
|
+
] }) })
|
|
720
|
+
] }) })
|
|
721
|
+
] }),
|
|
722
|
+
/* @__PURE__ */ jsxs5("div", { className: clsx4(styles5.footerSection, styles5.socialLinks), children: [
|
|
723
|
+
/* @__PURE__ */ jsx8(Heading2, { level: 2, "data-size": "2xs", className: styles5.sectionHeading, children: t("footer.followUs") }),
|
|
724
|
+
/* @__PURE__ */ jsxs5(List2.Unordered, { className: styles5.footerList, children: [
|
|
725
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsxs5(Link4, { href: "#", className: styles5.socialLink, children: [
|
|
726
|
+
"LinkedIn",
|
|
727
|
+
/* @__PURE__ */ jsx8("img", { src: typeof linkedin_default === "string" ? linkedin_default : linkedin_default.src, alt: "", className: styles5.socialIcon, "aria-hidden": "true" })
|
|
728
|
+
] }) }),
|
|
729
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsxs5(Link4, { href: "#", className: styles5.socialLink, children: [
|
|
730
|
+
"Instagram",
|
|
731
|
+
/* @__PURE__ */ jsx8("img", { src: typeof instagram_default === "string" ? instagram_default : instagram_default.src, alt: "", className: styles5.socialIcon, "aria-hidden": "true" })
|
|
732
|
+
] }) }),
|
|
733
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsxs5(Link4, { href: "#", className: styles5.socialLink, children: [
|
|
734
|
+
"Facebook",
|
|
735
|
+
/* @__PURE__ */ jsx8("img", { src: typeof facebook_default === "string" ? facebook_default : facebook_default.src, alt: "", className: styles5.socialIcon, "aria-hidden": "true" })
|
|
736
|
+
] }) }),
|
|
737
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsxs5(Link4, { href: "#", className: styles5.socialLink, children: [
|
|
738
|
+
"YouTube",
|
|
739
|
+
/* @__PURE__ */ jsx8("img", { src: typeof youtube_default === "string" ? youtube_default : youtube_default.src, alt: "", className: styles5.socialIcon, "aria-hidden": "true" })
|
|
740
|
+
] }) }),
|
|
741
|
+
/* @__PURE__ */ jsx8(List2.Item, { children: /* @__PURE__ */ jsxs5(Link4, { href: "#", className: styles5.socialLink, children: [
|
|
742
|
+
"Vimeo",
|
|
743
|
+
/* @__PURE__ */ jsx8("img", { src: typeof vimeo_default === "string" ? vimeo_default : vimeo_default.src, alt: "", className: styles5.socialIcon, "aria-hidden": "true" })
|
|
744
|
+
] }) })
|
|
745
|
+
] })
|
|
746
|
+
] }),
|
|
747
|
+
/* @__PURE__ */ jsx8("div", { className: styles5.footerLeftWide, children: /* @__PURE__ */ jsxs5("div", { className: clsx4(styles5.footerSection, styles5.contactSectionsContainer), children: [
|
|
748
|
+
/* @__PURE__ */ jsx8("div", { className: styles5.contactHeadingWide, children: /* @__PURE__ */ jsx8(Heading2, { level: 2, "data-size": "2xs", className: styles5.sectionHeading, children: t("footer.contactUs") }) }),
|
|
749
|
+
/* @__PURE__ */ jsxs5("div", { className: styles5.contactSection, children: [
|
|
750
|
+
/* @__PURE__ */ jsx8(Paragraph, { "data-size": "sm", children: /* @__PURE__ */ jsxs5(Link4, { href: "tel:22955000", children: [
|
|
751
|
+
t("footer.phone"),
|
|
752
|
+
": 22 95 50 00"
|
|
753
|
+
] }) }),
|
|
754
|
+
/* @__PURE__ */ jsx8(Paragraph, { "data-size": "sm", children: /* @__PURE__ */ jsx8(Link4, { href: "mailto:postmottak@statsbygg.no", children: "postmottak@statsbygg.no" }) }),
|
|
755
|
+
/* @__PURE__ */ jsx8(Paragraph, { "data-size": "sm", children: /* @__PURE__ */ jsx8(Link4, { href: "#", children: t("footer.findEmployee") }) })
|
|
756
|
+
] }),
|
|
757
|
+
/* @__PURE__ */ jsxs5("div", { className: styles5.contactSection, children: [
|
|
758
|
+
/* @__PURE__ */ jsx8(Heading2, { level: 2, "data-size": "2xs", className: styles5.contactHeading, children: t("footer.visitAddress") }),
|
|
759
|
+
/* @__PURE__ */ jsxs5(Paragraph, { "data-size": "sm", children: [
|
|
760
|
+
"Biskop Gunnerus' gate 6,",
|
|
761
|
+
/* @__PURE__ */ jsx8("br", {}),
|
|
762
|
+
"0155 Oslo (Byporten)"
|
|
763
|
+
] })
|
|
764
|
+
] }),
|
|
765
|
+
/* @__PURE__ */ jsxs5("div", { className: styles5.contactSection, children: [
|
|
766
|
+
/* @__PURE__ */ jsx8(Heading2, { level: 2, "data-size": "2xs", className: styles5.contactHeading, children: t("footer.postalAddress") }),
|
|
767
|
+
/* @__PURE__ */ jsxs5(Paragraph, { "data-size": "sm", children: [
|
|
768
|
+
"Postboks 232 Sentrum,",
|
|
769
|
+
/* @__PURE__ */ jsx8("br", {}),
|
|
770
|
+
"0103 Oslo"
|
|
771
|
+
] })
|
|
772
|
+
] })
|
|
773
|
+
] }) }),
|
|
774
|
+
/* @__PURE__ */ jsx8("div", { className: clsx4(styles5.footerSection, styles5.socialLinks, styles5.footerLogo), children: /* @__PURE__ */ jsx8(
|
|
775
|
+
"div",
|
|
776
|
+
{
|
|
777
|
+
className: styles5.logoSection,
|
|
778
|
+
style: { backgroundImage: `url(${typeof logoUrl === "string" ? logoUrl : logoUrl.src})` },
|
|
779
|
+
role: "img",
|
|
780
|
+
"aria-label": logoAlt || t("footer.tagline")
|
|
781
|
+
}
|
|
782
|
+
) })
|
|
783
|
+
] }) });
|
|
650
784
|
}
|
|
651
785
|
|
|
652
786
|
// src/components/RootLayout/RootLayout.tsx
|
|
653
787
|
import styles6 from "./RootLayout.module.css";
|
|
654
|
-
import { jsx as jsx9, jsxs as
|
|
788
|
+
import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
655
789
|
function RootLayout({ children, routes, appBasePath, className }) {
|
|
656
790
|
const initialize = useGlobalStore((state) => state.initialize);
|
|
657
791
|
const isMenuOpen = useGlobalStore((state) => state.isMenuOpen);
|
|
@@ -659,7 +793,7 @@ function RootLayout({ children, routes, appBasePath, className }) {
|
|
|
659
793
|
useEffect2(() => {
|
|
660
794
|
initialize();
|
|
661
795
|
}, [initialize]);
|
|
662
|
-
return /* @__PURE__ */
|
|
796
|
+
return /* @__PURE__ */ jsxs6("div", { className: clsx5(styles6.root, isMenuOpen && styles6.menuOpen, className), children: [
|
|
663
797
|
/* @__PURE__ */ jsx9(SkipLink, { className: styles6.skipLink, href: "#main-content", children: t("common.skipLink") }),
|
|
664
798
|
/* @__PURE__ */ jsx9(GlobalHeader, { routes, appBasePath }),
|
|
665
799
|
/* @__PURE__ */ jsx9("main", { id: "main-content", tabIndex: -1, className: styles6.main, children }),
|
|
@@ -680,6 +814,8 @@ function useBreadcrumbs(breadcrumbs) {
|
|
|
680
814
|
}, [serialized, setBreadcrumbs]);
|
|
681
815
|
}
|
|
682
816
|
export {
|
|
817
|
+
GlobalFooter,
|
|
818
|
+
GlobalHeader,
|
|
683
819
|
RootLayout,
|
|
684
820
|
SmartLink,
|
|
685
821
|
findAppRootWithAncestors,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/RootLayout/RootLayout.tsx","../src/components/GlobalHeader/GlobalHeader.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/routes.ts","../src/store/globalState.ts","../src/locales/translations.ts","../src/hooks/use-layout-translation.ts","../src/components/BreadcrumbLink/BreadcrumbLink.tsx","../src/components/MenuButton/MenuButton.tsx","../src/components/NavigationMenu/NavigationMenu.tsx","../src/navigationMenu.ts","../src/components/NavigationMenuItem/NavigationMenuItem.tsx","../src/components/SmartLink/SmartLink.tsx","../src/components/GlobalFooter/GlobalFooter.tsx","../src/hooks/use-breadcrumbs.ts"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\nimport clsx from 'clsx';\nimport { SkipLink } from '@digdir/designsystemet-react';\nimport { GlobalHeader } from '../GlobalHeader';\nimport { GlobalFooter } from '../GlobalFooter';\nimport { useGlobalStore } from '@/store/globalState';\nimport { useLayoutTranslation } from '@/hooks/use-layout-translation';\nimport type { RootLayoutProps } from './RootLayout.types';\nimport styles from './RootLayout.module.css';\n\nexport function RootLayout({ children, routes, appBasePath, className }: RootLayoutProps) {\n const initialize = useGlobalStore((state) => state.initialize);\n const isMenuOpen = useGlobalStore((state) => state.isMenuOpen);\n const { t } = useLayoutTranslation();\n\n useEffect(() => {\n initialize();\n }, [initialize]);\n\n return (\n <div className={clsx(styles.root, isMenuOpen && styles.menuOpen, className)}>\n <SkipLink className={styles.skipLink} href=\"#main-content\">\n {t('common.skipLink')}\n </SkipLink>\n <GlobalHeader routes={routes} appBasePath={appBasePath} />\n <main id=\"main-content\" tabIndex={-1} className={styles.main}>\n {children}\n </main>\n <GlobalFooter />\n </div>\n );\n}","'use client';\n\nimport { Button, Link } from '@digdir/designsystemet-react';\nimport { Search } from 'lucide-react';\nimport clsx from 'clsx';\nimport { Breadcrumbs } from '../Breadcrumbs';\nimport { MenuButton } from '../MenuButton';\nimport { ALLOW_DARK_THEME, useGlobalStore } from '@/store/globalState';\nimport { useLayoutTranslation } from '@/hooks/use-layout-translation';\nimport type { GlobalHeaderProps } from './GlobalHeader.types';\nimport styles from './GlobalHeader.module.css';\n\nexport function GlobalHeader({ className, routes, appBasePath }: GlobalHeaderProps) {\n const isMenuOpen = useGlobalStore((state) => state.isMenuOpen);\n const setIsMenuOpen = useGlobalStore((state) => state.setIsMenuOpen);\n const setTheme = useGlobalStore((state) => state.setTheme);\n const theme = useGlobalStore((state) => state.theme);\n const { t } = useLayoutTranslation();\n\n function toggleDarkMode() {\n setTheme(theme === 'dark' ? 'light' : 'dark');\n }\n\n return (\n <header className={clsx(styles.header, isMenuOpen && styles.menuOpen, className)}>\n <div className={styles.headerContainer}>\n <div className={styles.topBarContainer}>\n <Link href=\"https://www.statsbygg.no\">\n <img\n src=\"https://dok.statsbygg.no/wp-content/uploads/2025/11/Statsbygg_logo.svg\"\n alt=\"Logo\"\n className={styles.logo}\n />\n </Link>\n <div className={styles.actionsContainer}>\n {!isMenuOpen && (\n <>\n {ALLOW_DARK_THEME && (\n <Button onClick={toggleDarkMode} className={styles.themeToggleButton}>\n {theme === 'dark' ? '☀️' : '🌙'}\n </Button>\n )}\n <Button\n variant=\"secondary\"\n onClick={() => setIsMenuOpen(true)}\n className={styles.searchButton}\n aria-label={t('common.search')}\n >\n <Search size={20} aria-hidden=\"true\" />\n {t('common.search')}\n </Button>\n </>\n )}\n <MenuButton appBasePath={appBasePath} />\n </div>\n </div>\n <Breadcrumbs routes={routes} appBasePath={appBasePath} />\n </div>\n </header>\n );\n}","'use client';\n\nimport { useMemo } from 'react';\nimport { usePathname } from 'next/navigation';\nimport { Breadcrumbs } from '@digdir/designsystemet-react';\nimport clsx from 'clsx';\nimport { getBreadcrumbs, findAppRootWithAncestors, BreadcrumbItem } from '@/routes';\nimport { useGlobalStore } from '@/store/globalState';\nimport { useLayoutTranslation } from '@/hooks/use-layout-translation';\nimport { BreadcrumbLink } from '../BreadcrumbLink';\nimport type { BreadcrumbsProps } from './Breadcrumbs.types';\nimport styles from './Breadcrumbs.module.css';\n\nexport function SbBreadcrumbs({ className, routes, appBasePath }: BreadcrumbsProps) {\n const pathname = usePathname();\n const manualBreadcrumbs = useGlobalStore((state) => state.breadcrumbs);\n const { t } = useLayoutTranslation();\n\n const breadcrumbs = useMemo((): BreadcrumbItem[] => {\n if (manualBreadcrumbs) {\n const { externalAncestors } = findAppRootWithAncestors(routes);\n const baseBreadcrumbs = externalAncestors.map((node) => ({\n label: node.label,\n href: node.path,\n }));\n const manualHrefs = new Set(manualBreadcrumbs.map((b) => b.href));\n const uniqueBase = baseBreadcrumbs.filter((b) => !manualHrefs.has(b.href));\n return [...uniqueBase, ...manualBreadcrumbs];\n }\n return getBreadcrumbs(routes, pathname);\n }, [routes, pathname, manualBreadcrumbs]);\n\n if (breadcrumbs.length === 0) {\n return null;\n }\n\n return (\n <Breadcrumbs\n aria-label={t('common.youAreHere')}\n className={clsx(styles.breadcrumbs, className)}\n >\n <Breadcrumbs.List>\n {breadcrumbs.map((crumb, index) => {\n const isLast = index === breadcrumbs.length - 1;\n\n return (\n <Breadcrumbs.Item key={`${crumb.href}-${index}`}>\n <BreadcrumbLink\n href={crumb.href}\n ariaCurrent={isLast ? 'page' : undefined}\n className={isLast ? styles.currentLink : styles.link}\n >\n {crumb.label}\n </BreadcrumbLink>\n </Breadcrumbs.Item>\n );\n })}\n </Breadcrumbs.List>\n </Breadcrumbs>\n );\n}","export type RouteNode = {\n path: string;\n label: string;\n children?: RouteNode[];\n};\n\nexport type BreadcrumbItem = {\n label: string;\n href: string;\n};\n\nfunction isExternalPath(path: string): boolean {\n return path.startsWith('http://') || path.startsWith('https://');\n}\n\nfunction normalizePath(path: string): string {\n if (path === '/') return '/';\n return path.replace(/\\/+$/, '');\n}\n\nfunction formatSegmentLabel(segment: string): string {\n try {\n const decoded = decodeURIComponent(segment).replace(/[-_]+/g, ' ').trim();\n return decoded ? decoded.charAt(0).toUpperCase() + decoded.slice(1) : segment;\n } catch {\n return segment;\n }\n}\n\ntype AncestorChain = {\n externalAncestors: RouteNode[];\n appRoot: RouteNode | null;\n};\n\nexport function findAppRootWithAncestors(node: RouteNode, ancestors: RouteNode[] = []): AncestorChain {\n if (!isExternalPath(node.path)) {\n return {\n externalAncestors: ancestors,\n appRoot: node,\n };\n }\n\n if (node.children) {\n for (const child of node.children) {\n const result = findAppRootWithAncestors(child, [...ancestors, node]);\n if (result.appRoot) return result;\n }\n }\n\n return { externalAncestors: ancestors, appRoot: null };\n}\n\ntype InternalMatch = {\n node: RouteNode;\n ancestors: RouteNode[];\n};\n\nfunction findInternalMatch(\n node: RouteNode,\n pathname: string,\n ancestors: RouteNode[] = []\n): InternalMatch | null {\n const nodePath = normalizePath(node.path);\n\n if (pathname === nodePath) {\n return { node, ancestors };\n }\n\n if (node.children) {\n for (const child of node.children) {\n if (isExternalPath(child.path)) continue;\n\n const result = findInternalMatch(child, pathname, [...ancestors, node]);\n if (result) return result;\n }\n }\n\n const pathPrefix = nodePath === '/' ? '/' : nodePath + '/';\n if (pathname.startsWith(pathPrefix) || pathname === nodePath) {\n return { node, ancestors };\n }\n\n return null;\n}\n\nexport function getBreadcrumbs(routes: RouteNode, pathname: string): BreadcrumbItem[] {\n const normalizedPathname = normalizePath(pathname);\n const { externalAncestors, appRoot } = findAppRootWithAncestors(routes);\n\n if (!appRoot) {\n return externalAncestors.map((node) => ({\n label: node.label,\n href: node.path,\n }));\n }\n\n const breadcrumbs: BreadcrumbItem[] = externalAncestors.map((node) => ({\n label: node.label,\n href: node.path,\n }));\n\n const internalMatch = findInternalMatch(appRoot, normalizedPathname);\n\n if (!internalMatch) {\n breadcrumbs.push({ label: appRoot.label, href: appRoot.path });\n return breadcrumbs;\n }\n\n for (const ancestor of internalMatch.ancestors) {\n breadcrumbs.push({\n label: ancestor.label,\n href: ancestor.path,\n });\n }\n\n breadcrumbs.push({\n label: internalMatch.node.label,\n href: internalMatch.node.path,\n });\n\n const matchedPath = normalizePath(internalMatch.node.path);\n if (normalizedPathname !== matchedPath) {\n const remainingPath = normalizedPathname.slice(\n matchedPath === '/' ? 1 : matchedPath.length + 1\n );\n const dynamicSegments = remainingPath.split('/').filter(Boolean);\n\n let accumulatedPath = matchedPath;\n for (const segment of dynamicSegments) {\n accumulatedPath = accumulatedPath === '/' ? `/${segment}` : `${accumulatedPath}/${segment}`;\n breadcrumbs.push({\n label: formatSegmentLabel(segment),\n href: accumulatedPath,\n });\n }\n }\n\n return breadcrumbs;\n}","import { create, StateCreator } from 'zustand';\nimport { persist, createJSONStorage } from 'zustand/middleware';\nimport type { BreadcrumbItem } from '../routes';\n\nexport type Theme = 'light' | 'dark' | 'system';\n\nexport const ALLOW_DARK_THEME = false;\n\nexport type GlobalState = {\n user?: { id: string; name?: string } | null;\n theme: Theme;\n locale: string;\n isMenuOpen: boolean;\n breadcrumbs: BreadcrumbItem[] | null;\n setUser: (user: GlobalState['user']) => void;\n setTheme: (theme: Theme) => void;\n setLocale: (locale: string) => void;\n setIsMenuOpen: (isOpen: boolean) => void;\n toggleMenu: () => void;\n setBreadcrumbs: (breadcrumbs: BreadcrumbItem[] | null) => void;\n initialize: () => void;\n};\n\nconst creator: StateCreator<GlobalState, [['zustand/persist', unknown]]> = (set, get) => ({\n user: null,\n theme: 'light',\n locale: 'no',\n isMenuOpen: false,\n breadcrumbs: null,\n setUser: (user) => set({ user }),\n setTheme: (theme) => {\n set({ theme: ALLOW_DARK_THEME ? theme : 'light' });\n if (typeof document !== 'undefined' && ALLOW_DARK_THEME) {\n document.documentElement.setAttribute('data-color-scheme', theme);\n }\n },\n setLocale: (locale) => set({ locale }),\n setIsMenuOpen: (isMenuOpen) => set({ isMenuOpen }),\n toggleMenu: () => set((state) => ({ isMenuOpen: !state.isMenuOpen })),\n setBreadcrumbs: (breadcrumbs) => set({ breadcrumbs }),\n initialize: () => {\n if (typeof document !== 'undefined' && ALLOW_DARK_THEME) {\n document.documentElement.setAttribute('data-color-scheme', get().theme);\n }\n },\n});\n\nexport const useGlobalStore = create<GlobalState>()(\n persist(creator, {\n name: 'statsbygg-global-state',\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => ({\n user: state.user,\n theme: ALLOW_DARK_THEME ? state.theme : 'light',\n locale: state.locale,\n }),\n })\n);","export const translations = {\n no: {\n 'common.menu': 'Meny',\n 'common.close': 'Lukk',\n 'common.search': 'Søk',\n 'common.searchLabel': 'Søk',\n 'common.youAreHere': 'Du er her:',\n 'common.skipLink': 'Hopp til hovedinnhold',\n 'common.home': 'Hjem',\n 'footer.content': 'Statsbygg Footer',\n 'menu.helpTitle': 'Hva kan vi hjelpe deg med?',\n 'menu.mainMenuLabel': 'Hovedmeny',\n 'menu.closeMenu': 'Lukk meny',\n 'menu.openMenu': 'Åpne meny',\n }\n};\n\nexport type TranslationKey = keyof typeof translations.no;","import { TranslationKey, translations } from '@/locales/translations';\nimport { useGlobalStore } from '@/store/globalState';\n\nexport function useLayoutTranslation() {\n const locale = useGlobalStore((state) => state.locale) as keyof typeof translations;\n \n const languageMap = translations[locale] || translations.no;\n\n function t(key: TranslationKey): string {\n return languageMap[key] || key;\n }\n\n return { t, locale };\n}","'use client';\n\nimport Link from 'next/link';\nimport type { ReactNode } from 'react';\n\ntype BreadcrumbLinkProps = {\n href: string;\n className?: string;\n ariaCurrent?: 'page' | undefined;\n children: ReactNode;\n};\n\n/**\n * Renders breadcrumb links correctly:\n * - External URLs (http/https): standard anchor tag\n * - Internal paths: Next.js Link (handles basePath automatically)\n */\nexport function BreadcrumbLink({\n href,\n className,\n ariaCurrent,\n children,\n}: BreadcrumbLinkProps) {\n const isExternal = href.startsWith('http://') || href.startsWith('https://');\n\n if (isExternal) {\n return (\n <a href={href} className={className} aria-current={ariaCurrent}>\n {children}\n </a>\n );\n }\n\n return (\n <Link href={href} className={className} aria-current={ariaCurrent}>\n {children}\n </Link>\n );\n}","'use client';\n\nimport { Button } from '@digdir/designsystemet-react';\nimport { Menu, X } from 'lucide-react';\nimport { useGlobalStore } from '@/store/globalState';\nimport { NavigationMenu } from '../NavigationMenu';\nimport { useLayoutTranslation } from '@/hooks/use-layout-translation';\nimport type { MenuButtonProps } from './MenuButton.types';\n\nexport function MenuButton({ className, appBasePath }: MenuButtonProps) {\n const isMenuOpen = useGlobalStore((state) => state.isMenuOpen);\n const toggleMenu = useGlobalStore((state) => state.toggleMenu);\n const { t } = useLayoutTranslation();\n\n return (\n <>\n <Button\n variant=\"primary\"\n onClick={toggleMenu}\n aria-expanded={isMenuOpen}\n aria-label={isMenuOpen ? t('menu.closeMenu') : t('menu.openMenu')}\n className={className}\n >\n {isMenuOpen ? <X size={20} aria-hidden=\"true\" /> : <Menu size={20} aria-hidden=\"true\" />}\n {isMenuOpen ? t('common.close') : t('common.menu')}\n </Button>\n <NavigationMenu appBasePath={appBasePath} />\n </>\n );\n}","'use client';\n\nimport { useState, useEffect, useRef } from 'react';\nimport { Heading, Search } from '@digdir/designsystemet-react';\nimport { NAVIGATION_MENU, MenuSection } from '../../navigationMenu';\nimport { NavigationMenuItem } from '../NavigationMenuItem/NavigationMenuItem';\nimport { useGlobalStore } from '../../store/globalState';\nimport { useLayoutTranslation } from '@/hooks/use-layout-translation';\nimport type { NavigationMenuProps } from './NavigationMenu.types';\nimport styles from './NavigationMenu.module.css';\n\nexport function NavigationMenu({ className, appBasePath }: NavigationMenuProps) {\n const [searchValue, setSearchValue] = useState('');\n const isMenuOpen = useGlobalStore((state) => state.isMenuOpen);\n const setIsMenuOpen = useGlobalStore((state) => state.setIsMenuOpen);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const { t } = useLayoutTranslation();\n\n useEffect(() => {\n if (!isMenuOpen) return;\n\n function handleEscape(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n setIsMenuOpen(false);\n }\n }\n\n setTimeout(() => {\n searchInputRef.current?.focus();\n }, 100);\n\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [setIsMenuOpen, isMenuOpen]);\n\n function handleBackdropClick(e: React.MouseEvent<HTMLDivElement>) {\n if (e.target === e.currentTarget) {\n setIsMenuOpen(false);\n }\n }\n\n return (\n <>\n {isMenuOpen && <div className={styles.backdrop} onClick={handleBackdropClick} />}\n <div className={`${styles.menuOverlay} ${!isMenuOpen ? styles.hidden : ''} ${className ?? ''}`}>\n <div className={styles.container}>\n <div className={styles.searchSection}>\n <Heading level={1}>{t('menu.helpTitle')}</Heading>\n <Search>\n <Search.Input\n aria-label={t('common.search')}\n ref={searchInputRef}\n value={searchValue}\n onChange={(e) => setSearchValue(e.target.value)}\n placeholder={t('common.search')}\n className={styles.searchField}\n />\n <Search.Clear />\n </Search>\n </div>\n\n <nav className={styles.menuSections} aria-label={t('menu.mainMenuLabel')}>\n {NAVIGATION_MENU.map((section: MenuSection, sectionIndex: number) => (\n <section\n key={sectionIndex}\n className={styles.section}\n style={{ animationDelay: `${0.15 + sectionIndex * 0.06}s` }}\n >\n {section.layout !== 'subsections' && (\n <Heading level={2} className={styles.sectionHeader}>\n {section.title}\n </Heading>\n )}\n\n {section.layout === 'subsections' && section.subsections ? (\n <div className={styles.subsectionsGrid}>\n {section.subsections.map((subsection, subsectionIndex) => (\n <div key={subsectionIndex} className={styles.subsection}>\n <Heading level={2} className={styles.subsectionHeader}>\n {subsection.title}\n </Heading>\n <div className={styles.subsectionItems}>\n {subsection.items.map((item, itemIndex) => (\n <NavigationMenuItem\n key={itemIndex}\n item={item}\n animationDelay={\n 150 + sectionIndex * 60 + subsectionIndex * 40 + itemIndex * 25\n }\n appBasePath={appBasePath}\n compact\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div className={sectionIndex === 2 ? styles.itemsGridThreeCol : styles.itemsGrid}>\n {section.items?.map((item, itemIndex) => (\n <NavigationMenuItem\n key={itemIndex}\n item={item}\n animationDelay={150 + sectionIndex * 60 + itemIndex * 25}\n appBasePath={appBasePath}\n />\n ))}\n </div>\n )}\n </section>\n ))}\n </nav>\n </div>\n </div>\n </>\n );\n}","export type MenuItem = {\n label: string;\n href: string;\n external?: boolean;\n children?: MenuItem[];\n};\n\nexport type MenuSubsection = {\n title: string;\n items: MenuItem[];\n};\n\nexport type MenuSection = {\n title: string;\n layout?: 'columns' | 'subsections';\n items?: MenuItem[];\n subsections?: MenuSubsection[];\n};\n\nexport const NAVIGATION_MENU: MenuSection[] = [\n {\n title: 'Våre tjenester',\n layout: 'columns',\n items: [\n {\n label: 'Statens eide og leide lokaler',\n href: '/lokaler',\n children: [\n { label: 'Lokalbruk', href: '/lokaler/lokalbruk' },\n { label: 'Statlige eiendommer', href: '/lokaler/statlige-eiendommer' },\n { label: 'Ledig for fremleie', href: '/lokaler/ledig-for-fremleie' },\n { label: 'Statistikk for lokalbruk', href: '/lokaler/statistikk' },\n { label: 'Veiledning', href: '/lokaler/veiledning' },\n ],\n },\n {\n label: 'For leietakere',\n href: '/for-leietakere',\n children: [\n { label: 'Leieveileder', href: '/for-leietakere/leieveileder' },\n ],\n },\n {\n label: 'For byggebransjen',\n href: '/byggebransjen',\n children: [\n { label: 'Våre krav', href: '/byggebransjen/vare-krav' },\n { label: 'BIM', href: '/byggebransjen/bim' },\n { label: 'ByggBoks', href: '/byggebransjen/byggboks' },\n ],\n },\n {\n label: 'Karriere',\n href: '/karriere',\n children: [\n { label: 'Ledige stillinger', href: '/karriere/ledige-stillinger' },\n { label: 'Å jobbe hos oss', href: '/karriere/jobbe-hos-oss' },\n { label: 'Møt en statsbygger', href: '/karriere/mot-en-statsbygger' },\n { label: 'Summer internship', href: '/karriere/summer-internship' },\n { label: 'Studenter og lærlinger', href: '/karriere/studenter-og-laerlinger' },\n ],\n },\n ],\n },\n {\n title: 'Informasjon om statsbygg',\n layout: 'subsections',\n subsections: [\n {\n title: 'Informasjon om statsbygg',\n items: [\n { label: 'Om Statsbygg', href: '/om-statsbygg' },\n { label: 'Samfunnsansvar', href: '/samfunnsansvar' },\n { label: 'Tilgjengelighet', href: '/tilgjengelighet' },\n { label: 'About Statsbygg', href: '/about-statsbygg' },\n { label: 'Statsbygg birra', href: '/statsbygg-birra' },\n ],\n },\n {\n title: 'Kontakt oss',\n items: [\n { label: 'Kontakt oss', href: '/kontakt' },\n { label: 'Ansattsøk', href: '/ansattsok' },\n { label: 'For pressen', href: '/for-pressen' },\n { label: 'Varsling', href: '/varsling' },\n ],\n },\n {\n title: 'Arkiv',\n items: [\n { label: 'Nyheter', href: '/nyheter' },\n { label: 'Artikler om bygg', href: '/artikler-om-bygg' },\n { label: 'Dokumenter', href: '/dokumenter' },\n ],\n },\n ],\n },\n {\n title: 'Eksterne lenker',\n layout: 'columns',\n items: [\n {\n label: 'Statens lokaler',\n href: 'https://statensinnleie.no',\n external: true,\n },\n {\n label: 'Statens innleie',\n href: 'https://statensinnleie.no',\n external: true,\n },\n {\n label: 'MainManager FM',\n href: 'https://mainmanager.no',\n external: true,\n },\n {\n label: 'Offentlig postjournal',\n href: 'https://postjournal.no',\n external: true,\n },\n {\n label: 'SIMBA (BIM)',\n href: 'https://bim.statsbygg.no',\n external: true,\n },\n ],\n },\n];","'use client';\n\nimport { List } from '@digdir/designsystemet-react';\nimport { ExternalLink } from 'lucide-react';\nimport { usePathname } from 'next/navigation';\nimport clsx from 'clsx';\nimport { SmartLink } from '../SmartLink';\nimport type { MenuItem } from '../../navigationMenu';\nimport type { NavigationMenuItemProps } from './NavigationMenuItem.types';\nimport styles from './NavigationMenuItem.module.css';\n\nexport function NavigationMenuItem({\n item,\n animationDelay,\n compact = false,\n appBasePath,\n}: NavigationMenuItemProps) {\n const pathname = usePathname();\n\n const isActive = (href: string) => {\n if (href === '/') return pathname === '/';\n return pathname?.startsWith(href);\n };\n\n const isParentActive = isActive(item.href);\n\n if (compact) {\n return (\n <div\n className={styles.itemColumn}\n style={{ animationDelay: `${animationDelay}ms` }}\n >\n <SmartLink\n href={item.href}\n appBasePath={appBasePath}\n external={item.external}\n className={clsx(styles.compactLink, isParentActive && styles.active)}\n >\n {item.label}\n {item.external && <ExternalLink size={16} aria-hidden=\"true\" />}\n </SmartLink>\n </div>\n );\n }\n\n return (\n <div\n className={styles.itemColumn}\n style={{ animationDelay: `${animationDelay}ms` }}\n >\n <SmartLink\n href={item.href}\n appBasePath={appBasePath}\n external={item.external}\n className={clsx(styles.parentLink, isParentActive && styles.active)}\n >\n {item.label}\n {item.external && <ExternalLink size={20} aria-hidden=\"true\" />}\n </SmartLink>\n\n {item.children && item.children.length > 0 && (\n <List.Unordered className={styles.childItems}>\n {item.children.map((child: MenuItem, childIndex: number) => {\n const isChildActive = isActive(child.href);\n\n return (\n <List.Item\n key={childIndex}\n className={styles.childItem}\n style={{ animationDelay: `${animationDelay + 30 + childIndex * 15}ms` }}\n >\n <SmartLink\n href={child.href}\n appBasePath={appBasePath}\n external={child.external}\n className={clsx(styles.childLink, isChildActive && styles.active)}\n >\n {child.label}\n {child.external && <ExternalLink size={16} aria-hidden=\"true\" />}\n </SmartLink>\n </List.Item>\n );\n })}\n </List.Unordered>\n )}\n </div>\n );\n}","'use client';\n\nimport Link from 'next/link';\nimport { Link as DsLink } from '@digdir/designsystemet-react';\nimport type { SmartLinkProps } from './SmartLink.types';\n\n/**\n * Determines if a given href belongs to the current zone, another zone or should be external\n */\nexport function SmartLink({\n href,\n appBasePath,\n external = false,\n className,\n children,\n}: SmartLinkProps) {\n const isExternalUrl = href.startsWith('http://') || href.startsWith('https://');\n const isLocalRoute =\n appBasePath &&\n !isExternalUrl &&\n (href === appBasePath || href.startsWith(`${appBasePath}/`));\n\n if (isExternalUrl || external) {\n return (\n <DsLink\n href={href}\n className={className}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children}\n </DsLink>\n );\n }\n\n if (isLocalRoute) {\n // Strip the basePath\n const localHref = href.replace(appBasePath, '') || '/';\n\n return (\n <Link href={localHref} className={className}>\n {children}\n </Link>\n );\n }\n\n // Cross-zone navigation: use standard anchor for full page load\n return (\n <DsLink href={href} className={className}>\n {children}\n </DsLink>\n );\n}","'use client';\n\nimport { Paragraph } from '@digdir/designsystemet-react';\nimport clsx from 'clsx';\nimport type { GlobalFooterProps } from './GlobalFooter.types';\nimport styles from './GlobalFooter.module.css';\nimport { useLayoutTranslation } from '@/hooks/use-layout-translation';\n\nexport function GlobalFooter({ className }: GlobalFooterProps) {\n const { t } = useLayoutTranslation();\n\n return (\n <footer className={clsx(styles.footer, className)}>\n <div className={styles.container}>\n <div className={styles.content}>\n <Paragraph>\n {t('footer.content')}\n </Paragraph>\n\n\n </div>\n </div>\n </footer>\n );\n}","import { useEffect } from 'react';\nimport { useGlobalStore } from '../store/globalState';\nimport type { BreadcrumbItem } from '../routes';\n\n/**\n * Hook for manually setting breadcrumbs on dynamic routes.\n * Overrides automatic breadcrumb generation, preserving external ancestors.\n *\n * @param breadcrumbs - Array of breadcrumb items for the current dynamic route\n */\nexport function useBreadcrumbs(breadcrumbs: BreadcrumbItem[]): void {\n const setBreadcrumbs = useGlobalStore((state) => state.setBreadcrumbs);\n const serialized = JSON.stringify(breadcrumbs);\n\n useEffect(() => {\n setBreadcrumbs(JSON.parse(serialized));\n\n return () => {\n setBreadcrumbs(null);\n };\n }, [serialized, setBreadcrumbs]);\n}"],"mappings":"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","names":["useEffect","clsx","Button","Link","Search","clsx","jsx","usePathname","clsx","Link","jsx","styles","jsx","usePathname","clsx","styles","jsx","jsxs","Fragment","jsx","jsxs","styles","Fragment","jsx","jsxs","clsx","Link","Button","Search","clsx","styles","jsx","clsx","styles","styles","jsx","jsxs","useEffect","clsx","useEffect","useEffect"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/GlobalHeader/GlobalHeader.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/routes.ts","../src/store/globalState.ts","../src/locales/translations.ts","../src/hooks/use-layout-translation.ts","../src/components/BreadcrumbLink/BreadcrumbLink.tsx","../src/components/MenuButton/MenuButton.tsx","../src/components/NavigationMenu/NavigationMenu.tsx","../src/navigationMenu.ts","../src/components/NavigationMenuItem/NavigationMenuItem.tsx","../src/components/SmartLink/SmartLink.tsx","../src/components/RootLayout/RootLayout.tsx","../src/components/GlobalFooter/GlobalFooter.tsx","../src/hooks/use-breadcrumbs.ts"],"sourcesContent":["'use client';\n\nimport { Button, Link } from '@digdir/designsystemet-react';\nimport { Search } from 'lucide-react';\nimport clsx from 'clsx';\nimport { Breadcrumbs } from '../Breadcrumbs';\nimport { MenuButton } from '../MenuButton';\nimport { ALLOW_DARK_THEME, useGlobalStore } from '@/store/globalState';\nimport { useLayoutTranslation } from '@/hooks/use-layout-translation';\nimport type { GlobalHeaderProps } from './GlobalHeader.types';\nimport styles from './GlobalHeader.module.css';\n\nexport function GlobalHeader({ className, routes, appBasePath, pathname }: GlobalHeaderProps & { pathname?: string }) {\n const isMenuOpen = useGlobalStore((state) => state.isMenuOpen);\n const setIsMenuOpen = useGlobalStore((state) => state.setIsMenuOpen);\n const setTheme = useGlobalStore((state) => state.setTheme);\n const theme = useGlobalStore((state) => state.theme);\n const { t } = useLayoutTranslation();\n\n function toggleDarkMode() {\n setTheme(theme === 'dark' ? 'light' : 'dark');\n }\n\n return (\n <header className={clsx(styles.header, isMenuOpen && styles.menuOpen, className)}>\n <div className={styles.headerContainer}>\n <div className={styles.topBarContainer}>\n <Link href=\"https://www.statsbygg.no\">\n <img\n src=\"https://dok.statsbygg.no/wp-content/uploads/2025/11/Statsbygg_logo.svg\"\n alt=\"Logo\"\n className={styles.logo}\n />\n </Link>\n <div className={styles.actionsContainer}>\n {!isMenuOpen && (\n <>\n {ALLOW_DARK_THEME && (\n <Button onClick={toggleDarkMode} className={styles.themeToggleButton}>\n {theme === 'dark' ? '☀️' : '🌙'}\n </Button>\n )}\n <Button\n variant=\"secondary\"\n onClick={() => setIsMenuOpen(true)}\n className={styles.searchButton}\n aria-label={t('common.search')}\n >\n <Search size={20} aria-hidden=\"true\" />\n {t('common.search')}\n </Button>\n </>\n )}\n <MenuButton appBasePath={appBasePath} />\n </div>\n </div>\n <Breadcrumbs routes={routes} appBasePath={appBasePath} pathname={pathname} />\n </div>\n </header>\n );\n}","'use client';\n\nimport { useMemo } from 'react';\nimport { usePathname } from 'next/navigation';\nimport { Breadcrumbs } from '@digdir/designsystemet-react';\nimport clsx from 'clsx';\nimport { getBreadcrumbs, findAppRootWithAncestors, BreadcrumbItem } from '@/routes';\nimport { useGlobalStore } from '@/store/globalState';\nimport { useLayoutTranslation } from '@/hooks/use-layout-translation';\nimport { BreadcrumbLink } from '../BreadcrumbLink';\nimport type { BreadcrumbsProps } from './Breadcrumbs.types';\nimport styles from './Breadcrumbs.module.css';\n\nexport function SbBreadcrumbs({ className, routes, appBasePath, pathname: propPathname }: BreadcrumbsProps) {\n const pathname = propPathname ?? usePathname();\n const manualBreadcrumbs = useGlobalStore((state) => state.breadcrumbs);\n const { t } = useLayoutTranslation();\n\n const breadcrumbs = useMemo((): BreadcrumbItem[] => {\n if (manualBreadcrumbs) {\n const { externalAncestors } = findAppRootWithAncestors(routes);\n const baseBreadcrumbs = externalAncestors.map((node) => ({\n label: node.label,\n href: node.path,\n }));\n const manualHrefs = new Set(manualBreadcrumbs.map((b) => b.href));\n const uniqueBase = baseBreadcrumbs.filter((b) => !manualHrefs.has(b.href));\n return [...uniqueBase, ...manualBreadcrumbs];\n }\n return getBreadcrumbs(routes, pathname);\n }, [routes, pathname, manualBreadcrumbs]);\n\n if (breadcrumbs.length === 0) {\n return null;\n }\n\n return (\n <Breadcrumbs\n aria-label={t('common.youAreHere')}\n className={clsx(styles.breadcrumbs, className)}\n >\n <Breadcrumbs.List>\n {breadcrumbs.map((crumb, index) => {\n const isLast = index === breadcrumbs.length - 1;\n\n return (\n <Breadcrumbs.Item key={`${crumb.href}-${index}`}>\n <BreadcrumbLink\n href={crumb.href}\n ariaCurrent={isLast ? 'page' : undefined}\n className={isLast ? styles.currentLink : styles.link}\n >\n {crumb.label}\n </BreadcrumbLink>\n </Breadcrumbs.Item>\n );\n })}\n </Breadcrumbs.List>\n </Breadcrumbs>\n );\n}","export type RouteNode = {\n path: string;\n label: string;\n children?: RouteNode[];\n};\n\nexport type BreadcrumbItem = {\n label: string;\n href: string;\n};\n\nfunction isExternalPath(path: string): boolean {\n return path.startsWith('http://') || path.startsWith('https://');\n}\n\nfunction normalizePath(path: string): string {\n if (path === '/') return '/';\n return path.replace(/\\/+$/, '');\n}\n\nfunction formatSegmentLabel(segment: string): string {\n try {\n const decoded = decodeURIComponent(segment).replace(/[-_]+/g, ' ').trim();\n return decoded ? decoded.charAt(0).toUpperCase() + decoded.slice(1) : segment;\n } catch {\n return segment;\n }\n}\n\ntype AncestorChain = {\n externalAncestors: RouteNode[];\n appRoot: RouteNode | null;\n};\n\nexport function findAppRootWithAncestors(node: RouteNode, ancestors: RouteNode[] = []): AncestorChain {\n if (!isExternalPath(node.path)) {\n return {\n externalAncestors: ancestors,\n appRoot: node,\n };\n }\n\n if (node.children) {\n for (const child of node.children) {\n const result = findAppRootWithAncestors(child, [...ancestors, node]);\n if (result.appRoot) return result;\n }\n }\n\n return { externalAncestors: ancestors, appRoot: null };\n}\n\ntype InternalMatch = {\n node: RouteNode;\n ancestors: RouteNode[];\n};\n\nfunction findInternalMatch(\n node: RouteNode,\n pathname: string,\n ancestors: RouteNode[] = []\n): InternalMatch | null {\n const nodePath = normalizePath(node.path);\n\n if (pathname === nodePath) {\n return { node, ancestors };\n }\n\n if (node.children) {\n for (const child of node.children) {\n if (isExternalPath(child.path)) continue;\n\n const result = findInternalMatch(child, pathname, [...ancestors, node]);\n if (result) return result;\n }\n }\n\n const pathPrefix = nodePath === '/' ? '/' : nodePath + '/';\n if (pathname.startsWith(pathPrefix) || pathname === nodePath) {\n return { node, ancestors };\n }\n\n return null;\n}\n\nexport function getBreadcrumbs(routes: RouteNode, pathname: string): BreadcrumbItem[] {\n const normalizedPathname = normalizePath(pathname);\n const { externalAncestors, appRoot } = findAppRootWithAncestors(routes);\n\n if (!appRoot) {\n return externalAncestors.map((node) => ({\n label: node.label,\n href: node.path,\n }));\n }\n\n const breadcrumbs: BreadcrumbItem[] = externalAncestors.map((node) => ({\n label: node.label,\n href: node.path,\n }));\n\n const internalMatch = findInternalMatch(appRoot, normalizedPathname);\n\n if (!internalMatch) {\n breadcrumbs.push({ label: appRoot.label, href: appRoot.path });\n return breadcrumbs;\n }\n\n for (const ancestor of internalMatch.ancestors) {\n breadcrumbs.push({\n label: ancestor.label,\n href: ancestor.path,\n });\n }\n\n breadcrumbs.push({\n label: internalMatch.node.label,\n href: internalMatch.node.path,\n });\n\n const matchedPath = normalizePath(internalMatch.node.path);\n if (normalizedPathname !== matchedPath) {\n const remainingPath = normalizedPathname.slice(\n matchedPath === '/' ? 1 : matchedPath.length + 1\n );\n const dynamicSegments = remainingPath.split('/').filter(Boolean);\n\n let accumulatedPath = matchedPath;\n for (const segment of dynamicSegments) {\n accumulatedPath = accumulatedPath === '/' ? `/${segment}` : `${accumulatedPath}/${segment}`;\n breadcrumbs.push({\n label: formatSegmentLabel(segment),\n href: accumulatedPath,\n });\n }\n }\n\n return breadcrumbs;\n}","import { create, StateCreator } from 'zustand';\nimport { persist, createJSONStorage } from 'zustand/middleware';\nimport type { BreadcrumbItem } from '../routes';\n\nexport type Theme = 'light' | 'dark' | 'system';\n\nexport const ALLOW_DARK_THEME = false;\n\nexport type GlobalState = {\n user?: { id: string; name?: string } | null;\n theme: Theme;\n locale: string;\n isMenuOpen: boolean;\n breadcrumbs: BreadcrumbItem[] | null;\n setUser: (user: GlobalState['user']) => void;\n setTheme: (theme: Theme) => void;\n setLocale: (locale: string) => void;\n setIsMenuOpen: (isOpen: boolean) => void;\n toggleMenu: () => void;\n setBreadcrumbs: (breadcrumbs: BreadcrumbItem[] | null) => void;\n initialize: () => void;\n};\n\nconst creator: StateCreator<GlobalState, [['zustand/persist', unknown]]> = (set, get) => ({\n user: null,\n theme: 'light',\n locale: 'no',\n isMenuOpen: false,\n breadcrumbs: null,\n setUser: (user) => set({ user }),\n setTheme: (theme) => {\n set({ theme: ALLOW_DARK_THEME ? theme : 'light' });\n if (typeof document !== 'undefined' && ALLOW_DARK_THEME) {\n document.documentElement.setAttribute('data-color-scheme', theme);\n }\n },\n setLocale: (locale) => set({ locale }),\n setIsMenuOpen: (isMenuOpen) => set({ isMenuOpen }),\n toggleMenu: () => set((state) => ({ isMenuOpen: !state.isMenuOpen })),\n setBreadcrumbs: (breadcrumbs) => set({ breadcrumbs }),\n initialize: () => {\n if (typeof document !== 'undefined' && ALLOW_DARK_THEME) {\n document.documentElement.setAttribute('data-color-scheme', get().theme);\n }\n },\n});\n\nexport const useGlobalStore = create<GlobalState>()(\n persist(creator, {\n name: 'statsbygg-global-state',\n storage: createJSONStorage(() => localStorage),\n partialize: (state) => ({\n user: state.user,\n theme: ALLOW_DARK_THEME ? state.theme : 'light',\n locale: state.locale,\n }),\n })\n);","export const translations = {\n no: {\n 'common.menu': 'Meny',\n 'common.close': 'Lukk',\n 'common.search': 'Søk',\n 'common.searchLabel': 'Søk',\n 'common.youAreHere': 'Du er her:',\n 'common.skipLink': 'Hopp til hovedinnhold',\n 'common.home': 'Hjem',\n 'footer.shortcuts': 'Snarveier',\n 'footer.news': 'Nyheter',\n 'footer.press': 'For pressen',\n 'footer.whistleblowing': 'Varsling',\n 'footer.privacy': 'Personvern og informasjonskapsler',\n 'footer.accessibility': 'Tilgjengelighet',\n 'footer.about': 'About Statsbygg / Statsbygg birra',\n 'footer.publications': 'Publikasjoner',\n 'footer.stateFacilities': 'Statens lokaler',\n 'footer.mmfmHelpdesk': 'MMFM – helpdesk',\n 'footer.simba': 'Simba – Statsbyggs BIM-sider',\n 'footer.stateRental': 'Statens innleie',\n 'footer.publicJournal': 'Søk innsyn via offentlig postjournal',\n 'footer.followUs': 'Følg oss',\n 'footer.contactUs': 'Kontakt oss',\n 'footer.phone': 'Telefon',\n 'footer.findEmployee': 'Finn en ansatt',\n 'footer.visitAddress': 'Besøksadresse',\n 'footer.postalAddress': 'Postadresse',\n 'footer.tagline': 'Bygg med mening',\n 'menu.helpTitle': 'Hva kan vi hjelpe deg med?',\n 'menu.mainMenuLabel': 'Hovedmeny',\n 'menu.closeMenu': 'Lukk meny',\n 'menu.openMenu': 'Åpne meny',\n }\n};\n\nexport type TranslationKey = keyof typeof translations.no;","import { TranslationKey, translations } from '@/locales/translations';\nimport { useGlobalStore } from '@/store/globalState';\n\nexport function useLayoutTranslation() {\n const locale = useGlobalStore((state) => state.locale) as keyof typeof translations;\n \n const languageMap = translations[locale] || translations.no;\n\n function t(key: TranslationKey): string {\n return languageMap[key] || key;\n }\n\n return { t, locale };\n}","'use client';\n\nimport Link from 'next/link';\nimport type { ReactNode } from 'react';\n\ntype BreadcrumbLinkProps = {\n href: string;\n className?: string;\n ariaCurrent?: 'page' | undefined;\n children: ReactNode;\n};\n\n/**\n * Renders breadcrumb links correctly:\n * - External URLs (http/https): standard anchor tag\n * - Internal paths: Next.js Link (handles basePath automatically)\n */\nexport function BreadcrumbLink({\n href,\n className,\n ariaCurrent,\n children,\n}: BreadcrumbLinkProps) {\n const isExternal = href.startsWith('http://') || href.startsWith('https://');\n\n if (isExternal) {\n return (\n <a href={href} className={className} aria-current={ariaCurrent}>\n {children}\n </a>\n );\n }\n\n return (\n <Link href={href} className={className} aria-current={ariaCurrent}>\n {children}\n </Link>\n );\n}","'use client';\n\nimport { Button } from '@digdir/designsystemet-react';\nimport { Menu, X } from 'lucide-react';\nimport { useGlobalStore } from '@/store/globalState';\nimport { NavigationMenu } from '../NavigationMenu';\nimport { useLayoutTranslation } from '@/hooks/use-layout-translation';\nimport type { MenuButtonProps } from './MenuButton.types';\n\nexport function MenuButton({ className, appBasePath }: MenuButtonProps) {\n const isMenuOpen = useGlobalStore((state) => state.isMenuOpen);\n const toggleMenu = useGlobalStore((state) => state.toggleMenu);\n const { t } = useLayoutTranslation();\n\n return (\n <>\n <Button\n variant=\"primary\"\n onClick={toggleMenu}\n aria-expanded={isMenuOpen}\n aria-label={isMenuOpen ? t('menu.closeMenu') : t('menu.openMenu')}\n className={className}\n >\n {isMenuOpen ? <X size={20} aria-hidden=\"true\" /> : <Menu size={20} aria-hidden=\"true\" />}\n {isMenuOpen ? t('common.close') : t('common.menu')}\n </Button>\n <NavigationMenu appBasePath={appBasePath} />\n </>\n );\n}","'use client';\n\nimport { useState, useEffect, useRef } from 'react';\nimport { Heading, Search } from '@digdir/designsystemet-react';\nimport { NAVIGATION_MENU, MenuSection } from '../../navigationMenu';\nimport { NavigationMenuItem } from '../NavigationMenuItem/NavigationMenuItem';\nimport { useGlobalStore } from '../../store/globalState';\nimport { useLayoutTranslation } from '@/hooks/use-layout-translation';\nimport type { NavigationMenuProps } from './NavigationMenu.types';\nimport styles from './NavigationMenu.module.css';\n\nexport function NavigationMenu({ className, appBasePath }: NavigationMenuProps) {\n const [searchValue, setSearchValue] = useState('');\n const isMenuOpen = useGlobalStore((state) => state.isMenuOpen);\n const setIsMenuOpen = useGlobalStore((state) => state.setIsMenuOpen);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const { t } = useLayoutTranslation();\n\n useEffect(() => {\n if (!isMenuOpen) return;\n\n function handleEscape(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n setIsMenuOpen(false);\n }\n }\n\n setTimeout(() => {\n searchInputRef.current?.focus();\n }, 100);\n\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [setIsMenuOpen, isMenuOpen]);\n\n function handleBackdropClick(e: React.MouseEvent<HTMLDivElement>) {\n if (e.target === e.currentTarget) {\n setIsMenuOpen(false);\n }\n }\n\n return (\n <>\n {isMenuOpen && <div className={styles.backdrop} onClick={handleBackdropClick} />}\n <div className={`${styles.menuOverlay} ${!isMenuOpen ? styles.hidden : ''} ${className ?? ''}`}>\n <div className={styles.container}>\n <div className={styles.searchSection}>\n <Heading level={1}>{t('menu.helpTitle')}</Heading>\n <Search>\n <Search.Input\n aria-label={t('common.search')}\n ref={searchInputRef}\n value={searchValue}\n onChange={(e) => setSearchValue(e.target.value)}\n placeholder={t('common.search')}\n className={styles.searchField}\n />\n <Search.Clear />\n </Search>\n </div>\n\n <nav className={styles.menuSections} aria-label={t('menu.mainMenuLabel')}>\n {NAVIGATION_MENU.map((section: MenuSection, sectionIndex: number) => (\n <section\n key={sectionIndex}\n className={styles.section}\n style={{ animationDelay: `${0.15 + sectionIndex * 0.06}s` }}\n >\n {section.layout !== 'subsections' && (\n <Heading level={2} className={styles.sectionHeader}>\n {section.title}\n </Heading>\n )}\n\n {section.layout === 'subsections' && section.subsections ? (\n <div className={styles.subsectionsGrid}>\n {section.subsections.map((subsection, subsectionIndex) => (\n <div key={subsectionIndex} className={styles.subsection}>\n <Heading level={2} className={styles.subsectionHeader}>\n {subsection.title}\n </Heading>\n <div className={styles.subsectionItems}>\n {subsection.items.map((item, itemIndex) => (\n <NavigationMenuItem\n key={itemIndex}\n item={item}\n animationDelay={\n 150 + sectionIndex * 60 + subsectionIndex * 40 + itemIndex * 25\n }\n appBasePath={appBasePath}\n compact\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div className={sectionIndex === 2 ? styles.itemsGridThreeCol : styles.itemsGrid}>\n {section.items?.map((item, itemIndex) => (\n <NavigationMenuItem\n key={itemIndex}\n item={item}\n animationDelay={150 + sectionIndex * 60 + itemIndex * 25}\n appBasePath={appBasePath}\n />\n ))}\n </div>\n )}\n </section>\n ))}\n </nav>\n </div>\n </div>\n </>\n );\n}","export type MenuItem = {\n label: string;\n href: string;\n external?: boolean;\n children?: MenuItem[];\n};\n\nexport type MenuSubsection = {\n title: string;\n items: MenuItem[];\n};\n\nexport type MenuSection = {\n title: string;\n layout?: 'columns' | 'subsections';\n items?: MenuItem[];\n subsections?: MenuSubsection[];\n};\n\nexport const NAVIGATION_MENU: MenuSection[] = [\n {\n title: 'Våre tjenester',\n layout: 'columns',\n items: [\n {\n label: 'Statens eide og leide lokaler',\n href: '/lokaler',\n children: [\n { label: 'Lokalbruk', href: '/lokaler/lokalbruk' },\n { label: 'Statlige eiendommer', href: '/lokaler/statlige-eiendommer' },\n { label: 'Ledig for fremleie', href: '/lokaler/ledig-for-fremleie' },\n { label: 'Statistikk for lokalbruk', href: '/lokaler/statistikk' },\n { label: 'Veiledning', href: '/lokaler/veiledning' },\n ],\n },\n {\n label: 'For leietakere',\n href: '/for-leietakere',\n children: [\n { label: 'Leieveileder', href: '/for-leietakere/leieveileder' },\n ],\n },\n {\n label: 'For byggebransjen',\n href: '/byggebransjen',\n children: [\n { label: 'Våre krav', href: '/byggebransjen/vare-krav' },\n { label: 'BIM', href: '/byggebransjen/bim' },\n { label: 'ByggBoks', href: '/byggebransjen/byggboks' },\n ],\n },\n {\n label: 'Karriere',\n href: '/karriere',\n children: [\n { label: 'Ledige stillinger', href: '/karriere/ledige-stillinger' },\n { label: 'Å jobbe hos oss', href: '/karriere/jobbe-hos-oss' },\n { label: 'Møt en statsbygger', href: '/karriere/mot-en-statsbygger' },\n { label: 'Summer internship', href: '/karriere/summer-internship' },\n { label: 'Studenter og lærlinger', href: '/karriere/studenter-og-laerlinger' },\n ],\n },\n ],\n },\n {\n title: 'Informasjon om statsbygg',\n layout: 'subsections',\n subsections: [\n {\n title: 'Informasjon om statsbygg',\n items: [\n { label: 'Om Statsbygg', href: '/om-statsbygg' },\n { label: 'Samfunnsansvar', href: '/samfunnsansvar' },\n { label: 'Tilgjengelighet', href: '/tilgjengelighet' },\n { label: 'About Statsbygg', href: '/about-statsbygg' },\n { label: 'Statsbygg birra', href: '/statsbygg-birra' },\n ],\n },\n {\n title: 'Kontakt oss',\n items: [\n { label: 'Kontakt oss', href: '/kontakt' },\n { label: 'Ansattsøk', href: '/ansattsok' },\n { label: 'For pressen', href: '/for-pressen' },\n { label: 'Varsling', href: '/varsling' },\n ],\n },\n {\n title: 'Arkiv',\n items: [\n { label: 'Nyheter', href: '/nyheter' },\n { label: 'Artikler om bygg', href: '/artikler-om-bygg' },\n { label: 'Dokumenter', href: '/dokumenter' },\n ],\n },\n ],\n },\n {\n title: 'Eksterne lenker',\n layout: 'columns',\n items: [\n {\n label: 'Statens lokaler',\n href: 'https://statensinnleie.no',\n external: true,\n },\n {\n label: 'Statens innleie',\n href: 'https://statensinnleie.no',\n external: true,\n },\n {\n label: 'MainManager FM',\n href: 'https://mainmanager.no',\n external: true,\n },\n {\n label: 'Offentlig postjournal',\n href: 'https://postjournal.no',\n external: true,\n },\n {\n label: 'SIMBA (BIM)',\n href: 'https://bim.statsbygg.no',\n external: true,\n },\n ],\n },\n];","'use client';\n\nimport { List } from '@digdir/designsystemet-react';\nimport { ExternalLink } from 'lucide-react';\nimport { usePathname } from 'next/navigation';\nimport clsx from 'clsx';\nimport { SmartLink } from '../SmartLink';\nimport type { MenuItem } from '../../navigationMenu';\nimport type { NavigationMenuItemProps } from './NavigationMenuItem.types';\nimport styles from './NavigationMenuItem.module.css';\n\nexport function NavigationMenuItem({\n item,\n animationDelay,\n compact = false,\n appBasePath,\n}: NavigationMenuItemProps) {\n const pathname = usePathname();\n\n const isActive = (href: string) => {\n if (href === '/') return pathname === '/';\n return pathname?.startsWith(href);\n };\n\n const isParentActive = isActive(item.href);\n\n if (compact) {\n return (\n <div\n className={styles.itemColumn}\n style={{ animationDelay: `${animationDelay}ms` }}\n >\n <SmartLink\n href={item.href}\n appBasePath={appBasePath}\n external={item.external}\n className={clsx(styles.compactLink, isParentActive && styles.active)}\n >\n {item.label}\n {item.external && <ExternalLink size={16} aria-hidden=\"true\" />}\n </SmartLink>\n </div>\n );\n }\n\n return (\n <div\n className={styles.itemColumn}\n style={{ animationDelay: `${animationDelay}ms` }}\n >\n <SmartLink\n href={item.href}\n appBasePath={appBasePath}\n external={item.external}\n className={clsx(styles.parentLink, isParentActive && styles.active)}\n >\n {item.label}\n {item.external && <ExternalLink size={20} aria-hidden=\"true\" />}\n </SmartLink>\n\n {item.children && item.children.length > 0 && (\n <List.Unordered className={styles.childItems}>\n {item.children.map((child: MenuItem, childIndex: number) => {\n const isChildActive = isActive(child.href);\n\n return (\n <List.Item\n key={childIndex}\n className={styles.childItem}\n style={{ animationDelay: `${animationDelay + 30 + childIndex * 15}ms` }}\n >\n <SmartLink\n href={child.href}\n appBasePath={appBasePath}\n external={child.external}\n className={clsx(styles.childLink, isChildActive && styles.active)}\n >\n {child.label}\n {child.external && <ExternalLink size={16} aria-hidden=\"true\" />}\n </SmartLink>\n </List.Item>\n );\n })}\n </List.Unordered>\n )}\n </div>\n );\n}","'use client';\n\nimport Link from 'next/link';\nimport { Link as DsLink } from '@digdir/designsystemet-react';\nimport type { SmartLinkProps } from './SmartLink.types';\n\n/**\n * Determines if a given href belongs to the current zone, another zone or should be external\n */\nexport function SmartLink({\n href,\n appBasePath,\n external = false,\n className,\n children,\n}: SmartLinkProps) {\n const isExternalUrl = href.startsWith('http://') || href.startsWith('https://');\n const isLocalRoute =\n appBasePath &&\n !isExternalUrl &&\n (href === appBasePath || href.startsWith(`${appBasePath}/`));\n\n if (isExternalUrl || external) {\n return (\n <DsLink\n href={href}\n className={className}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children}\n </DsLink>\n );\n }\n\n if (isLocalRoute) {\n // Strip the basePath\n const localHref = href.replace(appBasePath, '') || '/';\n\n return (\n <Link href={localHref} className={className}>\n {children}\n </Link>\n );\n }\n\n // Cross-zone navigation: use standard anchor for full page load\n return (\n <DsLink href={href} className={className}>\n {children}\n </DsLink>\n );\n}","'use client';\n\nimport { useEffect } from 'react';\nimport clsx from 'clsx';\nimport { SkipLink } from '@digdir/designsystemet-react';\nimport { GlobalHeader } from '../GlobalHeader';\nimport { GlobalFooter } from '../GlobalFooter';\nimport { useGlobalStore } from '@/store/globalState';\nimport { useLayoutTranslation } from '@/hooks/use-layout-translation';\nimport type { RootLayoutProps } from './RootLayout.types';\nimport styles from './RootLayout.module.css';\n\nexport function RootLayout({ children, routes, appBasePath, className }: RootLayoutProps) {\n const initialize = useGlobalStore((state) => state.initialize);\n const isMenuOpen = useGlobalStore((state) => state.isMenuOpen);\n const { t } = useLayoutTranslation();\n\n useEffect(() => {\n initialize();\n }, [initialize]);\n\n return (\n <div className={clsx(styles.root, isMenuOpen && styles.menuOpen, className)}>\n <SkipLink className={styles.skipLink} href=\"#main-content\">\n {t('common.skipLink')}\n </SkipLink>\n <GlobalHeader routes={routes} appBasePath={appBasePath} />\n <main id=\"main-content\" tabIndex={-1} className={styles.main}>\n {children}\n </main>\n <GlobalFooter />\n </div>\n );\n}","'use client';\n\nimport { Link, Heading, List, Paragraph } from '@digdir/designsystemet-react';\nimport { ExternalLink } from 'lucide-react';\nimport clsx from 'clsx';\nimport type { GlobalFooterProps } from './GlobalFooter.types';\nimport styles from './GlobalFooter.module.css';\nimport { useLayoutTranslation } from '@/hooks/use-layout-translation';\nimport footerImage from '@/assets/images/footer.png';\nimport { linkedinIcon, instagramIcon, facebookIcon, youtubeIcon, vimeoIcon } from '@/assets/images/icons';\n\nexport function GlobalFooter({ \n className,\n logoUrl = footerImage,\n logoAlt\n}: GlobalFooterProps) {\n const { t } = useLayoutTranslation();\n\n return (\n <footer className={clsx(styles.footer, className)}>\n <div className={styles.footerContent}>\n <div className={clsx(styles.footerLeft, styles.shortcutsContainer)}>\n <div className={styles.shortcutsHeadingWide}>\n <Heading level={2} data-size=\"2xs\" className={styles.sectionHeading}>\n {t('footer.shortcuts')}\n </Heading>\n </div>\n <div className={styles.footerSection}>\n <List.Unordered className={styles.footerList}>\n <List.Item><Link href=\"#\">{t('footer.news')}</Link></List.Item>\n <List.Item><Link href=\"#\">{t('footer.press')}</Link></List.Item>\n <List.Item><Link href=\"#\">{t('footer.whistleblowing')}</Link></List.Item>\n <List.Item><Link href=\"#\">{t('footer.privacy')}</Link></List.Item>\n <List.Item><Link href=\"#\">{t('footer.accessibility')}</Link></List.Item>\n <List.Item><Link href=\"#\">{t('footer.about')}</Link></List.Item>\n </List.Unordered>\n </div>\n <div className={styles.footerSection}>\n <List.Unordered className={styles.footerList}>\n <List.Item><Link href=\"#\">{t('footer.publications')}</Link></List.Item>\n <List.Item><Link href=\"#\">{t('footer.stateFacilities')}</Link></List.Item>\n <List.Item><Link href=\"#\">{t('footer.mmfmHelpdesk')}</Link></List.Item>\n <List.Item>\n <Link href=\"https://simba.statsbygg.no/\" className={styles.externalLink} target=\"_blank\" rel=\"noopener noreferrer\">\n {t('footer.simba')}\n <ExternalLink size={14} aria-hidden=\"true\" />\n </Link>\n </List.Item>\n <List.Item>\n <Link href=\"https://statensinnleie.no\" className={styles.externalLink} target=\"_blank\" rel=\"noopener noreferrer\">\n {t('footer.stateRental')}\n <ExternalLink size={14} aria-hidden=\"true\" />\n </Link>\n </List.Item>\n <List.Item>\n <Link href=\"https://einnsyn.no/sok?f=0279324b-adee-4116-ae84-3895f61c0db9\" className={styles.externalLink} target=\"_blank\" rel=\"noopener noreferrer\">\n {t('footer.publicJournal')}\n <ExternalLink size={14} aria-hidden=\"true\" />\n </Link>\n </List.Item>\n </List.Unordered>\n </div>\n </div>\n\n <div className={clsx(styles.footerSection, styles.socialLinks)}>\n <Heading level={2} data-size=\"2xs\" className={styles.sectionHeading}>\n {t('footer.followUs')}\n </Heading>\n <List.Unordered className={styles.footerList}>\n <List.Item>\n <Link href=\"#\" className={styles.socialLink}>\n LinkedIn\n {/*\n To support image src resolution in sandbox, dev, and storybook\n */}\n <img src={typeof linkedinIcon === 'string' ? linkedinIcon : (linkedinIcon as any).src} alt=\"\" className={styles.socialIcon} aria-hidden=\"true\" />\n </Link>\n </List.Item>\n <List.Item>\n <Link href=\"#\" className={styles.socialLink}>\n Instagram\n <img src={typeof instagramIcon === 'string' ? instagramIcon : (instagramIcon as any).src} alt=\"\" className={styles.socialIcon} aria-hidden=\"true\" />\n </Link>\n </List.Item>\n <List.Item>\n <Link href=\"#\" className={styles.socialLink}>\n Facebook\n <img src={typeof facebookIcon === 'string' ? facebookIcon : (facebookIcon as any).src} alt=\"\" className={styles.socialIcon} aria-hidden=\"true\" />\n </Link>\n </List.Item>\n <List.Item>\n <Link href=\"#\" className={styles.socialLink}>\n YouTube\n <img src={typeof youtubeIcon === 'string' ? youtubeIcon : (youtubeIcon as any).src} alt=\"\" className={styles.socialIcon} aria-hidden=\"true\" />\n </Link>\n </List.Item>\n <List.Item>\n <Link href=\"#\" className={styles.socialLink}>\n Vimeo\n <img src={typeof vimeoIcon === 'string' ? vimeoIcon : (vimeoIcon as any).src} alt=\"\" className={styles.socialIcon} aria-hidden=\"true\" />\n </Link>\n </List.Item>\n </List.Unordered>\n </div>\n\n <div className={styles.footerLeftWide}>\n <div className={clsx(styles.footerSection, styles.contactSectionsContainer)}>\n <div className={styles.contactHeadingWide}>\n <Heading level={2} data-size=\"2xs\" className={styles.sectionHeading}>\n {t('footer.contactUs')}\n </Heading>\n </div>\n <div className={styles.contactSection}>\n <Paragraph data-size=\"sm\">\n <Link href=\"tel:22955000\">{t('footer.phone')}: 22 95 50 00</Link>\n </Paragraph>\n <Paragraph data-size=\"sm\">\n <Link href=\"mailto:postmottak@statsbygg.no\">postmottak@statsbygg.no</Link>\n </Paragraph>\n <Paragraph data-size=\"sm\">\n <Link href=\"#\">{t('footer.findEmployee')}</Link>\n </Paragraph>\n </div>\n\n <div className={styles.contactSection}>\n <Heading level={2} data-size=\"2xs\" className={styles.contactHeading}>\n {t('footer.visitAddress')}\n </Heading>\n <Paragraph data-size=\"sm\">\n Biskop Gunnerus' gate 6,<br />\n 0155 Oslo (Byporten)\n </Paragraph>\n </div>\n\n <div className={styles.contactSection}>\n <Heading level={2} data-size=\"2xs\" className={styles.contactHeading}>\n {t('footer.postalAddress')}\n </Heading>\n <Paragraph data-size=\"sm\">\n Postboks 232 Sentrum,<br />\n 0103 Oslo\n </Paragraph>\n </div>\n </div>\n </div>\n\n <div className={clsx(styles.footerSection, styles.socialLinks, styles.footerLogo)}>\n <div \n className={styles.logoSection}\n // To support image src resolution in sandbox, dev, and storybook\n style={{ backgroundImage: `url(${typeof logoUrl === 'string' ? logoUrl : (logoUrl as any).src})` }}\n role=\"img\"\n aria-label={logoAlt || t('footer.tagline')}\n />\n </div>\n </div>\n </footer>\n );\n}","import { useEffect } from 'react';\nimport { useGlobalStore } from '../store/globalState';\nimport type { BreadcrumbItem } from '../routes';\n\n/**\n * Hook for manually setting breadcrumbs on dynamic routes.\n * Overrides automatic breadcrumb generation, preserving external ancestors.\n *\n * @param breadcrumbs - Array of breadcrumb items for the current dynamic route\n */\nexport function useBreadcrumbs(breadcrumbs: BreadcrumbItem[]): void {\n const setBreadcrumbs = useGlobalStore((state) => state.setBreadcrumbs);\n const serialized = JSON.stringify(breadcrumbs);\n\n useEffect(() => {\n setBreadcrumbs(JSON.parse(serialized));\n\n return () => {\n setBreadcrumbs(null);\n };\n }, [serialized, setBreadcrumbs]);\n}"],"mappings":"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","names":["Button","Link","Search","clsx","jsx","usePathname","clsx","Link","jsx","styles","jsx","usePathname","clsx","styles","jsx","jsxs","Fragment","jsx","jsxs","styles","Fragment","jsx","jsxs","clsx","Link","Button","Search","useEffect","clsx","Link","Heading","List","ExternalLink","clsx","styles","jsx","jsxs","clsx","styles","Heading","List","Link","ExternalLink","styles","jsx","jsxs","useEffect","clsx","useEffect","useEffect"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@statsbygg/layout",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.18",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@statsbygg/design-tokens": "0.4.1"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@digdir/designsystemet-react": "
|
|
38
|
+
"@digdir/designsystemet-react": "1.9.0",
|
|
39
39
|
"clsx": "^2.0.0",
|
|
40
40
|
"lucide-react": "^0.514.0"
|
|
41
41
|
},
|