@statsbygg/layout 0.0.4 → 0.0.5

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/dist/index.css CHANGED
@@ -1,17 +1,17 @@
1
1
  /* src/components/Breadcrumbs/Breadcrumbs.module.css */
2
- .Breadcrumbs_breadcrumbs {
2
+ .breadcrumbs {
3
3
  --dsc-breadcrumbs-color: var(--ds-color-text-default);
4
4
  padding: 2.5rem 0 0 0;
5
5
  }
6
- .Breadcrumbs_link {
6
+ .link {
7
7
  text-decoration: underline;
8
8
  text-underline-offset: 2px;
9
9
  color: var(--ds-color-text-default);
10
10
  }
11
- .Breadcrumbs_link:hover .Breadcrumbs_link:visited {
11
+ .link:hover .link:visited {
12
12
  color: var(--ds-color-text-default);
13
13
  }
14
- .Breadcrumbs_currentLink {
14
+ .currentLink {
15
15
  text-decoration: none;
16
16
  font-weight: 500;
17
17
  pointer-events: none;
@@ -19,34 +19,34 @@
19
19
  }
20
20
 
21
21
  /* src/components/MenuButton/MenuButton.module.css */
22
- .MenuButton_userInfo {
22
+ .userInfo {
23
23
  display: flex;
24
24
  flex-direction: column;
25
25
  gap: var(--ds-spacing-1);
26
26
  padding: var(--ds-spacing-2) var(--ds-spacing-3);
27
27
  }
28
- .MenuButton_userName {
28
+ .userName {
29
29
  font-size: var(--ds-font-size-sm);
30
30
  font-weight: var(--ds-font-weight-medium);
31
31
  color: var(--ds-color-neutral-text-default);
32
32
  }
33
- .MenuButton_userEmail {
33
+ .userEmail {
34
34
  font-size: var(--ds-font-size-xs);
35
35
  color: var(--ds-color-neutral-text-subtle);
36
36
  }
37
- .MenuButton_menuButton {
37
+ .menuButton {
38
38
  background-color: var(--ds-color-neutral-base-default);
39
39
  }
40
- .MenuButton_devContainer {
40
+ .devContainer {
41
41
  display: flex;
42
42
  gap: var(--ds-spacing-4);
43
43
  padding: var(--ds-spacing-2);
44
44
  }
45
- .MenuButton_zoneSection {
45
+ .zoneSection {
46
46
  flex: 1;
47
47
  min-width: 12rem;
48
48
  }
49
- .MenuButton_zoneTitle {
49
+ .zoneTitle {
50
50
  font-weight: 600;
51
51
  padding: var(--ds-spacing-2);
52
52
  color: var(--ds-color-neutral-text-default);
@@ -56,25 +56,25 @@
56
56
  }
57
57
 
58
58
  /* src/components/GlobalHeader/GlobalHeader.module.css */
59
- .GlobalHeader_header {
59
+ .header {
60
60
  background-color: var(--ds-color-accent-surface-tinted);
61
61
  border-bottom: 1px solid var(--ds-color-neutral-border-subtle);
62
62
  position: sticky;
63
63
  top: 0;
64
64
  z-index: 100;
65
65
  }
66
- .GlobalHeader_headerContainer {
66
+ .headerContainer {
67
67
  max-width: 90rem;
68
68
  margin: 0 auto;
69
69
  padding: 0 var(--ds-size-30);
70
70
  }
71
- .GlobalHeader_topBarContainer {
71
+ .topBarContainer {
72
72
  display: flex;
73
73
  justify-content: space-between;
74
74
  align-items: center;
75
75
  padding: 1.25rem 0;
76
76
  }
77
- .GlobalHeader_logo {
77
+ .logo {
78
78
  margin: 0;
79
79
  color: var(--ds-color-neutral-text-default);
80
80
  white-space: nowrap;
@@ -82,53 +82,53 @@
82
82
  align-items: center;
83
83
  min-height: inherit;
84
84
  }
85
- .GlobalHeader_actionsContainer {
85
+ .actionsContainer {
86
86
  display: flex;
87
87
  align-items: stretch;
88
88
  gap: var(--ds-size-9);
89
89
  min-height: inherit;
90
90
  }
91
- .GlobalHeader_searchInput {
91
+ .searchInput {
92
92
  min-width: 12.5rem;
93
93
  display: flex;
94
94
  align-items: center;
95
95
  }
96
96
  @media (max-width: 768px) {
97
- .GlobalHeader_container {
97
+ .container {
98
98
  padding: 0 var(--ds-spacing-4);
99
99
  }
100
- .GlobalHeader_topBar {
100
+ .topBar {
101
101
  flex-wrap: wrap;
102
102
  padding: var(--ds-spacing-4) 0;
103
103
  }
104
- .GlobalHeader_actions {
104
+ .actions {
105
105
  order: 3;
106
106
  width: 100%;
107
107
  flex-direction: column;
108
108
  gap: var(--ds-spacing-3);
109
109
  }
110
- .GlobalHeader_searchInput {
110
+ .searchInput {
111
111
  width: 100%;
112
112
  min-width: auto;
113
113
  }
114
- .GlobalHeader_menuButton {
114
+ .menuButton {
115
115
  width: 100%;
116
116
  justify-content: center;
117
117
  }
118
118
  }
119
119
 
120
120
  /* src/components/GlobalFooter/GlobalFooter.module.css */
121
- .GlobalFooter_footer {
121
+ .footer {
122
122
  background-color: var(--ds-color-neutral-surface-subtle);
123
123
  border-top: 1px solid var(--ds-color-neutral-border-subtle);
124
124
  margin-top: auto;
125
125
  }
126
- .GlobalFooter_container {
126
+ .container {
127
127
  max-width: 1440px;
128
128
  margin: 0 auto;
129
129
  padding: var(--ds-spacing-6) var(--ds-spacing-4);
130
130
  }
131
- .GlobalFooter_content {
131
+ .content {
132
132
  display: flex;
133
133
  justify-content: space-between;
134
134
  align-items: center;
@@ -136,19 +136,19 @@
136
136
  flex-wrap: wrap;
137
137
  }
138
138
  @media (max-width: 768px) {
139
- .GlobalFooter_content {
139
+ .content {
140
140
  flex-direction: column;
141
141
  align-items: flex-start;
142
142
  }
143
143
  }
144
144
 
145
145
  /* src/components/RootLayout/RootLayout.module.css */
146
- .RootLayout_root {
146
+ .root {
147
147
  display: flex;
148
148
  flex-direction: column;
149
149
  min-height: 100vh;
150
150
  }
151
- .RootLayout_main {
151
+ .main {
152
152
  flex: 1;
153
153
  }
154
154
  /*# sourceMappingURL=index.css.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Breadcrumbs/Breadcrumbs.module.css","../src/components/MenuButton/MenuButton.module.css","../src/components/GlobalHeader/GlobalHeader.module.css","../src/components/GlobalFooter/GlobalFooter.module.css","../src/components/RootLayout/RootLayout.module.css"],"sourcesContent":[".breadcrumbs {\n --dsc-breadcrumbs-color: var(--ds-color-text-default);\n padding: 2.5rem 0 0 0;\n}\n\n.link {\n text-decoration: underline;\n text-underline-offset: 2px;\n color: var(--ds-color-text-default);\n}\n\n.link:hover \n.link:visited{\n color: var(--ds-color-text-default);\n}\n\n.currentLink {\n text-decoration: none;\n font-weight: 500;\n pointer-events: none;\n color: var(--ds-color-text-default);\n}\n",".userInfo {\n display: flex;\n flex-direction: column;\n gap: var(--ds-spacing-1);\n padding: var(--ds-spacing-2) var(--ds-spacing-3);\n}\n\n.userName {\n font-size: var(--ds-font-size-sm);\n font-weight: var(--ds-font-weight-medium);\n color: var(--ds-color-neutral-text-default);\n}\n\n.userEmail {\n font-size: var(--ds-font-size-xs);\n color: var(--ds-color-neutral-text-subtle);\n}\n\n.menuButton {\n background-color: var(--ds-color-neutral-base-default);\n}\n\n.devContainer {\n display: flex;\n gap: var(--ds-spacing-4);\n padding: var(--ds-spacing-2);\n}\n\n.zoneSection {\n flex: 1;\n min-width: 12rem;\n}\n\n.zoneTitle {\n font-weight: 600;\n padding: var(--ds-spacing-2);\n color: var(--ds-color-neutral-text-default);\n border-bottom: 1px solid var(--ds-color-neutral-border-subtle);\n margin-bottom: var(--ds-spacing-2);\n text-transform: capitalize;\n}\n",".header {\n background-color: var(--ds-color-accent-surface-tinted);\n border-bottom: 1px solid var(--ds-color-neutral-border-subtle);\n position: sticky;\n top: 0;\n z-index: 100;\n}\n\n.headerContainer {\n max-width: 90rem;\n margin: 0 auto;\n padding: 0 var(--ds-size-30);\n}\n\n.topBarContainer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.25rem 0;\n}\n\n.logo {\n margin: 0;\n color: var(--ds-color-neutral-text-default);\n white-space: nowrap;\n display: flex;\n align-items: center;\n min-height: inherit;\n}\n\n.actionsContainer {\n display: flex;\n align-items: stretch;\n gap: var(--ds-size-9);\n min-height: inherit;\n}\n\n.searchInput {\n min-width: 12.5rem;\n display: flex;\n align-items: center;\n}\n\n@media (max-width: 768px) {\n .container {\n padding: 0 var(--ds-spacing-4);\n }\n\n .topBar {\n flex-wrap: wrap;\n padding: var(--ds-spacing-4) 0;\n }\n\n .actions {\n order: 3;\n width: 100%;\n flex-direction: column;\n gap: var(--ds-spacing-3);\n }\n\n .searchInput {\n width: 100%;\n min-width: auto;\n }\n\n .menuButton {\n width: 100%;\n justify-content: center;\n }\n}",".footer {\n background-color: var(--ds-color-neutral-surface-subtle);\n border-top: 1px solid var(--ds-color-neutral-border-subtle);\n margin-top: auto;\n}\n\n.container {\n max-width: 1440px;\n margin: 0 auto;\n padding: var(--ds-spacing-6) var(--ds-spacing-4);\n}\n\n.content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--ds-spacing-4);\n flex-wrap: wrap;\n}\n\n@media (max-width: 768px) {\n .content {\n flex-direction: column;\n align-items: flex-start;\n }\n\n\n}",".root {\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n}\n\n.main {\n flex: 1;\n}"],"mappings":";AAAA,CAACA;AACC,2BAAyB,IAAI;AAC7B,WAAS,OAAO,EAAE,EAAE;AACtB;AAEA,CAACC;AACC,mBAAiB;AACjB,yBAAuB;AACvB,SAAO,IAAI;AACb;AAEA,CANCA,gBAMI,OACL,CAPCA,gBAOI;AACH,SAAO,IAAI;AACb;AAEA,CAACC;AACC,mBAAiB;AACjB,eAAa;AACb,kBAAgB;AAChB,SAAO,IAAI;AACb;;;ACrBA,CAACC;AACC,WAAS;AACT,kBAAgB;AAChB,OAAK,IAAI;AACT,WAAS,IAAI,gBAAgB,IAAI;AACnC;AAEA,CAACC;AACC,aAAW,IAAI;AACf,eAAa,IAAI;AACjB,SAAO,IAAI;AACb;AAEA,CAACC;AACC,aAAW,IAAI;AACf,SAAO,IAAI;AACb;AAEA,CAACC;AACC,oBAAkB,IAAI;AACxB;AAEA,CAACC;AACC,WAAS;AACT,OAAK,IAAI;AACT,WAAS,IAAI;AACf;AAEA,CAACC;AACC,QAAM;AACN,aAAW;AACb;AAEA,CAACC;AACC,eAAa;AACb,WAAS,IAAI;AACb,SAAO,IAAI;AACX,iBAAe,IAAI,MAAM,IAAI;AAC7B,iBAAe,IAAI;AACnB,kBAAgB;AAClB;;;ACxCA,CAACC;AACC,oBAAkB,IAAI;AACtB,iBAAe,IAAI,MAAM,IAAI;AAC7B,YAAU;AACV,OAAK;AACL,WAAS;AACX;AAEA,CAACC;AACC,aAAW;AACX,UAAQ,EAAE;AACV,WAAS,EAAE,IAAI;AACjB;AAEA,CAACC;AACC,WAAS;AACT,mBAAiB;AACjB,eAAa;AACb,WAAS,QAAQ;AACnB;AAEA,CAACC;AACC,UAAQ;AACR,SAAO,IAAI;AACX,eAAa;AACb,WAAS;AACT,eAAa;AACb,cAAY;AACd;AAEA,CAACC;AACC,WAAS;AACT,eAAa;AACb,OAAK,IAAI;AACT,cAAY;AACd;AAEA,CAACC;AACC,aAAW;AACX,WAAS;AACT,eAAa;AACf;AAEA,OAAO,CAAC,SAAS,EAAE;AACjB,GAACC;AACC,aAAS,EAAE,IAAI;AACjB;AAEA,GAACC;AACC,eAAW;AACX,aAAS,IAAI,gBAAgB;AAC/B;AAEA,GAACC;AACC,WAAO;AACP,WAAO;AACP,oBAAgB;AAChB,SAAK,IAAI;AACX;AAEA,GAvBDH;AAwBG,WAAO;AACP,eAAW;AACb;AAEA,GAACI;AACC,WAAO;AACP,qBAAiB;AACnB;AACF;;;ACrEA,CAACC;AACC,oBAAkB,IAAI;AACtB,cAAY,IAAI,MAAM,IAAI;AAC1B,cAAY;AACd;AAEA,CAACC;AACC,aAAW;AACX,UAAQ,EAAE;AACV,WAAS,IAAI,gBAAgB,IAAI;AACnC;AAEA,CAACC;AACC,WAAS;AACT,mBAAiB;AACjB,eAAa;AACb,OAAK,IAAI;AACT,aAAW;AACb;AAEA,OAAO,CAAC,SAAS,EAAE;AACjB,GATDA;AAUG,oBAAgB;AAChB,iBAAa;AACf;AAGF;;;AC3BA,CAACC;AACC,WAAS;AACT,kBAAgB;AAChB,cAAY;AACd;AAEA,CAACC;AACC,QAAM;AACR;","names":["breadcrumbs","link","currentLink","userInfo","userName","userEmail","menuButton","devContainer","zoneSection","zoneTitle","header","headerContainer","topBarContainer","logo","actionsContainer","searchInput","container","topBar","actions","menuButton","footer","container","content","root","main"]}
1
+ {"version":3,"sources":["../src/components/Breadcrumbs/Breadcrumbs.module.css","../src/components/MenuButton/MenuButton.module.css","../src/components/GlobalHeader/GlobalHeader.module.css","../src/components/GlobalFooter/GlobalFooter.module.css","../src/components/RootLayout/RootLayout.module.css"],"sourcesContent":[".breadcrumbs {\n --dsc-breadcrumbs-color: var(--ds-color-text-default);\n padding: 2.5rem 0 0 0;\n}\n\n.link {\n text-decoration: underline;\n text-underline-offset: 2px;\n color: var(--ds-color-text-default);\n}\n\n.link:hover \n.link:visited{\n color: var(--ds-color-text-default);\n}\n\n.currentLink {\n text-decoration: none;\n font-weight: 500;\n pointer-events: none;\n color: var(--ds-color-text-default);\n}\n",".userInfo {\n display: flex;\n flex-direction: column;\n gap: var(--ds-spacing-1);\n padding: var(--ds-spacing-2) var(--ds-spacing-3);\n}\n\n.userName {\n font-size: var(--ds-font-size-sm);\n font-weight: var(--ds-font-weight-medium);\n color: var(--ds-color-neutral-text-default);\n}\n\n.userEmail {\n font-size: var(--ds-font-size-xs);\n color: var(--ds-color-neutral-text-subtle);\n}\n\n.menuButton {\n background-color: var(--ds-color-neutral-base-default);\n}\n\n.devContainer {\n display: flex;\n gap: var(--ds-spacing-4);\n padding: var(--ds-spacing-2);\n}\n\n.zoneSection {\n flex: 1;\n min-width: 12rem;\n}\n\n.zoneTitle {\n font-weight: 600;\n padding: var(--ds-spacing-2);\n color: var(--ds-color-neutral-text-default);\n border-bottom: 1px solid var(--ds-color-neutral-border-subtle);\n margin-bottom: var(--ds-spacing-2);\n text-transform: capitalize;\n}\n",".header {\n background-color: var(--ds-color-accent-surface-tinted);\n border-bottom: 1px solid var(--ds-color-neutral-border-subtle);\n position: sticky;\n top: 0;\n z-index: 100;\n}\n\n.headerContainer {\n max-width: 90rem;\n margin: 0 auto;\n padding: 0 var(--ds-size-30);\n}\n\n.topBarContainer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.25rem 0;\n}\n\n.logo {\n margin: 0;\n color: var(--ds-color-neutral-text-default);\n white-space: nowrap;\n display: flex;\n align-items: center;\n min-height: inherit;\n}\n\n.actionsContainer {\n display: flex;\n align-items: stretch;\n gap: var(--ds-size-9);\n min-height: inherit;\n}\n\n.searchInput {\n min-width: 12.5rem;\n display: flex;\n align-items: center;\n}\n\n@media (max-width: 768px) {\n .container {\n padding: 0 var(--ds-spacing-4);\n }\n\n .topBar {\n flex-wrap: wrap;\n padding: var(--ds-spacing-4) 0;\n }\n\n .actions {\n order: 3;\n width: 100%;\n flex-direction: column;\n gap: var(--ds-spacing-3);\n }\n\n .searchInput {\n width: 100%;\n min-width: auto;\n }\n\n .menuButton {\n width: 100%;\n justify-content: center;\n }\n}",".footer {\n background-color: var(--ds-color-neutral-surface-subtle);\n border-top: 1px solid var(--ds-color-neutral-border-subtle);\n margin-top: auto;\n}\n\n.container {\n max-width: 1440px;\n margin: 0 auto;\n padding: var(--ds-spacing-6) var(--ds-spacing-4);\n}\n\n.content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--ds-spacing-4);\n flex-wrap: wrap;\n}\n\n@media (max-width: 768px) {\n .content {\n flex-direction: column;\n align-items: flex-start;\n }\n\n\n}",".root {\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n}\n\n.main {\n flex: 1;\n}"],"mappings":";AAAA,CAAC;AACC,2BAAyB,IAAI;AAC7B,WAAS,OAAO,EAAE,EAAE;AACtB;AAEA,CAAC;AACC,mBAAiB;AACjB,yBAAuB;AACvB,SAAO,IAAI;AACb;AAEA,CANC,IAMI,OACL,CAPC,IAOI;AACH,SAAO,IAAI;AACb;AAEA,CAAC;AACC,mBAAiB;AACjB,eAAa;AACb,kBAAgB;AAChB,SAAO,IAAI;AACb;;;ACrBA,CAAC;AACC,WAAS;AACT,kBAAgB;AAChB,OAAK,IAAI;AACT,WAAS,IAAI,gBAAgB,IAAI;AACnC;AAEA,CAAC;AACC,aAAW,IAAI;AACf,eAAa,IAAI;AACjB,SAAO,IAAI;AACb;AAEA,CAAC;AACC,aAAW,IAAI;AACf,SAAO,IAAI;AACb;AAEA,CAAC;AACC,oBAAkB,IAAI;AACxB;AAEA,CAAC;AACC,WAAS;AACT,OAAK,IAAI;AACT,WAAS,IAAI;AACf;AAEA,CAAC;AACC,QAAM;AACN,aAAW;AACb;AAEA,CAAC;AACC,eAAa;AACb,WAAS,IAAI;AACb,SAAO,IAAI;AACX,iBAAe,IAAI,MAAM,IAAI;AAC7B,iBAAe,IAAI;AACnB,kBAAgB;AAClB;;;ACxCA,CAAC;AACC,oBAAkB,IAAI;AACtB,iBAAe,IAAI,MAAM,IAAI;AAC7B,YAAU;AACV,OAAK;AACL,WAAS;AACX;AAEA,CAAC;AACC,aAAW;AACX,UAAQ,EAAE;AACV,WAAS,EAAE,IAAI;AACjB;AAEA,CAAC;AACC,WAAS;AACT,mBAAiB;AACjB,eAAa;AACb,WAAS,QAAQ;AACnB;AAEA,CAAC;AACC,UAAQ;AACR,SAAO,IAAI;AACX,eAAa;AACb,WAAS;AACT,eAAa;AACb,cAAY;AACd;AAEA,CAAC;AACC,WAAS;AACT,eAAa;AACb,OAAK,IAAI;AACT,cAAY;AACd;AAEA,CAAC;AACC,aAAW;AACX,WAAS;AACT,eAAa;AACf;AAEA,OAAO,CAAC,SAAS,EAAE;AACjB,GAAC;AACC,aAAS,EAAE,IAAI;AACjB;AAEA,GAAC;AACC,eAAW;AACX,aAAS,IAAI,gBAAgB;AAC/B;AAEA,GAAC;AACC,WAAO;AACP,WAAO;AACP,oBAAgB;AAChB,SAAK,IAAI;AACX;AAEA,GAvBD;AAwBG,WAAO;AACP,eAAW;AACb;AAEA,GAAC;AACC,WAAO;AACP,qBAAiB;AACnB;AACF;;;ACrEA,CAAC;AACC,oBAAkB,IAAI;AACtB,cAAY,IAAI,MAAM,IAAI;AAC1B,cAAY;AACd;AAEA,CAAC;AACC,aAAW;AACX,UAAQ,EAAE;AACV,WAAS,IAAI,gBAAgB,IAAI;AACnC;AAEA,CAAC;AACC,WAAS;AACT,mBAAiB;AACjB,eAAa;AACb,OAAK,IAAI;AACT,aAAW;AACb;AAEA,OAAO,CAAC,SAAS,EAAE;AACjB,GATD;AAUG,oBAAgB;AAChB,iBAAa;AACf;AAGF;;;AC3BA,CAAC;AACC,WAAS;AACT,kBAAgB;AAChB,cAAY;AACd;AAEA,CAAC;AACC,QAAM;AACR;","names":[]}
package/dist/index.js CHANGED
@@ -51,11 +51,7 @@ var import_designsystemet_react = require("@digdir/designsystemet-react");
51
51
  var import_clsx = __toESM(require("clsx"));
52
52
 
53
53
  // src/components/Breadcrumbs/Breadcrumbs.module.css
54
- var Breadcrumbs_default = {
55
- breadcrumbs: "Breadcrumbs_breadcrumbs",
56
- link: "Breadcrumbs_link",
57
- currentLink: "Breadcrumbs_currentLink"
58
- };
54
+ var Breadcrumbs_default = {};
59
55
 
60
56
  // src/routes.ts
61
57
  var ZONE_TREES_INPUT = {
@@ -237,15 +233,7 @@ var import_designsystemet_react2 = require("@digdir/designsystemet-react");
237
233
  var import_lucide_react = require("lucide-react");
238
234
 
239
235
  // src/components/MenuButton/MenuButton.module.css
240
- var MenuButton_default = {
241
- userInfo: "MenuButton_userInfo",
242
- userName: "MenuButton_userName",
243
- userEmail: "MenuButton_userEmail",
244
- menuButton: "MenuButton_menuButton",
245
- devContainer: "MenuButton_devContainer",
246
- zoneSection: "MenuButton_zoneSection",
247
- zoneTitle: "MenuButton_zoneTitle"
248
- };
236
+ var MenuButton_default = {};
249
237
 
250
238
  // src/components/MenuButton/MenuButton.tsx
251
239
  var import_jsx_runtime2 = require("react/jsx-runtime");
@@ -269,21 +257,10 @@ function MenuButton({ zone }) {
269
257
  }
270
258
 
271
259
  // src/components/GlobalHeader/GlobalHeader.module.css
272
- var GlobalHeader_default = {
273
- header: "GlobalHeader_header",
274
- headerContainer: "GlobalHeader_headerContainer",
275
- topBarContainer: "GlobalHeader_topBarContainer",
276
- logo: "GlobalHeader_logo",
277
- actionsContainer: "GlobalHeader_actionsContainer",
278
- searchInput: "GlobalHeader_searchInput",
279
- container: "GlobalHeader_container",
280
- topBar: "GlobalHeader_topBar",
281
- actions: "GlobalHeader_actions",
282
- menuButton: "GlobalHeader_menuButton"
283
- };
260
+ var GlobalHeader_default = {};
284
261
 
285
262
  // src/logo.svg
286
- var logo_default = "./logo-X7RC63NT.svg";
263
+ var logo_default = "./logo-JRXKWS5H.svg";
287
264
 
288
265
  // src/components/GlobalHeader/GlobalHeader.tsx
289
266
  var import_jsx_runtime3 = require("react/jsx-runtime");
@@ -315,11 +292,7 @@ var import_designsystemet_react4 = require("@digdir/designsystemet-react");
315
292
  var import_clsx3 = __toESM(require("clsx"));
316
293
 
317
294
  // src/components/GlobalFooter/GlobalFooter.module.css
318
- var GlobalFooter_default = {
319
- footer: "GlobalFooter_footer",
320
- container: "GlobalFooter_container",
321
- content: "GlobalFooter_content"
322
- };
295
+ var GlobalFooter_default = {};
323
296
 
324
297
  // src/components/GlobalFooter/GlobalFooter.tsx
325
298
  var import_jsx_runtime4 = require("react/jsx-runtime");
@@ -328,10 +301,7 @@ function GlobalFooter({ className }) {
328
301
  }
329
302
 
330
303
  // src/components/RootLayout/RootLayout.module.css
331
- var RootLayout_default = {
332
- root: "RootLayout_root",
333
- main: "RootLayout_main"
334
- };
304
+ var RootLayout_default = {};
335
305
 
336
306
  // src/store/globalState.ts
337
307
  var import_zustand = require("zustand");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/RootLayout/RootLayout.tsx","../src/components/GlobalHeader/GlobalHeader.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumbs.module.css","../src/routes.ts","../src/components/MenuButton/MenuButton.tsx","../src/components/MenuButton/MenuButton.module.css","../src/components/GlobalHeader/GlobalHeader.module.css","../src/components/GlobalFooter/GlobalFooter.tsx","../src/components/GlobalFooter/GlobalFooter.module.css","../src/components/RootLayout/RootLayout.module.css","../src/store/globalState.ts"],"sourcesContent":["'use client';\n\nexport { RootLayout } from './components/RootLayout';\nexport type { RootLayoutProps } from './components/RootLayout';\n\nexport { useGlobalStore } from './store/globalState';\nexport type { GlobalState } from './store/globalState';\n","'use client';\n\nimport { useEffect } from 'react';\nimport clsx from 'clsx';\nimport { GlobalHeader } from '../GlobalHeader';\nimport { GlobalFooter } from '../GlobalFooter';\nimport type { RootLayoutProps } from './RootLayout.types';\nimport styles from './RootLayout.module.css';\nimport { useGlobalStore } from '@/store/globalState';\n\nexport function RootLayout({\n children,\n zone, \n className,\n}: RootLayoutProps) {\n const initialize = useGlobalStore((state) => state.initialize);\n\n useEffect(() => {\n try {\n const maybe = initialize();\n if (maybe && typeof (maybe as Promise<void>).then === 'function') {\n (maybe as Promise<void>).catch((error) => {\n console.error('Failed to initialize global state:', error);\n });\n }\n } catch (error) {\n console.error('Failed to initialize global state:', error);\n }\n }, [initialize]);\n\n\n return (\n <div className={clsx(styles.root, className)} data-zone={zone}>\n <GlobalHeader zone={zone}/>\n <main className={styles.main}>{children}</main>\n <GlobalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport { Link, Textfield } from '@digdir/designsystemet-react';\nimport clsx from 'clsx';\nimport { Breadcrumbs } from '../Breadcrumbs';\nimport { MenuButton } from '../MenuButton';\nimport type { GlobalHeaderProps } from './GlobalHeader.types';\nimport styles from './GlobalHeader.module.css';\nimport logo from '../../logo.svg'; \n\nexport function GlobalHeader({ className, zone }: GlobalHeaderProps) {\n const [searchValue, setSearchValue] = useState('');\n\n return (\n <header className={clsx(styles.header, className)}>\n <div className={styles.headerContainer}>\n <div className={styles.topBarContainer}>\n <Link href=\"https://www.statsbygg.no\">\n <img src={logo} alt=\"Logo\" className={styles.logo} />\n </Link>\n <div className={styles.actionsContainer}>\n <Textfield\n value={searchValue}\n onChange={(e) => setSearchValue(e.target.value)}\n placeholder=\"Søk...\"\n className={styles.searchInput}\n aria-label=\"Søk\"\n />\n <MenuButton zone={zone}/>\n </div>\n </div>\n <Breadcrumbs zone={zone} />\n </div>\n </header>\n );\n}","'use client';\n\nimport { usePathname } from 'next/navigation';\nimport { Breadcrumbs } from '@digdir/designsystemet-react';\nimport clsx from 'clsx';\nimport type { BreadcrumbsProps } from './Breadcrumbs.types';\nimport styles from './Breadcrumbs.module.css';\nimport { getBreadcrumbs, getZoneRoot, transformHrefForZone } from '@/routes';\n\nexport function SbBreadcrumbs({ className, zone }: BreadcrumbsProps) {\n const pathname = usePathname();\n const isDev = process.env.NODE_ENV === 'development';\n const prodUrl = 'https://www.statsbygg.no';\n const zoneRoot = getZoneRoot(zone);\n \n const fullPath = isDev && zoneRoot !== '/' && !pathname.startsWith(zoneRoot)\n ? `${zoneRoot}${pathname}`\n : pathname;\n \n const breadcrumbs = getBreadcrumbs(zone, fullPath);\n\n if (breadcrumbs.length <= 1) {\n return null;\n }\n\n\n return (\n <Breadcrumbs aria-label=\"Du er her:\" className={clsx(styles.breadcrumbs, className)}>\n <Breadcrumbs.List>\n {breadcrumbs.map((crumb, index) => {\n const isLast = index === breadcrumbs.length - 1;\n const href = transformHrefForZone(crumb.href, zone, { isDev, prodUrl });\n \n return (\n <Breadcrumbs.Item key={crumb.href}>\n <Breadcrumbs.Link\n href={href}\n aria-current={isLast ? 'page' : undefined}\n className={isLast ? styles.currentLink : styles.link}\n >\n {crumb.label}\n </Breadcrumbs.Link>\n </Breadcrumbs.Item>\n );\n })}\n </Breadcrumbs.List>\n </Breadcrumbs>\n );\n}",".breadcrumbs {\n --dsc-breadcrumbs-color: var(--ds-color-text-default);\n padding: 2.5rem 0 0 0;\n}\n\n.link {\n text-decoration: underline;\n text-underline-offset: 2px;\n color: var(--ds-color-text-default);\n}\n\n.link:hover \n.link:visited{\n color: var(--ds-color-text-default);\n}\n\n.currentLink {\n text-decoration: none;\n font-weight: 500;\n pointer-events: none;\n color: var(--ds-color-text-default);\n}\n","export type RouteNodeInput =\n | { segment: string; label: string; children?: RouteNodeInput[] }\n | { path: string; label: string; children?: RouteNodeInput[] };\n\nexport type RouteNode = {\n path: string;\n label: string;\n children?: RouteNode[];\n};\n\nexport type RouteDefinition = {\n path: string;\n label: string;\n zone: string;\n};\n\nconst ZONE_TREES_INPUT: Record<string, RouteNodeInput> = {\n sbno: {\n segment: '',// primary root route, no breadcrumb\n label: 'Hjem',\n children: [\n { segment: 'nyheter', label: 'Nyheter' },\n ],\n },\n lokaler: {\n segment: 'lokaler',\n label: 'Statens eide og leide lokaler',\n children: [\n {\n segment: 'lokalbruk', label: 'Lokalbruk'\n },\n { segment: 'veiledning', label: 'Veiledning' },\n { segment: 'statlige-eiendommer', label: 'Statlige eiendommer' },\n { segment: 'ledig-for-fremleie', label: 'Ledig for fremleie' },\n { segment: 'statistikk', label: 'Statistikk' },\n ],\n },\n};\n\n\ntype Key = `${string}:${string}`; // `${zone}:${absolutePath}`\n\nconst ROUTES_INDEX: Record<string, RouteDefinition[]> = {};\nconst PARENT_INDEX = new Map<Key, Key | null>(); // child -> parent\nconst ZONE_TREES: Record<string, RouteNode> = {}; // normalized absolute trees\n\nfunction isSegmentNode(n: RouteNodeInput): n is Extract<RouteNodeInput, { segment: string }> {\n return (n as any).segment !== undefined && (n as any).path === undefined;\n}\nfunction isPathNode(n: RouteNodeInput): n is Extract<RouteNodeInput, { path: string }> {\n return (n as any).path !== undefined;\n}\n\nfunction joinPath(base: string, seg: string): string {\n if (!base) return seg ? `/${seg}` : '/';\n return seg ? `${base.replace(/\\/+$/, '')}/${seg.replace(/^\\/+/, '')}` : base || '/';\n}\n\nfunction normalizeToAbsolute(node: RouteNodeInput, base = ''): RouteNode {\n const path = isSegmentNode(node)\n ? joinPath(base, node.segment)\n : isPathNode(node)\n ? (node.path === '' ? '/' : node.path)\n : '/';\n\n const children = (node.children ?? []).map((c) => normalizeToAbsolute(c, path));\n return { path, label: (node as any).label, children: children.length ? children : undefined };\n}\n\n(function buildAll() {\n // Normalize each zone tree to absolute paths\n Object.keys(ZONE_TREES_INPUT).forEach((zone) => {\n ZONE_TREES[zone] = normalizeToAbsolute(ZONE_TREES_INPUT[zone]);\n });\n\n // Build flat indexes + parent relationships\n function walk(zone: string, node: RouteNode, parentKey: Key | null) {\n const def: RouteDefinition = { zone, path: node.path, label: node.label };\n const key: Key = `${zone}:${node.path}`;\n ROUTES_INDEX[zone].push(def);\n PARENT_INDEX.set(key, parentKey);\n for (const child of node.children ?? []) {\n walk(zone, child, key);\n }\n }\n\n (Object.keys(ZONE_TREES) as string[]).forEach((zone) => {\n ROUTES_INDEX[zone] = [];\n walk(zone, ZONE_TREES[zone], null);\n });\n})();\n\n\nfunction findBestMatch(zone: string, pathname: string): RouteDefinition | undefined {\n const list = ROUTES_INDEX[zone] ?? [];\n let best: RouteDefinition | undefined;\n\n for (const r of list) {\n if (pathname === r.path) {\n best = r; // exact wins\n break;\n }\n if (pathname.startsWith(r.path.endsWith('/') ? r.path : r.path + '/')) {\n if (!best || r.path.length > best.path.length) best = r;\n }\n }\n // fallback: zone root\n return best ?? list.find((r) => r.path === ZONE_TREES[zone]?.path);\n}\n\nexport function getZoneRoutes(zone: string): RouteDefinition[] {\n return ROUTES_INDEX[zone] ?? [];\n}\n\n// Top-level links for a zone’s menu (children of the zone root)\nexport function getZoneMenuRoutes(zone: string): RouteDefinition[] {\n const root = ZONE_TREES[zone];\n const children = root?.children ?? [];\n return children.map((c) => ({ zone, path: c.path, label: c.label }));\n}\n\nexport function getAllZones(): string[] {\n return Object.keys(ZONE_TREES);\n}\n\nexport function getZoneRoot(zone: string): string {\n return ZONE_TREES[zone]?.path || '/';\n}\n\n// prettify dynamic slug labels\nfunction labelFromSlug(slug: string): string {\n try {\n const s = decodeURIComponent(slug).replace(/[-_]+/g, ' ').trim();\n return s ? s.charAt(0).toUpperCase() + s.slice(1) : slug;\n } catch {\n return slug;\n }\n}\n\nexport function getBreadcrumbs(\n zone: string,\n pathname: string\n): Array<{ label: string; href: string }> {\n\n const normalizedPathname = pathname === '/' ? pathname : pathname.replace(/\\/+$/, '');\n\n // sbno root has no crumbs\n if (zone === 'sbno' && normalizedPathname === '/') return [];\n\n const match = findBestMatch(zone, normalizedPathname);\n if (!match) return [];\n\n const chain: RouteDefinition[] = [];\n let key: Key | undefined = `${zone}:${match.path}`;\n while (key) {\n const parentKey = PARENT_INDEX.get(key);\n const [z, p] = key.split(':') as [string, string];\n const def = (ROUTES_INDEX[z] ?? []).find((r) => r.path === p);\n if (def) chain.unshift(def);\n key = parentKey ?? undefined;\n }\n\n const homeRoute = (ROUTES_INDEX.sbno ?? []).find((r) => r.path === '/');\n if (\n homeRoute &&\n !(chain.length === 1 && chain[0].zone === 'sbno' && chain[0].path === '/') &&\n (chain.length === 0 || chain[0].path !== homeRoute.path)\n ) {\n chain.unshift(homeRoute);\n }\n\n // If the pathname is deeper than the best static match, add a dynamic tail\n const last = chain[chain.length - 1];\n if (last && normalizedPathname !== last.path && normalizedPathname.startsWith(last.path.endsWith('/') ? last.path : last.path + '/')) {\n const segments = normalizedPathname.split('/').filter(Boolean);\n const tail = segments[segments.length - 1];\n chain.push({ zone, path: normalizedPathname, label: labelFromSlug(tail) });\n }\n\n return chain.map((r) => ({ label: r.label, href: r.path }));\n}\n\nexport function transformHrefForZone(\n targetPath: string,\n currentZone: string,\n options: {\n isDev: boolean;\n prodUrl?: string;\n }\n): string {\n const { isDev, prodUrl } = options;\n\n const targetZone = getZoneFromPathname(targetPath);\n const isCrossZone = targetZone !== currentZone;\n\n if (isCrossZone && isDev && prodUrl) {\n return `${prodUrl}${targetPath}`;\n }\n\n const currentZoneRoot = getZoneRoot(currentZone);\n if (!isCrossZone && isDev && currentZoneRoot !== '/') {\n return targetPath.replace(currentZoneRoot, '') || '/';\n }\n\n return targetPath;\n}\n\nexport function getZoneFromPathname(pathname: string): string {\n if (pathname.startsWith('/lokaler')) return 'lokaler';\n return 'sbno';\n}","'use client';\n\nimport Link from 'next/link';\nimport { Dropdown } from '@digdir/designsystemet-react';\nimport { Menu } from 'lucide-react';\nimport { getZoneMenuRoutes, getAllZones, transformHrefForZone } from '@/routes';\nimport type { MenuButtonProps } from './MenuButton.types';\nimport styles from './MenuButton.module.css';\n\nexport function MenuButton({ zone }: MenuButtonProps) {\n const isDev = process.env.NODE_ENV === 'development';\n // TODO: Temporary here. Should come from env or something\n const prodUrl = 'https://www.statsbygg.no';\n const allZones = getAllZones();\n\n return (\n <Dropdown.TriggerContext>\n <Dropdown.Trigger asChild className={styles.menuButton}>\n <Menu size={20} aria-hidden />\n Meny\n </Dropdown.Trigger>\n <Dropdown>\n {isDev ? (\n <div className={styles.devContainer}>\n {allZones.map((z) => {\n const routes = getZoneMenuRoutes(z);\n return (\n <div key={z} className={styles.zoneSection}>\n <div className={styles.zoneTitle}>{z}</div>\n <Dropdown.List>\n {routes.map((r) => (\n <Dropdown.Item key={`${r.zone}:${r.path}`}>\n <Link href={transformHrefForZone(r.path, zone, { isDev, prodUrl })}>\n {r.label}\n </Link>\n </Dropdown.Item>\n ))}\n </Dropdown.List>\n </div>\n );\n })}\n </div>\n ) : (\n <Dropdown.List>\n {getZoneMenuRoutes(zone).map((r) => (\n <Dropdown.Item key={`${r.zone}:${r.path}`}>\n <Link href={transformHrefForZone(r.path, zone, { isDev, prodUrl })}>\n {r.label}\n </Link>\n </Dropdown.Item>\n ))}\n </Dropdown.List>\n )}\n </Dropdown>\n </Dropdown.TriggerContext>\n );\n}",".userInfo {\n display: flex;\n flex-direction: column;\n gap: var(--ds-spacing-1);\n padding: var(--ds-spacing-2) var(--ds-spacing-3);\n}\n\n.userName {\n font-size: var(--ds-font-size-sm);\n font-weight: var(--ds-font-weight-medium);\n color: var(--ds-color-neutral-text-default);\n}\n\n.userEmail {\n font-size: var(--ds-font-size-xs);\n color: var(--ds-color-neutral-text-subtle);\n}\n\n.menuButton {\n background-color: var(--ds-color-neutral-base-default);\n}\n\n.devContainer {\n display: flex;\n gap: var(--ds-spacing-4);\n padding: var(--ds-spacing-2);\n}\n\n.zoneSection {\n flex: 1;\n min-width: 12rem;\n}\n\n.zoneTitle {\n font-weight: 600;\n padding: var(--ds-spacing-2);\n color: var(--ds-color-neutral-text-default);\n border-bottom: 1px solid var(--ds-color-neutral-border-subtle);\n margin-bottom: var(--ds-spacing-2);\n text-transform: capitalize;\n}\n",".header {\n background-color: var(--ds-color-accent-surface-tinted);\n border-bottom: 1px solid var(--ds-color-neutral-border-subtle);\n position: sticky;\n top: 0;\n z-index: 100;\n}\n\n.headerContainer {\n max-width: 90rem;\n margin: 0 auto;\n padding: 0 var(--ds-size-30);\n}\n\n.topBarContainer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.25rem 0;\n}\n\n.logo {\n margin: 0;\n color: var(--ds-color-neutral-text-default);\n white-space: nowrap;\n display: flex;\n align-items: center;\n min-height: inherit;\n}\n\n.actionsContainer {\n display: flex;\n align-items: stretch;\n gap: var(--ds-size-9);\n min-height: inherit;\n}\n\n.searchInput {\n min-width: 12.5rem;\n display: flex;\n align-items: center;\n}\n\n@media (max-width: 768px) {\n .container {\n padding: 0 var(--ds-spacing-4);\n }\n\n .topBar {\n flex-wrap: wrap;\n padding: var(--ds-spacing-4) 0;\n }\n\n .actions {\n order: 3;\n width: 100%;\n flex-direction: column;\n gap: var(--ds-spacing-3);\n }\n\n .searchInput {\n width: 100%;\n min-width: auto;\n }\n\n .menuButton {\n width: 100%;\n justify-content: center;\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';\n\nexport function GlobalFooter({ className }: GlobalFooterProps) {\n\n return (\n <footer className={clsx(styles.footer, className)}>\n <div className={styles.container}>\n <div className={styles.content}>\n <Paragraph>\n Statsbygg Footer\n </Paragraph>\n\n\n </div>\n </div>\n </footer>\n );\n}",".footer {\n background-color: var(--ds-color-neutral-surface-subtle);\n border-top: 1px solid var(--ds-color-neutral-border-subtle);\n margin-top: auto;\n}\n\n.container {\n max-width: 1440px;\n margin: 0 auto;\n padding: var(--ds-spacing-6) var(--ds-spacing-4);\n}\n\n.content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--ds-spacing-4);\n flex-wrap: wrap;\n}\n\n@media (max-width: 768px) {\n .content {\n flex-direction: column;\n align-items: flex-start;\n }\n\n\n}",".root {\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n}\n\n.main {\n flex: 1;\n}","import { create, StateCreator } from 'zustand';\nimport { persist, createJSONStorage } from 'zustand/middleware';\n\nexport type Theme = 'light' | 'dark' | 'system';\n\nexport type GlobalState = {\n user?: { id: string; name?: string } | null;\n theme: Theme;\n locale: string;\n setUser: (user: GlobalState['user']) => void;\n setTheme: (theme: Theme) => void;\n setLocale: (locale: string) => void;\n initialize: () => void | Promise<void>;\n};\n\nconst creator: StateCreator<GlobalState, [['zustand/persist', unknown]]> = (set, get) => ({\n user: null,\n theme: 'light',\n locale: 'no',\n setUser: (user) => set({ user }),\n setTheme: (theme) => {\n set({ theme });\n if (typeof document !== 'undefined') {\n document.documentElement.setAttribute('data-color-scheme', theme);\n }\n },\n setLocale: (locale) => set({ locale }),\n initialize: () => {\n if (typeof document !== 'undefined') {\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 })\n);\n"],"mappings":"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","names":["import_react","import_clsx","import_designsystemet_react","import_clsx","breadcrumbs","link","currentLink","_a","clsx","import_designsystemet_react","userInfo","userName","userEmail","menuButton","devContainer","zoneSection","zoneTitle","import_jsx_runtime","Link","header","headerContainer","topBarContainer","logo","actionsContainer","searchInput","container","topBar","actions","menuButton","import_jsx_runtime","clsx","import_designsystemet_react","import_clsx","footer","container","content","import_jsx_runtime","clsx","root","main","import_jsx_runtime","clsx"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/RootLayout/RootLayout.tsx","../src/components/GlobalHeader/GlobalHeader.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumbs.module.css","../src/routes.ts","../src/components/MenuButton/MenuButton.tsx","../src/components/MenuButton/MenuButton.module.css","../src/components/GlobalHeader/GlobalHeader.module.css","../src/components/GlobalFooter/GlobalFooter.tsx","../src/components/GlobalFooter/GlobalFooter.module.css","../src/components/RootLayout/RootLayout.module.css","../src/store/globalState.ts"],"sourcesContent":["'use client';\n\nexport { RootLayout } from './components/RootLayout';\nexport type { RootLayoutProps } from './components/RootLayout';\n\nexport { useGlobalStore } from './store/globalState';\nexport type { GlobalState } from './store/globalState';\n","'use client';\n\nimport { useEffect } from 'react';\nimport clsx from 'clsx';\nimport { GlobalHeader } from '../GlobalHeader';\nimport { GlobalFooter } from '../GlobalFooter';\nimport type { RootLayoutProps } from './RootLayout.types';\nimport styles from './RootLayout.module.css';\nimport { useGlobalStore } from '@/store/globalState';\n\nexport function RootLayout({\n children,\n zone, \n className,\n}: RootLayoutProps) {\n const initialize = useGlobalStore((state) => state.initialize);\n\n useEffect(() => {\n try {\n const maybe = initialize();\n if (maybe && typeof (maybe as Promise<void>).then === 'function') {\n (maybe as Promise<void>).catch((error) => {\n console.error('Failed to initialize global state:', error);\n });\n }\n } catch (error) {\n console.error('Failed to initialize global state:', error);\n }\n }, [initialize]);\n\n\n return (\n <div className={clsx(styles.root, className)} data-zone={zone}>\n <GlobalHeader zone={zone}/>\n <main className={styles.main}>{children}</main>\n <GlobalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport { Link, Textfield } from '@digdir/designsystemet-react';\nimport clsx from 'clsx';\nimport { Breadcrumbs } from '../Breadcrumbs';\nimport { MenuButton } from '../MenuButton';\nimport type { GlobalHeaderProps } from './GlobalHeader.types';\nimport styles from './GlobalHeader.module.css';\nimport logo from '../../logo.svg'; \n\nexport function GlobalHeader({ className, zone }: GlobalHeaderProps) {\n const [searchValue, setSearchValue] = useState('');\n\n return (\n <header className={clsx(styles.header, className)}>\n <div className={styles.headerContainer}>\n <div className={styles.topBarContainer}>\n <Link href=\"https://www.statsbygg.no\">\n <img src={logo} alt=\"Logo\" className={styles.logo} />\n </Link>\n <div className={styles.actionsContainer}>\n <Textfield\n value={searchValue}\n onChange={(e) => setSearchValue(e.target.value)}\n placeholder=\"Søk...\"\n className={styles.searchInput}\n aria-label=\"Søk\"\n />\n <MenuButton zone={zone}/>\n </div>\n </div>\n <Breadcrumbs zone={zone} />\n </div>\n </header>\n );\n}","'use client';\n\nimport { usePathname } from 'next/navigation';\nimport { Breadcrumbs } from '@digdir/designsystemet-react';\nimport clsx from 'clsx';\nimport type { BreadcrumbsProps } from './Breadcrumbs.types';\nimport styles from './Breadcrumbs.module.css';\nimport { getBreadcrumbs, getZoneRoot, transformHrefForZone } from '@/routes';\n\nexport function SbBreadcrumbs({ className, zone }: BreadcrumbsProps) {\n const pathname = usePathname();\n const isDev = process.env.NODE_ENV === 'development';\n const prodUrl = 'https://www.statsbygg.no';\n const zoneRoot = getZoneRoot(zone);\n \n const fullPath = isDev && zoneRoot !== '/' && !pathname.startsWith(zoneRoot)\n ? `${zoneRoot}${pathname}`\n : pathname;\n \n const breadcrumbs = getBreadcrumbs(zone, fullPath);\n\n if (breadcrumbs.length <= 1) {\n return null;\n }\n\n\n return (\n <Breadcrumbs aria-label=\"Du er her:\" className={clsx(styles.breadcrumbs, className)}>\n <Breadcrumbs.List>\n {breadcrumbs.map((crumb, index) => {\n const isLast = index === breadcrumbs.length - 1;\n const href = transformHrefForZone(crumb.href, zone, { isDev, prodUrl });\n \n return (\n <Breadcrumbs.Item key={crumb.href}>\n <Breadcrumbs.Link\n href={href}\n aria-current={isLast ? 'page' : undefined}\n className={isLast ? styles.currentLink : styles.link}\n >\n {crumb.label}\n </Breadcrumbs.Link>\n </Breadcrumbs.Item>\n );\n })}\n </Breadcrumbs.List>\n </Breadcrumbs>\n );\n}",".breadcrumbs {\n --dsc-breadcrumbs-color: var(--ds-color-text-default);\n padding: 2.5rem 0 0 0;\n}\n\n.link {\n text-decoration: underline;\n text-underline-offset: 2px;\n color: var(--ds-color-text-default);\n}\n\n.link:hover \n.link:visited{\n color: var(--ds-color-text-default);\n}\n\n.currentLink {\n text-decoration: none;\n font-weight: 500;\n pointer-events: none;\n color: var(--ds-color-text-default);\n}\n","export type RouteNodeInput =\n | { segment: string; label: string; children?: RouteNodeInput[] }\n | { path: string; label: string; children?: RouteNodeInput[] };\n\nexport type RouteNode = {\n path: string;\n label: string;\n children?: RouteNode[];\n};\n\nexport type RouteDefinition = {\n path: string;\n label: string;\n zone: string;\n};\n\nconst ZONE_TREES_INPUT: Record<string, RouteNodeInput> = {\n sbno: {\n segment: '',// primary root route, no breadcrumb\n label: 'Hjem',\n children: [\n { segment: 'nyheter', label: 'Nyheter' },\n ],\n },\n lokaler: {\n segment: 'lokaler',\n label: 'Statens eide og leide lokaler',\n children: [\n {\n segment: 'lokalbruk', label: 'Lokalbruk'\n },\n { segment: 'veiledning', label: 'Veiledning' },\n { segment: 'statlige-eiendommer', label: 'Statlige eiendommer' },\n { segment: 'ledig-for-fremleie', label: 'Ledig for fremleie' },\n { segment: 'statistikk', label: 'Statistikk' },\n ],\n },\n};\n\n\ntype Key = `${string}:${string}`; // `${zone}:${absolutePath}`\n\nconst ROUTES_INDEX: Record<string, RouteDefinition[]> = {};\nconst PARENT_INDEX = new Map<Key, Key | null>(); // child -> parent\nconst ZONE_TREES: Record<string, RouteNode> = {}; // normalized absolute trees\n\nfunction isSegmentNode(n: RouteNodeInput): n is Extract<RouteNodeInput, { segment: string }> {\n return (n as any).segment !== undefined && (n as any).path === undefined;\n}\nfunction isPathNode(n: RouteNodeInput): n is Extract<RouteNodeInput, { path: string }> {\n return (n as any).path !== undefined;\n}\n\nfunction joinPath(base: string, seg: string): string {\n if (!base) return seg ? `/${seg}` : '/';\n return seg ? `${base.replace(/\\/+$/, '')}/${seg.replace(/^\\/+/, '')}` : base || '/';\n}\n\nfunction normalizeToAbsolute(node: RouteNodeInput, base = ''): RouteNode {\n const path = isSegmentNode(node)\n ? joinPath(base, node.segment)\n : isPathNode(node)\n ? (node.path === '' ? '/' : node.path)\n : '/';\n\n const children = (node.children ?? []).map((c) => normalizeToAbsolute(c, path));\n return { path, label: (node as any).label, children: children.length ? children : undefined };\n}\n\n(function buildAll() {\n // Normalize each zone tree to absolute paths\n Object.keys(ZONE_TREES_INPUT).forEach((zone) => {\n ZONE_TREES[zone] = normalizeToAbsolute(ZONE_TREES_INPUT[zone]);\n });\n\n // Build flat indexes + parent relationships\n function walk(zone: string, node: RouteNode, parentKey: Key | null) {\n const def: RouteDefinition = { zone, path: node.path, label: node.label };\n const key: Key = `${zone}:${node.path}`;\n ROUTES_INDEX[zone].push(def);\n PARENT_INDEX.set(key, parentKey);\n for (const child of node.children ?? []) {\n walk(zone, child, key);\n }\n }\n\n (Object.keys(ZONE_TREES) as string[]).forEach((zone) => {\n ROUTES_INDEX[zone] = [];\n walk(zone, ZONE_TREES[zone], null);\n });\n})();\n\n\nfunction findBestMatch(zone: string, pathname: string): RouteDefinition | undefined {\n const list = ROUTES_INDEX[zone] ?? [];\n let best: RouteDefinition | undefined;\n\n for (const r of list) {\n if (pathname === r.path) {\n best = r; // exact wins\n break;\n }\n if (pathname.startsWith(r.path.endsWith('/') ? r.path : r.path + '/')) {\n if (!best || r.path.length > best.path.length) best = r;\n }\n }\n // fallback: zone root\n return best ?? list.find((r) => r.path === ZONE_TREES[zone]?.path);\n}\n\nexport function getZoneRoutes(zone: string): RouteDefinition[] {\n return ROUTES_INDEX[zone] ?? [];\n}\n\n// Top-level links for a zone’s menu (children of the zone root)\nexport function getZoneMenuRoutes(zone: string): RouteDefinition[] {\n const root = ZONE_TREES[zone];\n const children = root?.children ?? [];\n return children.map((c) => ({ zone, path: c.path, label: c.label }));\n}\n\nexport function getAllZones(): string[] {\n return Object.keys(ZONE_TREES);\n}\n\nexport function getZoneRoot(zone: string): string {\n return ZONE_TREES[zone]?.path || '/';\n}\n\n// prettify dynamic slug labels\nfunction labelFromSlug(slug: string): string {\n try {\n const s = decodeURIComponent(slug).replace(/[-_]+/g, ' ').trim();\n return s ? s.charAt(0).toUpperCase() + s.slice(1) : slug;\n } catch {\n return slug;\n }\n}\n\nexport function getBreadcrumbs(\n zone: string,\n pathname: string\n): Array<{ label: string; href: string }> {\n\n const normalizedPathname = pathname === '/' ? pathname : pathname.replace(/\\/+$/, '');\n\n // sbno root has no crumbs\n if (zone === 'sbno' && normalizedPathname === '/') return [];\n\n const match = findBestMatch(zone, normalizedPathname);\n if (!match) return [];\n\n const chain: RouteDefinition[] = [];\n let key: Key | undefined = `${zone}:${match.path}`;\n while (key) {\n const parentKey = PARENT_INDEX.get(key);\n const [z, p] = key.split(':') as [string, string];\n const def = (ROUTES_INDEX[z] ?? []).find((r) => r.path === p);\n if (def) chain.unshift(def);\n key = parentKey ?? undefined;\n }\n\n const homeRoute = (ROUTES_INDEX.sbno ?? []).find((r) => r.path === '/');\n if (\n homeRoute &&\n !(chain.length === 1 && chain[0].zone === 'sbno' && chain[0].path === '/') &&\n (chain.length === 0 || chain[0].path !== homeRoute.path)\n ) {\n chain.unshift(homeRoute);\n }\n\n // If the pathname is deeper than the best static match, add a dynamic tail\n const last = chain[chain.length - 1];\n if (last && normalizedPathname !== last.path && normalizedPathname.startsWith(last.path.endsWith('/') ? last.path : last.path + '/')) {\n const segments = normalizedPathname.split('/').filter(Boolean);\n const tail = segments[segments.length - 1];\n chain.push({ zone, path: normalizedPathname, label: labelFromSlug(tail) });\n }\n\n return chain.map((r) => ({ label: r.label, href: r.path }));\n}\n\nexport function transformHrefForZone(\n targetPath: string,\n currentZone: string,\n options: {\n isDev: boolean;\n prodUrl?: string;\n }\n): string {\n const { isDev, prodUrl } = options;\n\n const targetZone = getZoneFromPathname(targetPath);\n const isCrossZone = targetZone !== currentZone;\n\n if (isCrossZone && isDev && prodUrl) {\n return `${prodUrl}${targetPath}`;\n }\n\n const currentZoneRoot = getZoneRoot(currentZone);\n if (!isCrossZone && isDev && currentZoneRoot !== '/') {\n return targetPath.replace(currentZoneRoot, '') || '/';\n }\n\n return targetPath;\n}\n\nexport function getZoneFromPathname(pathname: string): string {\n if (pathname.startsWith('/lokaler')) return 'lokaler';\n return 'sbno';\n}","'use client';\n\nimport Link from 'next/link';\nimport { Dropdown } from '@digdir/designsystemet-react';\nimport { Menu } from 'lucide-react';\nimport { getZoneMenuRoutes, getAllZones, transformHrefForZone } from '@/routes';\nimport type { MenuButtonProps } from './MenuButton.types';\nimport styles from './MenuButton.module.css';\n\nexport function MenuButton({ zone }: MenuButtonProps) {\n const isDev = process.env.NODE_ENV === 'development';\n // TODO: Temporary here. Should come from env or something\n const prodUrl = 'https://www.statsbygg.no';\n const allZones = getAllZones();\n\n return (\n <Dropdown.TriggerContext>\n <Dropdown.Trigger asChild className={styles.menuButton}>\n <Menu size={20} aria-hidden />\n Meny\n </Dropdown.Trigger>\n <Dropdown>\n {isDev ? (\n <div className={styles.devContainer}>\n {allZones.map((z) => {\n const routes = getZoneMenuRoutes(z);\n return (\n <div key={z} className={styles.zoneSection}>\n <div className={styles.zoneTitle}>{z}</div>\n <Dropdown.List>\n {routes.map((r) => (\n <Dropdown.Item key={`${r.zone}:${r.path}`}>\n <Link href={transformHrefForZone(r.path, zone, { isDev, prodUrl })}>\n {r.label}\n </Link>\n </Dropdown.Item>\n ))}\n </Dropdown.List>\n </div>\n );\n })}\n </div>\n ) : (\n <Dropdown.List>\n {getZoneMenuRoutes(zone).map((r) => (\n <Dropdown.Item key={`${r.zone}:${r.path}`}>\n <Link href={transformHrefForZone(r.path, zone, { isDev, prodUrl })}>\n {r.label}\n </Link>\n </Dropdown.Item>\n ))}\n </Dropdown.List>\n )}\n </Dropdown>\n </Dropdown.TriggerContext>\n );\n}",".userInfo {\n display: flex;\n flex-direction: column;\n gap: var(--ds-spacing-1);\n padding: var(--ds-spacing-2) var(--ds-spacing-3);\n}\n\n.userName {\n font-size: var(--ds-font-size-sm);\n font-weight: var(--ds-font-weight-medium);\n color: var(--ds-color-neutral-text-default);\n}\n\n.userEmail {\n font-size: var(--ds-font-size-xs);\n color: var(--ds-color-neutral-text-subtle);\n}\n\n.menuButton {\n background-color: var(--ds-color-neutral-base-default);\n}\n\n.devContainer {\n display: flex;\n gap: var(--ds-spacing-4);\n padding: var(--ds-spacing-2);\n}\n\n.zoneSection {\n flex: 1;\n min-width: 12rem;\n}\n\n.zoneTitle {\n font-weight: 600;\n padding: var(--ds-spacing-2);\n color: var(--ds-color-neutral-text-default);\n border-bottom: 1px solid var(--ds-color-neutral-border-subtle);\n margin-bottom: var(--ds-spacing-2);\n text-transform: capitalize;\n}\n",".header {\n background-color: var(--ds-color-accent-surface-tinted);\n border-bottom: 1px solid var(--ds-color-neutral-border-subtle);\n position: sticky;\n top: 0;\n z-index: 100;\n}\n\n.headerContainer {\n max-width: 90rem;\n margin: 0 auto;\n padding: 0 var(--ds-size-30);\n}\n\n.topBarContainer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.25rem 0;\n}\n\n.logo {\n margin: 0;\n color: var(--ds-color-neutral-text-default);\n white-space: nowrap;\n display: flex;\n align-items: center;\n min-height: inherit;\n}\n\n.actionsContainer {\n display: flex;\n align-items: stretch;\n gap: var(--ds-size-9);\n min-height: inherit;\n}\n\n.searchInput {\n min-width: 12.5rem;\n display: flex;\n align-items: center;\n}\n\n@media (max-width: 768px) {\n .container {\n padding: 0 var(--ds-spacing-4);\n }\n\n .topBar {\n flex-wrap: wrap;\n padding: var(--ds-spacing-4) 0;\n }\n\n .actions {\n order: 3;\n width: 100%;\n flex-direction: column;\n gap: var(--ds-spacing-3);\n }\n\n .searchInput {\n width: 100%;\n min-width: auto;\n }\n\n .menuButton {\n width: 100%;\n justify-content: center;\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';\n\nexport function GlobalFooter({ className }: GlobalFooterProps) {\n\n return (\n <footer className={clsx(styles.footer, className)}>\n <div className={styles.container}>\n <div className={styles.content}>\n <Paragraph>\n Statsbygg Footer\n </Paragraph>\n\n\n </div>\n </div>\n </footer>\n );\n}",".footer {\n background-color: var(--ds-color-neutral-surface-subtle);\n border-top: 1px solid var(--ds-color-neutral-border-subtle);\n margin-top: auto;\n}\n\n.container {\n max-width: 1440px;\n margin: 0 auto;\n padding: var(--ds-spacing-6) var(--ds-spacing-4);\n}\n\n.content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--ds-spacing-4);\n flex-wrap: wrap;\n}\n\n@media (max-width: 768px) {\n .content {\n flex-direction: column;\n align-items: flex-start;\n }\n\n\n}",".root {\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n}\n\n.main {\n flex: 1;\n}","import { create, StateCreator } from 'zustand';\nimport { persist, createJSONStorage } from 'zustand/middleware';\n\nexport type Theme = 'light' | 'dark' | 'system';\n\nexport type GlobalState = {\n user?: { id: string; name?: string } | null;\n theme: Theme;\n locale: string;\n setUser: (user: GlobalState['user']) => void;\n setTheme: (theme: Theme) => void;\n setLocale: (locale: string) => void;\n initialize: () => void | Promise<void>;\n};\n\nconst creator: StateCreator<GlobalState, [['zustand/persist', unknown]]> = (set, get) => ({\n user: null,\n theme: 'light',\n locale: 'no',\n setUser: (user) => set({ user }),\n setTheme: (theme) => {\n set({ theme });\n if (typeof document !== 'undefined') {\n document.documentElement.setAttribute('data-color-scheme', theme);\n }\n },\n setLocale: (locale) => set({ locale }),\n initialize: () => {\n if (typeof document !== 'undefined') {\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 })\n);\n"],"mappings":"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","names":["import_react","import_clsx","import_designsystemet_react","import_clsx","_a","clsx","import_designsystemet_react","import_jsx_runtime","Link","import_jsx_runtime","clsx","import_designsystemet_react","import_clsx","import_jsx_runtime","clsx","import_jsx_runtime","clsx"]}
package/dist/index.mjs CHANGED
@@ -15,11 +15,7 @@ import { Breadcrumbs } from "@digdir/designsystemet-react";
15
15
  import clsx from "clsx";
16
16
 
17
17
  // src/components/Breadcrumbs/Breadcrumbs.module.css
18
- var Breadcrumbs_default = {
19
- breadcrumbs: "Breadcrumbs_breadcrumbs",
20
- link: "Breadcrumbs_link",
21
- currentLink: "Breadcrumbs_currentLink"
22
- };
18
+ var Breadcrumbs_default = {};
23
19
 
24
20
  // src/routes.ts
25
21
  var ZONE_TREES_INPUT = {
@@ -201,15 +197,7 @@ import { Dropdown } from "@digdir/designsystemet-react";
201
197
  import { Menu } from "lucide-react";
202
198
 
203
199
  // src/components/MenuButton/MenuButton.module.css
204
- var MenuButton_default = {
205
- userInfo: "MenuButton_userInfo",
206
- userName: "MenuButton_userName",
207
- userEmail: "MenuButton_userEmail",
208
- menuButton: "MenuButton_menuButton",
209
- devContainer: "MenuButton_devContainer",
210
- zoneSection: "MenuButton_zoneSection",
211
- zoneTitle: "MenuButton_zoneTitle"
212
- };
200
+ var MenuButton_default = {};
213
201
 
214
202
  // src/components/MenuButton/MenuButton.tsx
215
203
  import { jsx as jsx2, jsxs } from "react/jsx-runtime";
@@ -233,21 +221,10 @@ function MenuButton({ zone }) {
233
221
  }
234
222
 
235
223
  // src/components/GlobalHeader/GlobalHeader.module.css
236
- var GlobalHeader_default = {
237
- header: "GlobalHeader_header",
238
- headerContainer: "GlobalHeader_headerContainer",
239
- topBarContainer: "GlobalHeader_topBarContainer",
240
- logo: "GlobalHeader_logo",
241
- actionsContainer: "GlobalHeader_actionsContainer",
242
- searchInput: "GlobalHeader_searchInput",
243
- container: "GlobalHeader_container",
244
- topBar: "GlobalHeader_topBar",
245
- actions: "GlobalHeader_actions",
246
- menuButton: "GlobalHeader_menuButton"
247
- };
224
+ var GlobalHeader_default = {};
248
225
 
249
226
  // src/logo.svg
250
- var logo_default = "./logo-X7RC63NT.svg";
227
+ var logo_default = "./logo-JRXKWS5H.svg";
251
228
 
252
229
  // src/components/GlobalHeader/GlobalHeader.tsx
253
230
  import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
@@ -279,11 +256,7 @@ import { Paragraph } from "@digdir/designsystemet-react";
279
256
  import clsx3 from "clsx";
280
257
 
281
258
  // src/components/GlobalFooter/GlobalFooter.module.css
282
- var GlobalFooter_default = {
283
- footer: "GlobalFooter_footer",
284
- container: "GlobalFooter_container",
285
- content: "GlobalFooter_content"
286
- };
259
+ var GlobalFooter_default = {};
287
260
 
288
261
  // src/components/GlobalFooter/GlobalFooter.tsx
289
262
  import { jsx as jsx4 } from "react/jsx-runtime";
@@ -292,10 +265,7 @@ function GlobalFooter({ className }) {
292
265
  }
293
266
 
294
267
  // src/components/RootLayout/RootLayout.module.css
295
- var RootLayout_default = {
296
- root: "RootLayout_root",
297
- main: "RootLayout_main"
298
- };
268
+ var RootLayout_default = {};
299
269
 
300
270
  // src/store/globalState.ts
301
271
  import { create } from "zustand";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/RootLayout/RootLayout.tsx","../src/components/GlobalHeader/GlobalHeader.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumbs.module.css","../src/routes.ts","../src/components/MenuButton/MenuButton.tsx","../src/components/MenuButton/MenuButton.module.css","../src/components/GlobalHeader/GlobalHeader.module.css","../src/components/GlobalFooter/GlobalFooter.tsx","../src/components/GlobalFooter/GlobalFooter.module.css","../src/components/RootLayout/RootLayout.module.css","../src/store/globalState.ts"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\nimport clsx from 'clsx';\nimport { GlobalHeader } from '../GlobalHeader';\nimport { GlobalFooter } from '../GlobalFooter';\nimport type { RootLayoutProps } from './RootLayout.types';\nimport styles from './RootLayout.module.css';\nimport { useGlobalStore } from '@/store/globalState';\n\nexport function RootLayout({\n children,\n zone, \n className,\n}: RootLayoutProps) {\n const initialize = useGlobalStore((state) => state.initialize);\n\n useEffect(() => {\n try {\n const maybe = initialize();\n if (maybe && typeof (maybe as Promise<void>).then === 'function') {\n (maybe as Promise<void>).catch((error) => {\n console.error('Failed to initialize global state:', error);\n });\n }\n } catch (error) {\n console.error('Failed to initialize global state:', error);\n }\n }, [initialize]);\n\n\n return (\n <div className={clsx(styles.root, className)} data-zone={zone}>\n <GlobalHeader zone={zone}/>\n <main className={styles.main}>{children}</main>\n <GlobalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport { Link, Textfield } from '@digdir/designsystemet-react';\nimport clsx from 'clsx';\nimport { Breadcrumbs } from '../Breadcrumbs';\nimport { MenuButton } from '../MenuButton';\nimport type { GlobalHeaderProps } from './GlobalHeader.types';\nimport styles from './GlobalHeader.module.css';\nimport logo from '../../logo.svg'; \n\nexport function GlobalHeader({ className, zone }: GlobalHeaderProps) {\n const [searchValue, setSearchValue] = useState('');\n\n return (\n <header className={clsx(styles.header, className)}>\n <div className={styles.headerContainer}>\n <div className={styles.topBarContainer}>\n <Link href=\"https://www.statsbygg.no\">\n <img src={logo} alt=\"Logo\" className={styles.logo} />\n </Link>\n <div className={styles.actionsContainer}>\n <Textfield\n value={searchValue}\n onChange={(e) => setSearchValue(e.target.value)}\n placeholder=\"Søk...\"\n className={styles.searchInput}\n aria-label=\"Søk\"\n />\n <MenuButton zone={zone}/>\n </div>\n </div>\n <Breadcrumbs zone={zone} />\n </div>\n </header>\n );\n}","'use client';\n\nimport { usePathname } from 'next/navigation';\nimport { Breadcrumbs } from '@digdir/designsystemet-react';\nimport clsx from 'clsx';\nimport type { BreadcrumbsProps } from './Breadcrumbs.types';\nimport styles from './Breadcrumbs.module.css';\nimport { getBreadcrumbs, getZoneRoot, transformHrefForZone } from '@/routes';\n\nexport function SbBreadcrumbs({ className, zone }: BreadcrumbsProps) {\n const pathname = usePathname();\n const isDev = process.env.NODE_ENV === 'development';\n const prodUrl = 'https://www.statsbygg.no';\n const zoneRoot = getZoneRoot(zone);\n \n const fullPath = isDev && zoneRoot !== '/' && !pathname.startsWith(zoneRoot)\n ? `${zoneRoot}${pathname}`\n : pathname;\n \n const breadcrumbs = getBreadcrumbs(zone, fullPath);\n\n if (breadcrumbs.length <= 1) {\n return null;\n }\n\n\n return (\n <Breadcrumbs aria-label=\"Du er her:\" className={clsx(styles.breadcrumbs, className)}>\n <Breadcrumbs.List>\n {breadcrumbs.map((crumb, index) => {\n const isLast = index === breadcrumbs.length - 1;\n const href = transformHrefForZone(crumb.href, zone, { isDev, prodUrl });\n \n return (\n <Breadcrumbs.Item key={crumb.href}>\n <Breadcrumbs.Link\n href={href}\n aria-current={isLast ? 'page' : undefined}\n className={isLast ? styles.currentLink : styles.link}\n >\n {crumb.label}\n </Breadcrumbs.Link>\n </Breadcrumbs.Item>\n );\n })}\n </Breadcrumbs.List>\n </Breadcrumbs>\n );\n}",".breadcrumbs {\n --dsc-breadcrumbs-color: var(--ds-color-text-default);\n padding: 2.5rem 0 0 0;\n}\n\n.link {\n text-decoration: underline;\n text-underline-offset: 2px;\n color: var(--ds-color-text-default);\n}\n\n.link:hover \n.link:visited{\n color: var(--ds-color-text-default);\n}\n\n.currentLink {\n text-decoration: none;\n font-weight: 500;\n pointer-events: none;\n color: var(--ds-color-text-default);\n}\n","export type RouteNodeInput =\n | { segment: string; label: string; children?: RouteNodeInput[] }\n | { path: string; label: string; children?: RouteNodeInput[] };\n\nexport type RouteNode = {\n path: string;\n label: string;\n children?: RouteNode[];\n};\n\nexport type RouteDefinition = {\n path: string;\n label: string;\n zone: string;\n};\n\nconst ZONE_TREES_INPUT: Record<string, RouteNodeInput> = {\n sbno: {\n segment: '',// primary root route, no breadcrumb\n label: 'Hjem',\n children: [\n { segment: 'nyheter', label: 'Nyheter' },\n ],\n },\n lokaler: {\n segment: 'lokaler',\n label: 'Statens eide og leide lokaler',\n children: [\n {\n segment: 'lokalbruk', label: 'Lokalbruk'\n },\n { segment: 'veiledning', label: 'Veiledning' },\n { segment: 'statlige-eiendommer', label: 'Statlige eiendommer' },\n { segment: 'ledig-for-fremleie', label: 'Ledig for fremleie' },\n { segment: 'statistikk', label: 'Statistikk' },\n ],\n },\n};\n\n\ntype Key = `${string}:${string}`; // `${zone}:${absolutePath}`\n\nconst ROUTES_INDEX: Record<string, RouteDefinition[]> = {};\nconst PARENT_INDEX = new Map<Key, Key | null>(); // child -> parent\nconst ZONE_TREES: Record<string, RouteNode> = {}; // normalized absolute trees\n\nfunction isSegmentNode(n: RouteNodeInput): n is Extract<RouteNodeInput, { segment: string }> {\n return (n as any).segment !== undefined && (n as any).path === undefined;\n}\nfunction isPathNode(n: RouteNodeInput): n is Extract<RouteNodeInput, { path: string }> {\n return (n as any).path !== undefined;\n}\n\nfunction joinPath(base: string, seg: string): string {\n if (!base) return seg ? `/${seg}` : '/';\n return seg ? `${base.replace(/\\/+$/, '')}/${seg.replace(/^\\/+/, '')}` : base || '/';\n}\n\nfunction normalizeToAbsolute(node: RouteNodeInput, base = ''): RouteNode {\n const path = isSegmentNode(node)\n ? joinPath(base, node.segment)\n : isPathNode(node)\n ? (node.path === '' ? '/' : node.path)\n : '/';\n\n const children = (node.children ?? []).map((c) => normalizeToAbsolute(c, path));\n return { path, label: (node as any).label, children: children.length ? children : undefined };\n}\n\n(function buildAll() {\n // Normalize each zone tree to absolute paths\n Object.keys(ZONE_TREES_INPUT).forEach((zone) => {\n ZONE_TREES[zone] = normalizeToAbsolute(ZONE_TREES_INPUT[zone]);\n });\n\n // Build flat indexes + parent relationships\n function walk(zone: string, node: RouteNode, parentKey: Key | null) {\n const def: RouteDefinition = { zone, path: node.path, label: node.label };\n const key: Key = `${zone}:${node.path}`;\n ROUTES_INDEX[zone].push(def);\n PARENT_INDEX.set(key, parentKey);\n for (const child of node.children ?? []) {\n walk(zone, child, key);\n }\n }\n\n (Object.keys(ZONE_TREES) as string[]).forEach((zone) => {\n ROUTES_INDEX[zone] = [];\n walk(zone, ZONE_TREES[zone], null);\n });\n})();\n\n\nfunction findBestMatch(zone: string, pathname: string): RouteDefinition | undefined {\n const list = ROUTES_INDEX[zone] ?? [];\n let best: RouteDefinition | undefined;\n\n for (const r of list) {\n if (pathname === r.path) {\n best = r; // exact wins\n break;\n }\n if (pathname.startsWith(r.path.endsWith('/') ? r.path : r.path + '/')) {\n if (!best || r.path.length > best.path.length) best = r;\n }\n }\n // fallback: zone root\n return best ?? list.find((r) => r.path === ZONE_TREES[zone]?.path);\n}\n\nexport function getZoneRoutes(zone: string): RouteDefinition[] {\n return ROUTES_INDEX[zone] ?? [];\n}\n\n// Top-level links for a zone’s menu (children of the zone root)\nexport function getZoneMenuRoutes(zone: string): RouteDefinition[] {\n const root = ZONE_TREES[zone];\n const children = root?.children ?? [];\n return children.map((c) => ({ zone, path: c.path, label: c.label }));\n}\n\nexport function getAllZones(): string[] {\n return Object.keys(ZONE_TREES);\n}\n\nexport function getZoneRoot(zone: string): string {\n return ZONE_TREES[zone]?.path || '/';\n}\n\n// prettify dynamic slug labels\nfunction labelFromSlug(slug: string): string {\n try {\n const s = decodeURIComponent(slug).replace(/[-_]+/g, ' ').trim();\n return s ? s.charAt(0).toUpperCase() + s.slice(1) : slug;\n } catch {\n return slug;\n }\n}\n\nexport function getBreadcrumbs(\n zone: string,\n pathname: string\n): Array<{ label: string; href: string }> {\n\n const normalizedPathname = pathname === '/' ? pathname : pathname.replace(/\\/+$/, '');\n\n // sbno root has no crumbs\n if (zone === 'sbno' && normalizedPathname === '/') return [];\n\n const match = findBestMatch(zone, normalizedPathname);\n if (!match) return [];\n\n const chain: RouteDefinition[] = [];\n let key: Key | undefined = `${zone}:${match.path}`;\n while (key) {\n const parentKey = PARENT_INDEX.get(key);\n const [z, p] = key.split(':') as [string, string];\n const def = (ROUTES_INDEX[z] ?? []).find((r) => r.path === p);\n if (def) chain.unshift(def);\n key = parentKey ?? undefined;\n }\n\n const homeRoute = (ROUTES_INDEX.sbno ?? []).find((r) => r.path === '/');\n if (\n homeRoute &&\n !(chain.length === 1 && chain[0].zone === 'sbno' && chain[0].path === '/') &&\n (chain.length === 0 || chain[0].path !== homeRoute.path)\n ) {\n chain.unshift(homeRoute);\n }\n\n // If the pathname is deeper than the best static match, add a dynamic tail\n const last = chain[chain.length - 1];\n if (last && normalizedPathname !== last.path && normalizedPathname.startsWith(last.path.endsWith('/') ? last.path : last.path + '/')) {\n const segments = normalizedPathname.split('/').filter(Boolean);\n const tail = segments[segments.length - 1];\n chain.push({ zone, path: normalizedPathname, label: labelFromSlug(tail) });\n }\n\n return chain.map((r) => ({ label: r.label, href: r.path }));\n}\n\nexport function transformHrefForZone(\n targetPath: string,\n currentZone: string,\n options: {\n isDev: boolean;\n prodUrl?: string;\n }\n): string {\n const { isDev, prodUrl } = options;\n\n const targetZone = getZoneFromPathname(targetPath);\n const isCrossZone = targetZone !== currentZone;\n\n if (isCrossZone && isDev && prodUrl) {\n return `${prodUrl}${targetPath}`;\n }\n\n const currentZoneRoot = getZoneRoot(currentZone);\n if (!isCrossZone && isDev && currentZoneRoot !== '/') {\n return targetPath.replace(currentZoneRoot, '') || '/';\n }\n\n return targetPath;\n}\n\nexport function getZoneFromPathname(pathname: string): string {\n if (pathname.startsWith('/lokaler')) return 'lokaler';\n return 'sbno';\n}","'use client';\n\nimport Link from 'next/link';\nimport { Dropdown } from '@digdir/designsystemet-react';\nimport { Menu } from 'lucide-react';\nimport { getZoneMenuRoutes, getAllZones, transformHrefForZone } from '@/routes';\nimport type { MenuButtonProps } from './MenuButton.types';\nimport styles from './MenuButton.module.css';\n\nexport function MenuButton({ zone }: MenuButtonProps) {\n const isDev = process.env.NODE_ENV === 'development';\n // TODO: Temporary here. Should come from env or something\n const prodUrl = 'https://www.statsbygg.no';\n const allZones = getAllZones();\n\n return (\n <Dropdown.TriggerContext>\n <Dropdown.Trigger asChild className={styles.menuButton}>\n <Menu size={20} aria-hidden />\n Meny\n </Dropdown.Trigger>\n <Dropdown>\n {isDev ? (\n <div className={styles.devContainer}>\n {allZones.map((z) => {\n const routes = getZoneMenuRoutes(z);\n return (\n <div key={z} className={styles.zoneSection}>\n <div className={styles.zoneTitle}>{z}</div>\n <Dropdown.List>\n {routes.map((r) => (\n <Dropdown.Item key={`${r.zone}:${r.path}`}>\n <Link href={transformHrefForZone(r.path, zone, { isDev, prodUrl })}>\n {r.label}\n </Link>\n </Dropdown.Item>\n ))}\n </Dropdown.List>\n </div>\n );\n })}\n </div>\n ) : (\n <Dropdown.List>\n {getZoneMenuRoutes(zone).map((r) => (\n <Dropdown.Item key={`${r.zone}:${r.path}`}>\n <Link href={transformHrefForZone(r.path, zone, { isDev, prodUrl })}>\n {r.label}\n </Link>\n </Dropdown.Item>\n ))}\n </Dropdown.List>\n )}\n </Dropdown>\n </Dropdown.TriggerContext>\n );\n}",".userInfo {\n display: flex;\n flex-direction: column;\n gap: var(--ds-spacing-1);\n padding: var(--ds-spacing-2) var(--ds-spacing-3);\n}\n\n.userName {\n font-size: var(--ds-font-size-sm);\n font-weight: var(--ds-font-weight-medium);\n color: var(--ds-color-neutral-text-default);\n}\n\n.userEmail {\n font-size: var(--ds-font-size-xs);\n color: var(--ds-color-neutral-text-subtle);\n}\n\n.menuButton {\n background-color: var(--ds-color-neutral-base-default);\n}\n\n.devContainer {\n display: flex;\n gap: var(--ds-spacing-4);\n padding: var(--ds-spacing-2);\n}\n\n.zoneSection {\n flex: 1;\n min-width: 12rem;\n}\n\n.zoneTitle {\n font-weight: 600;\n padding: var(--ds-spacing-2);\n color: var(--ds-color-neutral-text-default);\n border-bottom: 1px solid var(--ds-color-neutral-border-subtle);\n margin-bottom: var(--ds-spacing-2);\n text-transform: capitalize;\n}\n",".header {\n background-color: var(--ds-color-accent-surface-tinted);\n border-bottom: 1px solid var(--ds-color-neutral-border-subtle);\n position: sticky;\n top: 0;\n z-index: 100;\n}\n\n.headerContainer {\n max-width: 90rem;\n margin: 0 auto;\n padding: 0 var(--ds-size-30);\n}\n\n.topBarContainer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.25rem 0;\n}\n\n.logo {\n margin: 0;\n color: var(--ds-color-neutral-text-default);\n white-space: nowrap;\n display: flex;\n align-items: center;\n min-height: inherit;\n}\n\n.actionsContainer {\n display: flex;\n align-items: stretch;\n gap: var(--ds-size-9);\n min-height: inherit;\n}\n\n.searchInput {\n min-width: 12.5rem;\n display: flex;\n align-items: center;\n}\n\n@media (max-width: 768px) {\n .container {\n padding: 0 var(--ds-spacing-4);\n }\n\n .topBar {\n flex-wrap: wrap;\n padding: var(--ds-spacing-4) 0;\n }\n\n .actions {\n order: 3;\n width: 100%;\n flex-direction: column;\n gap: var(--ds-spacing-3);\n }\n\n .searchInput {\n width: 100%;\n min-width: auto;\n }\n\n .menuButton {\n width: 100%;\n justify-content: center;\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';\n\nexport function GlobalFooter({ className }: GlobalFooterProps) {\n\n return (\n <footer className={clsx(styles.footer, className)}>\n <div className={styles.container}>\n <div className={styles.content}>\n <Paragraph>\n Statsbygg Footer\n </Paragraph>\n\n\n </div>\n </div>\n </footer>\n );\n}",".footer {\n background-color: var(--ds-color-neutral-surface-subtle);\n border-top: 1px solid var(--ds-color-neutral-border-subtle);\n margin-top: auto;\n}\n\n.container {\n max-width: 1440px;\n margin: 0 auto;\n padding: var(--ds-spacing-6) var(--ds-spacing-4);\n}\n\n.content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--ds-spacing-4);\n flex-wrap: wrap;\n}\n\n@media (max-width: 768px) {\n .content {\n flex-direction: column;\n align-items: flex-start;\n }\n\n\n}",".root {\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n}\n\n.main {\n flex: 1;\n}","import { create, StateCreator } from 'zustand';\nimport { persist, createJSONStorage } from 'zustand/middleware';\n\nexport type Theme = 'light' | 'dark' | 'system';\n\nexport type GlobalState = {\n user?: { id: string; name?: string } | null;\n theme: Theme;\n locale: string;\n setUser: (user: GlobalState['user']) => void;\n setTheme: (theme: Theme) => void;\n setLocale: (locale: string) => void;\n initialize: () => void | Promise<void>;\n};\n\nconst creator: StateCreator<GlobalState, [['zustand/persist', unknown]]> = (set, get) => ({\n user: null,\n theme: 'light',\n locale: 'no',\n setUser: (user) => set({ user }),\n setTheme: (theme) => {\n set({ theme });\n if (typeof document !== 'undefined') {\n document.documentElement.setAttribute('data-color-scheme', theme);\n }\n },\n setLocale: (locale) => set({ locale }),\n initialize: () => {\n if (typeof document !== 'undefined') {\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 })\n);\n"],"mappings":"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","names":["clsx","Link","clsx","breadcrumbs","link","currentLink","_a","userInfo","userName","userEmail","menuButton","devContainer","zoneSection","zoneTitle","jsx","header","headerContainer","topBarContainer","logo","actionsContainer","searchInput","container","topBar","actions","menuButton","jsx","jsxs","clsx","Link","clsx","footer","container","content","jsx","clsx","root","main","jsx","jsxs","clsx"]}
1
+ {"version":3,"sources":["../src/components/RootLayout/RootLayout.tsx","../src/components/GlobalHeader/GlobalHeader.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/components/Breadcrumbs/Breadcrumbs.module.css","../src/routes.ts","../src/components/MenuButton/MenuButton.tsx","../src/components/MenuButton/MenuButton.module.css","../src/components/GlobalHeader/GlobalHeader.module.css","../src/components/GlobalFooter/GlobalFooter.tsx","../src/components/GlobalFooter/GlobalFooter.module.css","../src/components/RootLayout/RootLayout.module.css","../src/store/globalState.ts"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\nimport clsx from 'clsx';\nimport { GlobalHeader } from '../GlobalHeader';\nimport { GlobalFooter } from '../GlobalFooter';\nimport type { RootLayoutProps } from './RootLayout.types';\nimport styles from './RootLayout.module.css';\nimport { useGlobalStore } from '@/store/globalState';\n\nexport function RootLayout({\n children,\n zone, \n className,\n}: RootLayoutProps) {\n const initialize = useGlobalStore((state) => state.initialize);\n\n useEffect(() => {\n try {\n const maybe = initialize();\n if (maybe && typeof (maybe as Promise<void>).then === 'function') {\n (maybe as Promise<void>).catch((error) => {\n console.error('Failed to initialize global state:', error);\n });\n }\n } catch (error) {\n console.error('Failed to initialize global state:', error);\n }\n }, [initialize]);\n\n\n return (\n <div className={clsx(styles.root, className)} data-zone={zone}>\n <GlobalHeader zone={zone}/>\n <main className={styles.main}>{children}</main>\n <GlobalFooter />\n </div>\n );\n}\n","'use client';\n\nimport { useState } from 'react';\nimport { Link, Textfield } from '@digdir/designsystemet-react';\nimport clsx from 'clsx';\nimport { Breadcrumbs } from '../Breadcrumbs';\nimport { MenuButton } from '../MenuButton';\nimport type { GlobalHeaderProps } from './GlobalHeader.types';\nimport styles from './GlobalHeader.module.css';\nimport logo from '../../logo.svg'; \n\nexport function GlobalHeader({ className, zone }: GlobalHeaderProps) {\n const [searchValue, setSearchValue] = useState('');\n\n return (\n <header className={clsx(styles.header, className)}>\n <div className={styles.headerContainer}>\n <div className={styles.topBarContainer}>\n <Link href=\"https://www.statsbygg.no\">\n <img src={logo} alt=\"Logo\" className={styles.logo} />\n </Link>\n <div className={styles.actionsContainer}>\n <Textfield\n value={searchValue}\n onChange={(e) => setSearchValue(e.target.value)}\n placeholder=\"Søk...\"\n className={styles.searchInput}\n aria-label=\"Søk\"\n />\n <MenuButton zone={zone}/>\n </div>\n </div>\n <Breadcrumbs zone={zone} />\n </div>\n </header>\n );\n}","'use client';\n\nimport { usePathname } from 'next/navigation';\nimport { Breadcrumbs } from '@digdir/designsystemet-react';\nimport clsx from 'clsx';\nimport type { BreadcrumbsProps } from './Breadcrumbs.types';\nimport styles from './Breadcrumbs.module.css';\nimport { getBreadcrumbs, getZoneRoot, transformHrefForZone } from '@/routes';\n\nexport function SbBreadcrumbs({ className, zone }: BreadcrumbsProps) {\n const pathname = usePathname();\n const isDev = process.env.NODE_ENV === 'development';\n const prodUrl = 'https://www.statsbygg.no';\n const zoneRoot = getZoneRoot(zone);\n \n const fullPath = isDev && zoneRoot !== '/' && !pathname.startsWith(zoneRoot)\n ? `${zoneRoot}${pathname}`\n : pathname;\n \n const breadcrumbs = getBreadcrumbs(zone, fullPath);\n\n if (breadcrumbs.length <= 1) {\n return null;\n }\n\n\n return (\n <Breadcrumbs aria-label=\"Du er her:\" className={clsx(styles.breadcrumbs, className)}>\n <Breadcrumbs.List>\n {breadcrumbs.map((crumb, index) => {\n const isLast = index === breadcrumbs.length - 1;\n const href = transformHrefForZone(crumb.href, zone, { isDev, prodUrl });\n \n return (\n <Breadcrumbs.Item key={crumb.href}>\n <Breadcrumbs.Link\n href={href}\n aria-current={isLast ? 'page' : undefined}\n className={isLast ? styles.currentLink : styles.link}\n >\n {crumb.label}\n </Breadcrumbs.Link>\n </Breadcrumbs.Item>\n );\n })}\n </Breadcrumbs.List>\n </Breadcrumbs>\n );\n}",".breadcrumbs {\n --dsc-breadcrumbs-color: var(--ds-color-text-default);\n padding: 2.5rem 0 0 0;\n}\n\n.link {\n text-decoration: underline;\n text-underline-offset: 2px;\n color: var(--ds-color-text-default);\n}\n\n.link:hover \n.link:visited{\n color: var(--ds-color-text-default);\n}\n\n.currentLink {\n text-decoration: none;\n font-weight: 500;\n pointer-events: none;\n color: var(--ds-color-text-default);\n}\n","export type RouteNodeInput =\n | { segment: string; label: string; children?: RouteNodeInput[] }\n | { path: string; label: string; children?: RouteNodeInput[] };\n\nexport type RouteNode = {\n path: string;\n label: string;\n children?: RouteNode[];\n};\n\nexport type RouteDefinition = {\n path: string;\n label: string;\n zone: string;\n};\n\nconst ZONE_TREES_INPUT: Record<string, RouteNodeInput> = {\n sbno: {\n segment: '',// primary root route, no breadcrumb\n label: 'Hjem',\n children: [\n { segment: 'nyheter', label: 'Nyheter' },\n ],\n },\n lokaler: {\n segment: 'lokaler',\n label: 'Statens eide og leide lokaler',\n children: [\n {\n segment: 'lokalbruk', label: 'Lokalbruk'\n },\n { segment: 'veiledning', label: 'Veiledning' },\n { segment: 'statlige-eiendommer', label: 'Statlige eiendommer' },\n { segment: 'ledig-for-fremleie', label: 'Ledig for fremleie' },\n { segment: 'statistikk', label: 'Statistikk' },\n ],\n },\n};\n\n\ntype Key = `${string}:${string}`; // `${zone}:${absolutePath}`\n\nconst ROUTES_INDEX: Record<string, RouteDefinition[]> = {};\nconst PARENT_INDEX = new Map<Key, Key | null>(); // child -> parent\nconst ZONE_TREES: Record<string, RouteNode> = {}; // normalized absolute trees\n\nfunction isSegmentNode(n: RouteNodeInput): n is Extract<RouteNodeInput, { segment: string }> {\n return (n as any).segment !== undefined && (n as any).path === undefined;\n}\nfunction isPathNode(n: RouteNodeInput): n is Extract<RouteNodeInput, { path: string }> {\n return (n as any).path !== undefined;\n}\n\nfunction joinPath(base: string, seg: string): string {\n if (!base) return seg ? `/${seg}` : '/';\n return seg ? `${base.replace(/\\/+$/, '')}/${seg.replace(/^\\/+/, '')}` : base || '/';\n}\n\nfunction normalizeToAbsolute(node: RouteNodeInput, base = ''): RouteNode {\n const path = isSegmentNode(node)\n ? joinPath(base, node.segment)\n : isPathNode(node)\n ? (node.path === '' ? '/' : node.path)\n : '/';\n\n const children = (node.children ?? []).map((c) => normalizeToAbsolute(c, path));\n return { path, label: (node as any).label, children: children.length ? children : undefined };\n}\n\n(function buildAll() {\n // Normalize each zone tree to absolute paths\n Object.keys(ZONE_TREES_INPUT).forEach((zone) => {\n ZONE_TREES[zone] = normalizeToAbsolute(ZONE_TREES_INPUT[zone]);\n });\n\n // Build flat indexes + parent relationships\n function walk(zone: string, node: RouteNode, parentKey: Key | null) {\n const def: RouteDefinition = { zone, path: node.path, label: node.label };\n const key: Key = `${zone}:${node.path}`;\n ROUTES_INDEX[zone].push(def);\n PARENT_INDEX.set(key, parentKey);\n for (const child of node.children ?? []) {\n walk(zone, child, key);\n }\n }\n\n (Object.keys(ZONE_TREES) as string[]).forEach((zone) => {\n ROUTES_INDEX[zone] = [];\n walk(zone, ZONE_TREES[zone], null);\n });\n})();\n\n\nfunction findBestMatch(zone: string, pathname: string): RouteDefinition | undefined {\n const list = ROUTES_INDEX[zone] ?? [];\n let best: RouteDefinition | undefined;\n\n for (const r of list) {\n if (pathname === r.path) {\n best = r; // exact wins\n break;\n }\n if (pathname.startsWith(r.path.endsWith('/') ? r.path : r.path + '/')) {\n if (!best || r.path.length > best.path.length) best = r;\n }\n }\n // fallback: zone root\n return best ?? list.find((r) => r.path === ZONE_TREES[zone]?.path);\n}\n\nexport function getZoneRoutes(zone: string): RouteDefinition[] {\n return ROUTES_INDEX[zone] ?? [];\n}\n\n// Top-level links for a zone’s menu (children of the zone root)\nexport function getZoneMenuRoutes(zone: string): RouteDefinition[] {\n const root = ZONE_TREES[zone];\n const children = root?.children ?? [];\n return children.map((c) => ({ zone, path: c.path, label: c.label }));\n}\n\nexport function getAllZones(): string[] {\n return Object.keys(ZONE_TREES);\n}\n\nexport function getZoneRoot(zone: string): string {\n return ZONE_TREES[zone]?.path || '/';\n}\n\n// prettify dynamic slug labels\nfunction labelFromSlug(slug: string): string {\n try {\n const s = decodeURIComponent(slug).replace(/[-_]+/g, ' ').trim();\n return s ? s.charAt(0).toUpperCase() + s.slice(1) : slug;\n } catch {\n return slug;\n }\n}\n\nexport function getBreadcrumbs(\n zone: string,\n pathname: string\n): Array<{ label: string; href: string }> {\n\n const normalizedPathname = pathname === '/' ? pathname : pathname.replace(/\\/+$/, '');\n\n // sbno root has no crumbs\n if (zone === 'sbno' && normalizedPathname === '/') return [];\n\n const match = findBestMatch(zone, normalizedPathname);\n if (!match) return [];\n\n const chain: RouteDefinition[] = [];\n let key: Key | undefined = `${zone}:${match.path}`;\n while (key) {\n const parentKey = PARENT_INDEX.get(key);\n const [z, p] = key.split(':') as [string, string];\n const def = (ROUTES_INDEX[z] ?? []).find((r) => r.path === p);\n if (def) chain.unshift(def);\n key = parentKey ?? undefined;\n }\n\n const homeRoute = (ROUTES_INDEX.sbno ?? []).find((r) => r.path === '/');\n if (\n homeRoute &&\n !(chain.length === 1 && chain[0].zone === 'sbno' && chain[0].path === '/') &&\n (chain.length === 0 || chain[0].path !== homeRoute.path)\n ) {\n chain.unshift(homeRoute);\n }\n\n // If the pathname is deeper than the best static match, add a dynamic tail\n const last = chain[chain.length - 1];\n if (last && normalizedPathname !== last.path && normalizedPathname.startsWith(last.path.endsWith('/') ? last.path : last.path + '/')) {\n const segments = normalizedPathname.split('/').filter(Boolean);\n const tail = segments[segments.length - 1];\n chain.push({ zone, path: normalizedPathname, label: labelFromSlug(tail) });\n }\n\n return chain.map((r) => ({ label: r.label, href: r.path }));\n}\n\nexport function transformHrefForZone(\n targetPath: string,\n currentZone: string,\n options: {\n isDev: boolean;\n prodUrl?: string;\n }\n): string {\n const { isDev, prodUrl } = options;\n\n const targetZone = getZoneFromPathname(targetPath);\n const isCrossZone = targetZone !== currentZone;\n\n if (isCrossZone && isDev && prodUrl) {\n return `${prodUrl}${targetPath}`;\n }\n\n const currentZoneRoot = getZoneRoot(currentZone);\n if (!isCrossZone && isDev && currentZoneRoot !== '/') {\n return targetPath.replace(currentZoneRoot, '') || '/';\n }\n\n return targetPath;\n}\n\nexport function getZoneFromPathname(pathname: string): string {\n if (pathname.startsWith('/lokaler')) return 'lokaler';\n return 'sbno';\n}","'use client';\n\nimport Link from 'next/link';\nimport { Dropdown } from '@digdir/designsystemet-react';\nimport { Menu } from 'lucide-react';\nimport { getZoneMenuRoutes, getAllZones, transformHrefForZone } from '@/routes';\nimport type { MenuButtonProps } from './MenuButton.types';\nimport styles from './MenuButton.module.css';\n\nexport function MenuButton({ zone }: MenuButtonProps) {\n const isDev = process.env.NODE_ENV === 'development';\n // TODO: Temporary here. Should come from env or something\n const prodUrl = 'https://www.statsbygg.no';\n const allZones = getAllZones();\n\n return (\n <Dropdown.TriggerContext>\n <Dropdown.Trigger asChild className={styles.menuButton}>\n <Menu size={20} aria-hidden />\n Meny\n </Dropdown.Trigger>\n <Dropdown>\n {isDev ? (\n <div className={styles.devContainer}>\n {allZones.map((z) => {\n const routes = getZoneMenuRoutes(z);\n return (\n <div key={z} className={styles.zoneSection}>\n <div className={styles.zoneTitle}>{z}</div>\n <Dropdown.List>\n {routes.map((r) => (\n <Dropdown.Item key={`${r.zone}:${r.path}`}>\n <Link href={transformHrefForZone(r.path, zone, { isDev, prodUrl })}>\n {r.label}\n </Link>\n </Dropdown.Item>\n ))}\n </Dropdown.List>\n </div>\n );\n })}\n </div>\n ) : (\n <Dropdown.List>\n {getZoneMenuRoutes(zone).map((r) => (\n <Dropdown.Item key={`${r.zone}:${r.path}`}>\n <Link href={transformHrefForZone(r.path, zone, { isDev, prodUrl })}>\n {r.label}\n </Link>\n </Dropdown.Item>\n ))}\n </Dropdown.List>\n )}\n </Dropdown>\n </Dropdown.TriggerContext>\n );\n}",".userInfo {\n display: flex;\n flex-direction: column;\n gap: var(--ds-spacing-1);\n padding: var(--ds-spacing-2) var(--ds-spacing-3);\n}\n\n.userName {\n font-size: var(--ds-font-size-sm);\n font-weight: var(--ds-font-weight-medium);\n color: var(--ds-color-neutral-text-default);\n}\n\n.userEmail {\n font-size: var(--ds-font-size-xs);\n color: var(--ds-color-neutral-text-subtle);\n}\n\n.menuButton {\n background-color: var(--ds-color-neutral-base-default);\n}\n\n.devContainer {\n display: flex;\n gap: var(--ds-spacing-4);\n padding: var(--ds-spacing-2);\n}\n\n.zoneSection {\n flex: 1;\n min-width: 12rem;\n}\n\n.zoneTitle {\n font-weight: 600;\n padding: var(--ds-spacing-2);\n color: var(--ds-color-neutral-text-default);\n border-bottom: 1px solid var(--ds-color-neutral-border-subtle);\n margin-bottom: var(--ds-spacing-2);\n text-transform: capitalize;\n}\n",".header {\n background-color: var(--ds-color-accent-surface-tinted);\n border-bottom: 1px solid var(--ds-color-neutral-border-subtle);\n position: sticky;\n top: 0;\n z-index: 100;\n}\n\n.headerContainer {\n max-width: 90rem;\n margin: 0 auto;\n padding: 0 var(--ds-size-30);\n}\n\n.topBarContainer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.25rem 0;\n}\n\n.logo {\n margin: 0;\n color: var(--ds-color-neutral-text-default);\n white-space: nowrap;\n display: flex;\n align-items: center;\n min-height: inherit;\n}\n\n.actionsContainer {\n display: flex;\n align-items: stretch;\n gap: var(--ds-size-9);\n min-height: inherit;\n}\n\n.searchInput {\n min-width: 12.5rem;\n display: flex;\n align-items: center;\n}\n\n@media (max-width: 768px) {\n .container {\n padding: 0 var(--ds-spacing-4);\n }\n\n .topBar {\n flex-wrap: wrap;\n padding: var(--ds-spacing-4) 0;\n }\n\n .actions {\n order: 3;\n width: 100%;\n flex-direction: column;\n gap: var(--ds-spacing-3);\n }\n\n .searchInput {\n width: 100%;\n min-width: auto;\n }\n\n .menuButton {\n width: 100%;\n justify-content: center;\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';\n\nexport function GlobalFooter({ className }: GlobalFooterProps) {\n\n return (\n <footer className={clsx(styles.footer, className)}>\n <div className={styles.container}>\n <div className={styles.content}>\n <Paragraph>\n Statsbygg Footer\n </Paragraph>\n\n\n </div>\n </div>\n </footer>\n );\n}",".footer {\n background-color: var(--ds-color-neutral-surface-subtle);\n border-top: 1px solid var(--ds-color-neutral-border-subtle);\n margin-top: auto;\n}\n\n.container {\n max-width: 1440px;\n margin: 0 auto;\n padding: var(--ds-spacing-6) var(--ds-spacing-4);\n}\n\n.content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: var(--ds-spacing-4);\n flex-wrap: wrap;\n}\n\n@media (max-width: 768px) {\n .content {\n flex-direction: column;\n align-items: flex-start;\n }\n\n\n}",".root {\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n}\n\n.main {\n flex: 1;\n}","import { create, StateCreator } from 'zustand';\nimport { persist, createJSONStorage } from 'zustand/middleware';\n\nexport type Theme = 'light' | 'dark' | 'system';\n\nexport type GlobalState = {\n user?: { id: string; name?: string } | null;\n theme: Theme;\n locale: string;\n setUser: (user: GlobalState['user']) => void;\n setTheme: (theme: Theme) => void;\n setLocale: (locale: string) => void;\n initialize: () => void | Promise<void>;\n};\n\nconst creator: StateCreator<GlobalState, [['zustand/persist', unknown]]> = (set, get) => ({\n user: null,\n theme: 'light',\n locale: 'no',\n setUser: (user) => set({ user }),\n setTheme: (theme) => {\n set({ theme });\n if (typeof document !== 'undefined') {\n document.documentElement.setAttribute('data-color-scheme', theme);\n }\n },\n setLocale: (locale) => set({ locale }),\n initialize: () => {\n if (typeof document !== 'undefined') {\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 })\n);\n"],"mappings":"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","names":["clsx","Link","clsx","_a","jsx","jsx","jsxs","clsx","Link","clsx","jsx","clsx","jsx","jsxs","clsx"]}
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 75.1 14.9">
3
+ <!-- Generator: Adobe Illustrator 29.8.2, SVG Export Plug-In . SVG Version: 2.1.1 Build 3) -->
4
+ <defs>
5
+ <style>
6
+ .st0 {
7
+ fill: #131819;
8
+ }
9
+ </style>
10
+ </defs>
11
+ <path class="st0" d="M16.6,11.4c-1.2-.5-1.8-1.1-1.8-2s.3-1.2.7-1.5c.5-.4,1.1-.5,1.8-.5s1.1.1,2.1.4v1.6h-.6c0-.4,0-.7-.2-1-.3-.4-.8-.5-1.2-.5-1,0-1.5.5-1.5,1.1s.3.8,1.5,1.4c1.4.6,2.4,1,2.4,2.3s-1.2,2.2-2.5,2.2-1,0-1.8-.3c-.4-.1-.5-.2-.5-.2v-2.1h.6c0,.8,0,2,1.7,2s1.6-.5,1.6-1.2-.3-.9-1.5-1.5l-.5-.2h-.3Z"/>
12
+ <path class="st0" d="M41.6,11.4c-1.2-.5-1.8-1.1-1.8-2s.3-1.2.7-1.5c.5-.4,1.1-.5,1.8-.5s1.1.1,2.1.4v1.6h-.6c0-.4,0-.7-.2-1-.3-.4-.8-.5-1.2-.5-1,0-1.5.5-1.5,1.1s.3.8,1.5,1.4c1.4.6,2.4,1,2.4,2.3s-1.2,2.2-2.5,2.2-1,0-1.8-.3c-.4-.1-.5-.2-.5-.2v-2.1h.6c0,.8,0,2,1.7,2s1.6-.5,1.6-1.2-.3-.9-1.5-1.5l-.5-.2h-.3Z"/>
13
+ <path class="st0" d="M22.7,8h-1.4c-.5.1-.6.6-.7,1.2h-.4v-1.8h6.2v1.8h-.4c0-.9-.3-1.1-.7-1.2h-1.4v5.6c0,.7.3.7.7.7h.4v.3h-3.2v-.3h.4c.4,0,.7,0,.7-.7v-5.6h-.2Z"/>
14
+ <path class="st0" d="M35.3,8h-1.4c-.5.1-.6.6-.7,1.2h-.4v-1.8h6.2v1.8h-.4c0-.9-.3-1.1-.7-1.2h-1.4v5.6c0,.7.3.7.7.7h.4v.3h-3.2v-.3h.4c.4,0,.7,0,.7-.7v-5.6h-.2Z"/>
15
+ <path class="st0" d="M30.6,12h-2.5l-.7,1.8v.3c0,.3.5.3.9.3v.3h-2.4v-.3c.5,0,.7,0,1-.7l2.6-6.1h.7l2.6,6.6c0,.1,0,.2.7.2v.3h-2.9v-.3c.8,0,1.1,0,.8-.7l-.6-1.7h-.2ZM30.5,11.5l-1.1-2.7-1.1,2.7s2.2,0,2.2,0Z"/>
16
+ <path class="st0" d="M46.6,8.8c0-.7,0-.9-.5-.9h-.3v-.3h3.3c.5,0,.9,0,1.3.2.7.4.8,1.2.8,1.4,0,.4,0,.7-.4,1.1-.4.4-.8.6-1.1.7.3,0,.9.2,1.4.5.4.3.7.9.7,1.4s-.3,1.2-.8,1.5c-.5.4-1.2.3-1.5.3h-3.7v-.3c.7,0,.9,0,.9-.8v-4.8h-.1ZM47.7,10.7h1.7c.3-.1.7-.4.7-1.3s0-.9-.4-1.1c-.3-.3-.8-.3-.9-.3h-.8q-.2,0-.2.5v2.2h0ZM47.7,13.7c0,.3,0,.4.2.5.2,0,1,.1,1.2.1.3,0,.6,0,.9-.2.6-.4.6-1.1.6-1.2,0-.3,0-.7-.4-1.1s-.9-.7-2.5-.6v2.6h0Z"/>
17
+ <path class="st0" d="M54.9,11.5l-2-3c-.3-.5-.4-.6-1.1-.6v-.3h3.1v.3h-.4c-.2,0-.4,0-.4.2s0,0,0,.2l1.7,2.7,1.4-2.1c.3-.4.4-.5.4-.8s0-.2-.8-.2v-.3h2.2v.3c-.4,0-.6,0-.8.4l-2.4,3.3v2.1c0,.2,0,.6.3.7h.7v.3h-3.3v-.3h.4c.4,0,.7,0,.7-.7v-2.2h.2Z"/>
18
+ <path class="st0" d="M63.7,11.2h3v.3c-.7,0-.7.1-.7.6v2.1c-.3,0-.5.1-.7.2-1.1.3-1.6.4-2.3.4-2.5,0-3.9-1.7-3.9-3.9s.6-2.3,1.3-2.8c.8-.7,1.8-.8,2.5-.8s.9,0,1.7.2q.8.1,1.3.2v2h-.5c0-.4,0-.8-.5-1.2-.5-.4-1.2-.6-1.8-.6-1.8,0-2.7,1.3-2.7,2.9s.3,1.9.7,2.4c.7,1,1.7,1.1,2.3,1.1s.6,0,1-.1c.5-.2.5-.3.5-.8v-1.1c0-.6,0-.7-.8-.7h-.3v-.4h0Z"/>
19
+ <path class="st0" d="M72.1,11.2h3v.3c-.7,0-.7.1-.7.6v2.1c-.3,0-.5.1-.7.2-1.1.3-1.6.4-2.3.4-2.5,0-3.9-1.7-3.9-3.9s.6-2.3,1.3-2.8c.8-.7,1.8-.8,2.5-.8s.9,0,1.7.2q.8.1,1.3.2v2h-.5c0-.4,0-.8-.5-1.2-.5-.4-1.2-.6-1.8-.6-1.8,0-2.7,1.3-2.7,2.9s.3,1.9.7,2.4c.7,1,1.7,1.1,2.3,1.1s.6,0,1-.1c.5-.2.5-.3.5-.8v-1.1c0-.6,0-.7-.8-.7h-.3v-.4h0Z"/>
20
+ <g>
21
+ <g>
22
+ <polygon class="st0" points="0 9.9 .7 10.6 9.7 10.6 10.4 9.9 5.2 7.3 0 9.9"/>
23
+ <rect class="st0" x=".7" y="11.4" width="9" height=".6"/>
24
+ <rect class="st0" x=".7" y="12.7" width="9" height=".6"/>
25
+ <rect class="st0" x=".7" y="14.1" width="9" height=".6"/>
26
+ </g>
27
+ <path class="st0" d="M8.1,3.1c-.3,0-.7,0-.9.2-.1-.1-.3-.2-.6-.2s-.8.2-.9.2h-.2s.5-.2.5-.8-.7-.8-.7-.8v-.9h.5v-.3h-.5v-.5h-.3v.5h-.5v.3h.5v.9s-.7,0-.7.8.5.8.5.8h-.2c-.1,0-.5-.2-.9-.2s-.5.1-.6.2c-.2-.1-.6-.2-.9-.2-.5,0-1.1.4-1,.9,0,.5.5,2.3.5,2.3h6.9s.4-1.8.5-2.3c0-.5-.5-.9-1-.9ZM3.2,5.2s-.2.5-.8.5-.9-.4-.9-.7h.1s.2.2.4.2.3-.1.3-.3-.1-.3-.2-.3c-.2,0-.3.2-.4.2,0,0-.2,0-.1-.1,0,0,.3-.2.3-.4s-.2-.3-.3-.3c0-.2.2-.6.8-.6s.8.1.8.1v.5s-.2,0-.2.3.2.4.2.4h0q0,.1-.1,0s-.2-.2-.3-.2-.2.1-.2.3.1.3.2.3.3-.2.3-.2h.1v.2h0ZM5,5.2s-.3.5-.8.5-.8-.5-.8-.5v-.2h.1s.2.2.3.2.2-.1.2-.3-.1-.3-.2-.3-.2.1-.3.2h-.1c0-.1.2-.3.2-.5s-.2-.3-.2-.3v-.4c0-.2.2-.2.4-.2s.9,0,1.1.1v.5s-.2,0-.2.3.2.4.2.4h0q0,.1-.1,0s-.2-.2-.3-.2-.2.1-.2.3.1.3.2.3.3-.2.3-.2h.1v.2h0ZM7,5.2s-.3.5-.8.5-.8-.5-.8-.5v-.2h.1s.2.2.3.2.2-.1.2-.3-.1-.3-.2-.3-.2.1-.3.2h-.1c0-.1.2-.3.2-.5s-.2-.3-.2-.3v-.5c.2,0,.9-.1,1.1-.1s.4,0,.4.2v.4s-.2,0-.2.3.2.4.2.4h0q0,.1-.1,0s-.2-.2-.3-.2-.2.1-.2.3.1.3.2.3.3-.2.3-.2h.1v.2h0ZM8.8,4.7s0,.1-.1.1c0,0-.2-.2-.4-.2s-.2.2-.2.3.2.3.3.3.3-.2.4-.2h.1c0,.3-.3.7-.9.7s-.8-.5-.8-.5v-.2h.1s.2.2.3.2.2-.1.2-.3-.1-.3-.2-.3-.2.1-.3.2h-.1c0-.1.2-.3.2-.5s-.2-.3-.2-.3v-.5s0-.1.8-.1.8.4.8.6c-.1,0-.3,0-.3.3s.2.3.3.4ZM8.3,4.5c-.1,0-.2.1-.2.3s.2.3.3.3"/>
28
+ </g>
29
+ </svg>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@statsbygg/layout",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "publishConfig": { "access": "public" },
5
5
  "description": "Shared layout components for Statsbygg microfrontend architecture",
6
6
  "main": "./dist/index.js",
@@ -24,13 +24,12 @@
24
24
  "next": ">=14.0.0",
25
25
  "react": ">=18.0.0",
26
26
  "react-dom": ">=18.0.0",
27
- "zustand": "^5.0.4"
27
+ "zustand": "^5.0.4",
28
+ "@statsbygg/design-tokens": "^0.2.0"
28
29
  },
29
30
  "dependencies": {
30
31
  "@digdir/designsystemet-react": "^1.5.1",
31
- "@statsbygg/design-tokens": "^0.2.0",
32
32
  "clsx": "^2.0.0",
33
- "zustand": "^5.0.4",
34
33
  "lucide-react": "^0.514.0"
35
34
  },
36
35
  "devDependencies": {
@@ -38,7 +37,6 @@
38
37
  "@types/react": "^18.2.0",
39
38
  "@types/react-dom": "^18.2.0",
40
39
  "tsup": "^8.0.0",
41
- "zustand": "^5.0.4",
42
40
  "typescript": "^5.0.0"
43
41
  },
44
42
  "sideEffects": ["**/*.css"]
@@ -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>