@obosbbl/grunnmuren-react 1.11.1 → 1.12.0

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.
@@ -0,0 +1,1337 @@
1
+ 'use client';
2
+ import { jsx as a, jsxs as b, Fragment as T } from "react/jsx-runtime";
3
+ import { useState as E, useCallback as R, useEffect as be, useId as D, createContext as w, useContext as x, forwardRef as h, Children as F, isValidElement as _, cloneElement as Z, useRef as k, useMemo as L } from "react";
4
+ import { ChevronDown as $, Warning as ee, InfoCircle as re, LoadingSpinner as fe, MenuAlt as ge, Close as he, ChevronRight as pe, ChevronLeft as Ae } from "@obosbbl/grunnmuren-icons";
5
+ import xe from "react-collapsed";
6
+ import l from "clsx";
7
+ import W from "@seznam/compose-react-refs";
8
+ import { useMedia as te } from "react-use";
9
+ import { useMedia as Tr } from "react-use";
10
+ const N = () => {
11
+ }, ve = "(prefers-reduced-motion: reduce)", Ne = (e = !1) => te(ve, e);
12
+ function ne(e) {
13
+ switch (e) {
14
+ case "gray":
15
+ return "bg-gray-concrete";
16
+ case "green":
17
+ return "bg-green-lightest";
18
+ case "yellow":
19
+ return "bg-yellow";
20
+ case "blue":
21
+ return "bg-blue-lightest";
22
+ }
23
+ }
24
+ const we = (e) => te("(max-width: 767.9px)", e);
25
+ function M(e, t = !0) {
26
+ const [r, n] = E("indeterminate"), [o, s] = E(), d = R((i) => {
27
+ i.target.checkValidity() && (n("valid"), s(void 0));
28
+ }, []), c = R(
29
+ (i) => {
30
+ r !== "indeterminate" && i.target.checkValidity() && (n("valid"), s(void 0));
31
+ },
32
+ [r]
33
+ ), m = R((i) => {
34
+ i.preventDefault();
35
+ const u = i.target.validationMessage;
36
+ s(u), n("invalid");
37
+ }, []);
38
+ return be(() => {
39
+ var u;
40
+ const { current: i } = e;
41
+ return t && // @ts-expect-error respect the <form noValidate> attribute if we are rendered inside a form
42
+ ((u = i == null ? void 0 : i.form) == null ? void 0 : u.noValidate) !== !0 && (i == null || i.addEventListener("blur", d), i == null || i.addEventListener("input", c), i == null || i.addEventListener("invalid", m)), () => {
43
+ i == null || i.removeEventListener("blur", d), i == null || i.removeEventListener("input", c), i == null || i.removeEventListener("invalid", m);
44
+ };
45
+ }, [t, c]), { validity: r, validationMessage: o };
46
+ }
47
+ function y(e) {
48
+ const t = D();
49
+ return e ?? t;
50
+ }
51
+ const Ie = 300, ye = "duration-300", K = (e) => {
52
+ const { className: t, ...r } = e;
53
+ return /* @__PURE__ */ a("div", { className: l(t, "flex flex-col gap-2"), ...r });
54
+ }, Y = w({
55
+ isExpanded: !1,
56
+ setExpanded: N,
57
+ // @ts-expect-error noop
58
+ getCollapseProps: N,
59
+ // @ts-expect-error noop
60
+ getToggleProps: N,
61
+ onChange: N
62
+ }), Ce = (e) => {
63
+ const t = Ne(), { className: r, defaultOpen: n, onChange: o = N, open: s, ...d } = e, c = xe({
64
+ defaultExpanded: n,
65
+ isExpanded: s,
66
+ duration: Ie,
67
+ hasDisabledAnimation: t,
68
+ easing: "cubic-bezier(0.25, 0.1, 0.25, 1)"
69
+ });
70
+ return /* @__PURE__ */ a(Y.Provider, { value: { onChange: o, ...c }, children: /* @__PURE__ */ a(
71
+ "div",
72
+ {
73
+ className: l(
74
+ r,
75
+ "rounded-sm border-b-2 border-l-4 border-solid",
76
+ c.isExpanded ? "border-l-green-dark" : "border-l-green"
77
+ ),
78
+ ...d
79
+ }
80
+ ) });
81
+ }, qe = (e) => {
82
+ const { children: t, className: r, as: n = "h3", ...o } = e, { getToggleProps: s, onChange: d, isExpanded: c } = x(Y), m = s({ onClick: () => d(!c) });
83
+ return /* @__PURE__ */ a(n, { children: /* @__PURE__ */ b(
84
+ "button",
85
+ {
86
+ className: l(
87
+ r,
88
+ "focus-visible:outline-blue-dark aria-expanded:bg-green-dark group flex min-h-[4rem] w-full items-center justify-between px-5 py-4 text-left text-lg font-semibold focus:outline-none focus-visible:outline-4 focus-visible:outline-offset-0 aria-expanded:text-white"
89
+ ),
90
+ ...o,
91
+ ...m,
92
+ id: ae(m["aria-controls"]),
93
+ children: [
94
+ t,
95
+ /* @__PURE__ */ a(
96
+ $,
97
+ {
98
+ className: `shrink-0 text-sm ${ye} group-aria-expanded:rotate-180`
99
+ }
100
+ )
101
+ ]
102
+ }
103
+ ) });
104
+ }, Re = (e) => {
105
+ const { getCollapseProps: t } = x(Y), { className: r, ...n } = e, o = t();
106
+ return /* @__PURE__ */ a(
107
+ "div",
108
+ {
109
+ ...o,
110
+ role: "region",
111
+ "aria-labelledby": ae(o.id),
112
+ children: /* @__PURE__ */ a("div", { className: l(r, "p-5 pb-10"), ...n })
113
+ }
114
+ );
115
+ }, ae = (e) => e + "toggle";
116
+ K.Item = Ce;
117
+ K.Header = qe;
118
+ K.Content = Re;
119
+ const tr = (e) => {
120
+ const { className: t, children: r, heading: n, severity: o = "alert", ...s } = e;
121
+ return /* @__PURE__ */ a(
122
+ "section",
123
+ {
124
+ className: l(t, "p-4 md:py-8", {
125
+ "bg-orange-light": o === "info",
126
+ "bg-red-light": o === "alert"
127
+ }),
128
+ role: "alert",
129
+ ...s,
130
+ children: /* @__PURE__ */ b("div", { className: "flex justify-center", children: [
131
+ /* @__PURE__ */ a(
132
+ Ee,
133
+ {
134
+ className: "mr-4 flex-none md:mr-8 md:text-2xl",
135
+ severity: o
136
+ }
137
+ ),
138
+ /* @__PURE__ */ b("div", { className: "w-prose flex-initial", children: [
139
+ /* @__PURE__ */ a("h2", { className: "h4 mb-2", children: n }),
140
+ r
141
+ ] })
142
+ ] })
143
+ }
144
+ );
145
+ }, Ee = ({ severity: e, className: t }) => e === "alert" ? /* @__PURE__ */ a(ee, { className: l(t, "text-red") }) : /* @__PURE__ */ a(re, { className: l(t, "text-orange") }), nr = (e) => {
146
+ const {
147
+ bgColor: t,
148
+ className: r,
149
+ children: n,
150
+ heading: o,
151
+ image: s,
152
+ ...d
153
+ } = e, c = ne(t);
154
+ return /* @__PURE__ */ a("article", { className: l(r, c, "py-8 px-4 md:py-14"), ...d, children: /* @__PURE__ */ b("div", { className: "container flex gap-4 max-md:flex-wrap md:gap-12", children: [
155
+ s,
156
+ /* @__PURE__ */ b("div", { className: "w-prose", children: [
157
+ o && /* @__PURE__ */ a("h2", { className: "mb-4", children: o }),
158
+ n
159
+ ] })
160
+ ] }) });
161
+ }, ar = (e) => /* @__PURE__ */ a(
162
+ "img",
163
+ {
164
+ loading: "lazy",
165
+ decoding: "async",
166
+ className: "w-24 flex-none self-center md:w-40 md:self-start",
167
+ ...e
168
+ }
169
+ ), ke = {
170
+ "standard-primary": "bg-green border-green text-white",
171
+ "standard-secondary": "bg-white border-green text-black",
172
+ "light-green-primary": "bg-green-light border-green-light text-black",
173
+ "light-green-secondary": "bg-transparent border-green-light text-green-light",
174
+ "white-primary": "bg-white border-white text-black",
175
+ "white-secondary": "bg-transparent border-white text-white"
176
+ }, or = h((e, t) => {
177
+ const {
178
+ children: r,
179
+ className: n,
180
+ color: o,
181
+ href: s,
182
+ loading: d,
183
+ type: c = "button",
184
+ variant: m = "primary",
185
+ ...i
186
+ } = e, u = x(z), g = ke[`${o ?? u}-${m}`], p = l(n, g, "button"), A = d ? /* @__PURE__ */ a(Le, { children: r }) : r;
187
+ return /* @__PURE__ */ a(T, { children: s ? /* @__PURE__ */ a(
188
+ "a",
189
+ {
190
+ "aria-busy": d ? !0 : void 0,
191
+ ...i,
192
+ href: s,
193
+ ref: t,
194
+ className: p,
195
+ children: A
196
+ }
197
+ ) : /* @__PURE__ */ a(
198
+ "button",
199
+ {
200
+ "aria-busy": d ? !0 : void 0,
201
+ ...i,
202
+ type: c,
203
+ ref: t,
204
+ className: p,
205
+ children: A
206
+ }
207
+ ) });
208
+ }), Le = (e) => /* @__PURE__ */ b(T, { children: [
209
+ oe(e.children),
210
+ /* @__PURE__ */ a(
211
+ "span",
212
+ {
213
+ className: "!visible absolute top-1 bottom-1 left-1 right-1 grid place-items-center overflow-hidden bg-inherit",
214
+ "aria-hidden": !0,
215
+ children: /* @__PURE__ */ a(fe, { className: "animate-spin" })
216
+ }
217
+ )
218
+ ] });
219
+ function oe(e) {
220
+ return F.map(e, (t) => {
221
+ if (!_(t))
222
+ return typeof t == "string" ? /* @__PURE__ */ a("span", { children: t }) : t;
223
+ if (t.props.children) {
224
+ const r = {
225
+ children: oe(t.props.children)
226
+ };
227
+ t = Z(t, r);
228
+ }
229
+ return t;
230
+ });
231
+ }
232
+ const z = w("standard"), se = w(!0), Me = (e, t) => {
233
+ const {
234
+ as: r = "div",
235
+ body: n,
236
+ className: o,
237
+ image: s,
238
+ rightAlignBody: d = !0,
239
+ ...c
240
+ } = e;
241
+ return /* @__PURE__ */ b(
242
+ r,
243
+ {
244
+ className: l(
245
+ o,
246
+ "grid gap-8 md:grid-flow-col md:grid-cols-[50%,50%] md:gap-0"
247
+ ),
248
+ ...c,
249
+ ref: t,
250
+ children: [
251
+ /* @__PURE__ */ a(se.Provider, { value: d, children: s }),
252
+ n
253
+ ]
254
+ }
255
+ );
256
+ }, ze = h(Me), Pe = h(
257
+ (e, t) => {
258
+ const { className: r, ...n } = e;
259
+ return /* @__PURE__ */ a(
260
+ "div",
261
+ {
262
+ className: l(r, "md:mx-18 self-center"),
263
+ ref: t,
264
+ ...n
265
+ }
266
+ );
267
+ }
268
+ ), Ve = h(
269
+ (e, t) => {
270
+ const { className: r, children: n, ...o } = e, s = x(se), d = l(
271
+ r,
272
+ "max-md:rounded-b-3xl w-full",
273
+ s ? "md:rounded-r-3xl" : "md:rounded-l-3xl md:order-1"
274
+ );
275
+ if (_(n)) {
276
+ const c = F.only(n);
277
+ return Z(c, {
278
+ // @ts-expect-error assume className prop is allowed
279
+ className: d,
280
+ ref: t,
281
+ ...o
282
+ });
283
+ }
284
+ return /* @__PURE__ */ a("img", { className: d, ref: t, ...o });
285
+ }
286
+ ), sr = Object.assign({}, ze, {
287
+ Body: Pe,
288
+ Image: Ve
289
+ }), Se = (e, t) => {
290
+ const {
291
+ as: r = "div",
292
+ className: n,
293
+ bgColor: o = "white",
294
+ ...s
295
+ } = e;
296
+ return /* @__PURE__ */ a(
297
+ r,
298
+ {
299
+ className: l(n, "relative overflow-hidden rounded-3xl", {
300
+ "border-2 border-solid bg-white": o === "white",
301
+ "bg-gray-light": o === "gray"
302
+ }),
303
+ ...s,
304
+ ref: t
305
+ }
306
+ );
307
+ }, ir = h(Se), lr = h(
308
+ (e, t) => {
309
+ const { className: r, ...n } = e;
310
+ return /* @__PURE__ */ a(
311
+ "img",
312
+ {
313
+ className: l(r, "w-full object-cover"),
314
+ loading: "lazy",
315
+ ...n,
316
+ ref: t
317
+ }
318
+ );
319
+ }
320
+ ), dr = h(
321
+ (e, t) => {
322
+ const { bgColor: r, className: n, ...o } = e, s = ne(r);
323
+ return /* @__PURE__ */ a("div", { className: l(s, n), children: /* @__PURE__ */ a(
324
+ "div",
325
+ {
326
+ className: "container grid grid-cols-1 gap-12 py-16 md:grid-cols-2 md:py-20 lg:py-24",
327
+ ...o,
328
+ ref: t
329
+ }
330
+ ) });
331
+ }
332
+ ), cr = h(
333
+ (e, t) => {
334
+ const { className: r, ...n } = e;
335
+ return /* @__PURE__ */ a("div", { className: l(r, "p-8 md:px-10"), ...n, ref: t });
336
+ }
337
+ ), mr = h((e, t) => {
338
+ const { className: r, ...n } = e;
339
+ return /* @__PURE__ */ a(
340
+ "a",
341
+ {
342
+ className: l(
343
+ r,
344
+ "no-underline before:absolute before:top-0 before:left-0 before:block before:h-full before:w-full hover:underline"
345
+ ),
346
+ ref: t,
347
+ ...n
348
+ }
349
+ );
350
+ }), ur = h(
351
+ (e, t) => {
352
+ const {
353
+ children: r,
354
+ className: n,
355
+ error: o,
356
+ id: s,
357
+ disableValidation: d = !1,
358
+ ...c
359
+ } = e, m = k(null), { validity: i, validationMessage: u } = M(
360
+ m,
361
+ !d
362
+ ), f = y(s), g = f + "err", p = o || u;
363
+ return /* @__PURE__ */ b("div", { className: "grid gap-2", children: [
364
+ /* @__PURE__ */ b("label", { className: l(n, "flex cursor-pointer gap-2.5"), children: [
365
+ /* @__PURE__ */ a(
366
+ "input",
367
+ {
368
+ id: f,
369
+ className: l(
370
+ "checkbox checked:bg-green checked:border-green grid h-[1.25em] w-[1.25em] flex-none translate-y-[0.1em] cursor-pointer appearance-none place-content-center rounded border-2 border-solid bg-white text-white focus:outline-none focus:ring-2",
371
+ {
372
+ "border-gray-dark focus:ring-black": !o,
373
+ "border-red focus:ring-red": !!o
374
+ }
375
+ ),
376
+ ref: t,
377
+ type: "checkbox",
378
+ ...c,
379
+ "aria-describedby": p ? g : void 0,
380
+ "aria-invalid": !!o || i === "invalid"
381
+ }
382
+ ),
383
+ r
384
+ ] }),
385
+ p && /* @__PURE__ */ a(C, { id: g, children: p })
386
+ ] });
387
+ }
388
+ ), Je = {
389
+ "blue-light": "bg-blue-light border-blue-light",
390
+ "red-light": "bg-red-light border-red-light",
391
+ "green-light": "bg-green-light border-green-light",
392
+ "orange-light": "bg-orange-light border-orange-light"
393
+ }, je = {
394
+ "blue-light": "text-blue-dark",
395
+ "red-light": "text-red",
396
+ "green-light": "text-green",
397
+ "orange-light": "text-black"
398
+ }, br = (e) => {
399
+ const { className: t, color: r, icon: n, children: o, variant: s = "filled" } = e, d = r && Je[r], c = r && je[r];
400
+ return /* @__PURE__ */ b(
401
+ "div",
402
+ {
403
+ className: l(
404
+ "inline-flex items-center gap-0.5 overflow-hidden rounded-lg border-2 text-sm font-semibold",
405
+ d,
406
+ t
407
+ ),
408
+ children: [
409
+ n && /* @__PURE__ */ a("div", { className: l("px-3 py-2", c), children: n }),
410
+ /* @__PURE__ */ a(
411
+ "div",
412
+ {
413
+ className: l("flex-1 py-2 px-4", {
414
+ "bg-white": s === "outline"
415
+ }),
416
+ children: o
417
+ }
418
+ )
419
+ ]
420
+ }
421
+ );
422
+ }, fr = (e) => {
423
+ const { className: t, children: r, ...n } = e;
424
+ return /* @__PURE__ */ a(z.Provider, { value: "white", children: /* @__PURE__ */ a(
425
+ "footer",
426
+ {
427
+ className: l(
428
+ t,
429
+ // calculated height for psuedo element fixes rendering artifict that sometimes occurs on specific screen sizes and zoom levels
430
+ "bg-blue pt-18 relative pb-12 text-white before:absolute before:-top-px before:left-0 before:right-0 before:h-[calc(1.5rem_+_1px)] before:rounded-b-3xl before:bg-white "
431
+ ),
432
+ ...n,
433
+ children: /* @__PURE__ */ a("div", { className: "container", children: r })
434
+ }
435
+ ) });
436
+ }, gr = (e) => {
437
+ const { heading: t, children: r, className: n, ...o } = e;
438
+ return /* @__PURE__ */ b(
439
+ "form",
440
+ {
441
+ className: l(
442
+ n,
443
+ "border-blue-dark block overflow-hidden rounded-t-3xl rounded-b-lg border-2"
444
+ ),
445
+ ...o,
446
+ children: [
447
+ t && /* @__PURE__ */ a(Oe, { children: t }),
448
+ /* @__PURE__ */ a("div", { className: "p-6 md:p-10", children: r })
449
+ ]
450
+ }
451
+ );
452
+ }, Oe = (e) => {
453
+ const { className: t, ...r } = e;
454
+ return /* @__PURE__ */ a(
455
+ "h2",
456
+ {
457
+ className: l(
458
+ t,
459
+ "bg-blue-dark p-6 text-xl font-bold text-white md:px-10 md:py-8 md:text-2xl"
460
+ ),
461
+ ...r
462
+ }
463
+ );
464
+ }, hr = (e) => {
465
+ const { className: t, ...r } = e;
466
+ return /* @__PURE__ */ a(
467
+ "div",
468
+ {
469
+ "aria-live": "polite",
470
+ className: l(
471
+ t,
472
+ "border-red bg-red-light rounded-lg border-2 p-6 text-sm"
473
+ ),
474
+ ...r,
475
+ children: "Beklager! Noe gikk dessverre galt under innesendingen av skjemaet. Prøv gjerne igjen om en stund."
476
+ }
477
+ );
478
+ }, C = (e) => {
479
+ const { children: t, className: r, ...n } = e;
480
+ return /* @__PURE__ */ b(
481
+ "div",
482
+ {
483
+ className: l(
484
+ r,
485
+ "bg-red-light text-red flex items-center gap-2 rounded py-1 px-2 text-sm"
486
+ ),
487
+ "aria-live": "polite",
488
+ ...n,
489
+ children: [
490
+ /* @__PURE__ */ a(ee, { className: "text-red flex-shrink-0" }),
491
+ t
492
+ ]
493
+ }
494
+ );
495
+ }, P = (e) => {
496
+ const { className: t, children: r, ...n } = e;
497
+ return /* @__PURE__ */ a("div", { className: l(t, "text-gray-dark text-sm"), ...n, children: r });
498
+ }, V = (e) => {
499
+ const { className: t, children: r, isRequired: n, isInvalid: o, ...s } = e;
500
+ return /* @__PURE__ */ b(
501
+ "label",
502
+ {
503
+ className: l(t, "block cursor-pointer font-semibold"),
504
+ ...s,
505
+ children: [
506
+ n && /* @__PURE__ */ a(
507
+ "span",
508
+ {
509
+ "aria-hidden": !0,
510
+ className: l(
511
+ "mr-1 select-none",
512
+ o ? "text-red" : "text-blue"
513
+ ),
514
+ children: "*"
515
+ }
516
+ ),
517
+ r
518
+ ]
519
+ }
520
+ );
521
+ }, pr = (e) => {
522
+ const { className: t, heading: r, text: n, ...o } = e;
523
+ return /* @__PURE__ */ b(
524
+ "div",
525
+ {
526
+ className: l(
527
+ t,
528
+ "bg-gray-concrete flex flex-col gap-8 p-8 text-center"
529
+ ),
530
+ ...o,
531
+ children: [
532
+ /* @__PURE__ */ a(
533
+ "img",
534
+ {
535
+ className: "mx-auto",
536
+ alt: "Innsending fullført",
537
+ height: "220",
538
+ width: "247",
539
+ src: "data:image/png;base64,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"
540
+ }
541
+ ),
542
+ r && /* @__PURE__ */ a("h2", { className: "text-blue text-2xl", children: r }),
543
+ n && /* @__PURE__ */ a("p", { className: "text-lg", children: n })
544
+ ]
545
+ }
546
+ );
547
+ };
548
+ function ie(e) {
549
+ return e !== "vertical-split" && e !== "below-center" && e !== "below-left";
550
+ }
551
+ const S = w({ bgColor: "white", contentPosition: "below-center", hasImage: !1 }), Ar = h((e, t) => {
552
+ const {
553
+ bgColor: r = "white",
554
+ children: n,
555
+ className: o,
556
+ contentPosition: s = "below-center",
557
+ image: d,
558
+ ...c
559
+ } = e, m = d != null, i = m ? s : "below-center", u = L(
560
+ () => ({
561
+ bgColor: r,
562
+ contentPosition: i,
563
+ hasImage: m
564
+ }),
565
+ [r, i, m]
566
+ );
567
+ return /* @__PURE__ */ a(
568
+ z.Provider,
569
+ {
570
+ value: r === "white" ? "standard" : "light-green",
571
+ children: /* @__PURE__ */ a(S.Provider, { value: u, children: /* @__PURE__ */ b(
572
+ "div",
573
+ {
574
+ className: l(
575
+ o,
576
+ // disable padding on small screens so the hero image is flush with the screen edges
577
+ "container max-md:px-0 md:grid",
578
+ {
579
+ "md:grid-cols-[50%,50%]": i === "vertical-split"
580
+ }
581
+ ),
582
+ style: ie(i) ? { gridTemplateAreas: '"hero"' } : void 0,
583
+ ...c,
584
+ ref: t,
585
+ children: [
586
+ d,
587
+ n
588
+ ]
589
+ }
590
+ ) })
591
+ }
592
+ );
593
+ }), xr = h(
594
+ (e, t) => {
595
+ const { contentPosition: r } = x(S);
596
+ return /* @__PURE__ */ b(
597
+ "picture",
598
+ {
599
+ className: l(e.className, "aspect-w-6 aspect-h-7 block", {
600
+ "sm:aspect-w-8 sm:aspect-h-4": r !== "vertical-split",
601
+ // calculate a square aspect ratio
602
+ "sm:aspect-w-8 sm:aspect-h-8": r === "vertical-split"
603
+ }),
604
+ style: r !== "vertical-split" && r !== "below-center" && r !== "below-left" ? { gridArea: "hero" } : void 0,
605
+ ref: t,
606
+ children: [
607
+ /* @__PURE__ */ a("source", { media: "(min-width: 768px)", srcSet: e.mdSrc }),
608
+ /* @__PURE__ */ a(
609
+ "img",
610
+ {
611
+ className: "object-cover",
612
+ decoding: "async",
613
+ src: e.src,
614
+ alt: e.alt
615
+ }
616
+ )
617
+ ]
618
+ }
619
+ );
620
+ }
621
+ ), vr = h(
622
+ (e, t) => {
623
+ const { bgColor: r, contentPosition: n, hasImage: o } = x(S), { children: s, className: d, heading: c, description: m, ...i } = e, u = ie(n);
624
+ return /* @__PURE__ */ b(
625
+ "div",
626
+ {
627
+ className: l(
628
+ d,
629
+ "relative grid grid-flow-row grid-cols-[minmax(auto,_37rem)] content-center gap-6 rounded-3xl py-10 px-6 text-center max-md:mx-4 md:p-12",
630
+ {
631
+ // On mobile we use negative margin on the content to pull the content up into the image
632
+ "max-md:-mt-18": o,
633
+ "text-white": r !== "white",
634
+ "bg-green-dark": r === "green",
635
+ "bg-blue-dark": r === "blue",
636
+ "bg-white": r === "white",
637
+ // vertical split
638
+ // vertically center the content, remove the border radius on the edge, add some negative margin to pull the image beneath the hero content, left align the content
639
+ "md:z-10 md:-order-1 md:mt-0 md:-mr-5 md:justify-center md:rounded-l-none md:text-left": n === "vertical-split",
640
+ // below center/content header
641
+ "justify-center md:mx-auto md:w-4/5": n === "below-center",
642
+ "md:-mt-18": o && n === "below-center",
643
+ // Below left style
644
+ "md:ml-[8%] md:-mt-32 md:max-w-[58%] md:text-left": n === "below-left",
645
+ // styles for when the contain is fully contained within the image
646
+ "md:my-9 md:mx-32 md:w-2/5": u,
647
+ "self-end justify-self-start": n === "bottom-left",
648
+ "self-start justify-self-start": n === "top-left",
649
+ "self-start justify-self-end": n === "top-right",
650
+ "self-end justify-self-end": n === "bottom-right",
651
+ "self-center justify-self-center": n === "center"
652
+ }
653
+ ),
654
+ ...i,
655
+ style: u ? { gridArea: "hero" } : void 0,
656
+ ref: t,
657
+ children: [
658
+ /* @__PURE__ */ a("h1", { children: c }),
659
+ m && /* @__PURE__ */ a("p", { className: "text-lg font-semibold md:text-xl", children: m }),
660
+ s
661
+ ]
662
+ }
663
+ );
664
+ }
665
+ ), Nr = h(
666
+ (e, t) => {
667
+ const { className: r, ...n } = e, { contentPosition: o } = x(S);
668
+ return /* @__PURE__ */ a(
669
+ "div",
670
+ {
671
+ className: l(
672
+ r,
673
+ "grid items-center justify-center justify-items-center gap-4 md:grid-flow-col",
674
+ // Left align actions/buttons
675
+ {
676
+ "md:justify-start": o === "vertical-split" || o === "below-left"
677
+ }
678
+ ),
679
+ ...n,
680
+ ref: t
681
+ }
682
+ );
683
+ }
684
+ ), le = h((e, t) => {
685
+ const {
686
+ className: r,
687
+ isInvalid: n,
688
+ size: o,
689
+ as: s,
690
+ type: d,
691
+ rightAddon: c,
692
+ leftAddon: m,
693
+ ...i
694
+ } = e, u = s ?? "input", f = Te(u, d);
695
+ return /* @__PURE__ */ b(
696
+ "div",
697
+ {
698
+ className: l(
699
+ r,
700
+ "relative flex items-center rounded-lg border border-b-[3px] focus-within:-ml-[2px] focus-within:-mt-[2px] focus-within:border-[3px] focus-within:shadow",
701
+ {
702
+ "focus-within:border-blue-dark border-black": !n,
703
+ "border-red focus-within:border-red": n,
704
+ "w-fit": o != null,
705
+ "w-full": o == null,
706
+ "pl-4": m,
707
+ "pr-4": c
708
+ }
709
+ ),
710
+ children: [
711
+ m,
712
+ /* @__PURE__ */ a(
713
+ u,
714
+ {
715
+ "aria-invalid": n,
716
+ ref: t,
717
+ className: "focus:none placeholder-gray w-full rounded-lg border-none px-4 py-3.5 focus:outline-none",
718
+ size: o,
719
+ type: f,
720
+ ...i
721
+ }
722
+ ),
723
+ c
724
+ ]
725
+ }
726
+ );
727
+ });
728
+ function Te(e, t) {
729
+ if (t != null)
730
+ return t;
731
+ if (e === "input")
732
+ return "text";
733
+ }
734
+ const wr = (e) => {
735
+ let t = "";
736
+ return e.icon && (t = "inline-flex items-center gap-2"), /* @__PURE__ */ b("a", { className: t, href: e.href, children: [
737
+ e.icon,
738
+ e.children
739
+ ] });
740
+ }, q = w({
741
+ setIsExpanded: N,
742
+ isExpanded: !1,
743
+ collapsibleId: ""
744
+ }), Ir = (e) => {
745
+ const { className: t, children: r, ...n } = e, o = D(), [s, d] = E(!1), c = L(
746
+ () => ({ isExpanded: s, setIsExpanded: d, collapsibleId: o }),
747
+ [s, o]
748
+ );
749
+ return /* @__PURE__ */ a(z.Provider, { value: "white", children: /* @__PURE__ */ a(q.Provider, { value: c, children: /* @__PURE__ */ a(
750
+ "div",
751
+ {
752
+ className: l(
753
+ t,
754
+ "bg-blue relative pt-6 pb-12 text-white before:absolute before:bottom-0 before:left-0 before:right-0 before:h-6 before:rounded-t-3xl before:bg-white md:pt-8 md:pb-14"
755
+ ),
756
+ ...n,
757
+ children: /* @__PURE__ */ a("div", { className: "container", children: r })
758
+ }
759
+ ) }) });
760
+ }, yr = (e) => {
761
+ const { className: t, children: r, ...n } = e, { isExpanded: o } = x(q);
762
+ return /* @__PURE__ */ a(
763
+ "nav",
764
+ {
765
+ className: l(
766
+ t,
767
+ "my-8 flex flex-col md:mb-0 md:flex md:flex-row md:flex-wrap md:gap-x-8",
768
+ {
769
+ hidden: !o
770
+ }
771
+ ),
772
+ ...n,
773
+ children: r
774
+ }
775
+ );
776
+ }, Cr = h(
777
+ (e, t) => {
778
+ const { active: r, className: n, children: o, ...s } = e;
779
+ return /* @__PURE__ */ a(
780
+ "a",
781
+ {
782
+ "aria-current": r ? "page" : void 0,
783
+ className: l(
784
+ n,
785
+ "border-b border-[#0156E0] py-3 no-underline md:border-b-2 md:border-transparent md:py-2 md:hover:border-white",
786
+ {
787
+ "md:bg-blue-dark font-bold md:-mx-3 md:rounded-t-lg md:px-3": r
788
+ }
789
+ ),
790
+ ref: t,
791
+ ...s,
792
+ children: o
793
+ }
794
+ );
795
+ }
796
+ ), Fe = () => {
797
+ const { isExpanded: e, setIsExpanded: t, collapsibleId: r } = x(q);
798
+ let n = ge, o = "Meny";
799
+ return e && (n = he, o = "Lukk"), /* @__PURE__ */ b(
800
+ "button",
801
+ {
802
+ "aria-controls": r,
803
+ "aria-expanded": e,
804
+ className: "inline-flex items-center gap-2 md:hidden",
805
+ onClick: () => t((s) => !s),
806
+ children: [
807
+ o,
808
+ " ",
809
+ /* @__PURE__ */ a(n, {})
810
+ ]
811
+ }
812
+ );
813
+ }, qr = (e) => {
814
+ const { className: t, children: r, logo: n, ...o } = e;
815
+ return /* @__PURE__ */ b(
816
+ "div",
817
+ {
818
+ className: l(t, "flex items-center justify-between gap-8"),
819
+ ...o,
820
+ children: [
821
+ n,
822
+ /* @__PURE__ */ a("div", { className: "hidden md:block", children: r }),
823
+ /* @__PURE__ */ a(Fe, {})
824
+ ]
825
+ }
826
+ );
827
+ }, Rr = (e) => {
828
+ const { className: t, children: r, ...n } = e, { collapsibleId: o, isExpanded: s } = x(q);
829
+ return /* @__PURE__ */ a(
830
+ "div",
831
+ {
832
+ ...n,
833
+ "aria-hidden": !s,
834
+ className: l(t, "md:-mb-8 md:block", {
835
+ hidden: !s
836
+ }),
837
+ id: o,
838
+ children: r
839
+ }
840
+ );
841
+ }, Er = (e) => {
842
+ const { isExpanded: t } = x(q), r = we(!1);
843
+ return !t || !r ? null : /* @__PURE__ */ a(T, { children: e.children });
844
+ }, v = 2, J = w({ currentPage: 0, pageCount: 0 }), kr = (e) => {
845
+ const {
846
+ className: t,
847
+ page: r,
848
+ count: n,
849
+ onChange: o,
850
+ getItemHref: s,
851
+ getItemAriaLabel: d,
852
+ nextPageAriaLabel: c,
853
+ prevPageAriaLabel: m,
854
+ ...i
855
+ } = e, u = L(
856
+ () => ({
857
+ currentPage: Math.max(1, Math.min(r, n)),
858
+ pageCount: Math.max(1, n)
859
+ }),
860
+ [r, n]
861
+ ), f = (g) => (p) => {
862
+ o && (p.preventDefault(), o(g));
863
+ };
864
+ return /* @__PURE__ */ a(J.Provider, { value: u, children: /* @__PURE__ */ b(
865
+ "nav",
866
+ {
867
+ className: l("flex justify-center gap-2 sm:gap-4", t),
868
+ ...i,
869
+ children: [
870
+ /* @__PURE__ */ a(
871
+ We,
872
+ {
873
+ "aria-label": m,
874
+ href: s(r - 1),
875
+ onClick: f(r - 1)
876
+ }
877
+ ),
878
+ /* @__PURE__ */ a(
879
+ G,
880
+ {
881
+ page: 1,
882
+ href: s(1),
883
+ onClick: f(1),
884
+ "aria-label": d(1),
885
+ selected: r === 1
886
+ }
887
+ ),
888
+ n > 2 + v * 2 && r > v + 2 && /* @__PURE__ */ a(Ke, {}),
889
+ /* @__PURE__ */ a(Ye, { children: (g) => /* @__PURE__ */ a(
890
+ G,
891
+ {
892
+ href: s(g),
893
+ onClick: f(g),
894
+ "aria-label": d(g),
895
+ page: g,
896
+ selected: g === r
897
+ },
898
+ g
899
+ ) }),
900
+ /* @__PURE__ */ a(
901
+ Ze,
902
+ {
903
+ "aria-label": c,
904
+ href: s(r + 1),
905
+ onClick: f(r + 1)
906
+ }
907
+ )
908
+ ]
909
+ }
910
+ ) });
911
+ }, Ze = h((e, t) => {
912
+ const { currentPage: r, pageCount: n } = x(J), o = r >= n;
913
+ return /* @__PURE__ */ a(
914
+ X,
915
+ {
916
+ "aria-hidden": o,
917
+ className: o ? "invisible" : void 0,
918
+ ref: t,
919
+ rel: "next",
920
+ ...e,
921
+ children: /* @__PURE__ */ a(pe, {})
922
+ }
923
+ );
924
+ }), We = h((e, t) => {
925
+ const { currentPage: r } = x(J), n = r <= 1;
926
+ return /* @__PURE__ */ a(
927
+ X,
928
+ {
929
+ "aria-hidden": n,
930
+ className: n ? "invisible" : void 0,
931
+ ref: t,
932
+ rel: "prev",
933
+ ...e,
934
+ children: /* @__PURE__ */ a(Ae, {})
935
+ }
936
+ );
937
+ }), X = h((e, t) => {
938
+ const { className: r, ...n } = e;
939
+ return /* @__PURE__ */ a(
940
+ "a",
941
+ {
942
+ className: l(
943
+ r,
944
+ "aria-[current]:border-green hover:bg-gray-concrete flex h-9 w-9 items-center justify-center rounded-lg border-2 border-transparent no-underline sm:h-10 sm:w-10"
945
+ ),
946
+ ref: t,
947
+ ...n
948
+ }
949
+ );
950
+ }), Ke = () => /* @__PURE__ */ a("span", { className: "flex h-9 w-9 cursor-default items-center justify-center border-2 border-transparent sm:h-10 sm:w-10", children: "..." }), Ye = ({ children: e }) => {
951
+ const { currentPage: t, pageCount: r } = x(J), n = Math.min(
952
+ Math.max(2 + v * 2, t + v),
953
+ r
954
+ );
955
+ let o = Math.max(
956
+ Math.min(t - v, n - v * 2),
957
+ 1
958
+ );
959
+ return o - v === 0 && (o = o - 1), Array.from({ length: n - o }, (d, c) => o + c + 1).map((d) => e(d));
960
+ }, G = h((e, t) => {
961
+ const { page: r, selected: n, ...o } = e;
962
+ return /* @__PURE__ */ a(X, { "aria-current": n ? "page" : void 0, ref: t, ...o, children: r });
963
+ }), de = w({
964
+ defaultValue: void 0,
965
+ isControlled: !1,
966
+ name: void 0,
967
+ onChange: N,
968
+ required: !1,
969
+ value: void 0,
970
+ error: !1
971
+ }), Lr = h((e, t) => {
972
+ const { children: r, className: n, ...o } = e, { defaultValue: s, isControlled: d, name: c, onChange: m, required: i, value: u, error: f } = x(de);
973
+ return /* @__PURE__ */ b("label", { className: l(n, "flex cursor-pointer gap-2.5"), children: [
974
+ /* @__PURE__ */ a(
975
+ "input",
976
+ {
977
+ className: l("radio", f && "border-red"),
978
+ defaultChecked: d ? void 0 : o.value === s,
979
+ checked: d ? o.value === u : void 0,
980
+ name: c,
981
+ onChange: d ? m : void 0,
982
+ required: i,
983
+ type: "radio",
984
+ ref: t,
985
+ ...o
986
+ }
987
+ ),
988
+ r
989
+ ] });
990
+ }), Mr = h(
991
+ (e, t) => {
992
+ const r = "value" in e, {
993
+ className: n,
994
+ defaultValue: o,
995
+ description: s,
996
+ error: d,
997
+ id: c,
998
+ children: m,
999
+ label: i,
1000
+ name: u,
1001
+ onChange: f,
1002
+ required: g,
1003
+ value: p,
1004
+ ...A
1005
+ } = e, I = R(
1006
+ (me) => {
1007
+ const ue = me.target.value;
1008
+ f == null || f(ue);
1009
+ },
1010
+ [f]
1011
+ ), ce = L(
1012
+ () => ({
1013
+ defaultValue: o,
1014
+ isControlled: r,
1015
+ name: u,
1016
+ onChange: I,
1017
+ required: g,
1018
+ value: p,
1019
+ error: Boolean(d)
1020
+ }),
1021
+ [o, r, u, I, g, p, d]
1022
+ ), j = y(c), B = `${j}:label`, Q = `${j}:help`, U = j + "err", O = d;
1023
+ return /* @__PURE__ */ a(de.Provider, { value: ce, children: /* @__PURE__ */ b(
1024
+ "div",
1025
+ {
1026
+ "aria-describedby": l({
1027
+ [U]: O,
1028
+ [Q]: s
1029
+ }) || void 0,
1030
+ "aria-invalid": !!d,
1031
+ "aria-labelledby": i ? B : void 0,
1032
+ className: l(n, "flex flex-col gap-4"),
1033
+ role: "radiogroup",
1034
+ ref: t,
1035
+ ...A,
1036
+ children: [
1037
+ i && /* @__PURE__ */ a(V, { id: B, isRequired: g, isInvalid: !!d, children: i }),
1038
+ s && /* @__PURE__ */ a(P, { id: Q, children: s }),
1039
+ m,
1040
+ O && /* @__PURE__ */ a(C, { id: U, children: O })
1041
+ ]
1042
+ }
1043
+ ) });
1044
+ }
1045
+ ), Xe = h(
1046
+ (e, t) => {
1047
+ const { children: r, className: n, isInvalid: o, size: s, ...d } = e, c = s === "small";
1048
+ return /* @__PURE__ */ b("div", { className: l(n, "relative", c && "text-sm"), children: [
1049
+ /* @__PURE__ */ a(
1050
+ "select",
1051
+ {
1052
+ "aria-invalid": o,
1053
+ ...d,
1054
+ className: l(
1055
+ "w-full cursor-pointer appearance-none border border-b-[3px] bg-white focus:-mt-0.5 focus:-ml-0.5 focus:border-[3px] focus:shadow focus:outline-none",
1056
+ c ? "rounded px-3.5 py-2" : "rounded-lg px-4 py-3.5",
1057
+ o ? "border-red focus:border-red" : "focus:border-blue-dark border-black"
1058
+ ),
1059
+ ref: t,
1060
+ children: r
1061
+ }
1062
+ ),
1063
+ /* @__PURE__ */ a(
1064
+ $,
1065
+ {
1066
+ className: l(
1067
+ "pointer-events-none absolute top-0 bottom-0 my-auto",
1068
+ c ? "right-3.5" : "right-4"
1069
+ )
1070
+ }
1071
+ )
1072
+ ] });
1073
+ }
1074
+ ), zr = h(
1075
+ (e, t) => {
1076
+ const {
1077
+ description: r,
1078
+ error: n,
1079
+ id: o,
1080
+ label: s,
1081
+ disableValidation: d = !1,
1082
+ ...c
1083
+ } = e, m = k(null), { validity: i, validationMessage: u } = M(
1084
+ m,
1085
+ !d
1086
+ ), f = y(o), g = f + "help", p = f + "err", A = n || u;
1087
+ return /* @__PURE__ */ b("div", { className: "grid gap-2", children: [
1088
+ /* @__PURE__ */ a(
1089
+ V,
1090
+ {
1091
+ htmlFor: f,
1092
+ isRequired: e.required,
1093
+ isInvalid: !!n || i === "invalid",
1094
+ children: s
1095
+ }
1096
+ ),
1097
+ r && /* @__PURE__ */ a(P, { id: g, children: r }),
1098
+ /* @__PURE__ */ a(
1099
+ Xe,
1100
+ {
1101
+ id: f,
1102
+ ref: W(m, t),
1103
+ ...c,
1104
+ isInvalid: !!n || i === "invalid",
1105
+ "aria-describedby": l({
1106
+ [p]: A,
1107
+ [g]: r
1108
+ }) || void 0
1109
+ }
1110
+ ),
1111
+ A && /* @__PURE__ */ a(C, { id: p, children: A })
1112
+ ] });
1113
+ }
1114
+ ), Pr = (e) => {
1115
+ const { heading: t, children: r, closeSnackbar: n } = e, [o, s] = E(!1);
1116
+ return /* @__PURE__ */ a("div", { className: "container max-w-[59rem]", children: /* @__PURE__ */ a("div", { className: "bg-orange-light px-8 py-4 max-md:p-4", children: /* @__PURE__ */ b("div", { className: "snackbar grid items-center", children: [
1117
+ /* @__PURE__ */ a(re, { className: "text-orange snackbar-icon mr-4 self-start md:mr-8 md:text-2xl" }),
1118
+ /* @__PURE__ */ a(
1119
+ "h3",
1120
+ {
1121
+ className: l(
1122
+ "snackbar-header min-w-0 max-w-prose text-base font-medium",
1123
+ {
1124
+ "overflow-hidden overflow-ellipsis whitespace-nowrap": !o
1125
+ }
1126
+ ),
1127
+ children: t
1128
+ }
1129
+ ),
1130
+ /* @__PURE__ */ b("div", { className: "snackbar-actions flex justify-end gap-4 max-md:mt-3 md:ml-4", children: [
1131
+ /* @__PURE__ */ a(
1132
+ H,
1133
+ {
1134
+ "aria-expanded": o,
1135
+ onClick: () => s(!o),
1136
+ children: o ? "Les mindre" : "Les mer"
1137
+ }
1138
+ ),
1139
+ /* @__PURE__ */ a(H, { onClick: n, children: "Ok" })
1140
+ ] }),
1141
+ o && r
1142
+ ] }) }) });
1143
+ }, H = (e) => /* @__PURE__ */ a(
1144
+ "button",
1145
+ {
1146
+ className: l(
1147
+ e.className,
1148
+ "focus-visible:ring-offset flex-shrink-0 underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-black"
1149
+ ),
1150
+ ...e,
1151
+ children: e.children
1152
+ }
1153
+ ), Vr = (e) => /* @__PURE__ */ a(
1154
+ "div",
1155
+ {
1156
+ className: "snackbar-content my-4 max-h-[50vh] max-w-prose overflow-y-auto",
1157
+ ...e,
1158
+ children: e.children
1159
+ }
1160
+ ), Be = (e) => {
1161
+ const { align: t = "center", children: r, className: n, ...o } = e;
1162
+ return /* @__PURE__ */ a("ol", { className: l(n, "flex flex-col gap-8 md:gap-12"), ...o, children: F.map(r, (s) => Z(s, {
1163
+ align: t
1164
+ })) });
1165
+ }, Qe = (e) => {
1166
+ const { className: t, children: r, bullet: n, align: o = "center", ...s } = e;
1167
+ return /* @__PURE__ */ b(
1168
+ "li",
1169
+ {
1170
+ className: l(
1171
+ t,
1172
+ "group relative flex gap-4 text-sm md:gap-8 md:text-base",
1173
+ { "items-center": o === "center" }
1174
+ ),
1175
+ ...s,
1176
+ children: [
1177
+ /* @__PURE__ */ a(Ue, { align: o, children: n }),
1178
+ r
1179
+ ]
1180
+ }
1181
+ );
1182
+ }, Ue = ({ align: e, ...t }) => /* @__PURE__ */ a(
1183
+ "span",
1184
+ {
1185
+ "aria-hidden": !0,
1186
+ className: l(
1187
+ "text-green after:bg-gray-light before:bg-gray-light grid h-10 w-10 flex-none place-content-center justify-items-center rounded-full border-2 text-sm font-bold after:absolute after:bottom-0 after:w-0.5 after:translate-x-1/2 group-last:after:hidden md:h-20 md:w-20 md:text-xl",
1188
+ {
1189
+ "before:absolute before:top-0 before:bottom-1/2 before:w-0.5 before:-translate-y-5 before:translate-x-1/2 after:top-1/2 after:translate-y-5 group-first:before:hidden before:md:-translate-y-10 after:md:translate-y-10": e === "center",
1190
+ "after:top-10 after:-bottom-8 after:md:-bottom-12 after:md:top-20": e === "top"
1191
+ }
1192
+ ),
1193
+ ...t
1194
+ }
1195
+ );
1196
+ Be.Item = Qe;
1197
+ const Sr = h(
1198
+ (e, t) => {
1199
+ const {
1200
+ description: r,
1201
+ error: n,
1202
+ id: o,
1203
+ label: s,
1204
+ disableValidation: d = !1,
1205
+ ...c
1206
+ } = e, m = k(null), { validity: i, validationMessage: u } = M(
1207
+ m,
1208
+ !d
1209
+ ), f = y(o), g = f + "help", p = f + "err", A = n || u;
1210
+ return /* @__PURE__ */ b("div", { className: "grid gap-2", children: [
1211
+ /* @__PURE__ */ a(
1212
+ V,
1213
+ {
1214
+ htmlFor: f,
1215
+ isRequired: e.required,
1216
+ isInvalid: !!n || i === "invalid",
1217
+ children: s
1218
+ }
1219
+ ),
1220
+ r && /* @__PURE__ */ a(P, { id: g, children: r }),
1221
+ /* @__PURE__ */ a(
1222
+ le,
1223
+ {
1224
+ as: "textarea",
1225
+ ref: W(m, t),
1226
+ id: f,
1227
+ ...c,
1228
+ isInvalid: !!n || i === "invalid",
1229
+ "aria-describedby": l({
1230
+ [p]: A,
1231
+ [g]: r
1232
+ }) || void 0
1233
+ }
1234
+ ),
1235
+ A && /* @__PURE__ */ a(C, { id: p, children: A })
1236
+ ] });
1237
+ }
1238
+ ), Jr = h(
1239
+ (e, t) => {
1240
+ const {
1241
+ description: r,
1242
+ error: n,
1243
+ id: o,
1244
+ label: s,
1245
+ type: d = "text",
1246
+ disableValidation: c = !1,
1247
+ ...m
1248
+ } = e, i = k(null), { validity: u, validationMessage: f } = M(
1249
+ i,
1250
+ !c
1251
+ ), g = y(o), p = g + "help", A = g + "err", I = n || f;
1252
+ return /* @__PURE__ */ b("div", { className: "grid gap-2", children: [
1253
+ /* @__PURE__ */ a(
1254
+ V,
1255
+ {
1256
+ htmlFor: g,
1257
+ isRequired: e.required,
1258
+ isInvalid: !!n || u === "invalid",
1259
+ children: s
1260
+ }
1261
+ ),
1262
+ r && /* @__PURE__ */ a(P, { id: p, children: r }),
1263
+ /* @__PURE__ */ a(
1264
+ le,
1265
+ {
1266
+ id: g,
1267
+ ref: W(i, t),
1268
+ type: d,
1269
+ ...m,
1270
+ isInvalid: !!n || u === "invalid",
1271
+ "aria-describedby": l({
1272
+ [A]: I,
1273
+ [p]: r
1274
+ }) || void 0
1275
+ }
1276
+ ),
1277
+ I && /* @__PURE__ */ a(C, { id: A, children: I })
1278
+ ] });
1279
+ }
1280
+ );
1281
+ export {
1282
+ K as Accordion,
1283
+ Re as AccordionContent,
1284
+ qe as AccordionHeader,
1285
+ Ce as AccordionItem,
1286
+ tr as Alert,
1287
+ nr as Banner,
1288
+ ar as BannerImage,
1289
+ or as Button,
1290
+ z as ButtonColorContext,
1291
+ sr as Campaign,
1292
+ ir as Card,
1293
+ cr as CardContent,
1294
+ lr as CardImage,
1295
+ mr as CardLinkOverlay,
1296
+ dr as CardList,
1297
+ ur as Checkbox,
1298
+ br as Chip,
1299
+ fr as Footer,
1300
+ gr as Form,
1301
+ hr as FormError,
1302
+ C as FormErrorMessage,
1303
+ Oe as FormHeading,
1304
+ P as FormHelperText,
1305
+ V as FormLabel,
1306
+ pr as FormSuccess,
1307
+ Ar as Hero,
1308
+ Nr as HeroActions,
1309
+ vr as HeroContent,
1310
+ S as HeroContext,
1311
+ xr as HeroImage,
1312
+ le as Input,
1313
+ wr as Link,
1314
+ Ir as Navbar,
1315
+ Rr as NavbarCollapsible,
1316
+ qr as NavbarContent,
1317
+ Er as NavbarExpandedMobileContent,
1318
+ Cr as NavbarItem,
1319
+ yr as NavbarItems,
1320
+ kr as Pagination,
1321
+ Lr as Radio,
1322
+ Mr as RadioGroup,
1323
+ zr as Select,
1324
+ Pr as Snackbar,
1325
+ H as SnackbarButton,
1326
+ Vr as SnackbarContent,
1327
+ Be as StepList,
1328
+ Qe as StepListItem,
1329
+ Sr as TextArea,
1330
+ Jr as TextField,
1331
+ ne as useBlockBackgroundColor,
1332
+ y as useFallbackId,
1333
+ M as useFormControlValidity,
1334
+ Tr as useMedia,
1335
+ Ne as usePrefersReducedMotion,
1336
+ we as useScreenMaxWidthMd
1337
+ };