@statsbygg/layout 0.0.1 → 0.0.2
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/package.json +2 -1
- package/.turbo/turbo-build.log +0 -89
- package/src/components/Breadcrumbs/Breadcrumbs.module.css +0 -22
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -49
- package/src/components/Breadcrumbs/Breadcrumbs.types.ts +0 -4
- package/src/components/Breadcrumbs/index.ts +0 -2
- package/src/components/GlobalFooter/GlobalFooter.module.css +0 -28
- package/src/components/GlobalFooter/GlobalFooter.tsx +0 -23
- package/src/components/GlobalFooter/GlobalFooter.types.ts +0 -3
- package/src/components/GlobalFooter/index.ts +0 -2
- package/src/components/GlobalHeader/GlobalHeader.module.css +0 -70
- package/src/components/GlobalHeader/GlobalHeader.tsx +0 -38
- package/src/components/GlobalHeader/GlobalHeader.types.ts +0 -4
- package/src/components/GlobalHeader/index.ts +0 -2
- package/src/components/MenuButton/MenuButton.module.css +0 -41
- package/src/components/MenuButton/MenuButton.tsx +0 -57
- package/src/components/MenuButton/MenuButton.types.ts +0 -3
- package/src/components/MenuButton/index.ts +0 -2
- package/src/components/RootLayout/RootLayout.module.css +0 -9
- package/src/components/RootLayout/RootLayout.tsx +0 -39
- package/src/components/RootLayout/RootLayout.types.ts +0 -5
- package/src/components/RootLayout/index.ts +0 -2
- package/src/index.ts +0 -6
- package/src/logo.svg +0 -9
- package/src/routes.ts +0 -211
- package/src/store/globalState.ts +0 -40
- package/src/types/css.d.ts +0 -8
- package/src/utils/routeRegistry.ts +0 -92
- package/tsconfig.json +0 -20
- package/tsup.config.ts +0 -15
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@statsbygg/layout",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"publishConfig": { "access": "public" },
|
|
5
5
|
"description": "Shared layout components for Statsbygg microfrontend architecture",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.mjs",
|
|
8
8
|
"types": "./dist/index.d.ts",
|
|
9
|
+
"files": ["dist/**"],
|
|
9
10
|
"exports": {
|
|
10
11
|
".": {
|
|
11
12
|
"import": "./dist/index.mjs",
|
package/.turbo/turbo-build.log
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
> @statsbygg/layout@0.0.1 build
|
|
3
|
-
> tsup
|
|
4
|
-
|
|
5
|
-
[1G[0K[33m▲ [43;33m[[43;30mWARNING[43;33m][0m [1mThe condition "types" here will never be used as it comes after both "import" and "require"[0m [package.json]
|
|
6
|
-
|
|
7
|
-
package.json:13:6:
|
|
8
|
-
[37m 13 │ [32m"types"[37m: "./dist/index.d.ts"
|
|
9
|
-
╵ [32m~~~~~~~[0m
|
|
10
|
-
|
|
11
|
-
The "import" condition comes earlier and will be used for all "import" statements:
|
|
12
|
-
|
|
13
|
-
package.json:11:6:
|
|
14
|
-
[37m 11 │ [32m"import"[37m: "./dist/index.mjs",
|
|
15
|
-
╵ [32m~~~~~~~~[0m
|
|
16
|
-
|
|
17
|
-
The "require" condition comes earlier and will be used for all "require" calls:
|
|
18
|
-
|
|
19
|
-
package.json:12:6:
|
|
20
|
-
[37m 12 │ [32m"require"[37m: "./dist/index.js",
|
|
21
|
-
╵ [32m~~~~~~~~~[0m
|
|
22
|
-
|
|
23
|
-
[34mCLI[39m Building entry: src/index.ts
|
|
24
|
-
[34mCLI[39m Using tsconfig: tsconfig.json
|
|
25
|
-
[34mCLI[39m tsup v8.5.0
|
|
26
|
-
[34mCLI[39m Using tsup config: /home/jimmy/dev/work/statsbygg-components/packages/layout/tsup.config.ts
|
|
27
|
-
[34mCLI[39m Target: es2018
|
|
28
|
-
[34mCLI[39m Cleaning output folder
|
|
29
|
-
[34mCJS[39m Build start
|
|
30
|
-
[34mESM[39m Build start
|
|
31
|
-
|
|
32
|
-
[90m[[90m9:21:10 AM[90m][39m [43m[30m WARN [39m[49m [33m▲ [43;33m[[43;30mWARNING[43;33m][0m [1mThe condition "types" here will never be used as it comes after both "import" and "require"[0m [package.json]
|
|
33
|
-
|
|
34
|
-
package.json:13:6:
|
|
35
|
-
[37m 13 │ [32m"types"[37m: "./dist/index.d.ts"
|
|
36
|
-
╵ [32m~~~~~~~[0m
|
|
37
|
-
|
|
38
|
-
The "import" condition comes earlier and will be used for all "import" statements:
|
|
39
|
-
|
|
40
|
-
package.json:11:6:
|
|
41
|
-
[37m 11 │ [32m"import"[37m: "./dist/index.mjs",
|
|
42
|
-
╵ [32m~~~~~~~~[0m
|
|
43
|
-
|
|
44
|
-
The "require" condition comes earlier and will be used for all "require" calls:
|
|
45
|
-
|
|
46
|
-
package.json:12:6:
|
|
47
|
-
[37m 12 │ [32m"require"[37m: "./dist/index.js",
|
|
48
|
-
╵ [32m~~~~~~~~~[0m
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
[90m[[90m9:21:10 AM[90m][39m [43m[30m WARN [39m[49m [33m▲ [43;33m[[43;30mWARNING[43;33m][0m [1mThe condition "types" here will never be used as it comes after both "import" and "require"[0m [package.json]
|
|
54
|
-
|
|
55
|
-
package.json:13:6:
|
|
56
|
-
[37m 13 │ [32m"types"[37m: "./dist/index.d.ts"
|
|
57
|
-
╵ [32m~~~~~~~[0m
|
|
58
|
-
|
|
59
|
-
The "import" condition comes earlier and will be used for all "import" statements:
|
|
60
|
-
|
|
61
|
-
package.json:11:6:
|
|
62
|
-
[37m 11 │ [32m"import"[37m: "./dist/index.mjs",
|
|
63
|
-
╵ [32m~~~~~~~~[0m
|
|
64
|
-
|
|
65
|
-
The "require" condition comes earlier and will be used for all "require" calls:
|
|
66
|
-
|
|
67
|
-
package.json:12:6:
|
|
68
|
-
[37m 12 │ [32m"require"[37m: "./dist/index.js",
|
|
69
|
-
╵ [32m~~~~~~~~~[0m
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
[32mCJS[39m [1mdist/index.css [22m[32m3.55 KB[39m
|
|
74
|
-
[32mCJS[39m [1mdist/index.js [22m[32m16.49 KB[39m
|
|
75
|
-
[32mCJS[39m [1mdist/logo-X7RC63NT.svg [22m[32m72.76 KB[39m
|
|
76
|
-
[32mCJS[39m [1mdist/index.js.map [22m[32m26.88 KB[39m
|
|
77
|
-
[32mCJS[39m [1mdist/index.css.map [22m[32m5.38 KB[39m
|
|
78
|
-
[32mCJS[39m ⚡️ Build success in 66ms
|
|
79
|
-
[32mESM[39m [1mdist/index.mjs [22m[32m13.22 KB[39m
|
|
80
|
-
[32mESM[39m [1mdist/index.css [22m[32m3.55 KB[39m
|
|
81
|
-
[32mESM[39m [1mdist/logo-X7RC63NT.svg [22m[32m72.76 KB[39m
|
|
82
|
-
[32mESM[39m [1mdist/index.css.map [22m[32m5.38 KB[39m
|
|
83
|
-
[32mESM[39m [1mdist/index.mjs.map [22m[32m26.56 KB[39m
|
|
84
|
-
[32mESM[39m ⚡️ Build success in 66ms
|
|
85
|
-
DTS Build start
|
|
86
|
-
DTS ⚡️ Build success in 1201ms
|
|
87
|
-
DTS dist/index.d.ts 1.63 KB
|
|
88
|
-
DTS dist/index.d.mts 1.63 KB
|
|
89
|
-
[1G[0K⠙[1G[0K
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
.breadcrumbs {
|
|
2
|
-
--dsc-breadcrumbs-color: var(--ds-color-text-default);
|
|
3
|
-
padding: 2.5rem 0 0 0;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
.link {
|
|
7
|
-
text-decoration: underline;
|
|
8
|
-
text-underline-offset: 2px;
|
|
9
|
-
color: var(--ds-color-text-default);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
.link:hover
|
|
13
|
-
.link:visited{
|
|
14
|
-
color: var(--ds-color-text-default);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.currentLink {
|
|
18
|
-
text-decoration: none;
|
|
19
|
-
font-weight: 500;
|
|
20
|
-
pointer-events: none;
|
|
21
|
-
color: var(--ds-color-text-default);
|
|
22
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { usePathname } from 'next/navigation';
|
|
4
|
-
import { Breadcrumbs } from '@digdir/designsystemet-react';
|
|
5
|
-
import clsx from 'clsx';
|
|
6
|
-
import type { BreadcrumbsProps } from './Breadcrumbs.types';
|
|
7
|
-
import styles from './Breadcrumbs.module.css';
|
|
8
|
-
import { getBreadcrumbs, getZoneRoot, transformHrefForZone } from '@/routes';
|
|
9
|
-
|
|
10
|
-
export function SbBreadcrumbs({ className, zone }: BreadcrumbsProps) {
|
|
11
|
-
const pathname = usePathname();
|
|
12
|
-
const isDev = process.env.NODE_ENV === 'development';
|
|
13
|
-
const prodUrl = 'https://www.statsbygg.no';
|
|
14
|
-
const zoneRoot = getZoneRoot(zone);
|
|
15
|
-
|
|
16
|
-
const fullPath = isDev && zoneRoot !== '/' && !pathname.startsWith(zoneRoot)
|
|
17
|
-
? `${zoneRoot}${pathname}`
|
|
18
|
-
: pathname;
|
|
19
|
-
|
|
20
|
-
const breadcrumbs = getBreadcrumbs(zone, fullPath);
|
|
21
|
-
|
|
22
|
-
if (breadcrumbs.length <= 1) {
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return (
|
|
28
|
-
<Breadcrumbs aria-label="Du er her:" className={clsx(styles.breadcrumbs, className)}>
|
|
29
|
-
<Breadcrumbs.List>
|
|
30
|
-
{breadcrumbs.map((crumb, index) => {
|
|
31
|
-
const isLast = index === breadcrumbs.length - 1;
|
|
32
|
-
const href = transformHrefForZone(crumb.href, zone, { isDev, prodUrl });
|
|
33
|
-
|
|
34
|
-
return (
|
|
35
|
-
<Breadcrumbs.Item key={crumb.href}>
|
|
36
|
-
<Breadcrumbs.Link
|
|
37
|
-
href={href}
|
|
38
|
-
aria-current={isLast ? 'page' : undefined}
|
|
39
|
-
className={isLast ? styles.currentLink : styles.link}
|
|
40
|
-
>
|
|
41
|
-
{crumb.label}
|
|
42
|
-
</Breadcrumbs.Link>
|
|
43
|
-
</Breadcrumbs.Item>
|
|
44
|
-
);
|
|
45
|
-
})}
|
|
46
|
-
</Breadcrumbs.List>
|
|
47
|
-
</Breadcrumbs>
|
|
48
|
-
);
|
|
49
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
.footer {
|
|
2
|
-
background-color: var(--ds-color-neutral-surface-subtle);
|
|
3
|
-
border-top: 1px solid var(--ds-color-neutral-border-subtle);
|
|
4
|
-
margin-top: auto;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
.container {
|
|
8
|
-
max-width: 1440px;
|
|
9
|
-
margin: 0 auto;
|
|
10
|
-
padding: var(--ds-spacing-6) var(--ds-spacing-4);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.content {
|
|
14
|
-
display: flex;
|
|
15
|
-
justify-content: space-between;
|
|
16
|
-
align-items: center;
|
|
17
|
-
gap: var(--ds-spacing-4);
|
|
18
|
-
flex-wrap: wrap;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
@media (max-width: 768px) {
|
|
22
|
-
.content {
|
|
23
|
-
flex-direction: column;
|
|
24
|
-
align-items: flex-start;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { Paragraph } from '@digdir/designsystemet-react';
|
|
4
|
-
import clsx from 'clsx';
|
|
5
|
-
import type { GlobalFooterProps } from './GlobalFooter.types';
|
|
6
|
-
import styles from './GlobalFooter.module.css';
|
|
7
|
-
|
|
8
|
-
export function GlobalFooter({ className }: GlobalFooterProps) {
|
|
9
|
-
|
|
10
|
-
return (
|
|
11
|
-
<footer className={clsx(styles.footer, className)}>
|
|
12
|
-
<div className={styles.container}>
|
|
13
|
-
<div className={styles.content}>
|
|
14
|
-
<Paragraph>
|
|
15
|
-
Statsbygg Footer
|
|
16
|
-
</Paragraph>
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
</div>
|
|
20
|
-
</div>
|
|
21
|
-
</footer>
|
|
22
|
-
);
|
|
23
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
.header {
|
|
2
|
-
background-color: var(--ds-color-accent-surface-tinted);
|
|
3
|
-
border-bottom: 1px solid var(--ds-color-neutral-border-subtle);
|
|
4
|
-
position: sticky;
|
|
5
|
-
top: 0;
|
|
6
|
-
z-index: 100;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.headerContainer {
|
|
10
|
-
max-width: 90rem;
|
|
11
|
-
margin: 0 auto;
|
|
12
|
-
padding: 0 var(--ds-size-30);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
.topBarContainer {
|
|
16
|
-
display: flex;
|
|
17
|
-
justify-content: space-between;
|
|
18
|
-
align-items: center;
|
|
19
|
-
padding: 1.25rem 0;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.logo {
|
|
23
|
-
margin: 0;
|
|
24
|
-
color: var(--ds-color-neutral-text-default);
|
|
25
|
-
white-space: nowrap;
|
|
26
|
-
display: flex;
|
|
27
|
-
align-items: center;
|
|
28
|
-
min-height: inherit;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.actionsContainer {
|
|
32
|
-
display: flex;
|
|
33
|
-
align-items: stretch;
|
|
34
|
-
gap: var(--ds-size-9);
|
|
35
|
-
min-height: inherit;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.searchInput {
|
|
39
|
-
min-width: 12.5rem;
|
|
40
|
-
display: flex;
|
|
41
|
-
align-items: center;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
@media (max-width: 768px) {
|
|
45
|
-
.container {
|
|
46
|
-
padding: 0 var(--ds-spacing-4);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.topBar {
|
|
50
|
-
flex-wrap: wrap;
|
|
51
|
-
padding: var(--ds-spacing-4) 0;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.actions {
|
|
55
|
-
order: 3;
|
|
56
|
-
width: 100%;
|
|
57
|
-
flex-direction: column;
|
|
58
|
-
gap: var(--ds-spacing-3);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.searchInput {
|
|
62
|
-
width: 100%;
|
|
63
|
-
min-width: auto;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
.menuButton {
|
|
67
|
-
width: 100%;
|
|
68
|
-
justify-content: center;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
import { Link, Textfield } from '@digdir/designsystemet-react';
|
|
5
|
-
import clsx from 'clsx';
|
|
6
|
-
import { Breadcrumbs } from '../Breadcrumbs';
|
|
7
|
-
import { MenuButton } from '../MenuButton';
|
|
8
|
-
import type { GlobalHeaderProps } from './GlobalHeader.types';
|
|
9
|
-
import styles from './GlobalHeader.module.css';
|
|
10
|
-
import logo from '../../logo.svg';
|
|
11
|
-
import Image from 'next/image';
|
|
12
|
-
|
|
13
|
-
export function GlobalHeader({ className, zone }: GlobalHeaderProps) {
|
|
14
|
-
const [searchValue, setSearchValue] = useState('');
|
|
15
|
-
|
|
16
|
-
return (
|
|
17
|
-
<header className={clsx(styles.header, className)}>
|
|
18
|
-
<div className={styles.headerContainer}>
|
|
19
|
-
<div className={styles.topBarContainer}>
|
|
20
|
-
<Link href="https://www.statsbygg.no">
|
|
21
|
-
<Image src={logo} alt="Logo" className={styles.logo} />
|
|
22
|
-
</Link>
|
|
23
|
-
<div className={styles.actionsContainer}>
|
|
24
|
-
<Textfield
|
|
25
|
-
value={searchValue}
|
|
26
|
-
onChange={(e) => setSearchValue(e.target.value)}
|
|
27
|
-
placeholder="Søk..."
|
|
28
|
-
className={styles.searchInput}
|
|
29
|
-
aria-label="Søk"
|
|
30
|
-
/>
|
|
31
|
-
<MenuButton zone={zone}/>
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
34
|
-
<Breadcrumbs zone={zone} />
|
|
35
|
-
</div>
|
|
36
|
-
</header>
|
|
37
|
-
);
|
|
38
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
.userInfo {
|
|
2
|
-
display: flex;
|
|
3
|
-
flex-direction: column;
|
|
4
|
-
gap: var(--ds-spacing-1);
|
|
5
|
-
padding: var(--ds-spacing-2) var(--ds-spacing-3);
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
.userName {
|
|
9
|
-
font-size: var(--ds-font-size-sm);
|
|
10
|
-
font-weight: var(--ds-font-weight-medium);
|
|
11
|
-
color: var(--ds-color-neutral-text-default);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
.userEmail {
|
|
15
|
-
font-size: var(--ds-font-size-xs);
|
|
16
|
-
color: var(--ds-color-neutral-text-subtle);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
.menuButton {
|
|
20
|
-
background-color: var(--ds-color-neutral-base-default);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.devContainer {
|
|
24
|
-
display: flex;
|
|
25
|
-
gap: var(--ds-spacing-4);
|
|
26
|
-
padding: var(--ds-spacing-2);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.zoneSection {
|
|
30
|
-
flex: 1;
|
|
31
|
-
min-width: 12rem;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.zoneTitle {
|
|
35
|
-
font-weight: 600;
|
|
36
|
-
padding: var(--ds-spacing-2);
|
|
37
|
-
color: var(--ds-color-neutral-text-default);
|
|
38
|
-
border-bottom: 1px solid var(--ds-color-neutral-border-subtle);
|
|
39
|
-
margin-bottom: var(--ds-spacing-2);
|
|
40
|
-
text-transform: capitalize;
|
|
41
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import Link from 'next/link';
|
|
4
|
-
import { Dropdown } from '@digdir/designsystemet-react';
|
|
5
|
-
import { Menu } from 'lucide-react';
|
|
6
|
-
import { getZoneMenuRoutes, getAllZones, transformHrefForZone } from '@/routes';
|
|
7
|
-
import type { MenuButtonProps } from './MenuButton.types';
|
|
8
|
-
import styles from './MenuButton.module.css';
|
|
9
|
-
|
|
10
|
-
export function MenuButton({ zone }: MenuButtonProps) {
|
|
11
|
-
const isDev = process.env.NODE_ENV === 'development';
|
|
12
|
-
// TODO: Temporary here. Should come from env or something
|
|
13
|
-
const prodUrl = 'https://www.statsbygg.no';
|
|
14
|
-
const allZones = getAllZones();
|
|
15
|
-
|
|
16
|
-
return (
|
|
17
|
-
<Dropdown.TriggerContext>
|
|
18
|
-
<Dropdown.Trigger asChild className={styles.menuButton}>
|
|
19
|
-
<Menu size={20} aria-hidden />
|
|
20
|
-
Meny
|
|
21
|
-
</Dropdown.Trigger>
|
|
22
|
-
<Dropdown>
|
|
23
|
-
{isDev ? (
|
|
24
|
-
<div className={styles.devContainer}>
|
|
25
|
-
{allZones.map((z) => {
|
|
26
|
-
const routes = getZoneMenuRoutes(z);
|
|
27
|
-
return (
|
|
28
|
-
<div key={z} className={styles.zoneSection}>
|
|
29
|
-
<div className={styles.zoneTitle}>{z}</div>
|
|
30
|
-
<Dropdown.List>
|
|
31
|
-
{routes.map((r) => (
|
|
32
|
-
<Dropdown.Item key={`${r.zone}:${r.path}`}>
|
|
33
|
-
<Link href={transformHrefForZone(r.path, zone, { isDev, prodUrl })}>
|
|
34
|
-
{r.label}
|
|
35
|
-
</Link>
|
|
36
|
-
</Dropdown.Item>
|
|
37
|
-
))}
|
|
38
|
-
</Dropdown.List>
|
|
39
|
-
</div>
|
|
40
|
-
);
|
|
41
|
-
})}
|
|
42
|
-
</div>
|
|
43
|
-
) : (
|
|
44
|
-
<Dropdown.List>
|
|
45
|
-
{getZoneMenuRoutes(zone).map((r) => (
|
|
46
|
-
<Dropdown.Item key={`${r.zone}:${r.path}`}>
|
|
47
|
-
<Link href={transformHrefForZone(r.path, zone, { isDev, prodUrl })}>
|
|
48
|
-
{r.label}
|
|
49
|
-
</Link>
|
|
50
|
-
</Dropdown.Item>
|
|
51
|
-
))}
|
|
52
|
-
</Dropdown.List>
|
|
53
|
-
)}
|
|
54
|
-
</Dropdown>
|
|
55
|
-
</Dropdown.TriggerContext>
|
|
56
|
-
);
|
|
57
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
|
|
3
|
-
import { useEffect } from 'react';
|
|
4
|
-
import clsx from 'clsx';
|
|
5
|
-
import { GlobalHeader } from '../GlobalHeader';
|
|
6
|
-
import { GlobalFooter } from '../GlobalFooter';
|
|
7
|
-
import type { RootLayoutProps } from './RootLayout.types';
|
|
8
|
-
import styles from './RootLayout.module.css';
|
|
9
|
-
import { useGlobalStore } from '@/store/globalState';
|
|
10
|
-
|
|
11
|
-
export function RootLayout({
|
|
12
|
-
children,
|
|
13
|
-
zone,
|
|
14
|
-
className,
|
|
15
|
-
}: RootLayoutProps) {
|
|
16
|
-
const initialize = useGlobalStore((state) => state.initialize);
|
|
17
|
-
|
|
18
|
-
useEffect(() => {
|
|
19
|
-
try {
|
|
20
|
-
const maybe = initialize();
|
|
21
|
-
if (maybe && typeof (maybe as Promise<void>).then === 'function') {
|
|
22
|
-
(maybe as Promise<void>).catch((error) => {
|
|
23
|
-
console.error('Failed to initialize global state:', error);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
} catch (error) {
|
|
27
|
-
console.error('Failed to initialize global state:', error);
|
|
28
|
-
}
|
|
29
|
-
}, [initialize]);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return (
|
|
33
|
-
<div className={clsx(styles.root, className)} data-zone={zone}>
|
|
34
|
-
<GlobalHeader zone={zone}/>
|
|
35
|
-
<main className={styles.main}>{children}</main>
|
|
36
|
-
<GlobalFooter />
|
|
37
|
-
</div>
|
|
38
|
-
);
|
|
39
|
-
}
|
package/src/index.ts
DELETED
package/src/logo.svg
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
<svg width="160" height="32" viewBox="0 0 160 32" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
2
|
-
<rect width="160" height="32" fill="url(#pattern0_2989_38345)"/>
|
|
3
|
-
<defs>
|
|
4
|
-
<pattern id="pattern0_2989_38345" patternContentUnits="objectBoundingBox" width="1" height="1">
|
|
5
|
-
<use xlink:href="#image0_2989_38345" transform="matrix(0.000468384 0 0 0.00234192 -0.0058548 0)"/>
|
|
6
|
-
</pattern>
|
|
7
|
-
<image id="image0_2989_38345" width="2160" height="427" preserveAspectRatio="none" xlink:href="data:image/png;base64,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QAJu4BgI2jIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgWMCbuA4JmM/AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGAgATdwDARtGQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAMQE3cByTsZ8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMJCAGzgGgrYMAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOCYgBs4jsnYT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAYSMANHANBW4YAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgcEzADRzHZOwnQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECAwk8M1A61hm3AIfSW9xQ4plzB8uGPdD+rQX9Nvvss6O9/2dnhMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEnlGgSVE/jjBKXhoBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEHh6Af8Llac/xQokQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIExi7gBo6xnyH5ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAk8v4AaOpz/FCiRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTGLuAGjrGfIfkRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECTy/gBo6nP8UKJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBMYu4AaOsZ8h+REgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJPL+AGjqc/xQokQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBB4ZoEmxf14QSzTRyNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSOCPgXOI7A2E2AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQGErADRxDSVuHAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIHBEwA0cR2DsJkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgMJeAGjqGkrUOAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQOCLgBo4jMHYTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBIYScAPHUNLWIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgcEXADxxEYuwkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECQwm4gWMoaesQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBI4IuIHjCIzdBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGhBNzAMZS0dQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECRwTcwHEExm4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwFACbuAYSto6BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEjAm7gOAJjNwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgKAE3cAwlbR0CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwBEBN3AcgbGbAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDCUgBs4hpK2DgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEDgiIAbOI7A2E2AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQGErADRxDSVuHAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIHBEwA0cR2DsJkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgMJeAGjqGkrUOAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQOCLgBo4jMHYTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBIYScAPHUNLWIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgcEXADxxEYuwkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECQwm4gWMo6edbZ5aSSlzS5ul0ad9L5tOHAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIPCyAm+pfJVoEz/eEGXcKlHm0QgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBC4UmKffR2KTuOWmjWNjynzLxDyhESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIHBCYZ98qcewGjC73lxtEZgmNAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEDgS+A92/IvZHR5k8a5ucp6b1/r2xAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEXlZglso/E+dutujz+Crrlzw0AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMDLCZSbJtaJPm/OuHTukoebOF7uElQwAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBB4bYFys8QmcekNFkP0cxPHa1+TqidAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAi8lUG7eKDdLDHFTxrVrlLw0AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMDTC3ymwmtvrBiy/8fTnwEFEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAi8tUKf6IW/GuHWt6qXPkuIJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBpxWYpbJN4tabKoYc1z7tWVAYAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCIwO8pvKzAeyr/w0Sq/zZ51hPJVZoECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgYsFpvKvb2z/pY/24sp0JECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhMQKBOjtsbI6a0rSZgK0UCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIHC1gP+FytVkTzHgbaJV1BPNW9oECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOCkwDcnjzr4rALlX92YYvshSc+nmLicCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAKQH/Ascpnec8Vk24rG+T+3zC+UudAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgcFHADx0GWp965mHh1U89/4vzSJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIE+BNzA0YfquOecjzu9s9m5geMskQ4ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMDUBN3BM7Yzdn+/Ub4CY3U9gBgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMC4BN3CM63zI5rzA1G9AOV+hHgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDwcgJu4Hi5U65gAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYGwCbuAY2xmRDwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIPByAm7geLlTrmACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgbAJu4BjbGZEPAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg8HICbuB4uVM++YLbyVegAAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsCfgBo49kBd42k68xqnnP3F+6RMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAHwJu4OhDddxzrsed3tnspp7/2QJ1IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHXE3ADx+ud86nfADH1/F/vilMxAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgcFBgk70/TjDag9XYSYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEJi7gX+CY+Am8Mf3PG8c9ethU8360m/UJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBEQq8Jacp/gscixFaSokAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgcLNAm5FTuoljfXOlBhIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgZEL+F+ojPwE9ZjeR49z9zH11PLtw8CcBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwJMJzFJPm5jCv8LhX994sotPOQQIECBA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lExJgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAlMTaJPwLV+kl3FjaG9J4pb8D41ZjaGg5FBurNkkDuV4674yX5l3DK1JErfWsT+uGkFB95yvYqERIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHffcZg/0vxS56/jciuubGG3To3maN8ET+Wtkwiu/nd+/h9LIUlj0VHta1GVFPxveUcfYyoBqkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwAMFlln72i+eVw/M99DS8+zcJK6tY7f/26GJH7xvfWdN2/qaB9dxaPlldm7zu2XbZvwsMabWJJlra6nHVIBcCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOBxAlWWvuZL53JTwbkvzsucJeaJodpbFrqmjt2+q6GSvHKdefpvEru5Xvu4jD93vtLlIa3JqtfWs+2/GDDjslb1FaeWLc7rxDbHS7ZD1nEqd8cIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA4MEC5UvnS75oLn3Kl9Ol/6E2z85VYn+usu/YmBw62sqYZaJJbL6279memmuZ4/vrn3u+zphTrc7Bz0Tp1yZWiUXi1lZnYJPYfG0/sp0njrWy1rkajh0va5Txx1o5tko0idL3M1Enbm1VBpY52sQ6sUq8JY61WQ6UfsfyP7a/PjZh9s8T74kmsfnaluezxLWtyoA2sZtHmXOVODZf2b9O7I459ThdNQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg8LNAm82pL5nLsfKl9LEvresc2ySOzXFqbIb9S1tkz7H5yv5lYpY41FbZeSyP/f3r9D02T51jbWJ/zPb5MseuaWWdst52/P72M8fmiUOtzs79/pc8L+MOtUV2Noljc5RjJd9r2kc6H5uvzbEqcajNs3OTODZ2f39Z51Ar+a4S+/23z9scWyQubXU6bsce2pac345MVnJZnxlf5mwSGgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ+EXgM48OfUm93bf6pee/Pqiza9vv1Lb516EH9yyyd5M4NVc5Vvq8JQ61VXaeG79On9mBwfPsaxLnxpfjH4lLWlmnrHfJnMsjE9YXjt+uUfofasvs3PY5tS35lrwvaat0OjXX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QIAAAQIECBAgQIAAAQIEuhD4potJBp5jk/X+cMea32fsZ2KdaBKXtHk6LRJV4i3xbWIs7Z9JpNTTJEpNJS5pVTqVKPX8MTHWdsv5WqSYaifuuV66dvkhE34mmq/YZHuuzdJht6bvzg04cfwfX3Od6OIQAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECAwtMMUbOMqX33/uEKrcALE+Md89X5afmLbXQ+VL+s2RFebZP6YbUI6keXR3uQGiPXJ0lv1jvhnlUNrnrr9FBnV5A8rfMl99KBH7CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDANQLv6fyjYOAauOkaqOOmESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMDIBH4/snwuSWd9SSd9CBA4KNAc3GsnAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDxUYIr/C5UCVv4FDo0AgesEyv9+Zn7dEL0JECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYAiBKf4LHMXl+yFwrEHgyQSaJ6tHOQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEHgaganewNE8zRlQCIHhBPzvh4azthIBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSuEnADx1VcOhOYtEAz6ewlT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgScW+GbCtf044dylTmBogX9mwdnQi1qPAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBC4TmOq/wFGq+/6yEvUiQCACDQUCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQGK/AlG/gWI+XVWYERifQjC4jCREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDALwJTvoGj+aUKDwgQOCfQnOvgOAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAg8TuCbxy1998qzzPBfd89iAgLPL/DPlFheLxoBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIjFRgyv8Cxyam/xipq7QIjEnA/25oTGdDLgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEDggMOUbOEo5zYGa7CJA4LcCzW+fekaA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"/>
|
|
8
|
-
</defs>
|
|
9
|
-
</svg>
|
package/src/routes.ts
DELETED
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
export type RouteNodeInput =
|
|
2
|
-
| { segment: string; label: string; children?: RouteNodeInput[] }
|
|
3
|
-
| { path: string; label: string; children?: RouteNodeInput[] };
|
|
4
|
-
|
|
5
|
-
export type RouteNode = {
|
|
6
|
-
path: string;
|
|
7
|
-
label: string;
|
|
8
|
-
children?: RouteNode[];
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export type RouteDefinition = {
|
|
12
|
-
path: string;
|
|
13
|
-
label: string;
|
|
14
|
-
zone: string;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
const ZONE_TREES_INPUT: Record<string, RouteNodeInput> = {
|
|
18
|
-
sbno: {
|
|
19
|
-
segment: '',// primary root route, no breadcrumb
|
|
20
|
-
label: 'Hjem',
|
|
21
|
-
children: [
|
|
22
|
-
{ segment: 'nyheter', label: 'Nyheter' },
|
|
23
|
-
],
|
|
24
|
-
},
|
|
25
|
-
lokaler: {
|
|
26
|
-
segment: 'lokaler',
|
|
27
|
-
label: 'Statens eide og leide lokaler',
|
|
28
|
-
children: [
|
|
29
|
-
{
|
|
30
|
-
segment: 'lokalbruk', label: 'Lokalbruk'
|
|
31
|
-
},
|
|
32
|
-
{ segment: 'veiledning', label: 'Veiledning' },
|
|
33
|
-
{ segment: 'statlige-eiendommer', label: 'Statlige eiendommer' },
|
|
34
|
-
{ segment: 'ledig-for-fremleie', label: 'Ledig for fremleie' },
|
|
35
|
-
{ segment: 'statistikk', label: 'Statistikk' },
|
|
36
|
-
],
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
type Key = `${string}:${string}`; // `${zone}:${absolutePath}`
|
|
42
|
-
|
|
43
|
-
const ROUTES_INDEX: Record<string, RouteDefinition[]> = {};
|
|
44
|
-
const PARENT_INDEX = new Map<Key, Key | null>(); // child -> parent
|
|
45
|
-
const ZONE_TREES: Record<string, RouteNode> = {}; // normalized absolute trees
|
|
46
|
-
|
|
47
|
-
function isSegmentNode(n: RouteNodeInput): n is Extract<RouteNodeInput, { segment: string }> {
|
|
48
|
-
return (n as any).segment !== undefined && (n as any).path === undefined;
|
|
49
|
-
}
|
|
50
|
-
function isPathNode(n: RouteNodeInput): n is Extract<RouteNodeInput, { path: string }> {
|
|
51
|
-
return (n as any).path !== undefined;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function joinPath(base: string, seg: string): string {
|
|
55
|
-
if (!base) return seg ? `/${seg}` : '/';
|
|
56
|
-
return seg ? `${base.replace(/\/+$/, '')}/${seg.replace(/^\/+/, '')}` : base || '/';
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
function normalizeToAbsolute(node: RouteNodeInput, base = ''): RouteNode {
|
|
60
|
-
const path = isSegmentNode(node)
|
|
61
|
-
? joinPath(base, node.segment)
|
|
62
|
-
: isPathNode(node)
|
|
63
|
-
? (node.path === '' ? '/' : node.path)
|
|
64
|
-
: '/';
|
|
65
|
-
|
|
66
|
-
const children = (node.children ?? []).map((c) => normalizeToAbsolute(c, path));
|
|
67
|
-
return { path, label: (node as any).label, children: children.length ? children : undefined };
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
(function buildAll() {
|
|
71
|
-
// Normalize each zone tree to absolute paths
|
|
72
|
-
Object.keys(ZONE_TREES_INPUT).forEach((zone) => {
|
|
73
|
-
ZONE_TREES[zone] = normalizeToAbsolute(ZONE_TREES_INPUT[zone]);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
// Build flat indexes + parent relationships
|
|
77
|
-
function walk(zone: string, node: RouteNode, parentKey: Key | null) {
|
|
78
|
-
const def: RouteDefinition = { zone, path: node.path, label: node.label };
|
|
79
|
-
const key: Key = `${zone}:${node.path}`;
|
|
80
|
-
ROUTES_INDEX[zone].push(def);
|
|
81
|
-
PARENT_INDEX.set(key, parentKey);
|
|
82
|
-
for (const child of node.children ?? []) {
|
|
83
|
-
walk(zone, child, key);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
(Object.keys(ZONE_TREES) as string[]).forEach((zone) => {
|
|
88
|
-
ROUTES_INDEX[zone] = [];
|
|
89
|
-
walk(zone, ZONE_TREES[zone], null);
|
|
90
|
-
});
|
|
91
|
-
})();
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
function findBestMatch(zone: string, pathname: string): RouteDefinition | undefined {
|
|
95
|
-
const list = ROUTES_INDEX[zone] ?? [];
|
|
96
|
-
let best: RouteDefinition | undefined;
|
|
97
|
-
|
|
98
|
-
for (const r of list) {
|
|
99
|
-
if (pathname === r.path) {
|
|
100
|
-
best = r; // exact wins
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
if (pathname.startsWith(r.path.endsWith('/') ? r.path : r.path + '/')) {
|
|
104
|
-
if (!best || r.path.length > best.path.length) best = r;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
// fallback: zone root
|
|
108
|
-
return best ?? list.find((r) => r.path === ZONE_TREES[zone]?.path);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export function getZoneRoutes(zone: string): RouteDefinition[] {
|
|
112
|
-
return ROUTES_INDEX[zone] ?? [];
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
// Top-level links for a zone’s menu (children of the zone root)
|
|
116
|
-
export function getZoneMenuRoutes(zone: string): RouteDefinition[] {
|
|
117
|
-
const root = ZONE_TREES[zone];
|
|
118
|
-
const children = root?.children ?? [];
|
|
119
|
-
return children.map((c) => ({ zone, path: c.path, label: c.label }));
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
export function getAllZones(): string[] {
|
|
123
|
-
return Object.keys(ZONE_TREES);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
export function getZoneRoot(zone: string): string {
|
|
127
|
-
return ZONE_TREES[zone]?.path || '/';
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// prettify dynamic slug labels
|
|
131
|
-
function labelFromSlug(slug: string): string {
|
|
132
|
-
try {
|
|
133
|
-
const s = decodeURIComponent(slug).replace(/[-_]+/g, ' ').trim();
|
|
134
|
-
return s ? s.charAt(0).toUpperCase() + s.slice(1) : slug;
|
|
135
|
-
} catch {
|
|
136
|
-
return slug;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
export function getBreadcrumbs(
|
|
141
|
-
zone: string,
|
|
142
|
-
pathname: string
|
|
143
|
-
): Array<{ label: string; href: string }> {
|
|
144
|
-
|
|
145
|
-
const normalizedPathname = pathname === '/' ? pathname : pathname.replace(/\/+$/, '');
|
|
146
|
-
|
|
147
|
-
// sbno root has no crumbs
|
|
148
|
-
if (zone === 'sbno' && normalizedPathname === '/') return [];
|
|
149
|
-
|
|
150
|
-
const match = findBestMatch(zone, normalizedPathname);
|
|
151
|
-
if (!match) return [];
|
|
152
|
-
|
|
153
|
-
const chain: RouteDefinition[] = [];
|
|
154
|
-
let key: Key | undefined = `${zone}:${match.path}`;
|
|
155
|
-
while (key) {
|
|
156
|
-
const parentKey = PARENT_INDEX.get(key);
|
|
157
|
-
const [z, p] = key.split(':') as [string, string];
|
|
158
|
-
const def = (ROUTES_INDEX[z] ?? []).find((r) => r.path === p);
|
|
159
|
-
if (def) chain.unshift(def);
|
|
160
|
-
key = parentKey ?? undefined;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
const homeRoute = (ROUTES_INDEX.sbno ?? []).find((r) => r.path === '/');
|
|
164
|
-
if (
|
|
165
|
-
homeRoute &&
|
|
166
|
-
!(chain.length === 1 && chain[0].zone === 'sbno' && chain[0].path === '/') &&
|
|
167
|
-
(chain.length === 0 || chain[0].path !== homeRoute.path)
|
|
168
|
-
) {
|
|
169
|
-
chain.unshift(homeRoute);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// If the pathname is deeper than the best static match, add a dynamic tail
|
|
173
|
-
const last = chain[chain.length - 1];
|
|
174
|
-
if (last && normalizedPathname !== last.path && normalizedPathname.startsWith(last.path.endsWith('/') ? last.path : last.path + '/')) {
|
|
175
|
-
const segments = normalizedPathname.split('/').filter(Boolean);
|
|
176
|
-
const tail = segments[segments.length - 1];
|
|
177
|
-
chain.push({ zone, path: normalizedPathname, label: labelFromSlug(tail) });
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
return chain.map((r) => ({ label: r.label, href: r.path }));
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
export function transformHrefForZone(
|
|
184
|
-
targetPath: string,
|
|
185
|
-
currentZone: string,
|
|
186
|
-
options: {
|
|
187
|
-
isDev: boolean;
|
|
188
|
-
prodUrl?: string;
|
|
189
|
-
}
|
|
190
|
-
): string {
|
|
191
|
-
const { isDev, prodUrl } = options;
|
|
192
|
-
|
|
193
|
-
const targetZone = getZoneFromPathname(targetPath);
|
|
194
|
-
const isCrossZone = targetZone !== currentZone;
|
|
195
|
-
|
|
196
|
-
if (isCrossZone && isDev && prodUrl) {
|
|
197
|
-
return `${prodUrl}${targetPath}`;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
const currentZoneRoot = getZoneRoot(currentZone);
|
|
201
|
-
if (!isCrossZone && isDev && currentZoneRoot !== '/') {
|
|
202
|
-
return targetPath.replace(currentZoneRoot, '') || '/';
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
return targetPath;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
export function getZoneFromPathname(pathname: string): string {
|
|
209
|
-
if (pathname.startsWith('/lokaler')) return 'lokaler';
|
|
210
|
-
return 'sbno';
|
|
211
|
-
}
|
package/src/store/globalState.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { create, StateCreator } from 'zustand';
|
|
2
|
-
import { persist, createJSONStorage } from 'zustand/middleware';
|
|
3
|
-
|
|
4
|
-
export type Theme = 'light' | 'dark' | 'system';
|
|
5
|
-
|
|
6
|
-
export type GlobalState = {
|
|
7
|
-
user?: { id: string; name?: string } | null;
|
|
8
|
-
theme: Theme;
|
|
9
|
-
locale: string;
|
|
10
|
-
setUser: (user: GlobalState['user']) => void;
|
|
11
|
-
setTheme: (theme: Theme) => void;
|
|
12
|
-
setLocale: (locale: string) => void;
|
|
13
|
-
initialize: () => void | Promise<void>;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
const creator: StateCreator<GlobalState, [['zustand/persist', unknown]]> = (set, get) => ({
|
|
17
|
-
user: null,
|
|
18
|
-
theme: 'light',
|
|
19
|
-
locale: 'no',
|
|
20
|
-
setUser: (user) => set({ user }),
|
|
21
|
-
setTheme: (theme) => {
|
|
22
|
-
set({ theme });
|
|
23
|
-
if (typeof document !== 'undefined') {
|
|
24
|
-
document.documentElement.setAttribute('data-color-scheme', theme);
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
setLocale: (locale) => set({ locale }),
|
|
28
|
-
initialize: () => {
|
|
29
|
-
if (typeof document !== 'undefined') {
|
|
30
|
-
document.documentElement.setAttribute('data-color-scheme', get().theme);
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
export const useGlobalStore = create<GlobalState>()(
|
|
36
|
-
persist(creator, {
|
|
37
|
-
name: 'statsbygg-global-state',
|
|
38
|
-
storage: createJSONStorage(() => localStorage),
|
|
39
|
-
})
|
|
40
|
-
);
|
package/src/types/css.d.ts
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
export interface Breadcrumb {
|
|
2
|
-
label: string;
|
|
3
|
-
href: string;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
export interface RouteDefinition {
|
|
7
|
-
path: string;
|
|
8
|
-
label: string;
|
|
9
|
-
zone: string;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const STORAGE_KEY = 'statsbygg-route-registry';
|
|
13
|
-
let routesCache = new Map<string, RouteDefinition>();
|
|
14
|
-
let isLoaded = false;
|
|
15
|
-
|
|
16
|
-
function loadRoutes(): void {
|
|
17
|
-
if (isLoaded || typeof window === 'undefined') return;
|
|
18
|
-
|
|
19
|
-
try {
|
|
20
|
-
const stored = localStorage.getItem(STORAGE_KEY);
|
|
21
|
-
if (stored) {
|
|
22
|
-
routesCache = new Map(JSON.parse(stored));
|
|
23
|
-
}
|
|
24
|
-
isLoaded = true;
|
|
25
|
-
} catch (error) {
|
|
26
|
-
console.error('Failed to load route registry:', error);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function saveRoutes(): void {
|
|
31
|
-
if (typeof window === 'undefined') return;
|
|
32
|
-
|
|
33
|
-
try {
|
|
34
|
-
localStorage.setItem(
|
|
35
|
-
STORAGE_KEY,
|
|
36
|
-
JSON.stringify(Array.from(routesCache.entries()))
|
|
37
|
-
);
|
|
38
|
-
} catch (error) {
|
|
39
|
-
console.error('Failed to save route registry:', error);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export function registerRoutes(zoneRoutes: RouteDefinition[]): void {
|
|
44
|
-
loadRoutes();
|
|
45
|
-
zoneRoutes.forEach((route) => routesCache.set(route.path, route));
|
|
46
|
-
saveRoutes();
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export function buildBreadcrumbs(currentPath: string): Breadcrumb[] {
|
|
50
|
-
loadRoutes();
|
|
51
|
-
|
|
52
|
-
const segments = currentPath.split('/').filter(Boolean);
|
|
53
|
-
const breadcrumbs: Breadcrumb[] = [{ label: 'Hjem', href: '/' }];
|
|
54
|
-
|
|
55
|
-
let accumulatedPath = '';
|
|
56
|
-
|
|
57
|
-
segments.forEach((segment) => {
|
|
58
|
-
accumulatedPath += '/' + segment;
|
|
59
|
-
const route = routesCache.get(accumulatedPath);
|
|
60
|
-
|
|
61
|
-
if (route) {
|
|
62
|
-
breadcrumbs.push({ label: route.label, href: accumulatedPath });
|
|
63
|
-
} else {
|
|
64
|
-
const label = formatSegmentLabel(segment);
|
|
65
|
-
breadcrumbs.push({ label, href: accumulatedPath });
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
return breadcrumbs;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export function getRoute(path: string): RouteDefinition | undefined {
|
|
73
|
-
loadRoutes();
|
|
74
|
-
return routesCache.get(path);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
export function getAllRoutes(): RouteDefinition[] {
|
|
78
|
-
loadRoutes();
|
|
79
|
-
return Array.from(routesCache.values());
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export function clearRoutes(): void {
|
|
83
|
-
routesCache.clear();
|
|
84
|
-
if (typeof window !== 'undefined') {
|
|
85
|
-
localStorage.removeItem(STORAGE_KEY);
|
|
86
|
-
}
|
|
87
|
-
isLoaded = false;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
function formatSegmentLabel(segment: string): string {
|
|
91
|
-
return segment.charAt(0).toUpperCase() + segment.slice(1).replace(/-/g, ' ');
|
|
92
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2018",
|
|
4
|
-
"lib": ["DOM", "ES2020"],
|
|
5
|
-
"jsx": "react-jsx",
|
|
6
|
-
"strict": true,
|
|
7
|
-
"skipLibCheck": true,
|
|
8
|
-
"module": "ESNext",
|
|
9
|
-
"moduleResolution": "Node",
|
|
10
|
-
"resolveJsonModule": true,
|
|
11
|
-
"esModuleInterop": true,
|
|
12
|
-
"forceConsistentCasingInFileNames": true,
|
|
13
|
-
"noEmit": true,
|
|
14
|
-
"baseUrl": ".",
|
|
15
|
-
"paths": {
|
|
16
|
-
"@/*": ["./src/*"]
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
"include": ["src"]
|
|
20
|
-
}
|
package/tsup.config.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { defineConfig } from 'tsup';
|
|
2
|
-
|
|
3
|
-
export default defineConfig({
|
|
4
|
-
entry: ['src/index.ts'],
|
|
5
|
-
format: ['cjs', 'esm'],
|
|
6
|
-
dts: true,
|
|
7
|
-
splitting: false,
|
|
8
|
-
sourcemap: true,
|
|
9
|
-
clean: true,
|
|
10
|
-
external: ['react', 'react-dom', 'next', '@digdir/designsystemet-react', 'clsx', 'zustand', 'lucide-react'],
|
|
11
|
-
loader: {
|
|
12
|
-
'.css': 'local-css',
|
|
13
|
-
'.svg': 'file',
|
|
14
|
-
},
|
|
15
|
-
});
|