rk-designsystem 1.1.77 → 1.1.78

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.
@@ -9,14 +9,14 @@ const At = ge((t, e) => /* @__PURE__ */ o(qt, { ref: e, ...t }));
9
9
  At.displayName = "Avatar";
10
10
  const to = ge((t, e) => /* @__PURE__ */ o(Xt, { ref: e, ...t }));
11
11
  to.displayName = "Badge";
12
- const Gi = Zt, $i = Jt, Wi = Qt, Hi = en, Ui = tn, xe = Ye;
12
+ const Wi = Zt, Hi = Jt, Ui = Qt, Oi = en, Vi = tn, xe = Ye;
13
13
  xe.displayName = "Button";
14
- const no = nn, Oi = on;
14
+ const no = nn, Ki = on;
15
15
  no.displayName = "Card";
16
- const oo = rn, ro = It, Vi = sn;
16
+ const oo = rn, ro = It, Yi = sn;
17
17
  oo.displayName = "Checkbox";
18
18
  ro.displayName = "Fieldset";
19
- const Ki = an;
19
+ const qi = an;
20
20
  function Oe(t) {
21
21
  return (e = {}) => {
22
22
  const n = e.width ? String(e.width) : t.defaultWidth;
@@ -2144,14 +2144,18 @@ const Pr = "_carouselContainer_1bu1s_1", zr = "_viewport_1bu1s_11", Rr = "_slide
2144
2144
  );
2145
2145
  };
2146
2146
  Jr.displayName = "Carousel";
2147
- const Yi = dn, qi = cn, Zi = un, X = mn, Xi = pn, Ji = gn, Qr = hn, es = fn;
2147
+ const Zi = dn, Xi = cn, Ji = un, X = mn, Qi = pn, ea = gn, Qr = hn, es = fn;
2148
2148
  Qr.displayName = "Field.Description";
2149
2149
  es.displayName = "Field.Counter";
2150
- const Qi = It, ts = ge((t, e) => /* @__PURE__ */ o(kn, { ref: e, ...t }));
2150
+ const ta = It, ts = ge((t, e) => /* @__PURE__ */ o(kn, { ref: e, ...t }));
2151
2151
  ts.displayName = "Heading";
2152
- const ea = yn, ns = ge((t, e) => /* @__PURE__ */ o(vn, { ref: e, ...t }));
2153
- ns.displayName = "Label";
2154
- const ce = bn, ta = Tn, na = Sn, oa = xn, Xe = ge(
2152
+ const ns = yn;
2153
+ ns.displayName = "Input";
2154
+ const os = ge((t, e) => /* @__PURE__ */ o(vn, { ref: e, ...t }));
2155
+ os.displayName = "Label";
2156
+ const ce = bn, na = Tn, rs = Sn, oa = xn;
2157
+ rs.displayName = "Pagination";
2158
+ const Xe = ge(
2155
2159
  (t, e) => /* @__PURE__ */ o(Cn, { ref: e, ...t })
2156
2160
  );
2157
2161
  Xe.displayName = "Paragraph";
@@ -2159,11 +2163,11 @@ const ra = wn, sa = In, ia = Dn, Ne = Object.assign(_n, {
2159
2163
  Button: Ln,
2160
2164
  ClearButton: Mn,
2161
2165
  Input: An
2162
- }), aa = jn, la = En, da = Fn, os = Nn;
2163
- os.displayName = "Suggestion";
2164
- const Ve = Bn, ca = Pn, ua = zn, ma = Rn, pa = Gn, ga = $n, ha = Wn, fa = Hn, rs = ge((t, e) => /* @__PURE__ */ o(Un, { ref: e, ...t }));
2165
- rs.displayName = "ValidationMessage";
2166
- const ss = {
2166
+ }), aa = jn, la = En, da = Fn, ss = Nn;
2167
+ ss.displayName = "Suggestion";
2168
+ const Ve = Bn, ca = Pn, ua = zn, ma = Rn, pa = Gn, ga = $n, ha = Wn, fa = Hn, is = ge((t, e) => /* @__PURE__ */ o(Un, { ref: e, ...t }));
2169
+ is.displayName = "ValidationMessage";
2170
+ const as = {
2167
2171
  NO: {
2168
2172
  // Header
2169
2173
  header: {
@@ -4123,7 +4127,7 @@ Map design elements to our existing components where possible (e.g. Buttons, Hea
4123
4127
  }, ot = Kt(void 0), ka = ({ children: t }) => {
4124
4128
  const [e, n] = ne("NO"), s = (a) => {
4125
4129
  const i = a.split(".");
4126
- let r = ss[e];
4130
+ let r = as[e];
4127
4131
  for (const d of i) {
4128
4132
  if (r[d] === void 0)
4129
4133
  return console.warn(`Translation missing for key: ${a} in language: ${e}`), a;
@@ -4183,61 +4187,61 @@ Map design elements to our existing components where possible (e.g. Buttons, Hea
4183
4187
  "footer.legal.whistleblowing": "Varsling/Misconduct"
4184
4188
  })[e] || e
4185
4189
  } : t;
4186
- }, is = "_header_ymzss_1", as = "_languageSwitch_ymzss_36", ls = "_searchOverlay_ymzss_40", ds = "_headerExtension_ymzss_45", cs = "_extensionContentWrapper_ymzss_73", us = "_extensionContent_ymzss_73", ms = "_extensionDivider_ymzss_100", ps = "_languageLabel_ymzss_124", gs = "_languageLink_ymzss_140", hs = "_headerInner_ymzss_175", fs = "_logoWrapper_ymzss_192", ks = "_logo_ymzss_192", ys = "_secondaryLogoWrapper_ymzss_215", vs = "_slotComponent_ymzss_224", bs = "_slotContainer_ymzss_234", Ts = "_slotText_ymzss_242", Ss = "_secondaryLogo_ymzss_215", xs = "_redCrossLogo_ymzss_269", Cs = "_primaryLogo_ymzss_275", ws = "_navItems_ymzss_279", Is = "_navLink_ymzss_288", Ds = "_actions_ymzss_301", _s = "_ctaButton_ymzss_309", As = "_themeToggle_ymzss_314", Ms = "_userInfo_ymzss_319", Ls = "_userName_ymzss_325", js = "_loginLink_ymzss_332", Es = "_loginText_ymzss_341", Fs = "_underline_ymzss_348", Ns = "_searchButtonWrapper_ymzss_354", Bs = "_buttonText_ymzss_358", Ps = "_menuButton_ymzss_363", zs = "_menuOverlay_ymzss_368", Rs = "_searchContent_ymzss_402", Gs = "_menuContent_ymzss_412", $s = "_menuLeftColumn_ymzss_421", Ws = "_menuRightColumn_ymzss_427", Hs = "_slotContent_ymzss_441", Us = "_navList_ymzss_454", Os = "_menuUtilities_ymzss_461", Vs = "_menuBrand_ymzss_468", Ks = "_suggestionsSection_ymzss_472", Ys = "_suggestionsTitle_ymzss_478", qs = "_searchResults_ymzss_487", Zs = "_resultList_ymzss_493", Xs = "_resultItem_ymzss_499", Js = "_resultLink_ymzss_507", Qs = "_suggestionIcon_ymzss_521", ei = "_suggestionText_ymzss_534", ti = "_highlightedText_ymzss_541", ni = "_remainingText_ymzss_546", oi = "_viewAllLink_ymzss_559", ri = "_noResults_ymzss_594", T = {
4187
- header: is,
4188
- languageSwitch: as,
4189
- searchOverlay: ls,
4190
- headerExtension: ds,
4191
- extensionContentWrapper: cs,
4192
- extensionContent: us,
4193
- extensionDivider: ms,
4194
- languageLabel: ps,
4195
- languageLink: gs,
4196
- headerInner: hs,
4197
- logoWrapper: fs,
4198
- logo: ks,
4199
- secondaryLogoWrapper: ys,
4200
- slotComponent: vs,
4201
- slotContainer: bs,
4202
- slotText: Ts,
4203
- secondaryLogo: Ss,
4204
- redCrossLogo: xs,
4205
- primaryLogo: Cs,
4206
- navItems: ws,
4207
- navLink: Is,
4208
- actions: Ds,
4209
- ctaButton: _s,
4210
- themeToggle: As,
4211
- userInfo: Ms,
4212
- userName: Ls,
4213
- loginLink: js,
4214
- loginText: Es,
4215
- underline: Fs,
4216
- searchButtonWrapper: Ns,
4217
- buttonText: Bs,
4218
- menuButton: Ps,
4219
- menuOverlay: zs,
4220
- searchContent: Rs,
4221
- menuContent: Gs,
4222
- menuLeftColumn: $s,
4223
- menuRightColumn: Ws,
4224
- slotContent: Hs,
4225
- navList: Us,
4226
- menuUtilities: Os,
4227
- menuBrand: Vs,
4228
- suggestionsSection: Ks,
4229
- suggestionsTitle: Ys,
4230
- searchResults: qs,
4231
- resultList: Zs,
4232
- resultItem: Xs,
4233
- resultLink: Js,
4234
- suggestionIcon: Qs,
4235
- suggestionText: ei,
4236
- highlightedText: ti,
4237
- remainingText: ni,
4238
- viewAllLink: oi,
4239
- noResults: ri
4240
- }, si = [
4190
+ }, ls = "_header_ymzss_1", ds = "_languageSwitch_ymzss_36", cs = "_searchOverlay_ymzss_40", us = "_headerExtension_ymzss_45", ms = "_extensionContentWrapper_ymzss_73", ps = "_extensionContent_ymzss_73", gs = "_extensionDivider_ymzss_100", hs = "_languageLabel_ymzss_124", fs = "_languageLink_ymzss_140", ks = "_headerInner_ymzss_175", ys = "_logoWrapper_ymzss_192", vs = "_logo_ymzss_192", bs = "_secondaryLogoWrapper_ymzss_215", Ts = "_slotComponent_ymzss_224", Ss = "_slotContainer_ymzss_234", xs = "_slotText_ymzss_242", Cs = "_secondaryLogo_ymzss_215", ws = "_redCrossLogo_ymzss_269", Is = "_primaryLogo_ymzss_275", Ds = "_navItems_ymzss_279", _s = "_navLink_ymzss_288", As = "_actions_ymzss_301", Ms = "_ctaButton_ymzss_309", Ls = "_themeToggle_ymzss_314", js = "_userInfo_ymzss_319", Es = "_userName_ymzss_325", Fs = "_loginLink_ymzss_332", Ns = "_loginText_ymzss_341", Bs = "_underline_ymzss_348", Ps = "_searchButtonWrapper_ymzss_354", zs = "_buttonText_ymzss_358", Rs = "_menuButton_ymzss_363", Gs = "_menuOverlay_ymzss_368", $s = "_searchContent_ymzss_402", Ws = "_menuContent_ymzss_412", Hs = "_menuLeftColumn_ymzss_421", Us = "_menuRightColumn_ymzss_427", Os = "_slotContent_ymzss_441", Vs = "_navList_ymzss_454", Ks = "_menuUtilities_ymzss_461", Ys = "_menuBrand_ymzss_468", qs = "_suggestionsSection_ymzss_472", Zs = "_suggestionsTitle_ymzss_478", Xs = "_searchResults_ymzss_487", Js = "_resultList_ymzss_493", Qs = "_resultItem_ymzss_499", ei = "_resultLink_ymzss_507", ti = "_suggestionIcon_ymzss_521", ni = "_suggestionText_ymzss_534", oi = "_highlightedText_ymzss_541", ri = "_remainingText_ymzss_546", si = "_viewAllLink_ymzss_559", ii = "_noResults_ymzss_594", T = {
4191
+ header: ls,
4192
+ languageSwitch: ds,
4193
+ searchOverlay: cs,
4194
+ headerExtension: us,
4195
+ extensionContentWrapper: ms,
4196
+ extensionContent: ps,
4197
+ extensionDivider: gs,
4198
+ languageLabel: hs,
4199
+ languageLink: fs,
4200
+ headerInner: ks,
4201
+ logoWrapper: ys,
4202
+ logo: vs,
4203
+ secondaryLogoWrapper: bs,
4204
+ slotComponent: Ts,
4205
+ slotContainer: Ss,
4206
+ slotText: xs,
4207
+ secondaryLogo: Cs,
4208
+ redCrossLogo: ws,
4209
+ primaryLogo: Is,
4210
+ navItems: Ds,
4211
+ navLink: _s,
4212
+ actions: As,
4213
+ ctaButton: Ms,
4214
+ themeToggle: Ls,
4215
+ userInfo: js,
4216
+ userName: Es,
4217
+ loginLink: Fs,
4218
+ loginText: Ns,
4219
+ underline: Bs,
4220
+ searchButtonWrapper: Ps,
4221
+ buttonText: zs,
4222
+ menuButton: Rs,
4223
+ menuOverlay: Gs,
4224
+ searchContent: $s,
4225
+ menuContent: Ws,
4226
+ menuLeftColumn: Hs,
4227
+ menuRightColumn: Us,
4228
+ slotContent: Os,
4229
+ navList: Vs,
4230
+ menuUtilities: Ks,
4231
+ menuBrand: Ys,
4232
+ suggestionsSection: qs,
4233
+ suggestionsTitle: Zs,
4234
+ searchResults: Xs,
4235
+ resultList: Js,
4236
+ resultItem: Qs,
4237
+ resultLink: ei,
4238
+ suggestionIcon: ti,
4239
+ suggestionText: ni,
4240
+ highlightedText: oi,
4241
+ remainingText: ri,
4242
+ viewAllLink: si,
4243
+ noResults: ii
4244
+ }, ai = [
4241
4245
  // Pages
4242
4246
  { id: "home", title: "Hjem", category: "Page", path: "home", description: "Forsiden" },
4243
4247
  { id: "components", title: "Komponenter", category: "Page", path: "components", description: "Oversikt over alle komponenter" },
@@ -4328,7 +4332,7 @@ Map design elements to our existing components where possible (e.g. Buttons, Hea
4328
4332
  J(() => {
4329
4333
  const b = "rk-header-inline-styles";
4330
4334
  if (typeof document > "u" || document.getElementById(b)) return;
4331
- const _ = ii(T), E = document.createElement("style");
4335
+ const _ = li(T), E = document.createElement("style");
4332
4336
  E.id = b, E.textContent = _, document.head.appendChild(E);
4333
4337
  }, []);
4334
4338
  const Q = () => /* @__PURE__ */ I(
@@ -4430,7 +4434,7 @@ Map design elements to our existing components where possible (e.g. Buttons, Hea
4430
4434
  }, V = Se(() => {
4431
4435
  if (!F.trim()) return [];
4432
4436
  const b = F.toLowerCase();
4433
- return si.filter(
4437
+ return ai.filter(
4434
4438
  (_) => _.title.toLowerCase().startsWith(b)
4435
4439
  );
4436
4440
  }, [F]), ue = (b) => {
@@ -4702,7 +4706,7 @@ Map design elements to our existing components where possible (e.g. Buttons, Hea
4702
4706
  ] }) })
4703
4707
  ] });
4704
4708
  };
4705
- function ii(t) {
4709
+ function li(t) {
4706
4710
  const e = t;
4707
4711
  return `
4708
4712
  .${e.header} {
@@ -4844,34 +4848,34 @@ function ii(t) {
4844
4848
  }
4845
4849
  `;
4846
4850
  }
4847
- const ai = "_footer_6xhfo_1", li = "_redSection_6xhfo_7", di = "_redContainer_6xhfo_26", ci = "_shortcutsSection_6xhfo_35", ui = "_shortcutsColumn_6xhfo_43", mi = "_shortcutsTitle_6xhfo_51", pi = "_shortcutsList_6xhfo_60", gi = "_shortcutLink_6xhfo_69", hi = "_slotComponent_6xhfo_92", fi = "_divider_6xhfo_131", ki = "_contactSection_6xhfo_139", yi = "_contactColumn_6xhfo_146", vi = "_contactTitle_6xhfo_154", bi = "_contactContent_6xhfo_163", Ti = "_legalSection_6xhfo_177", Si = "_copyrightText_6xhfo_184", xi = "_legalLinks_6xhfo_193", Ci = "_legalLink_6xhfo_193", wi = "_whiteSection_6xhfo_223", Ii = "_whiteContainer_6xhfo_228", Di = "_whiteContent_6xhfo_241", _i = "_logo_6xhfo_248", Ai = "_redCrossLogo_6xhfo_265", Mi = "_secondaryLogoWrapper_6xhfo_271", Li = "_designSystemLogo_6xhfo_278", ji = "_slotSmall_6xhfo_285", Ei = "_slotLarge_6xhfo_296", L = {
4848
- footer: ai,
4849
- redSection: li,
4850
- redContainer: di,
4851
- shortcutsSection: ci,
4852
- shortcutsColumn: ui,
4853
- shortcutsTitle: mi,
4854
- shortcutsList: pi,
4855
- shortcutLink: gi,
4856
- slotComponent: hi,
4857
- divider: fi,
4858
- contactSection: ki,
4859
- contactColumn: yi,
4860
- contactTitle: vi,
4861
- contactContent: bi,
4862
- legalSection: Ti,
4863
- copyrightText: Si,
4864
- legalLinks: xi,
4865
- legalLink: Ci,
4866
- whiteSection: wi,
4867
- whiteContainer: Ii,
4868
- whiteContent: Di,
4869
- logo: _i,
4870
- redCrossLogo: Ai,
4871
- secondaryLogoWrapper: Mi,
4872
- designSystemLogo: Li,
4873
- slotSmall: ji,
4874
- slotLarge: Ei
4851
+ const di = "_footer_6xhfo_1", ci = "_redSection_6xhfo_7", ui = "_redContainer_6xhfo_26", mi = "_shortcutsSection_6xhfo_35", pi = "_shortcutsColumn_6xhfo_43", gi = "_shortcutsTitle_6xhfo_51", hi = "_shortcutsList_6xhfo_60", fi = "_shortcutLink_6xhfo_69", ki = "_slotComponent_6xhfo_92", yi = "_divider_6xhfo_131", vi = "_contactSection_6xhfo_139", bi = "_contactColumn_6xhfo_146", Ti = "_contactTitle_6xhfo_154", Si = "_contactContent_6xhfo_163", xi = "_legalSection_6xhfo_177", Ci = "_copyrightText_6xhfo_184", wi = "_legalLinks_6xhfo_193", Ii = "_legalLink_6xhfo_193", Di = "_whiteSection_6xhfo_223", _i = "_whiteContainer_6xhfo_228", Ai = "_whiteContent_6xhfo_241", Mi = "_logo_6xhfo_248", Li = "_redCrossLogo_6xhfo_265", ji = "_secondaryLogoWrapper_6xhfo_271", Ei = "_designSystemLogo_6xhfo_278", Fi = "_slotSmall_6xhfo_285", Ni = "_slotLarge_6xhfo_296", L = {
4852
+ footer: di,
4853
+ redSection: ci,
4854
+ redContainer: ui,
4855
+ shortcutsSection: mi,
4856
+ shortcutsColumn: pi,
4857
+ shortcutsTitle: gi,
4858
+ shortcutsList: hi,
4859
+ shortcutLink: fi,
4860
+ slotComponent: ki,
4861
+ divider: yi,
4862
+ contactSection: vi,
4863
+ contactColumn: bi,
4864
+ contactTitle: Ti,
4865
+ contactContent: Si,
4866
+ legalSection: xi,
4867
+ copyrightText: Ci,
4868
+ legalLinks: wi,
4869
+ legalLink: Ii,
4870
+ whiteSection: Di,
4871
+ whiteContainer: _i,
4872
+ whiteContent: Ai,
4873
+ logo: Mi,
4874
+ redCrossLogo: Li,
4875
+ secondaryLogoWrapper: ji,
4876
+ designSystemLogo: Ei,
4877
+ slotSmall: Fi,
4878
+ slotLarge: Ni
4875
4879
  }, ba = ({
4876
4880
  "data-color": t = "additional",
4877
4881
  redSectionSlot: e,
@@ -4891,7 +4895,7 @@ const ai = "_footer_6xhfo_1", li = "_redSection_6xhfo_7", di = "_redContainer_6x
4891
4895
  Be.useEffect(() => {
4892
4896
  const A = "rk-footer-inline-styles";
4893
4897
  if (typeof document > "u" || document.getElementById(A)) return;
4894
- const C = Fi(L), w = document.createElement("style");
4898
+ const C = Bi(L), w = document.createElement("style");
4895
4899
  w.id = A, w.textContent = C, document.head.appendChild(w);
4896
4900
  }, []);
4897
4901
  const [y, k] = Be.useState("light");
@@ -5010,7 +5014,7 @@ const ai = "_footer_6xhfo_1", li = "_redSection_6xhfo_7", di = "_redContainer_6x
5010
5014
  ] }) }) })
5011
5015
  ] });
5012
5016
  };
5013
- function Fi(t) {
5017
+ function Bi(t) {
5014
5018
  const e = t;
5015
5019
  return `
5016
5020
  .${e.footer} {
@@ -5276,37 +5280,37 @@ export {
5276
5280
  eo as Alert,
5277
5281
  At as Avatar,
5278
5282
  to as Badge,
5279
- Gi as BadgePosition,
5280
- $i as Breadcrumbs,
5281
- Hi as BreadcrumbsItem,
5282
- Ui as BreadcrumbsLink,
5283
- Wi as BreadcrumbsList,
5283
+ Wi as BadgePosition,
5284
+ Hi as Breadcrumbs,
5285
+ Oi as BreadcrumbsItem,
5286
+ Vi as BreadcrumbsLink,
5287
+ Ui as BreadcrumbsList,
5284
5288
  xe as Button,
5285
5289
  no as Card,
5286
- Oi as CardBlock,
5290
+ Ki as CardBlock,
5287
5291
  Jr as Carousel,
5288
5292
  oo as Checkbox,
5289
- Ki as Chip,
5293
+ qi as Chip,
5290
5294
  nr as DateInput,
5291
5295
  Yo as DatePicker,
5292
- Yi as Details,
5293
- qi as Dialog,
5294
- Zi as Divider,
5296
+ Zi as Details,
5297
+ Xi as Dialog,
5298
+ Ji as Divider,
5295
5299
  X as Dropdown,
5296
- Xi as ErrorSummary,
5297
- Ji as Field,
5300
+ Qi as ErrorSummary,
5301
+ ea as Field,
5298
5302
  es as FieldCounter,
5299
5303
  Qr as FieldDescription,
5300
- Qi as Fieldset,
5304
+ ta as Fieldset,
5301
5305
  ba as Footer,
5302
5306
  va as Header,
5303
5307
  ts as Heading,
5304
- ea as Input,
5305
- ns as Label,
5308
+ ns as Input,
5309
+ os as Label,
5306
5310
  ka as LanguageProvider,
5307
5311
  ce as Link,
5308
- ta as List,
5309
- na as Pagination,
5312
+ na as List,
5313
+ rs as Pagination,
5310
5314
  Xe as Paragraph,
5311
5315
  ra as Popover,
5312
5316
  sa as Radio,
@@ -5315,7 +5319,7 @@ export {
5315
5319
  la as SkeletonLoader,
5316
5320
  da as SkipLink,
5317
5321
  Xr as Spinner,
5318
- os as Suggestion,
5322
+ ss as Suggestion,
5319
5323
  Ve as Switch,
5320
5324
  ca as Table,
5321
5325
  ua as Tabs,
@@ -5324,8 +5328,8 @@ export {
5324
5328
  ga as Textfield,
5325
5329
  ha as ToggleGroup,
5326
5330
  fa as Tooltip,
5327
- rs as ValidationMessage,
5328
- Vi as useCheckboxGroup,
5331
+ is as ValidationMessage,
5332
+ Yi as useCheckboxGroup,
5329
5333
  ya as useLanguage,
5330
5334
  Nt as useLanguageOptional,
5331
5335
  oa as usePagination,
@@ -1,4 +1,4 @@
1
- (function(T,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("react/jsx-runtime"),require("react"),require("@digdir/designsystemet-react"),require("date-fns"),require("@navikt/aksel-icons")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","@digdir/designsystemet-react","date-fns","@navikt/aksel-icons"],n):(T=typeof globalThis<"u"?globalThis:T||self,n(T.ComponentLibrary={},T.jsxRuntime,T.React,T.designsystemetReact,T.dateFns,T.akselIcons))})(this,(function(T,n,x,_,K,ce){"use strict";const Re=x.forwardRef((t,e)=>n.jsx(_.Alert,{ref:e,...t}));Re.displayName="Alert";const Pe=x.forwardRef((t,e)=>n.jsx(_.Avatar,{ref:e,...t}));Pe.displayName="Avatar";const et=x.forwardRef((t,e)=>n.jsx(_.Badge,{ref:e,...t}));et.displayName="Badge";const Nt=_.BadgePosition,Bt=_.Breadcrumbs,Pt=_.BreadcrumbsList,zt=_.BreadcrumbsItem,Gt=_.BreadcrumbsLink,he=_.Button;he.displayName="Button";const tt=_.Card,Wt=_.CardBlock;tt.displayName="Card";const nt=_.Checkbox,Ht=_.Fieldset,Ut=_.useCheckboxGroup;nt.displayName="Checkbox",Ht.displayName="Fieldset";const Ot=_.Chip;function ze(t){return(e={})=>{const o=e.width?String(e.width):t.defaultWidth;return t.formats[o]||t.formats[t.defaultWidth]}}function Se(t){return(e,o)=>{const s=o!=null&&o.context?String(o.context):"standalone";let i;if(s==="formatting"&&t.formattingValues){const r=t.defaultFormattingWidth||t.defaultWidth,d=o!=null&&o.width?String(o.width):r;i=t.formattingValues[d]||t.formattingValues[r]}else{const r=t.defaultWidth,d=o!=null&&o.width?String(o.width):t.defaultWidth;i=t.values[d]||t.values[r]}const a=t.argumentCallback?t.argumentCallback(e):e;return i[a]}}function Ce(t){return(e,o={})=>{const s=o.width,i=s&&t.matchPatterns[s]||t.matchPatterns[t.defaultMatchWidth],a=e.match(i);if(!a)return null;const r=a[0],d=s&&t.parsePatterns[s]||t.parsePatterns[t.defaultParseWidth],l=Array.isArray(d)?Vt(d,h=>h.test(r)):$t(d,h=>h.test(r));let c;c=t.valueCallback?t.valueCallback(l):l,c=o.valueCallback?o.valueCallback(c):c;const y=e.slice(r.length);return{value:c,rest:y}}}function $t(t,e){for(const o in t)if(Object.prototype.hasOwnProperty.call(t,o)&&e(t[o]))return o}function Vt(t,e){for(let o=0;o<t.length;o++)if(e(t[o]))return o}function Kt(t){return(e,o={})=>{const s=e.match(t.matchPattern);if(!s)return null;const i=s[0],a=e.match(t.parsePattern);if(!a)return null;let r=t.valueCallback?t.valueCallback(a[0]):a[0];r=o.valueCallback?o.valueCallback(r):r;const d=e.slice(i.length);return{value:r,rest:d}}}const Yt={lessThanXSeconds:{one:"mindre enn ett sekund",other:"mindre enn {{count}} sekunder"},xSeconds:{one:"ett sekund",other:"{{count}} sekunder"},halfAMinute:"et halvt minutt",lessThanXMinutes:{one:"mindre enn ett minutt",other:"mindre enn {{count}} minutter"},xMinutes:{one:"ett minutt",other:"{{count}} minutter"},aboutXHours:{one:"omtrent en time",other:"omtrent {{count}} timer"},xHours:{one:"en time",other:"{{count}} timer"},xDays:{one:"en dag",other:"{{count}} dager"},aboutXWeeks:{one:"omtrent en uke",other:"omtrent {{count}} uker"},xWeeks:{one:"en uke",other:"{{count}} uker"},aboutXMonths:{one:"omtrent en måned",other:"omtrent {{count}} måneder"},xMonths:{one:"en måned",other:"{{count}} måneder"},aboutXYears:{one:"omtrent ett år",other:"omtrent {{count}} år"},xYears:{one:"ett år",other:"{{count}} år"},overXYears:{one:"over ett år",other:"over {{count}} år"},almostXYears:{one:"nesten ett år",other:"nesten {{count}} år"}},qt=(t,e,o)=>{let s;const i=Yt[t];return typeof i=="string"?s=i:e===1?s=i.one:s=i.other.replace("{{count}}",String(e)),o!=null&&o.addSuffix?o.comparison&&o.comparison>0?"om "+s:s+" siden":s},Zt={full:"EEEE d. MMMM y",long:"d. MMMM y",medium:"d. MMM y",short:"dd.MM.y"},Xt={full:"'kl'. HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},Jt={full:"{{date}} 'kl.' {{time}}",long:"{{date}} 'kl.' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},Qt={date:ze({formats:Zt,defaultWidth:"full"}),time:ze({formats:Xt,defaultWidth:"full"}),dateTime:ze({formats:Jt,defaultWidth:"full"})},Rt={lastWeek:"'forrige' eeee 'kl.' p",yesterday:"'i går kl.' p",today:"'i dag kl.' p",tomorrow:"'i morgen kl.' p",nextWeek:"EEEE 'kl.' p",other:"P"},en=(t,e,o,s)=>Rt[t],tn={narrow:["f.Kr.","e.Kr."],abbreviated:["f.Kr.","e.Kr."],wide:["før Kristus","etter Kristus"]},nn={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"]},on={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mars","apr.","mai","juni","juli","aug.","sep.","okt.","nov.","des."],wide:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"]},rn={narrow:["S","M","T","O","T","F","L"],short:["sø","ma","ti","on","to","fr","lø"],abbreviated:["søn","man","tir","ons","tor","fre","lør"],wide:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},sn={narrow:{am:"a",pm:"p",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på etterm.",evening:"på kvelden",night:"på natten"},abbreviated:{am:"a.m.",pm:"p.m.",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på etterm.",evening:"på kvelden",night:"på natten"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnatt",noon:"middag",morning:"på morgenen",afternoon:"på ettermiddagen",evening:"på kvelden",night:"på natten"}},an={ordinalNumber:(t,e)=>Number(t)+".",era:Se({values:tn,defaultWidth:"wide"}),quarter:Se({values:nn,defaultWidth:"wide",argumentCallback:t=>t-1}),month:Se({values:on,defaultWidth:"wide"}),day:Se({values:rn,defaultWidth:"wide"}),dayPeriod:Se({values:sn,defaultWidth:"wide"})},ln=/^(\d+)\.?/i,dn=/\d+/i,cn={narrow:/^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,abbreviated:/^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,wide:/^(før Kristus|før vår tid|etter Kristus|vår tid)/i},un={any:[/^f/i,/^e/i]},pn={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? kvartal/i},gn={any:[/1/i,/2/i,/3/i,/4/i]},mn={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mars?|apr|mai|juni?|juli?|aug|sep|okt|nov|des)\.?/i,wide:/^(januar|februar|mars|april|mai|juni|juli|august|september|oktober|november|desember)/i},hn={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^aug/i,/^s/i,/^o/i,/^n/i,/^d/i]},fn={narrow:/^[smtofl]/i,short:/^(sø|ma|ti|on|to|fr|lø)/i,abbreviated:/^(søn|man|tir|ons|tor|fre|lør)/i,wide:/^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i},kn={any:[/^s/i,/^m/i,/^ti/i,/^o/i,/^to/i,/^f/i,/^l/i]},vn={narrow:/^(midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten)|[ap])/i,any:/^([ap]\.?\s?m\.?|midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten))/i},yn={any:{am:/^a(\.?\s?m\.?)?$/i,pm:/^p(\.?\s?m\.?)?$/i,midnight:/^midn/i,noon:/^midd/i,morning:/morgen/i,afternoon:/ettermiddag/i,evening:/kveld/i,night:/natt/i}},bn={ordinalNumber:Kt({matchPattern:ln,parsePattern:dn,valueCallback:t=>parseInt(t,10)}),era:Ce({matchPatterns:cn,defaultMatchWidth:"wide",parsePatterns:un,defaultParseWidth:"any"}),quarter:Ce({matchPatterns:pn,defaultMatchWidth:"wide",parsePatterns:gn,defaultParseWidth:"any",valueCallback:t=>t+1}),month:Ce({matchPatterns:mn,defaultMatchWidth:"wide",parsePatterns:hn,defaultParseWidth:"any"}),day:Ce({matchPatterns:fn,defaultMatchWidth:"wide",parsePatterns:kn,defaultParseWidth:"any"}),dayPeriod:Ce({matchPatterns:vn,defaultMatchWidth:"any",parsePatterns:yn,defaultParseWidth:"any"})},be={code:"nb",formatDistance:qt,formatLong:Qt,formatRelative:en,localize:an,match:bn,options:{weekStartsOn:1,firstWeekContainsDate:4}},ot=({title:t,...e})=>n.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 28 28",fill:"none","aria-hidden":t?void 0:!0,focusable:"false",...e,children:[t&&n.jsx("title",{children:t}),n.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.952 6.96459C16.6103 6.62289 16.0563 6.62289 15.7146 6.96459L9.2979 13.3813C8.95621 13.723 8.95621 14.277 9.2979 14.6187L15.7146 21.0354C16.0563 21.3771 16.6103 21.3771 16.952 21.0354C17.2937 20.6937 17.2937 20.1396 16.952 19.7979L11.1541 14L16.952 8.20203C17.2937 7.86032 17.2937 7.3063 16.952 6.96459Z",fill:"currentColor"})]});ot.displayName="ChevronLeftIcon";const rt=({title:t,...e})=>n.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 28 28",fill:"none","aria-hidden":t?void 0:!0,focusable:"false",...e,children:[t&&n.jsx("title",{children:t}),n.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.048 6.96459C11.3897 6.62289 11.9437 6.62289 12.2854 6.96459L18.7021 13.3813C19.0438 13.723 19.0438 14.277 18.7021 14.6187L12.2854 21.0354C11.9437 21.3771 11.3897 21.3771 11.048 21.0354C10.7063 20.6937 10.7063 20.1396 11.048 19.7979L16.8459 14L11.048 8.20203C10.7063 7.86032 10.7063 7.3063 11.048 6.96459Z",fill:"currentColor"})]});rt.displayName="ChevronRightIcon";const re={calendarContainer:"_calendarContainer_10l5p_1",calendarHeader:"_calendarHeader_10l5p_14",monthYear:"_monthYear_10l5p_21",navigationButtons:"_navigationButtons_10l5p_32",grid:"_grid_10l5p_41",dayNameCell:"_dayNameCell_10l5p_48",dateCell:"_dateCell_10l5p_65",dateNumberContainer:"_dateNumberContainer_10l5p_90",otherMonth:"_otherMonth_10l5p_103",selectedDate:"_selectedDate_10l5p_129"},Tn=t=>{const e=K.startOfMonth(t),o=K.startOfWeek(e,{locale:be}),s=K.addDays(o,41);return K.eachDayOfInterval({start:o,end:s})},st=t=>t&&t.charAt(0).toUpperCase()+t.slice(1),at=({initialDate:t=new Date,selectedDate:e=null,onDateSelect:o,"data-color":s,"data-size":i})=>{const[a,r]=x.useState(K.startOfMonth(e&&K.isValid(e)?e:t));x.useEffect(()=>{if(e&&K.isValid(e)){const p=K.startOfMonth(e);K.isSameMonth(p,a)||r(p)}},[e]);const d=x.useMemo(()=>K.startOfMonth(new Date),[]),l=x.useMemo(()=>!1,[a,d]),c=x.useMemo(()=>Tn(a),[a]),y=x.useMemo(()=>{const p=K.startOfWeek(new Date,{locale:be});return Array.from({length:7}).map((C,E)=>{const M=K.format(K.addDays(p,E),"EEEEEE",{locale:be});return st(M)})},[]),h=x.useCallback(()=>{l||r(p=>K.startOfMonth(K.subMonths(p,1)))},[l]),f=x.useCallback(()=>{r(p=>K.startOfMonth(K.addMonths(p,1)))},[]),m=x.useCallback(p=>{o&&o(p)},[o]),u=x.useCallback((p,C)=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),m(C))},[m]),v=K.format(a,"MMMM",{locale:be}),k=K.format(a,"yyyy",{locale:be}),g=`${st(v)} ${k}`;return n.jsxs("div",{className:re.calendarContainer,"data-color":s,"data-size":i,children:[n.jsxs("div",{className:re.calendarHeader,children:[n.jsx("span",{className:re.monthYear,children:g}),n.jsxs("div",{className:re.navigationButtons,children:[n.jsx(_.Button,{variant:"tertiary",icon:!0,onClick:h,"aria-label":"Forrige måned",disabled:l,children:n.jsx(ot,{})}),n.jsx(_.Button,{variant:"tertiary",icon:!0,onClick:f,"aria-label":"Neste måned",children:n.jsx(rt,{})})]})]}),n.jsx("div",{className:re.grid,children:y.map(p=>n.jsx("div",{className:re.dayNameCell,children:p},p))}),n.jsx("div",{className:re.grid,children:c.map(p=>{const C=K.isSameMonth(p,a),E=e&&K.isValid(e)&&K.isSameDay(p,e),M=K.isToday(p),I=[re.dateCell,C?"":re.otherMonth,E?re.selectedDate:"",M&&!E?re.todayDate:""].filter(Boolean).join(" ");return n.jsx("div",{className:I,onClick:()=>m(p),onKeyDown:D=>u(D,p),role:"button",tabIndex:0,"aria-pressed":E??!1,"aria-label":K.format(p,"PPP",{locale:be}),children:n.jsx("span",{className:re.dateNumberContainer,children:K.format(p,"d")})},p.toISOString())})})]})};at.displayName="DatePicker";const fe={fieldset:"_fieldset_16fx7_2",description:"_description_16fx7_14",error:"_error_16fx7_21",inputWrapper:"_inputWrapper_16fx7_30",inputWrapperError:"_inputWrapperError_16fx7_42",suffixButton:"_suffixButton_16fx7_80",suffixButtonInteractive:"_suffixButtonInteractive_16fx7_100"},it=t=>{const e=t.slice(0,2),o=t.slice(2,4),s=t.slice(4,8);return t.length>4?`${e}.${o}.${s}`:t.length>2?`${e}.${o}`:t.length>0?e:""},lt=t=>(t||"").replace(/\D/g,""),dt=t=>{let e=t;if(e.length>=2){const o=parseInt(e.substring(0,2),10);!isNaN(o)&&o>31&&(e="31"+e.substring(2))}if(e.length>=4){const o=parseInt(e.substring(2,4),10);!isNaN(o)&&o>12&&(e=e.substring(0,2)+"12"+e.substring(4))}return e.slice(0,8)},ct=x.forwardRef((t,e)=>{const{label:o,suffixIcon:s,onSuffixClick:i,className:a,inputWrapperClassName:r,inputClassName:d,value:l,defaultValue:c,onChange:y,readOnly:h,placeholder:f="dd.mm.åååå",id:m,name:u,required:v,disabled:k,onClick:g,onFocus:p,onBlur:C,autoComplete:E="off","aria-label":M,"aria-labelledby":I,description:D,error:A,"data-color":F,"data-size":B,...P}=t,W=l!==void 0,H=x.useRef(null);x.useImperativeHandle(e,()=>H.current);const U=x.useCallback(b=>{const L=lt(b),N=dt(L);return it(N)},[]),[O,z]=x.useState(()=>U(l??c));x.useEffect(()=>{if(W){const b=U(l);b!==O&&(z(b),H.current&&H.current.value!==b&&(H.current.value=b))}},[l,W,O,U]);const q=x.useCallback(b=>{const L=b.target,N=L.value,J=O,ee=lt(N).slice(0,8),$=dt(ee),w=it($);let G=0;const V=$.length;V<=2?G=V:V<=4?G=V+1:G=V+2,G=Math.min(G,w.length),requestAnimationFrame(()=>{if(H.current&&(z(w),H.current.value=w,H.current.setSelectionRange(G,G),(w!==J||W)&&y)){const Q={...b,target:{...L,value:w}};y(Q,w)}})},[O,W,y,U]),oe=[fe.fieldset,a].filter(Boolean).join(" "),te=[fe.inputWrapper,r,A?fe.inputWrapperError:""].filter(Boolean).join(" "),ie=[d].filter(Boolean).join(" "),ne=[fe.suffixButton,i?fe.suffixButtonInteractive:""].filter(Boolean).join(" ");!o&&!M&&!I&&console.warn("Advarsel: DateInput-komponenten bør ha label, aria-label, eller aria-labelledby for tilgjengelighet.");const le=o&&typeof o=="string"?I||`${m}-label`:void 0,de=D?`${m}-desc`:void 0,X=A?`${m}-err`:void 0,pe=[de,X].filter(Boolean).join(" ")||void 0;return n.jsxs("div",{className:oe,"data-color":F,"data-size":B,children:[o&&typeof o=="string"?n.jsx("label",{id:le,htmlFor:m,children:o}):o,D&&n.jsx("p",{id:de,className:fe.description,children:D}),n.jsxs("div",{className:te,children:[n.jsx("input",{ref:H,type:"text",inputMode:"numeric",pattern:"\\d{2}\\.\\d{2}\\.\\d{4}",maxLength:10,value:O,readOnly:h,placeholder:f,id:m,name:u,required:v,disabled:k,onClick:g,onChange:q,onFocus:p,onBlur:C,autoComplete:E,"aria-label":M,"aria-labelledby":le,"aria-describedby":pe,"aria-invalid":!!A,className:ie,...P}),s&&n.jsx("button",{type:"button",className:ne,onClick:k?void 0:i,tabIndex:i&&!k?0:-1,"aria-hidden":!i,disabled:k,"aria-label":i?"Åpne datovelger":void 0,children:s})]}),A&&n.jsx("p",{id:X,className:fe.error,role:"alert",children:A})]})});ct.displayName="DateInput";function Sn(t){return Object.prototype.toString.call(t)==="[object Object]"}function ut(t){return Sn(t)||Array.isArray(t)}function Cn(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}function Ge(t,e){const o=Object.keys(t),s=Object.keys(e);if(o.length!==s.length)return!1;const i=JSON.stringify(Object.keys(t.breakpoints||{})),a=JSON.stringify(Object.keys(e.breakpoints||{}));return i!==a?!1:o.every(r=>{const d=t[r],l=e[r];return typeof d=="function"?`${d}`==`${l}`:!ut(d)||!ut(l)?d===l:Ge(d,l)})}function pt(t){return t.concat().sort((e,o)=>e.name>o.name?1:-1).map(e=>e.options)}function xn(t,e){if(t.length!==e.length)return!1;const o=pt(t),s=pt(e);return o.every((i,a)=>{const r=s[a];return Ge(i,r)})}function We(t){return typeof t=="number"}function He(t){return typeof t=="string"}function Ee(t){return typeof t=="boolean"}function gt(t){return Object.prototype.toString.call(t)==="[object Object]"}function Y(t){return Math.abs(t)}function Ue(t){return Math.sign(t)}function xe(t,e){return Y(t-e)}function wn(t,e){if(t===0||e===0||Y(t)<=Y(e))return 0;const o=xe(Y(t),Y(e));return Y(o/t)}function In(t){return Math.round(t*100)/100}function we(t){return De(t).map(Number)}function se(t){return t[Ie(t)]}function Ie(t){return Math.max(0,t.length-1)}function Oe(t,e){return e===Ie(t)}function mt(t,e=0){return Array.from(Array(t),(o,s)=>e+s)}function De(t){return Object.keys(t)}function ht(t,e){return[t,e].reduce((o,s)=>(De(s).forEach(i=>{const a=o[i],r=s[i],d=gt(a)&&gt(r);o[i]=d?ht(a,r):r}),o),{})}function $e(t,e){return typeof e.MouseEvent<"u"&&t instanceof e.MouseEvent}function Dn(t,e){const o={start:s,center:i,end:a};function s(){return 0}function i(l){return a(l)/2}function a(l){return e-l}function r(l,c){return He(t)?o[t](l):t(e,l,c)}return{measure:r}}function _e(){let t=[];function e(i,a,r,d={passive:!0}){let l;if("addEventListener"in i)i.addEventListener(a,r,d),l=()=>i.removeEventListener(a,r,d);else{const c=i;c.addListener(r),l=()=>c.removeListener(r)}return t.push(l),s}function o(){t=t.filter(i=>i())}const s={add:e,clear:o};return s}function _n(t,e,o,s){const i=_e(),a=1e3/60;let r=null,d=0,l=0;function c(){i.add(t,"visibilitychange",()=>{t.hidden&&u()})}function y(){m(),i.clear()}function h(k){if(!l)return;r||(r=k,o(),o());const g=k-r;for(r=k,d+=g;d>=a;)o(),d-=a;const p=d/a;s(p),l&&(l=e.requestAnimationFrame(h))}function f(){l||(l=e.requestAnimationFrame(h))}function m(){e.cancelAnimationFrame(l),r=null,d=0,l=0}function u(){r=null,d=0}return{init:c,destroy:y,start:f,stop:m,update:o,render:s}}function An(t,e){const o=e==="rtl",s=t==="y",i=s?"y":"x",a=s?"x":"y",r=!s&&o?-1:1,d=y(),l=h();function c(u){const{height:v,width:k}=u;return s?v:k}function y(){return s?"top":o?"right":"left"}function h(){return s?"bottom":o?"left":"right"}function f(u){return u*r}return{scroll:i,cross:a,startEdge:d,endEdge:l,measureSize:c,direction:f}}function ke(t=0,e=0){const o=Y(t-e);function s(c){return c<t}function i(c){return c>e}function a(c){return s(c)||i(c)}function r(c){return a(c)?s(c)?t:e:c}function d(c){return o?c-o*Math.ceil((c-e)/o):c}return{length:o,max:e,min:t,constrain:r,reachedAny:a,reachedMax:i,reachedMin:s,removeOffset:d}}function ft(t,e,o){const{constrain:s}=ke(0,t),i=t+1;let a=r(e);function r(f){return o?Y((i+f)%i):s(f)}function d(){return a}function l(f){return a=r(f),h}function c(f){return y().set(d()+f)}function y(){return ft(t,d(),o)}const h={get:d,set:l,add:c,clone:y};return h}function Ln(t,e,o,s,i,a,r,d,l,c,y,h,f,m,u,v,k,g,p){const{cross:C,direction:E}=t,M=["INPUT","SELECT","TEXTAREA"],I={passive:!1},D=_e(),A=_e(),F=ke(50,225).constrain(m.measure(20)),B={mouse:300,touch:400},P={mouse:500,touch:600},W=u?43:25;let H=!1,U=0,O=0,z=!1,q=!1,oe=!1,te=!1;function ie(w){if(!p)return;function G(Q){(Ee(p)||p(w,Q))&&b(Q)}const V=e;D.add(V,"dragstart",Q=>Q.preventDefault(),I).add(V,"touchmove",()=>{},I).add(V,"touchend",()=>{}).add(V,"touchstart",G).add(V,"mousedown",G).add(V,"touchcancel",N).add(V,"contextmenu",N).add(V,"click",J,!0)}function ne(){D.clear(),A.clear()}function le(){const w=te?o:e;A.add(w,"touchmove",L,I).add(w,"touchend",N).add(w,"mousemove",L,I).add(w,"mouseup",N)}function de(w){const G=w.nodeName||"";return M.includes(G)}function X(){return(u?P:B)[te?"mouse":"touch"]}function pe(w,G){const V=h.add(Ue(w)*-1),Q=y.byDistance(w,!u).distance;return u||Y(w)<F?Q:k&&G?Q*.5:y.byIndex(V.get(),0).distance}function b(w){const G=$e(w,s);te=G,oe=u&&G&&!w.buttons&&H,H=xe(i.get(),r.get())>=2,!(G&&w.button!==0)&&(de(w.target)||(z=!0,a.pointerDown(w),c.useFriction(0).useDuration(0),i.set(r),le(),U=a.readPoint(w),O=a.readPoint(w,C),f.emit("pointerDown")))}function L(w){if(!$e(w,s)&&w.touches.length>=2)return N(w);const V=a.readPoint(w),Q=a.readPoint(w,C),ue=xe(V,U),ge=xe(Q,O);if(!q&&!te&&(!w.cancelable||(q=ue>ge,!q)))return N(w);const ve=a.pointerMove(w);ue>v&&(oe=!0),c.useFriction(.3).useDuration(.75),d.start(),i.add(E(ve)),w.preventDefault()}function N(w){const V=y.byDistance(0,!1).index!==h.get(),Q=a.pointerUp(w)*X(),ue=pe(E(Q),V),ge=wn(Q,ue),ve=W-10*ge,me=g+ge/50;q=!1,z=!1,A.clear(),c.useDuration(ve).useFriction(me),l.distance(ue,!u),te=!1,f.emit("pointerUp")}function J(w){oe&&(w.stopPropagation(),w.preventDefault(),oe=!1)}function ee(){return z}return{init:ie,destroy:ne,pointerDown:ee}}function Mn(t,e){let s,i;function a(h){return h.timeStamp}function r(h,f){const u=`client${(f||t.scroll)==="x"?"X":"Y"}`;return($e(h,e)?h:h.touches[0])[u]}function d(h){return s=h,i=h,r(h)}function l(h){const f=r(h)-r(i),m=a(h)-a(s)>170;return i=h,m&&(s=h),f}function c(h){if(!s||!i)return 0;const f=r(i)-r(s),m=a(h)-a(s),u=a(h)-a(i)>170,v=f/m;return m&&!u&&Y(v)>.1?v:0}return{pointerDown:d,pointerMove:l,pointerUp:c,readPoint:r}}function En(){function t(o){const{offsetTop:s,offsetLeft:i,offsetWidth:a,offsetHeight:r}=o;return{top:s,right:i+a,bottom:s+r,left:i,width:a,height:r}}return{measure:t}}function jn(t){function e(s){return t*(s/100)}return{measure:e}}function Fn(t,e,o,s,i,a,r){const d=[t].concat(s);let l,c,y=[],h=!1;function f(k){return i.measureSize(r.measure(k))}function m(k){if(!a)return;c=f(t),y=s.map(f);function g(p){for(const C of p){if(h)return;const E=C.target===t,M=s.indexOf(C.target),I=E?c:y[M],D=f(E?t:s[M]);if(Y(D-I)>=.5){k.reInit(),e.emit("resize");break}}}l=new ResizeObserver(p=>{(Ee(a)||a(k,p))&&g(p)}),o.requestAnimationFrame(()=>{d.forEach(p=>l.observe(p))})}function u(){h=!0,l&&l.disconnect()}return{init:m,destroy:u}}function Nn(t,e,o,s,i,a){let r=0,d=0,l=i,c=a,y=t.get(),h=0;function f(){const I=s.get()-t.get(),D=!l;let A=0;return D?(r=0,o.set(s),t.set(s),A=I):(o.set(t),r+=I/l,r*=c,y+=r,t.add(r),A=y-h),d=Ue(A),h=y,M}function m(){const I=s.get()-e.get();return Y(I)<.001}function u(){return l}function v(){return d}function k(){return r}function g(){return C(i)}function p(){return E(a)}function C(I){return l=I,M}function E(I){return c=I,M}const M={direction:v,duration:u,velocity:k,seek:f,settled:m,useBaseFriction:p,useBaseDuration:g,useFriction:E,useDuration:C};return M}function Bn(t,e,o,s,i){const a=i.measure(10),r=i.measure(50),d=ke(.1,.99);let l=!1;function c(){return!(l||!t.reachedAny(o.get())||!t.reachedAny(e.get()))}function y(m){if(!c())return;const u=t.reachedMin(e.get())?"min":"max",v=Y(t[u]-e.get()),k=o.get()-e.get(),g=d.constrain(v/r);o.subtract(k*g),!m&&Y(k)<a&&(o.set(t.constrain(o.get())),s.useDuration(25).useBaseFriction())}function h(m){l=!m}return{shouldConstrain:c,constrain:y,toggleActive:h}}function Pn(t,e,o,s,i){const a=ke(-e+t,0),r=h(),d=y(),l=f();function c(u,v){return xe(u,v)<=1}function y(){const u=r[0],v=se(r),k=r.lastIndexOf(u),g=r.indexOf(v)+1;return ke(k,g)}function h(){return o.map((u,v)=>{const{min:k,max:g}=a,p=a.constrain(u),C=!v,E=Oe(o,v);return C?g:E||c(k,p)?k:c(g,p)?g:p}).map(u=>parseFloat(u.toFixed(3)))}function f(){if(e<=t+i)return[a.max];if(s==="keepSnaps")return r;const{min:u,max:v}=d;return r.slice(u,v)}return{snapsContained:l,scrollContainLimit:d}}function zn(t,e,o){const s=e[0],i=o?s-t:se(e);return{limit:ke(i,s)}}function Gn(t,e,o,s){const a=e.min+.1,r=e.max+.1,{reachedMin:d,reachedMax:l}=ke(a,r);function c(f){return f===1?l(o.get()):f===-1?d(o.get()):!1}function y(f){if(!c(f))return;const m=t*(f*-1);s.forEach(u=>u.add(m))}return{loop:y}}function Wn(t){const{max:e,length:o}=t;function s(a){const r=a-e;return o?r/-o:0}return{get:s}}function Hn(t,e,o,s,i){const{startEdge:a,endEdge:r}=t,{groupSlides:d}=i,l=h().map(e.measure),c=f(),y=m();function h(){return d(s).map(v=>se(v)[r]-v[0][a]).map(Y)}function f(){return s.map(v=>o[a]-v[a]).map(v=>-Y(v))}function m(){return d(c).map(v=>v[0]).map((v,k)=>v+l[k])}return{snaps:c,snapsAligned:y}}function Un(t,e,o,s,i,a){const{groupSlides:r}=i,{min:d,max:l}=s,c=y();function y(){const f=r(a),m=!t||e==="keepSnaps";return o.length===1?[a]:m?f:f.slice(d,l).map((u,v,k)=>{const g=!v,p=Oe(k,v);if(g){const C=se(k[0])+1;return mt(C)}if(p){const C=Ie(a)-se(k)[0]+1;return mt(C,se(k)[0])}return u})}return{slideRegistry:c}}function On(t,e,o,s,i){const{reachedAny:a,removeOffset:r,constrain:d}=s;function l(u){return u.concat().sort((v,k)=>Y(v)-Y(k))[0]}function c(u){const v=t?r(u):d(u),k=e.map((p,C)=>({diff:y(p-v,0),index:C})).sort((p,C)=>Y(p.diff)-Y(C.diff)),{index:g}=k[0];return{index:g,distance:v}}function y(u,v){const k=[u,u+o,u-o];if(!t)return u;if(!v)return l(k);const g=k.filter(p=>Ue(p)===v);return g.length?l(g):se(k)-o}function h(u,v){const k=e[u]-i.get(),g=y(k,v);return{index:u,distance:g}}function f(u,v){const k=i.get()+u,{index:g,distance:p}=c(k),C=!t&&a(k);if(!v||C)return{index:g,distance:u};const E=e[g]-p,M=u+y(E,0);return{index:g,distance:M}}return{byDistance:f,byIndex:h,shortcut:y}}function $n(t,e,o,s,i,a,r){function d(h){const f=h.distance,m=h.index!==e.get();a.add(f),f&&(s.duration()?t.start():(t.update(),t.render(1),t.update())),m&&(o.set(e.get()),e.set(h.index),r.emit("select"))}function l(h,f){const m=i.byDistance(h,f);d(m)}function c(h,f){const m=e.clone().set(h),u=i.byIndex(m.get(),f);d(u)}return{distance:l,index:c}}function Vn(t,e,o,s,i,a,r,d){const l={passive:!0,capture:!0};let c=0;function y(m){if(!d)return;function u(v){if(new Date().getTime()-c>10)return;r.emit("slideFocusStart"),t.scrollLeft=0;const p=o.findIndex(C=>C.includes(v));We(p)&&(i.useDuration(0),s.index(p,0),r.emit("slideFocus"))}a.add(document,"keydown",h,!1),e.forEach((v,k)=>{a.add(v,"focus",g=>{(Ee(d)||d(m,g))&&u(k)},l)})}function h(m){m.code==="Tab"&&(c=new Date().getTime())}return{init:y}}function Ae(t){let e=t;function o(){return e}function s(l){e=r(l)}function i(l){e+=r(l)}function a(l){e-=r(l)}function r(l){return We(l)?l:l.get()}return{get:o,set:s,add:i,subtract:a}}function kt(t,e){const o=t.scroll==="x"?r:d,s=e.style;let i=null,a=!1;function r(f){return`translate3d(${f}px,0px,0px)`}function d(f){return`translate3d(0px,${f}px,0px)`}function l(f){if(a)return;const m=In(t.direction(f));m!==i&&(s.transform=o(m),i=m)}function c(f){a=!f}function y(){a||(s.transform="",e.getAttribute("style")||e.removeAttribute("style"))}return{clear:y,to:l,toggleActive:c}}function Kn(t,e,o,s,i,a,r,d,l){const y=we(i),h=we(i).reverse(),f=g().concat(p());function m(D,A){return D.reduce((F,B)=>F-i[B],A)}function u(D,A){return D.reduce((F,B)=>m(F,A)>0?F.concat([B]):F,[])}function v(D){return a.map((A,F)=>({start:A-s[F]+.5+D,end:A+e-.5+D}))}function k(D,A,F){const B=v(A);return D.map(P=>{const W=F?0:-o,H=F?o:0,U=F?"end":"start",O=B[P][U];return{index:P,loopPoint:O,slideLocation:Ae(-1),translate:kt(t,l[P]),target:()=>d.get()>O?W:H}})}function g(){const D=r[0],A=u(h,D);return k(A,o,!1)}function p(){const D=e-r[0]-1,A=u(y,D);return k(A,-o,!0)}function C(){return f.every(({index:D})=>{const A=y.filter(F=>F!==D);return m(A,e)<=.1})}function E(){f.forEach(D=>{const{target:A,translate:F,slideLocation:B}=D,P=A();P!==B.get()&&(F.to(P),B.set(P))})}function M(){f.forEach(D=>D.translate.clear())}return{canLoop:C,clear:M,loop:E,loopPoints:f}}function Yn(t,e,o){let s,i=!1;function a(l){if(!o)return;function c(y){for(const h of y)if(h.type==="childList"){l.reInit(),e.emit("slidesChanged");break}}s=new MutationObserver(y=>{i||(Ee(o)||o(l,y))&&c(y)}),s.observe(t,{childList:!0})}function r(){s&&s.disconnect(),i=!0}return{init:a,destroy:r}}function qn(t,e,o,s){const i={};let a=null,r=null,d,l=!1;function c(){d=new IntersectionObserver(u=>{l||(u.forEach(v=>{const k=e.indexOf(v.target);i[k]=v}),a=null,r=null,o.emit("slidesInView"))},{root:t.parentElement,threshold:s}),e.forEach(u=>d.observe(u))}function y(){d&&d.disconnect(),l=!0}function h(u){return De(i).reduce((v,k)=>{const g=parseInt(k),{isIntersecting:p}=i[g];return(u&&p||!u&&!p)&&v.push(g),v},[])}function f(u=!0){if(u&&a)return a;if(!u&&r)return r;const v=h(u);return u&&(a=v),u||(r=v),v}return{init:c,destroy:y,get:f}}function Zn(t,e,o,s,i,a){const{measureSize:r,startEdge:d,endEdge:l}=t,c=o[0]&&i,y=u(),h=v(),f=o.map(r),m=k();function u(){if(!c)return 0;const p=o[0];return Y(e[d]-p[d])}function v(){if(!c)return 0;const p=a.getComputedStyle(se(s));return parseFloat(p.getPropertyValue(`margin-${l}`))}function k(){return o.map((p,C,E)=>{const M=!C,I=Oe(E,C);return M?f[C]+y:I?f[C]+h:E[C+1][d]-p[d]}).map(Y)}return{slideSizes:f,slideSizesWithGaps:m,startGap:y,endGap:h}}function Xn(t,e,o,s,i,a,r,d,l){const{startEdge:c,endEdge:y,direction:h}=t,f=We(o);function m(g,p){return we(g).filter(C=>C%p===0).map(C=>g.slice(C,C+p))}function u(g){return g.length?we(g).reduce((p,C,E)=>{const M=se(p)||0,I=M===0,D=C===Ie(g),A=i[c]-a[M][c],F=i[c]-a[C][y],B=!s&&I?h(r):0,P=!s&&D?h(d):0,W=Y(F-P-(A+B));return E&&W>e+l&&p.push(C),D&&p.push(g.length),p},[]).map((p,C,E)=>{const M=Math.max(E[C-1]||0);return g.slice(M,p)}):[]}function v(g){return f?m(g,o):u(g)}return{groupSlides:v}}function Jn(t,e,o,s,i,a,r){const{align:d,axis:l,direction:c,startIndex:y,loop:h,duration:f,dragFree:m,dragThreshold:u,inViewThreshold:v,slidesToScroll:k,skipSnaps:g,containScroll:p,watchResize:C,watchSlides:E,watchDrag:M,watchFocus:I}=a,D=2,A=En(),F=A.measure(e),B=o.map(A.measure),P=An(l,c),W=P.measureSize(F),H=jn(W),U=Dn(d,W),O=!h&&!!p,z=h||!!p,{slideSizes:q,slideSizesWithGaps:oe,startGap:te,endGap:ie}=Zn(P,F,B,o,z,i),ne=Xn(P,W,k,h,F,B,te,ie,D),{snaps:le,snapsAligned:de}=Hn(P,U,F,B,ne),X=-se(le)+se(oe),{snapsContained:pe,scrollContainLimit:b}=Pn(W,X,de,p,D),L=O?pe:de,{limit:N}=zn(X,L,h),J=ft(Ie(L),y,h),ee=J.clone(),$=we(o),w=({dragHandler:Te,scrollBody:Je,scrollBounds:Qe,options:{loop:Be}})=>{Be||Qe.constrain(Te.pointerDown()),Je.seek()},G=({scrollBody:Te,translate:Je,location:Qe,offsetLocation:Be,previousLocation:Bo,scrollLooper:Po,slideLooper:zo,dragHandler:Go,animation:Wo,eventHandler:At,scrollBounds:Ho,options:{loop:Lt}},Mt)=>{const Et=Te.settled(),Uo=!Ho.shouldConstrain(),jt=Lt?Et:Et&&Uo,Ft=jt&&!Go.pointerDown();Ft&&Wo.stop();const Oo=Qe.get()*Mt+Bo.get()*(1-Mt);Be.set(Oo),Lt&&(Po.loop(Te.direction()),zo.loop()),Je.to(Be.get()),Ft&&At.emit("settle"),jt||At.emit("scroll")},V=_n(s,i,()=>w(Xe),Te=>G(Xe,Te)),Q=.68,ue=L[J.get()],ge=Ae(ue),ve=Ae(ue),me=Ae(ue),ye=Ae(ue),Me=Nn(ge,me,ve,ye,f,Q),qe=On(h,L,X,N,ye),Ze=$n(V,J,ee,Me,qe,ye,r),It=Wn(N),Dt=_e(),Fo=qn(e,o,r,v),{slideRegistry:_t}=Un(O,p,L,b,ne,$),No=Vn(t,o,_t,Ze,Me,Dt,r,I),Xe={ownerDocument:s,ownerWindow:i,eventHandler:r,containerRect:F,slideRects:B,animation:V,axis:P,dragHandler:Ln(P,t,s,i,ye,Mn(P,i),ge,V,Ze,Me,qe,J,r,H,m,u,g,Q,M),eventStore:Dt,percentOfView:H,index:J,indexPrevious:ee,limit:N,location:ge,offsetLocation:me,previousLocation:ve,options:a,resizeHandler:Fn(e,r,i,o,P,C,A),scrollBody:Me,scrollBounds:Bn(N,me,ye,Me,H),scrollLooper:Gn(X,N,me,[ge,me,ve,ye]),scrollProgress:It,scrollSnapList:L.map(It.get),scrollSnaps:L,scrollTarget:qe,scrollTo:Ze,slideLooper:Kn(P,W,X,q,oe,le,L,me,o),slideFocus:No,slidesHandler:Yn(e,r,E),slidesInView:Fo,slideIndexes:$,slideRegistry:_t,slidesToScroll:ne,target:ye,translate:kt(P,e)};return Xe}function Qn(){let t={},e;function o(c){e=c}function s(c){return t[c]||[]}function i(c){return s(c).forEach(y=>y(e,c)),l}function a(c,y){return t[c]=s(c).concat([y]),l}function r(c,y){return t[c]=s(c).filter(h=>h!==y),l}function d(){t={}}const l={init:o,emit:i,off:r,on:a,clear:d};return l}const Rn={align:"center",axis:"x",container:null,slides:null,containScroll:"trimSnaps",direction:"ltr",slidesToScroll:1,inViewThreshold:0,breakpoints:{},dragFree:!1,dragThreshold:10,loop:!1,skipSnaps:!1,duration:25,startIndex:0,active:!0,watchDrag:!0,watchResize:!0,watchSlides:!0,watchFocus:!0};function eo(t){function e(a,r){return ht(a,r||{})}function o(a){const r=a.breakpoints||{},d=De(r).filter(l=>t.matchMedia(l).matches).map(l=>r[l]).reduce((l,c)=>e(l,c),{});return e(a,d)}function s(a){return a.map(r=>De(r.breakpoints||{})).reduce((r,d)=>r.concat(d),[]).map(t.matchMedia)}return{mergeOptions:e,optionsAtMedia:o,optionsMediaQueries:s}}function to(t){let e=[];function o(a,r){return e=r.filter(({options:d})=>t.optionsAtMedia(d).active!==!1),e.forEach(d=>d.init(a,t)),r.reduce((d,l)=>Object.assign(d,{[l.name]:l}),{})}function s(){e=e.filter(a=>a.destroy())}return{init:o,destroy:s}}function je(t,e,o){const s=t.ownerDocument,i=s.defaultView,a=eo(i),r=to(a),d=_e(),l=Qn(),{mergeOptions:c,optionsAtMedia:y,optionsMediaQueries:h}=a,{on:f,off:m,emit:u}=l,v=P;let k=!1,g,p=c(Rn,je.globalOptions),C=c(p),E=[],M,I,D;function A(){const{container:$,slides:w}=C;I=(He($)?t.querySelector($):$)||t.children[0];const V=He(w)?I.querySelectorAll(w):w;D=[].slice.call(V||I.children)}function F($){const w=Jn(t,I,D,s,i,$,l);if($.loop&&!w.slideLooper.canLoop()){const G=Object.assign({},$,{loop:!1});return F(G)}return w}function B($,w){k||(p=c(p,$),C=y(p),E=w||E,A(),g=F(C),h([p,...E.map(({options:G})=>G)]).forEach(G=>d.add(G,"change",P)),C.active&&(g.translate.to(g.location.get()),g.animation.init(),g.slidesInView.init(),g.slideFocus.init(ee),g.eventHandler.init(ee),g.resizeHandler.init(ee),g.slidesHandler.init(ee),g.options.loop&&g.slideLooper.loop(),I.offsetParent&&D.length&&g.dragHandler.init(ee),M=r.init(ee,E)))}function P($,w){const G=ne();W(),B(c({startIndex:G},$),w),l.emit("reInit")}function W(){g.dragHandler.destroy(),g.eventStore.clear(),g.translate.clear(),g.slideLooper.clear(),g.resizeHandler.destroy(),g.slidesHandler.destroy(),g.slidesInView.destroy(),g.animation.destroy(),r.destroy(),d.clear()}function H(){k||(k=!0,d.clear(),W(),l.emit("destroy"),l.clear())}function U($,w,G){!C.active||k||(g.scrollBody.useBaseFriction().useDuration(w===!0?0:C.duration),g.scrollTo.index($,G||0))}function O($){const w=g.index.add(1).get();U(w,$,-1)}function z($){const w=g.index.add(-1).get();U(w,$,1)}function q(){return g.index.add(1).get()!==ne()}function oe(){return g.index.add(-1).get()!==ne()}function te(){return g.scrollSnapList}function ie(){return g.scrollProgress.get(g.offsetLocation.get())}function ne(){return g.index.get()}function le(){return g.indexPrevious.get()}function de(){return g.slidesInView.get()}function X(){return g.slidesInView.get(!1)}function pe(){return M}function b(){return g}function L(){return t}function N(){return I}function J(){return D}const ee={canScrollNext:q,canScrollPrev:oe,containerNode:N,internalEngine:b,destroy:H,off:m,on:f,emit:u,plugins:pe,previousScrollSnap:le,reInit:v,rootNode:L,scrollNext:O,scrollPrev:z,scrollProgress:ie,scrollSnapList:te,scrollTo:U,selectedScrollSnap:ne,slideNodes:J,slidesInView:de,slidesNotInView:X};return B(e,o),setTimeout(()=>l.emit("init"),0),ee}je.globalOptions=void 0;function Ve(t={},e=[]){const o=x.useRef(t),s=x.useRef(e),[i,a]=x.useState(),[r,d]=x.useState(),l=x.useCallback(()=>{i&&i.reInit(o.current,s.current)},[i]);return x.useEffect(()=>{Ge(o.current,t)||(o.current=t,l())},[t,l]),x.useEffect(()=>{xn(s.current,e)||(s.current=e,l())},[e,l]),x.useEffect(()=>{if(Cn()&&r){je.globalOptions=Ve.globalOptions;const c=je(r,o.current,s.current);return a(c),()=>c.destroy()}else a(void 0)},[r,a]),[d,i]}Ve.globalOptions=void 0;const R={carouselContainer:"_carouselContainer_1bu1s_1",viewport:"_viewport_1bu1s_11",slides:"_slides_1bu1s_17",slide:"_slide_1bu1s_17",slideInner:"_slideInner_1bu1s_37",loaderOverlay:"_loaderOverlay_1bu1s_45",image:"_image_1bu1s_55",loaded:"_loaded_1bu1s_66",empty:"_empty_1bu1s_78",controls:"_controls_1bu1s_84",arrows:"_arrows_1bu1s_94",dots:"_dots_1bu1s_104",dot:"_dot_1bu1s_104",dotActive:"_dotActive_1bu1s_130"},vt=_.Spinner,yt=({images:t,autoPlay:e=!1,autoDelay:o=5,showArrows:s=!0,showDots:i=!0,variant:a,slidesPerView:r=1,slideSpacing:d=16,cornerRadius:l=0,"data-color":c,"data-size":y})=>{const h={loop:!0,align:"start",containScroll:"trimSnaps",slidesToScroll:1},[f,m]=Ve(h),[u,v]=x.useState(0),[k,g]=x.useState([]),[p,C]=x.useState([]);x.useEffect(()=>{C(new Array((t==null?void 0:t.length)||0).fill(!1))},[t]);const E=x.useCallback(H=>{C(U=>{const O=[...U];return O[H]=!0,O})},[]),M=x.useMemo(()=>o*1e3,[o]),I=x.useCallback(()=>{m&&v(m.selectedScrollSnap())},[m]),D=x.useCallback(H=>m&&m.scrollTo(H),[m]),A=x.useCallback(()=>m&&m.scrollPrev(),[m]),F=x.useCallback(()=>m&&m.scrollNext(),[m]);x.useEffect(()=>{if(m)return m.on("select",I),m.on("reInit",I),g(m.scrollSnapList()),()=>{m.off("select",I),m.off("reInit",I)}},[m,I]),x.useEffect(()=>{m&&(m.reInit(),g(m.scrollSnapList()))},[m,t,r,d]),x.useEffect(()=>{if(!e||!m||!t||t.length<=1)return;const H=window.setInterval(()=>{m.canScrollNext()&&m.scrollNext()},M);return()=>{window.clearInterval(H)}},[e,M,m,t]);const B=Math.max(1,r),P=`${100/B}%`,W=d/2;return n.jsxs("div",{className:R.carouselContainer,"data-color":c,"data-size":y,"data-variant":a,children:[n.jsx("div",{className:R.viewport,ref:f,children:n.jsx("div",{className:R.slides,style:{marginLeft:`-${W}px`,marginRight:`-${W}px`},children:t&&t.length>0?t.map((H,U)=>n.jsx("div",{className:R.slide,style:{flex:`0 0 ${P}`,paddingLeft:`${W}px`,paddingRight:`${W}px`,borderRadius:l>0?`${l}px`:void 0,overflow:"hidden"},children:n.jsxs("div",{className:R.slideInner,style:{borderRadius:`${l}px`,overflow:"hidden",position:"relative",width:"100%",height:"100%"},children:[!p[U]&&n.jsx("div",{className:R.loaderOverlay,children:n.jsx(vt,{"aria-label":"Laster bilde"})}),n.jsx("img",{className:`${R.image} ${p[U]?R.loaded:R.loadingImage}`,src:H.src,alt:H.alt,loading:U<B?"eager":"lazy",crossOrigin:"anonymous",onLoad:()=>E(U),onError:O=>{O.target.style.display="none",E(U)}})]})},`image-${U}-${H.src}`)):n.jsx("div",{className:R.slide,style:{flex:"0 0 100%"},children:n.jsx("div",{className:R.empty,children:"Ingen bilder"})})})}),(s||i&&t&&t.length>1)&&n.jsxs("div",{className:R.controls,"aria-hidden":"false",children:[s&&n.jsxs("div",{className:R.arrows,children:[n.jsx(he,{variant:"primary",icon:!0,"aria-label":"Forrige bilde",onClick:A,disabled:!t||t.length<=1,children:n.jsx(ce.ChevronLeftIcon,{"aria-hidden":!0})}),n.jsx(he,{variant:"primary",icon:!0,"aria-label":"Neste bilde",onClick:F,disabled:!t||t.length<=1,children:n.jsx(ce.ChevronRightIcon,{"aria-hidden":!0})})]}),i&&t&&t.length>1&&n.jsx("div",{className:R.dots,role:"tablist","aria-label":"Bildeposisjon",children:k.map((H,U)=>{const O=U===u;return n.jsx("button",{type:"button",className:`${R.dot} ${O?R.dotActive:""}`,onClick:()=>D(U),"aria-label":`Gå til bilde ${U+1}`,"aria-selected":O,role:"tab"},`dot-${U}`)})})]})]})};yt.displayName="Carousel";const no=_.Details,oo=_.Dialog,ro=_.Divider,Z=_.Dropdown,so=_.ErrorSummary,ao=_.Field,bt=_.FieldDescription,Tt=_.FieldCounter;bt.displayName="Field.Description",Tt.displayName="Field.Counter";const io=_.Fieldset,St=x.forwardRef((t,e)=>n.jsx(_.Heading,{ref:e,...t}));St.displayName="Heading";const lo=_.Input,Ct=x.forwardRef((t,e)=>n.jsx(_.Label,{ref:e,...t}));Ct.displayName="Label";const ae=_.Link,co=_.List,uo=_.Pagination,po=_.usePagination,Fe=x.forwardRef((t,e)=>n.jsx(_.Paragraph,{ref:e,...t}));Fe.displayName="Paragraph";const go=_.Popover,mo=_.Radio,ho=_.useRadioGroup,Le=Object.assign(_.Search,{Button:_.SearchButton,ClearButton:_.SearchClear,Input:_.SearchInput}),fo=_.Select,ko=_.Skeleton,vo=_.SkipLink,xt=_.EXPERIMENTAL_Suggestion;xt.displayName="Suggestion";const Ne=_.Switch,yo=_.Table,bo=_.Tabs,To=_.Tag,So=_.Textarea,Co=_.Textfield,xo=_.ToggleGroup,wo=_.Tooltip,wt=x.forwardRef((t,e)=>n.jsx(_.ValidationMessage,{ref:e,...t}));wt.displayName="ValidationMessage";const Io={NO:{header:{darkMode:"Nattmodus",toggleTheme:"Bytt tema",language:"Språk:",search:"Søk",searchPlaceholder:"Søk etter innhold...",closeSearch:"Lukk søk",openSearch:"Åpne søk",clearSearch:"Tøm søk",close:"Lukk",menu:"Meny",closeMenu:"Lukk meny",openMenu:"Åpne meny",login:"Logg inn",supportUs:"Støtt oss",suggestions:"Forslag til søk",viewAll:"Vis alle resultater",noResults:"Ingen treff funnet for",selectLanguage:"Velg språk",homeAriaLabel:"Norges Røde Kors Hjem",nav:{design:"Design",components:"Komponenter",code:"Kode",tokens:"Tokens",work:"Vårt arbeid",volunteer:"Bli frivillig",courses:"Kurs og opplæring"}},home:{heroTitle:"Røde Kors Designsystem",heroLead:"Felles komponentbibliotek og retningslinjer for design og utvikling av digitale løsninger i Røde Kors.",searchComponents:"Søk i komponenter",exploreSystem:"Utforsk systemet",componentsDesc:"Bibliotek med ferdige React-komponenter.",designDesc:"Farger, typografi og prinsipper.",codeDesc:"Dokumentasjon, arbeidsflyt og MCP.",universalDesign:"Universell utforming",universalDesignText:"Innebygd tilgjengelighet som standard. Vi følger WCAG 2.1-kravene strengt.",readGuidelines:"Les retningslinjene",consistentBrand:"Konsistent merkevare",consistentBrandText:"Design tokens sikrer at Røde Kors sin visuelle profil ivaretas på alle flater.",seeColors:"Se farger",efficientDev:"Effektiv utvikling",efficientDevText:"Spar tid med ferdige komponenter. Fokuser på funksjonalitet, ikke CSS.",exploreComponents:"Utforsk komponenter",quickActionsTitle:"Hopp rett inn",quickActionCodeTitle:"Start i kode",quickActionCodeText:"Se oppsett, tokens og eksempler.",quickActionDesignTitle:"Designguiden",quickActionDesignText:"Farger, typografi og prinsipper.",quickActionComponentsTitle:"Komponentbibliotek",quickActionComponentsText:"Utforsk og gjenbruk ferdige komponenter.",openCode:"Åpne kode",openDesign:"Åpne design",openComponents:"Åpne komponenter",featureStripTitle:"Nyttig akkurat nå",featureToken:"Oppdaterte designtokens",featureFont:"Source Sans 3 inkludert",featureComponent:"Nye komponentvarianter",featureSeeAll:"Se alle oppdateringer",profile:"Profil",name:"Navn Navnesen",volunteer:"Frivillig",save:"Lagre",approved:"Godkjent",rejected:"Avvist",darkModeLabel:"Mørk modus",importantMessage:"Viktig melding",updateGuidelines:"Husk å oppdatere retningslinjene...",all:"Alle",active:"Aktive",alerts:"Varsler",status:"Status"},components:{title:"Komponenter",intro:"Designsystemet inneholder grunnleggende komponenter som kan settes sammen på mange ulike måter og i forskjellige mønstre.",searchPlaceholder:"Søk etter komponent...",searchAriaLabel:"Søk i komponenter",noResults:"Ingen komponenter funnet for"},code:{sidebar:{overview:"Oversikt",workflow:"Arbeidsflyt",structure:"Struktur",contribute:"Bidra",home:"Startside",getStarted:"Kom i gang",styling:"Styling",designTokens:"Designtokens",fonts:"Fonter",icons:"Bruk av ikoner",figmaMcp:"Fra Figma til Kode (MCP)",introduction:"Introduksjon",cursor:"Cursor",claudeCode:"Claude Code",componentCreation:"Komponent Kreasjon",metadataFiles:"Metadata filer",developerGuide:"Utviklerguide",aiGuide:"AI Guide for Assistanter"},overview:{title:"Røde Kors Designsystem",intro:"Velkommen til Røde Kors Designsystem! Dette repositoriet inneholder et bibliotek med gjenbrukbare UI-komponenter bygget med React, skreddersydd for Norges Røde Kors sine digitale prosjekter.",text1:"Det er utviklet ved å utnytte grunnkomponentene fra Digdirs Designsystemet. Denne tilnærmingen sikrer en helhetlig og gjenkjennelig visuell identitet på tvers av alle applikasjoner for Røde Kors. Systemet er forhåndskonfigurert med det offisielle Røde Kors-temaet, som leveres via en dedikert designtoken-pakke.",text2:"Hovedmålet er å sikre merkevarekonsistens, forbedre utviklingseffektiviteten og opprettholde høye standarder for tilgjengelighet i alle Røde Kors-applikasjoner.",text3:"Storybook fungerer som den interaktive dokumentasjonen og utviklingsmiljøet for å vise og teste disse komponentene.",getStartedCard:"Kom i gang",getStartedDesc:"Installasjon, oppsett og retningslinjer for utviklere.",getStartedLink:"Kom i gang",designTokensCard:"Designtokens",designTokensDesc:"Lær hvordan du bruker designtokens og fonter.",designTokensLink:"Les mer",workflowCard:"Arbeidsflyt",workflowDesc:"Lær hvordan du bruker MCP-verktøy for å hente komponenter direkte fra Figma.",workflowLink:"Les guide"},getStarted:{title:"Kom i gang",intro:"For å ta i bruk Røde Kors Designsystem i din Next.js (eller annen React) applikasjon:",installationTitle:"1. Installasjon",installationText:"Installer de nødvendige npm-pakkene for prosjektet ditt. Du trenger tre pakker: selve komponentbiblioteket (rk-designsystem), grunnstilene fra Digdir, og Røde Kors-temapakken (rk-design-tokens).",githubLink:"Gå til GitHub Repository",npmTitle:"npm",yarnTitle:"yarn",pnpmTitle:"pnpm",note:"Merk: Du trenger ikke å installere @digdir/designsystemet-react separat, da alle nødvendige komponenter er inkludert i rk-designsystem-pakken.",stylesTitle:"2. Inkludering av stiler (CSS)",stylesText1:"For at komponentene skal styles riktig, må du importere stilarkene på øverste nivå i applikasjonen din, for eksempel i layout.tsx (for Next.js App Router) eller _app.tsx (for Next.js Pages Router).",stylesText2:"Viktig rekkefølge: Det er avgjørende at grunnstilarket (@digdir/designsystemet-css) lastes før Røde Kors-temafilen (rk-design-tokens). Dette sikrer at vårt temas tokens overstyrer standardverdiene korrekt.",appRouterExample:"Eksempel for Next.js (App Router - src/app/layout.tsx):",pagesRouterExample:"Eksempel for Next.js (Pages Router - pages/_app.tsx):",usageTitle:"3. Bruk av komponenter",usageText:"Når stilarkene er inkludert, kan du begynne å importere og bruke komponenter i prosjektet ditt. Alle komponenter du trenger er tilgjengelige direkte fra rk-designsystem-pakken.",importTitle:"3.1 Importer og bruk Røde Kors Designsystem-komponenter",nextjsExample:"3.2 Eksempel på bruk i en Next.js-side",updateText:"Utseendet til alle komponenter styres fullt ut av pakken rk-design-tokens. For å motta visuelle oppdateringer til merkevaretemaet (som en ny primærfarge), oppdaterer du ganske enkelt pakken til siste versjon:"},designTokens:{title:"Røde Kors Designtokens",intro:"Dette repositoriet er den sentrale kilden for alle designtokens (farger, typografi, avstander osv.) for Norges Røde Kors sine digitale produkter. Det fungerer som en sannhetskilde (single source of truth) som automatisk distribuerer stilendringer til alle tilkoblede prosjekter.",howToTitle:"Hvordan ta i bruk tokens",howToText:"For å bruke designtokens i ditt prosjekt, må du installere og konfigurere temapakken.",installTitle:"1. Installasjon",importTitle:"2. Importer CSS",importText:"I din applikasjons rot-layout (f.eks. layout.tsx), importer grunnstilarket før Røde Kors-temafilen.",fontTitle:"Hvordan legge til fonten",workflowTitle:"Automatisert arbeidsflyt for Designtokens (End-to-End)",workflowText:"Denne arbeidsflyten etablerer en helautomatisert pipeline som kobler designprosessen vår direkte til live produksjonsapplikasjoner. Når en designer oppdaterer stilen i Figma, bygger, versjonerer og publiserer dette systemet automatisk en ny stilpakke til npm. Deretter varsles Vercel-prosjektene våre, som oppdaterer seg selv og redeployer med de nye stilene.",phase1Title:"Fase 1: En Designer gjør en endring (Publisist)",phase1Item1:"Design i Figma: En designer gjør en endring på en farge, font eller annen designtoken.",phase1Item2:"Push til GitHub: Ved bruk av Token Studio-pluginet pusher designeren endringene. Dette committer automatisk de oppdaterte JSON-filene til main-branchen.",phase1Item3:"Trigge Publisher Workflow: Denne pushen trigger umiddelbart GitHub Action definert i .github/workflows/publish.yml.",phase1Item4:"Bygg & Commit Artefakter: Workflowen kjører npm run build for å generere CSS fra JSON-filene og committer resultatene.",phase1Item5:"Versjonering & Release: Workflowen kjører npm version patch for å øke versjonsnummeret, lage en release-commit, og tagge den.",phase1Item6:"Publiser til npm: Til slutt publiserer workflowen den nye versjonen av pakken til npm-registeret.",phase2Title:"Fase 2: Varsling av applikasjoner (Signalet)",phase2Text:"Send et Dispatch-signal: Etter en vellykket publisering, sender workflowen et repository_dispatch-signal til konsumentprosjekter som rk-designsystem for å varsle om den nye versjonen.",phase3Title:"Fase 3: Automatisk oppdatering og redeploy (Konsumentene)",phase3Item1:'Trigge Consumer Workflow: Dispatch-signalet starter en "Update"-workflow i konsumentprosjektene.',phase3Item2:"Oppdater Avhengigheter: Workflowen kjører npm update rk-design-tokens for å hente den siste versjonen.",phase3Item3:"Commit & Push Oppdateringen: Workflowen committer den oppdaterte package-lock.json-filen.",phase3Item4:"Vercel Auto-Deploys: Vercels Git-integrasjon oppdager den nye commiten og starter automatisk en ny deployment."},fonts:{title:"Fonter",intro:"Røde Kors Designsystem bruker fonten Source Sans 3. For at typografien skal vises korrekt i applikasjonen din, må denne fonten lastes inn.",howToTitle:"Hvordan legge til fonten",howToText:"Du kan inkludere fonten ved å legge til følgende linjer i <head>-elementet i din HTML eller i rot-layouten din:",afterLoadTitle:"Etter lasting",afterLoadText:"Når fonten er lastet, vil CSS-variablene fra rk-design-tokens automatisk ta den i bruk (--ds-font-family).",nextjsTitle:"Eksempel for Next.js",nextjsText:"For Next.js App Router, legg til fonten i layout.tsx:",nextjsPagesText:"For Next.js Pages Router, legg til fonten i _app.tsx eller _document.tsx:",cssVariablesTitle:"CSS-variabler",cssVariablesText:"Etter at fonten er lastet, bruker designsystemet automatisk CSS-variabelen --ds-font-family som er definert i rk-design-tokens pakken. Du trenger ikke å spesifisere fonten manuelt i komponentene dine."},icons:{title:"Bruk av Ikoner",intro:"Dette biblioteket er designet for å fungere sømløst med det offisielle ikonsettet fra NAV/Aksel.",installTitle:"Installasjon",importTitle:"Import og bruk",importText:"Ikoner eksporteres som navngitte React-komponenter. Importer kun de ikonene du trenger (tree‑shakable):",accessibilityTitle:"Tilgjengelighetsguide",accessibilityItem1:"Ikon + synlig tekst: sett aria-hidden på ikonet slik at skjermlesere ikke leser det opp to ganger.",accessibilityItem2:"Ikon-kun triggere (f.eks. en knapp): legg til en beskrivende aria-label på triggeren, behold ikonet aria-hidden.",accessibilityItem3:"Farge: ikoner arver currentColor; bruk komponentens variant/farge for å styre det (f.eks. knappevarianter, tag-farger).",accessibilityItem4:`Størrelse: sett fontSize (f.eks. fontSize="1.25rem") eller inline style (f.eks. style="{ fontSize: '1.25rem' }").`,performanceTitle:"Ytelse",performanceText:"Bruk navngitte importer fra @navikt/aksel-icons for å holde pakkestørrelsen nede – ubrukte ikoner fjernes (tree-shaken) av moderne bundlere."},contributing:{title:"Bidra til Biblioteket",intro:"Denne guiden gir et sett med standarder og beste praksis for å lage nye komponenter. Å følge disse retningslinjene sikrer at komponentbiblioteket vårt forblir konsistent, tilgjengelig og enkelt å vedlikeholde.",getStartedTitle:"Kom i gang (for bidragsytere)",getStartedText:"Følg disse stegene for å kjøre det lokale utviklingsmiljøet. Alle kommandoer skal kjøres fra roten av prosjektet.",principlesTitle:"Kjerneprinsipper",principlesText:"Hver komponent vi bygger bør følge disse kjerneprinsippene:",principlesA11y:"Tilgjengelighet (A11y): Komponenter må kunne brukes av alle, inkludert personer med nedsatt funksjonsevne. Dette betyr korrekte ARIA-attributter, tastaturnavigasjon og semantisk HTML.",principlesReuse:"Gjenbrukbarhet: Komponenter bør være generiske nok til å brukes i flere kontekster uten modifikasjon.",principlesConsistency:"Konsistens: Komponenter skal følge våre etablerte designtokens (farger, avstander, typografi) og ha et konsistent API og struktur.",principlesDocs:"Dokumentasjon: Hver komponent må dokumenteres i Storybook for å gjøre den oppdagbar og enkel å bruke for andre utviklere.",whenTitle:"Når skal man lage en ny komponent",whenText:"Før du begynner å kode, avgjør hvilken type komponent du trenger. De fleste av våre behov faller inn i en av tre kategorier:",wrappedSimpleTitle:"Wrapped Component (Enkel):",wrappedSimpleWhat:"Hva det er: En komponent som direkte wrapper og re-eksporterer en komponent fra @digdir/designsystemet-react uten modifikasjoner.",wrappedSimpleWhen:"Når den skal brukes: Når den grunnleggende Digdir-komponenten dekker behovene våre perfekt, men vi ønsker å inkludere den i vårt eget bibliotek for en konsistent importkilde.",wrappedSimpleExample:"Eksempel: Buttons-komponenten er et perfekt eksempel på dette.",wrappedStyledTitle:"Wrapped Component (med stiloverstyringer):",wrappedStyledWhat:"Hva det er: En wrappet Digdir-komponent hvor vi bruker tilpasset CSS for å justere utseendet slik at det passer bedre til Røde Kors sitt spesifikke designspråk.",wrappedStyledWhen:"Når den skal brukes: Når en Digdir-komponent er funksjonelt korrekt, men trenger visuelle justeringer (f.eks. andre ikoner, border-radius, padding).",wrappedStyledExample:"Eksempel: Alert-komponenten, som bruker composes i CSS for å arve grunnstiler og deretter påføre egne overstyringer.",customTitle:"Custom Component (fra bunnen):",customWhat:"Hva det er: En helt ny komponent bygget når ingen eksisterende Digdir-komponent dekker kravene våre.",customWhen:"Når den skal brukes: For unike UI-mønstre eller funksjonalitet som ikke dekkes av grunnbiblioteket.",customExample:"Eksempel: DateInput-komponenten er en tilpasset komponent med egen tilstand, logikk og styling.",fileStructureTitle:"Filstruktur for komponenter",fileStructureText:"For å opprettholde konsistens, bør hver ny komponent følge denne filstrukturen. Lag en ny mappe under src/components/ med komponentens PascalCase-navn.",codingGuidelinesTitle:"Retningslinjer for koding",componentLogicTitle:"1. Komponentlogikk (MyNewComponent.tsx)",logicTypeScript:"TypeScript først: Alle komponenter må skrives i TypeScript. Definer et Props-interface for komponenten din, som utvider fra grunnleggende HTML-element eller Digdir-komponentprops hvis aktuelt.",logicForwardRef:"Forward Refs: Bruk alltid React.forwardRef for å tillate foreldrekomponenter å få en ref til det underliggende DOM-elementet.",logicA11y:"Tilgjengelighet er obligatorisk:",logicA11yItem1:"Bruk semantisk HTML (<button>, <label>, <nav>).",logicA11yItem2:"Sørg for at alle interaktive elementer kan fokuseres og betjenes med tastatur.",logicA11yItem3:"Gi aria-label for knapper som kun har ikon eller elementer hvor tekstetiketten ikke er synlig.",logicA11yItem4:"Bruk aria-invalid, aria-describedby, osv., for å kommunisere tilstand til hjelpemidler.",logicControlled:"Controlled vs. Uncontrolled: Hvis komponenten din har tilstand (som en input), bør den støtte både kontrollerte (value + onChange) og ukontrollerte (defaultValue) mønstre.",logicProps:"Props-navngiving: Bruk data-* attributter for stylingvarianter (f.eks. data-size, data-color) for å samkjøre med mønstrene i våre eksisterende komponenter.",stylingTitle:"2. Styling (styles.module.css)",stylingModules:"CSS Modules: For tilpassede komponenter må alle stiler plasseres i en styles.module.css-fil. Dette scoper klassenavn lokalt og forhindrer globale stilkonflikter.",stylingTokens:"Designtokens: Bruk alltid våre designtokens (var(--ds-...)) for farger, avstander, fonter, osv. Ikke bruk hardkodede verdier (f.eks. #FFF, 16px).",stylingOverride:"Overstyring av Wrapped Components: For wrapped components, bruk en standard CSS-fil. Bruk @layer og composes nøkkelord for å utvide grunnleggende Digdir-stiler uten å øke CSS-spesifisiteten unødvendig.",documentationTitle:"3. Dokumentasjon (MyNewComponent.stories.tsx)",docsStorybook:"Din Storybook-fil er den offisielle dokumentasjonen. Den må være tydelig og omfattende.",docsMeta:"meta Object: Definer komponentens tittel, komponentreferanse, og tags: ['autodocs'] for å aktivere automatisk dokumentasjon.",docsArgTypes:"argTypes: Dokumenter hver enkelt prop. Gi en beskrivelse, kontrolltype (f.eks. select, boolean, text), og alternativer hvis aktuelt. Dette driver de interaktive kontrollene i Storybook.",docsStories:"Lag flere Stories: Lag en egen story for hver nøkkeltilstand og variant av komponenten din (f.eks. Default, Disabled, WithError, WithIcon).",processTitle:"Bidragsprosess",processPRTitle:"Opprett en Pull Request (PR):",processBranch:"Opprett en Branch: Pull de siste endringene fra main-branchen og opprett en ny feature-branch: git checkout -b feat/min-nye-komponent.",processDraft:"Åpne en Draft PR: Så snart du starter, åpne en draft pull request på GitHub. Dette forhindrer dobbeltarbeid og lar andre se hva du jobber med.",processCommit:"Commit endringene dine: Mens du jobber, lag små, logiske commits.",processReview:'Klar for gjennomgang: Når utviklingen er ferdig og alle automatiserte sjekker passerer, merk PR-en som "Ready for review" og be om en gjennomgang fra designsystem-forvalterne.'},figmaMcp:{title:"Arbeidsflyt: Fra Figma til Kode med MCP",introTitle:"Introduksjon til MCP og Arbeidsflyt",intro:"Denne guiden beskriver hvordan vi bruker Model Context Protocol (MCP) for å koble Figma direkte til utviklingsmiljøet. Dette gjør det mulig å hente designspesifikasjoner, tokens og strukturer automatisk, validert mot vårt designsystem.",whatIsMcpTitle:"Hva er MCP?",whatIsMcpText1:"Model Context Protocol (MCP) er en åpen standard som lar AI-assistenter kommunisere direkte med eksterne datakilder og verktøy. I vår kontekst bruker vi MCP til å koble Figma-designfiler direkte til utviklingsmiljøet vårt.",whatIsMcpText2:"Dette betyr at når du gir AI-en en Figma-lenke, kan den automatisk:",whatIsMcpItem1:"Lese designspesifikasjoner direkte fra Figma",whatIsMcpItem2:"Hente eksakte farger, spacing, typografi og andre design tokens",whatIsMcpItem3:"Forstå komponentstrukturen og hierarkiet",whatIsMcpItem4:"Generere kode som matcher designet nøyaktig",whyUseMcpTitle:"Hvorfor bruke MCP?",whyUseMcpText1:"Tradisjonelt har utviklere måttet manuelt konvertere design til kode, noe som kan være tidkrevende og feilutsatt. Med MCP får vi:",whyUseMcpItem1Title:"Nøyaktighet:",whyUseMcpItem1Text:"AI-en leser designet direkte fra kilde, så ingen informasjon går tapt i oversettelsen.",whyUseMcpItem2Title:"Hastighet:",whyUseMcpItem2Text:"Automatisk konvertering fra design til kode sparer timer med manuelt arbeid.",whyUseMcpItem3Title:"Konsistens:",whyUseMcpItem3Text:"Alle design tokens og komponenter brukes konsekvent, validert mot designsystemet vårt.",whyUseMcpItem4Title:"Effektivitet:",whyUseMcpItem4Text:"Mindre tid på repetitivt arbeid, mer tid på å løse faktiske problemer.",howItWorksTitle:"Hvordan fungerer det?",howItWorksIntro:"Prosessen er enkel og følger disse stegene:",stepByStepTitle:"Steg-for-steg oversikt",stepByStep1Title:"1. Oppsett (kun én gang)",stepByStep1Text:"Du setter opp en lokal MCP-server som kobler Figma til AI-assistenten din. Dette krever en Figma Access Token og litt konfigurasjon.",stepByStep2Title:"2. Hent AI Design System Guide",stepByStep2Text:"Du laster ned en spesiallaget guide som inneholder all informasjon om komponenter, tokens og beste praksis. Dette gir AI-en full kontekst om designsystemet vårt.",stepByStep3Title:"3. Kopier Figma-lenke",stepByStep3Text:"I Figma markerer du den delen av designet du vil implementere og kopierer lenken til den spesifikke komponenten eller rammen.",stepByStep4Title:"4. Gi instruksjoner til AI-en",stepByStep4Text:"Du gir AI-en Figma-lenken sammen med instruksjoner om hva du vil lage. AI-en bruker MCP til å lese designet og genererer kode basert på designsystemet vårt.",stepByStep5Title:"5. Review og juster",stepByStep5Text:"AI-en genererer kode som du kan gjennomgå, teste og justere etter behov. Koden følger automatisk design tokens og komponenter fra designsystemet.",nextStepsTitle:"Neste steg",nextStepsText:"Nå som du forstår grunnleggende om MCP og arbeidsflyten, kan du velge mellom:",nextStepsItem1:"Cursor workflow - for brukere av Cursor IDE",nextStepsItem2:"Claude Code workflow - for brukere av Claude Code",part1Title:"Del 1: Oppsett av Figma MCP Server",part1Intro:"Dette gjøres kun én gang for å aktivere integrasjonen i Cursor/Windsurf.",part1Description:'For at AI-en skal kunne "lese" Figma-filene, må vi sette opp en lokal kobling.',setupStep1Title:"1. Hent Figma Access Token",setupStep1Item1:"Gå til Figma -> Settings -> Personal Access Tokens.",setupStep1Item2:"Klikk Generate new token.",setupStep1Item3:'Navn: F.eks. "Cursor MCP".',setupStep1Item4:"Scopes: Velg File content: Read og File metadata: Read.",setupStep1Item5:"Kopier tokenet (du får ikke se det igjen).",setupStep2Title:"2. Konfigurer i Cursor",setupStep2Item1:"Åpne innstillinger i Cursor (Ctrl/Cmd + ,).",setupStep2Item2:"Gå til Features -> MCP.",setupStep2Item3:"Klikk + Add New MCP Server.",setupStep2Item4:"Fyll inn følgende:",setupStep2Item5:"Type: command",setupStep2Item6:"Name: figma",setupStep2Item7:"Command: npx -y @modelcontextprotocol/server-figma",setupStep2Item8:"Legg til Environment Variable (viktig!):",setupStep2Item9:"Key: FIGMA_ACCESS_TOKEN",setupStep2Item10:"Value: [Lim inn tokenet du kopierte i steg 1]",setupStep2Item11:'Når lyset ved siden av "figma" blir grønt, er verktøyet klart til bruk.',part2Title:"Del 2: Daglig Arbeidsflyt",step0Title:"Steg 0: Indeksering av Dokumentasjon",step0Description:"Gjør dette én gang per prosjekt for å gi AI-en full oversikt over designsystemet.",step0Intro:"For at Cursor skal forstå våre spesifikke tokens, komponentnavn og retningslinjer, må vi la den lese gjennom dokumentasjonen på forhånd.",step0Item1:"Åpne Chat i Cursor (Cmd + L / Ctrl + L).",step0Item2:'Skriv @Docs i tekstfeltet og velg "Add new doc" fra menyen som dukker opp.',step0Item3:"Lim inn URL-en til hovedsiden for dokumentasjonen: https://norwegianredcross.github.io/DesignSystem/",step0Item4:"Gi den et navn som er lett å huske, f.eks. RødeKors.",step0Item5:"Trykk Confirm.",step0WhatHappensTitle:"Hva skjer nå?",step0WhatHappensText:'Cursor vil automatisk "crawle" (lese) gjennom hovedsiden og alle undersider. Den lagrer informasjonen i en lokal database. Dette gjør at du senere kan referere til @RødeKors i chatten, og AI-en vil umiddelbart vite alle fargekoder, spacing-variabler og komponent-regler uten at du trenger å lime inn tekst manuelt. NB: Dette gjelder når du refererer til @RødeKors i chatten. Hvis du bruker .cursorrules, trenger du ikke å legge ved @RødeKors manuelt.',step0_5Title:"Steg 0.5: Hent AI Design System Guide",step0_5Description:"Før du begynner å konvertere Figma-design til kode, må du hente AI Design System Guide. Denne guiden inneholder komplett dokumentasjon om alle komponenter, design tokens, og beste praksis som AI-assistenten trenger for å produsere korrekt kode.",step0_5WhyCurlTitle:"Hvorfor bruke curl?",step0_5WhyCurlText:"curl er den anbefalte metoden fordi:",step0_5WhyCurlItem1:"Filen lastes ned lokalt - AI-assistenten har alltid tilgang til den uten internett",step0_5WhyCurlItem2:"Raskere referanse - Ingen behov for å laste ned på nytt ved hver prompt",step0_5WhyCurlItem3:"Fungerer offline - Etter nedlasting kan du jobbe uten internettforbindelse",step0_5WhyCurlItem4:"Konsistent kontekst - AI-en leser samme versjon av guiden hver gang",step0_5WhyCurlItem5:"Enklere referanse - Bare bruk filnavnet (@AI_DESIGN_SYSTEM_GUIDE.md) i stedet for lange URL-er",cursorWorkflowTitle:"Komplett arbeidsflyt: Cursor",cursorWorkflowIntro:"Følg disse stegene for å sette opp og bruke Figma MCP-arbeidsflyten i Cursor.",claudeWorkflowTitle:"Komplett arbeidsflyt: Claude Code",claudeWorkflowIntro:"Følg disse stegene for å sette opp og bruke Figma MCP-arbeidsflyten i Claude Code.",step0_5ClaudeTitle:"For Claude Code:",step0_5ClaudeIntro:"I Claude Code kan du hente guiden direkte i terminalen eller be Claude om å gjøre det:",step0_5ClaudeMethod1Title:"Metode 1: Hent via terminal",step0_5ClaudeMethod1Step1:"Åpne terminalen i Claude Code",step0_5ClaudeMethod1Step2:"Kjør denne kommandoen:",step0_5ClaudeMethod1Command:"curl -o AI_DESIGN_SYSTEM_GUIDE.md https://norwegianredcross.github.io/DesignSystem/storybook/AI_DESIGN_SYSTEM_GUIDE.md",step0_5ClaudeMethod1Step3:"Verifiser at filen er lastet ned: ls -la AI_DESIGN_SYSTEM_GUIDE.md",step0_5ClaudeMethod2Title:"Metode 2: Be Claude om å hente den",step0_5ClaudeMethod2Text:'Du kan også be Claude Code direkte: "Please fetch the AI Design System Guide from https://norwegianredcross.github.io/DesignSystem/storybook/AI_DESIGN_SYSTEM_GUIDE.md"',step0_5ClaudeMethod2Note:"Merk: Dette laster ned filen lokalt, akkurat som curl-kommandoen.",step0_5ClaudeSetupTitle:"Steg 0.6: Be Claude om å lese guiden og sette opp prosjektet",step0_5ClaudeSetupIntro:"Før du begynner å konvertere Figma-design til kode, må du be Claude om å lese gjennom AI Design System Guide og verifisere at prosjektet er satt opp korrekt i henhold til guiden. Dette sikrer at alle nødvendige pakker, CSS-imports og font-oppsett er på plass før konvertering.",step0_5ClaudeSetupStep1:"Be Claude om å lese AI Design System Guide: Gi Claude en prompt som ber den lese filen @componentlibrary/AI_DESIGN_SYSTEM_GUIDE.md (eller den nedlastede filen hvis den er i prosjektroten)",step0_5ClaudeSetupStep2:"Be Claude om å verifisere CSS-imports: Gi Claude en prompt som ber den sjekke at CSS-filene er importert i riktig rekkefølge (base styles først, deretter theme)",step0_5ClaudeSetupStep3:"Be Claude om å verifisere font-oppsett: Gi Claude en prompt som ber den sjekke at Source Sans 3 er konfigurert korrekt (se Font Setup-seksjonen i guiden)",step0_5ClaudeSetupStep4:"Be Claude om å verifisere pakke-installasjon: Gi Claude en prompt som ber den sjekke at alle nødvendige pakker er installert (rk-designsystem, @digdir/designsystemet-css, rk-design-tokens)",step0_5ClaudeSetupStep5:"Be Claude om å verifisere prosjektstruktur: Gi Claude en prompt som ber den sjekke at prosjektstrukturen matcher anbefalingene i guiden",step0_5ClaudeSetupPromptTitle:"Ferdig prompt å kopiere:",step0_5ClaudeSetupPrompt:`Les gjennom AI_DESIGN_SYSTEM_GUIDE.md filen og verifiser at prosjektet mitt er satt opp korrekt i henhold til guiden. Sjekk spesifikt:
1
+ (function(T,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("react/jsx-runtime"),require("react"),require("@digdir/designsystemet-react"),require("date-fns"),require("@navikt/aksel-icons")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","@digdir/designsystemet-react","date-fns","@navikt/aksel-icons"],n):(T=typeof globalThis<"u"?globalThis:T||self,n(T.ComponentLibrary={},T.jsxRuntime,T.React,T.designsystemetReact,T.dateFns,T.akselIcons))})(this,(function(T,n,x,_,K,ce){"use strict";const Re=x.forwardRef((t,e)=>n.jsx(_.Alert,{ref:e,...t}));Re.displayName="Alert";const Pe=x.forwardRef((t,e)=>n.jsx(_.Avatar,{ref:e,...t}));Pe.displayName="Avatar";const et=x.forwardRef((t,e)=>n.jsx(_.Badge,{ref:e,...t}));et.displayName="Badge";const Pt=_.BadgePosition,zt=_.Breadcrumbs,Gt=_.BreadcrumbsList,Wt=_.BreadcrumbsItem,Ht=_.BreadcrumbsLink,he=_.Button;he.displayName="Button";const tt=_.Card,Ut=_.CardBlock;tt.displayName="Card";const nt=_.Checkbox,Ot=_.Fieldset,$t=_.useCheckboxGroup;nt.displayName="Checkbox",Ot.displayName="Fieldset";const Vt=_.Chip;function ze(t){return(e={})=>{const o=e.width?String(e.width):t.defaultWidth;return t.formats[o]||t.formats[t.defaultWidth]}}function Se(t){return(e,o)=>{const s=o!=null&&o.context?String(o.context):"standalone";let i;if(s==="formatting"&&t.formattingValues){const r=t.defaultFormattingWidth||t.defaultWidth,d=o!=null&&o.width?String(o.width):r;i=t.formattingValues[d]||t.formattingValues[r]}else{const r=t.defaultWidth,d=o!=null&&o.width?String(o.width):t.defaultWidth;i=t.values[d]||t.values[r]}const a=t.argumentCallback?t.argumentCallback(e):e;return i[a]}}function Ce(t){return(e,o={})=>{const s=o.width,i=s&&t.matchPatterns[s]||t.matchPatterns[t.defaultMatchWidth],a=e.match(i);if(!a)return null;const r=a[0],d=s&&t.parsePatterns[s]||t.parsePatterns[t.defaultParseWidth],l=Array.isArray(d)?Yt(d,h=>h.test(r)):Kt(d,h=>h.test(r));let c;c=t.valueCallback?t.valueCallback(l):l,c=o.valueCallback?o.valueCallback(c):c;const y=e.slice(r.length);return{value:c,rest:y}}}function Kt(t,e){for(const o in t)if(Object.prototype.hasOwnProperty.call(t,o)&&e(t[o]))return o}function Yt(t,e){for(let o=0;o<t.length;o++)if(e(t[o]))return o}function qt(t){return(e,o={})=>{const s=e.match(t.matchPattern);if(!s)return null;const i=s[0],a=e.match(t.parsePattern);if(!a)return null;let r=t.valueCallback?t.valueCallback(a[0]):a[0];r=o.valueCallback?o.valueCallback(r):r;const d=e.slice(i.length);return{value:r,rest:d}}}const Zt={lessThanXSeconds:{one:"mindre enn ett sekund",other:"mindre enn {{count}} sekunder"},xSeconds:{one:"ett sekund",other:"{{count}} sekunder"},halfAMinute:"et halvt minutt",lessThanXMinutes:{one:"mindre enn ett minutt",other:"mindre enn {{count}} minutter"},xMinutes:{one:"ett minutt",other:"{{count}} minutter"},aboutXHours:{one:"omtrent en time",other:"omtrent {{count}} timer"},xHours:{one:"en time",other:"{{count}} timer"},xDays:{one:"en dag",other:"{{count}} dager"},aboutXWeeks:{one:"omtrent en uke",other:"omtrent {{count}} uker"},xWeeks:{one:"en uke",other:"{{count}} uker"},aboutXMonths:{one:"omtrent en måned",other:"omtrent {{count}} måneder"},xMonths:{one:"en måned",other:"{{count}} måneder"},aboutXYears:{one:"omtrent ett år",other:"omtrent {{count}} år"},xYears:{one:"ett år",other:"{{count}} år"},overXYears:{one:"over ett år",other:"over {{count}} år"},almostXYears:{one:"nesten ett år",other:"nesten {{count}} år"}},Xt=(t,e,o)=>{let s;const i=Zt[t];return typeof i=="string"?s=i:e===1?s=i.one:s=i.other.replace("{{count}}",String(e)),o!=null&&o.addSuffix?o.comparison&&o.comparison>0?"om "+s:s+" siden":s},Jt={full:"EEEE d. MMMM y",long:"d. MMMM y",medium:"d. MMM y",short:"dd.MM.y"},Qt={full:"'kl'. HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},Rt={full:"{{date}} 'kl.' {{time}}",long:"{{date}} 'kl.' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},en={date:ze({formats:Jt,defaultWidth:"full"}),time:ze({formats:Qt,defaultWidth:"full"}),dateTime:ze({formats:Rt,defaultWidth:"full"})},tn={lastWeek:"'forrige' eeee 'kl.' p",yesterday:"'i går kl.' p",today:"'i dag kl.' p",tomorrow:"'i morgen kl.' p",nextWeek:"EEEE 'kl.' p",other:"P"},nn=(t,e,o,s)=>tn[t],on={narrow:["f.Kr.","e.Kr."],abbreviated:["f.Kr.","e.Kr."],wide:["før Kristus","etter Kristus"]},rn={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. kvartal","2. kvartal","3. kvartal","4. kvartal"]},sn={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["jan.","feb.","mars","apr.","mai","juni","juli","aug.","sep.","okt.","nov.","des."],wide:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"]},an={narrow:["S","M","T","O","T","F","L"],short:["sø","ma","ti","on","to","fr","lø"],abbreviated:["søn","man","tir","ons","tor","fre","lør"],wide:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"]},ln={narrow:{am:"a",pm:"p",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på etterm.",evening:"på kvelden",night:"på natten"},abbreviated:{am:"a.m.",pm:"p.m.",midnight:"midnatt",noon:"middag",morning:"på morg.",afternoon:"på etterm.",evening:"på kvelden",night:"på natten"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnatt",noon:"middag",morning:"på morgenen",afternoon:"på ettermiddagen",evening:"på kvelden",night:"på natten"}},dn={ordinalNumber:(t,e)=>Number(t)+".",era:Se({values:on,defaultWidth:"wide"}),quarter:Se({values:rn,defaultWidth:"wide",argumentCallback:t=>t-1}),month:Se({values:sn,defaultWidth:"wide"}),day:Se({values:an,defaultWidth:"wide"}),dayPeriod:Se({values:ln,defaultWidth:"wide"})},cn=/^(\d+)\.?/i,un=/\d+/i,pn={narrow:/^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,abbreviated:/^(f\.? ?Kr\.?|fvt\.?|e\.? ?Kr\.?|evt\.?)/i,wide:/^(før Kristus|før vår tid|etter Kristus|vår tid)/i},gn={any:[/^f/i,/^e/i]},mn={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? kvartal/i},hn={any:[/1/i,/2/i,/3/i,/4/i]},fn={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mars?|apr|mai|juni?|juli?|aug|sep|okt|nov|des)\.?/i,wide:/^(januar|februar|mars|april|mai|juni|juli|august|september|oktober|november|desember)/i},kn={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^aug/i,/^s/i,/^o/i,/^n/i,/^d/i]},vn={narrow:/^[smtofl]/i,short:/^(sø|ma|ti|on|to|fr|lø)/i,abbreviated:/^(søn|man|tir|ons|tor|fre|lør)/i,wide:/^(søndag|mandag|tirsdag|onsdag|torsdag|fredag|lørdag)/i},yn={any:[/^s/i,/^m/i,/^ti/i,/^o/i,/^to/i,/^f/i,/^l/i]},bn={narrow:/^(midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten)|[ap])/i,any:/^([ap]\.?\s?m\.?|midnatt|middag|(på) (morgenen|ettermiddagen|kvelden|natten))/i},Tn={any:{am:/^a(\.?\s?m\.?)?$/i,pm:/^p(\.?\s?m\.?)?$/i,midnight:/^midn/i,noon:/^midd/i,morning:/morgen/i,afternoon:/ettermiddag/i,evening:/kveld/i,night:/natt/i}},Sn={ordinalNumber:qt({matchPattern:cn,parsePattern:un,valueCallback:t=>parseInt(t,10)}),era:Ce({matchPatterns:pn,defaultMatchWidth:"wide",parsePatterns:gn,defaultParseWidth:"any"}),quarter:Ce({matchPatterns:mn,defaultMatchWidth:"wide",parsePatterns:hn,defaultParseWidth:"any",valueCallback:t=>t+1}),month:Ce({matchPatterns:fn,defaultMatchWidth:"wide",parsePatterns:kn,defaultParseWidth:"any"}),day:Ce({matchPatterns:vn,defaultMatchWidth:"wide",parsePatterns:yn,defaultParseWidth:"any"}),dayPeriod:Ce({matchPatterns:bn,defaultMatchWidth:"any",parsePatterns:Tn,defaultParseWidth:"any"})},be={code:"nb",formatDistance:Xt,formatLong:en,formatRelative:nn,localize:dn,match:Sn,options:{weekStartsOn:1,firstWeekContainsDate:4}},ot=({title:t,...e})=>n.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 28 28",fill:"none","aria-hidden":t?void 0:!0,focusable:"false",...e,children:[t&&n.jsx("title",{children:t}),n.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.952 6.96459C16.6103 6.62289 16.0563 6.62289 15.7146 6.96459L9.2979 13.3813C8.95621 13.723 8.95621 14.277 9.2979 14.6187L15.7146 21.0354C16.0563 21.3771 16.6103 21.3771 16.952 21.0354C17.2937 20.6937 17.2937 20.1396 16.952 19.7979L11.1541 14L16.952 8.20203C17.2937 7.86032 17.2937 7.3063 16.952 6.96459Z",fill:"currentColor"})]});ot.displayName="ChevronLeftIcon";const rt=({title:t,...e})=>n.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 28 28",fill:"none","aria-hidden":t?void 0:!0,focusable:"false",...e,children:[t&&n.jsx("title",{children:t}),n.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.048 6.96459C11.3897 6.62289 11.9437 6.62289 12.2854 6.96459L18.7021 13.3813C19.0438 13.723 19.0438 14.277 18.7021 14.6187L12.2854 21.0354C11.9437 21.3771 11.3897 21.3771 11.048 21.0354C10.7063 20.6937 10.7063 20.1396 11.048 19.7979L16.8459 14L11.048 8.20203C10.7063 7.86032 10.7063 7.3063 11.048 6.96459Z",fill:"currentColor"})]});rt.displayName="ChevronRightIcon";const re={calendarContainer:"_calendarContainer_10l5p_1",calendarHeader:"_calendarHeader_10l5p_14",monthYear:"_monthYear_10l5p_21",navigationButtons:"_navigationButtons_10l5p_32",grid:"_grid_10l5p_41",dayNameCell:"_dayNameCell_10l5p_48",dateCell:"_dateCell_10l5p_65",dateNumberContainer:"_dateNumberContainer_10l5p_90",otherMonth:"_otherMonth_10l5p_103",selectedDate:"_selectedDate_10l5p_129"},Cn=t=>{const e=K.startOfMonth(t),o=K.startOfWeek(e,{locale:be}),s=K.addDays(o,41);return K.eachDayOfInterval({start:o,end:s})},st=t=>t&&t.charAt(0).toUpperCase()+t.slice(1),at=({initialDate:t=new Date,selectedDate:e=null,onDateSelect:o,"data-color":s,"data-size":i})=>{const[a,r]=x.useState(K.startOfMonth(e&&K.isValid(e)?e:t));x.useEffect(()=>{if(e&&K.isValid(e)){const p=K.startOfMonth(e);K.isSameMonth(p,a)||r(p)}},[e]);const d=x.useMemo(()=>K.startOfMonth(new Date),[]),l=x.useMemo(()=>!1,[a,d]),c=x.useMemo(()=>Cn(a),[a]),y=x.useMemo(()=>{const p=K.startOfWeek(new Date,{locale:be});return Array.from({length:7}).map((C,E)=>{const M=K.format(K.addDays(p,E),"EEEEEE",{locale:be});return st(M)})},[]),h=x.useCallback(()=>{l||r(p=>K.startOfMonth(K.subMonths(p,1)))},[l]),f=x.useCallback(()=>{r(p=>K.startOfMonth(K.addMonths(p,1)))},[]),m=x.useCallback(p=>{o&&o(p)},[o]),u=x.useCallback((p,C)=>{(p.key==="Enter"||p.key===" ")&&(p.preventDefault(),m(C))},[m]),v=K.format(a,"MMMM",{locale:be}),k=K.format(a,"yyyy",{locale:be}),g=`${st(v)} ${k}`;return n.jsxs("div",{className:re.calendarContainer,"data-color":s,"data-size":i,children:[n.jsxs("div",{className:re.calendarHeader,children:[n.jsx("span",{className:re.monthYear,children:g}),n.jsxs("div",{className:re.navigationButtons,children:[n.jsx(_.Button,{variant:"tertiary",icon:!0,onClick:h,"aria-label":"Forrige måned",disabled:l,children:n.jsx(ot,{})}),n.jsx(_.Button,{variant:"tertiary",icon:!0,onClick:f,"aria-label":"Neste måned",children:n.jsx(rt,{})})]})]}),n.jsx("div",{className:re.grid,children:y.map(p=>n.jsx("div",{className:re.dayNameCell,children:p},p))}),n.jsx("div",{className:re.grid,children:c.map(p=>{const C=K.isSameMonth(p,a),E=e&&K.isValid(e)&&K.isSameDay(p,e),M=K.isToday(p),I=[re.dateCell,C?"":re.otherMonth,E?re.selectedDate:"",M&&!E?re.todayDate:""].filter(Boolean).join(" ");return n.jsx("div",{className:I,onClick:()=>m(p),onKeyDown:D=>u(D,p),role:"button",tabIndex:0,"aria-pressed":E??!1,"aria-label":K.format(p,"PPP",{locale:be}),children:n.jsx("span",{className:re.dateNumberContainer,children:K.format(p,"d")})},p.toISOString())})})]})};at.displayName="DatePicker";const fe={fieldset:"_fieldset_16fx7_2",description:"_description_16fx7_14",error:"_error_16fx7_21",inputWrapper:"_inputWrapper_16fx7_30",inputWrapperError:"_inputWrapperError_16fx7_42",suffixButton:"_suffixButton_16fx7_80",suffixButtonInteractive:"_suffixButtonInteractive_16fx7_100"},it=t=>{const e=t.slice(0,2),o=t.slice(2,4),s=t.slice(4,8);return t.length>4?`${e}.${o}.${s}`:t.length>2?`${e}.${o}`:t.length>0?e:""},lt=t=>(t||"").replace(/\D/g,""),dt=t=>{let e=t;if(e.length>=2){const o=parseInt(e.substring(0,2),10);!isNaN(o)&&o>31&&(e="31"+e.substring(2))}if(e.length>=4){const o=parseInt(e.substring(2,4),10);!isNaN(o)&&o>12&&(e=e.substring(0,2)+"12"+e.substring(4))}return e.slice(0,8)},ct=x.forwardRef((t,e)=>{const{label:o,suffixIcon:s,onSuffixClick:i,className:a,inputWrapperClassName:r,inputClassName:d,value:l,defaultValue:c,onChange:y,readOnly:h,placeholder:f="dd.mm.åååå",id:m,name:u,required:v,disabled:k,onClick:g,onFocus:p,onBlur:C,autoComplete:E="off","aria-label":M,"aria-labelledby":I,description:D,error:A,"data-color":F,"data-size":B,...P}=t,W=l!==void 0,H=x.useRef(null);x.useImperativeHandle(e,()=>H.current);const U=x.useCallback(b=>{const L=lt(b),N=dt(L);return it(N)},[]),[O,z]=x.useState(()=>U(l??c));x.useEffect(()=>{if(W){const b=U(l);b!==O&&(z(b),H.current&&H.current.value!==b&&(H.current.value=b))}},[l,W,O,U]);const q=x.useCallback(b=>{const L=b.target,N=L.value,J=O,ee=lt(N).slice(0,8),$=dt(ee),w=it($);let G=0;const V=$.length;V<=2?G=V:V<=4?G=V+1:G=V+2,G=Math.min(G,w.length),requestAnimationFrame(()=>{if(H.current&&(z(w),H.current.value=w,H.current.setSelectionRange(G,G),(w!==J||W)&&y)){const Q={...b,target:{...L,value:w}};y(Q,w)}})},[O,W,y,U]),oe=[fe.fieldset,a].filter(Boolean).join(" "),te=[fe.inputWrapper,r,A?fe.inputWrapperError:""].filter(Boolean).join(" "),ie=[d].filter(Boolean).join(" "),ne=[fe.suffixButton,i?fe.suffixButtonInteractive:""].filter(Boolean).join(" ");!o&&!M&&!I&&console.warn("Advarsel: DateInput-komponenten bør ha label, aria-label, eller aria-labelledby for tilgjengelighet.");const le=o&&typeof o=="string"?I||`${m}-label`:void 0,de=D?`${m}-desc`:void 0,X=A?`${m}-err`:void 0,pe=[de,X].filter(Boolean).join(" ")||void 0;return n.jsxs("div",{className:oe,"data-color":F,"data-size":B,children:[o&&typeof o=="string"?n.jsx("label",{id:le,htmlFor:m,children:o}):o,D&&n.jsx("p",{id:de,className:fe.description,children:D}),n.jsxs("div",{className:te,children:[n.jsx("input",{ref:H,type:"text",inputMode:"numeric",pattern:"\\d{2}\\.\\d{2}\\.\\d{4}",maxLength:10,value:O,readOnly:h,placeholder:f,id:m,name:u,required:v,disabled:k,onClick:g,onChange:q,onFocus:p,onBlur:C,autoComplete:E,"aria-label":M,"aria-labelledby":le,"aria-describedby":pe,"aria-invalid":!!A,className:ie,...P}),s&&n.jsx("button",{type:"button",className:ne,onClick:k?void 0:i,tabIndex:i&&!k?0:-1,"aria-hidden":!i,disabled:k,"aria-label":i?"Åpne datovelger":void 0,children:s})]}),A&&n.jsx("p",{id:X,className:fe.error,role:"alert",children:A})]})});ct.displayName="DateInput";function xn(t){return Object.prototype.toString.call(t)==="[object Object]"}function ut(t){return xn(t)||Array.isArray(t)}function wn(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}function Ge(t,e){const o=Object.keys(t),s=Object.keys(e);if(o.length!==s.length)return!1;const i=JSON.stringify(Object.keys(t.breakpoints||{})),a=JSON.stringify(Object.keys(e.breakpoints||{}));return i!==a?!1:o.every(r=>{const d=t[r],l=e[r];return typeof d=="function"?`${d}`==`${l}`:!ut(d)||!ut(l)?d===l:Ge(d,l)})}function pt(t){return t.concat().sort((e,o)=>e.name>o.name?1:-1).map(e=>e.options)}function In(t,e){if(t.length!==e.length)return!1;const o=pt(t),s=pt(e);return o.every((i,a)=>{const r=s[a];return Ge(i,r)})}function We(t){return typeof t=="number"}function He(t){return typeof t=="string"}function Ee(t){return typeof t=="boolean"}function gt(t){return Object.prototype.toString.call(t)==="[object Object]"}function Y(t){return Math.abs(t)}function Ue(t){return Math.sign(t)}function xe(t,e){return Y(t-e)}function Dn(t,e){if(t===0||e===0||Y(t)<=Y(e))return 0;const o=xe(Y(t),Y(e));return Y(o/t)}function _n(t){return Math.round(t*100)/100}function we(t){return De(t).map(Number)}function se(t){return t[Ie(t)]}function Ie(t){return Math.max(0,t.length-1)}function Oe(t,e){return e===Ie(t)}function mt(t,e=0){return Array.from(Array(t),(o,s)=>e+s)}function De(t){return Object.keys(t)}function ht(t,e){return[t,e].reduce((o,s)=>(De(s).forEach(i=>{const a=o[i],r=s[i],d=gt(a)&&gt(r);o[i]=d?ht(a,r):r}),o),{})}function $e(t,e){return typeof e.MouseEvent<"u"&&t instanceof e.MouseEvent}function An(t,e){const o={start:s,center:i,end:a};function s(){return 0}function i(l){return a(l)/2}function a(l){return e-l}function r(l,c){return He(t)?o[t](l):t(e,l,c)}return{measure:r}}function _e(){let t=[];function e(i,a,r,d={passive:!0}){let l;if("addEventListener"in i)i.addEventListener(a,r,d),l=()=>i.removeEventListener(a,r,d);else{const c=i;c.addListener(r),l=()=>c.removeListener(r)}return t.push(l),s}function o(){t=t.filter(i=>i())}const s={add:e,clear:o};return s}function Ln(t,e,o,s){const i=_e(),a=1e3/60;let r=null,d=0,l=0;function c(){i.add(t,"visibilitychange",()=>{t.hidden&&u()})}function y(){m(),i.clear()}function h(k){if(!l)return;r||(r=k,o(),o());const g=k-r;for(r=k,d+=g;d>=a;)o(),d-=a;const p=d/a;s(p),l&&(l=e.requestAnimationFrame(h))}function f(){l||(l=e.requestAnimationFrame(h))}function m(){e.cancelAnimationFrame(l),r=null,d=0,l=0}function u(){r=null,d=0}return{init:c,destroy:y,start:f,stop:m,update:o,render:s}}function Mn(t,e){const o=e==="rtl",s=t==="y",i=s?"y":"x",a=s?"x":"y",r=!s&&o?-1:1,d=y(),l=h();function c(u){const{height:v,width:k}=u;return s?v:k}function y(){return s?"top":o?"right":"left"}function h(){return s?"bottom":o?"left":"right"}function f(u){return u*r}return{scroll:i,cross:a,startEdge:d,endEdge:l,measureSize:c,direction:f}}function ke(t=0,e=0){const o=Y(t-e);function s(c){return c<t}function i(c){return c>e}function a(c){return s(c)||i(c)}function r(c){return a(c)?s(c)?t:e:c}function d(c){return o?c-o*Math.ceil((c-e)/o):c}return{length:o,max:e,min:t,constrain:r,reachedAny:a,reachedMax:i,reachedMin:s,removeOffset:d}}function ft(t,e,o){const{constrain:s}=ke(0,t),i=t+1;let a=r(e);function r(f){return o?Y((i+f)%i):s(f)}function d(){return a}function l(f){return a=r(f),h}function c(f){return y().set(d()+f)}function y(){return ft(t,d(),o)}const h={get:d,set:l,add:c,clone:y};return h}function En(t,e,o,s,i,a,r,d,l,c,y,h,f,m,u,v,k,g,p){const{cross:C,direction:E}=t,M=["INPUT","SELECT","TEXTAREA"],I={passive:!1},D=_e(),A=_e(),F=ke(50,225).constrain(m.measure(20)),B={mouse:300,touch:400},P={mouse:500,touch:600},W=u?43:25;let H=!1,U=0,O=0,z=!1,q=!1,oe=!1,te=!1;function ie(w){if(!p)return;function G(Q){(Ee(p)||p(w,Q))&&b(Q)}const V=e;D.add(V,"dragstart",Q=>Q.preventDefault(),I).add(V,"touchmove",()=>{},I).add(V,"touchend",()=>{}).add(V,"touchstart",G).add(V,"mousedown",G).add(V,"touchcancel",N).add(V,"contextmenu",N).add(V,"click",J,!0)}function ne(){D.clear(),A.clear()}function le(){const w=te?o:e;A.add(w,"touchmove",L,I).add(w,"touchend",N).add(w,"mousemove",L,I).add(w,"mouseup",N)}function de(w){const G=w.nodeName||"";return M.includes(G)}function X(){return(u?P:B)[te?"mouse":"touch"]}function pe(w,G){const V=h.add(Ue(w)*-1),Q=y.byDistance(w,!u).distance;return u||Y(w)<F?Q:k&&G?Q*.5:y.byIndex(V.get(),0).distance}function b(w){const G=$e(w,s);te=G,oe=u&&G&&!w.buttons&&H,H=xe(i.get(),r.get())>=2,!(G&&w.button!==0)&&(de(w.target)||(z=!0,a.pointerDown(w),c.useFriction(0).useDuration(0),i.set(r),le(),U=a.readPoint(w),O=a.readPoint(w,C),f.emit("pointerDown")))}function L(w){if(!$e(w,s)&&w.touches.length>=2)return N(w);const V=a.readPoint(w),Q=a.readPoint(w,C),ue=xe(V,U),ge=xe(Q,O);if(!q&&!te&&(!w.cancelable||(q=ue>ge,!q)))return N(w);const ve=a.pointerMove(w);ue>v&&(oe=!0),c.useFriction(.3).useDuration(.75),d.start(),i.add(E(ve)),w.preventDefault()}function N(w){const V=y.byDistance(0,!1).index!==h.get(),Q=a.pointerUp(w)*X(),ue=pe(E(Q),V),ge=Dn(Q,ue),ve=W-10*ge,me=g+ge/50;q=!1,z=!1,A.clear(),c.useDuration(ve).useFriction(me),l.distance(ue,!u),te=!1,f.emit("pointerUp")}function J(w){oe&&(w.stopPropagation(),w.preventDefault(),oe=!1)}function ee(){return z}return{init:ie,destroy:ne,pointerDown:ee}}function jn(t,e){let s,i;function a(h){return h.timeStamp}function r(h,f){const u=`client${(f||t.scroll)==="x"?"X":"Y"}`;return($e(h,e)?h:h.touches[0])[u]}function d(h){return s=h,i=h,r(h)}function l(h){const f=r(h)-r(i),m=a(h)-a(s)>170;return i=h,m&&(s=h),f}function c(h){if(!s||!i)return 0;const f=r(i)-r(s),m=a(h)-a(s),u=a(h)-a(i)>170,v=f/m;return m&&!u&&Y(v)>.1?v:0}return{pointerDown:d,pointerMove:l,pointerUp:c,readPoint:r}}function Fn(){function t(o){const{offsetTop:s,offsetLeft:i,offsetWidth:a,offsetHeight:r}=o;return{top:s,right:i+a,bottom:s+r,left:i,width:a,height:r}}return{measure:t}}function Nn(t){function e(s){return t*(s/100)}return{measure:e}}function Bn(t,e,o,s,i,a,r){const d=[t].concat(s);let l,c,y=[],h=!1;function f(k){return i.measureSize(r.measure(k))}function m(k){if(!a)return;c=f(t),y=s.map(f);function g(p){for(const C of p){if(h)return;const E=C.target===t,M=s.indexOf(C.target),I=E?c:y[M],D=f(E?t:s[M]);if(Y(D-I)>=.5){k.reInit(),e.emit("resize");break}}}l=new ResizeObserver(p=>{(Ee(a)||a(k,p))&&g(p)}),o.requestAnimationFrame(()=>{d.forEach(p=>l.observe(p))})}function u(){h=!0,l&&l.disconnect()}return{init:m,destroy:u}}function Pn(t,e,o,s,i,a){let r=0,d=0,l=i,c=a,y=t.get(),h=0;function f(){const I=s.get()-t.get(),D=!l;let A=0;return D?(r=0,o.set(s),t.set(s),A=I):(o.set(t),r+=I/l,r*=c,y+=r,t.add(r),A=y-h),d=Ue(A),h=y,M}function m(){const I=s.get()-e.get();return Y(I)<.001}function u(){return l}function v(){return d}function k(){return r}function g(){return C(i)}function p(){return E(a)}function C(I){return l=I,M}function E(I){return c=I,M}const M={direction:v,duration:u,velocity:k,seek:f,settled:m,useBaseFriction:p,useBaseDuration:g,useFriction:E,useDuration:C};return M}function zn(t,e,o,s,i){const a=i.measure(10),r=i.measure(50),d=ke(.1,.99);let l=!1;function c(){return!(l||!t.reachedAny(o.get())||!t.reachedAny(e.get()))}function y(m){if(!c())return;const u=t.reachedMin(e.get())?"min":"max",v=Y(t[u]-e.get()),k=o.get()-e.get(),g=d.constrain(v/r);o.subtract(k*g),!m&&Y(k)<a&&(o.set(t.constrain(o.get())),s.useDuration(25).useBaseFriction())}function h(m){l=!m}return{shouldConstrain:c,constrain:y,toggleActive:h}}function Gn(t,e,o,s,i){const a=ke(-e+t,0),r=h(),d=y(),l=f();function c(u,v){return xe(u,v)<=1}function y(){const u=r[0],v=se(r),k=r.lastIndexOf(u),g=r.indexOf(v)+1;return ke(k,g)}function h(){return o.map((u,v)=>{const{min:k,max:g}=a,p=a.constrain(u),C=!v,E=Oe(o,v);return C?g:E||c(k,p)?k:c(g,p)?g:p}).map(u=>parseFloat(u.toFixed(3)))}function f(){if(e<=t+i)return[a.max];if(s==="keepSnaps")return r;const{min:u,max:v}=d;return r.slice(u,v)}return{snapsContained:l,scrollContainLimit:d}}function Wn(t,e,o){const s=e[0],i=o?s-t:se(e);return{limit:ke(i,s)}}function Hn(t,e,o,s){const a=e.min+.1,r=e.max+.1,{reachedMin:d,reachedMax:l}=ke(a,r);function c(f){return f===1?l(o.get()):f===-1?d(o.get()):!1}function y(f){if(!c(f))return;const m=t*(f*-1);s.forEach(u=>u.add(m))}return{loop:y}}function Un(t){const{max:e,length:o}=t;function s(a){const r=a-e;return o?r/-o:0}return{get:s}}function On(t,e,o,s,i){const{startEdge:a,endEdge:r}=t,{groupSlides:d}=i,l=h().map(e.measure),c=f(),y=m();function h(){return d(s).map(v=>se(v)[r]-v[0][a]).map(Y)}function f(){return s.map(v=>o[a]-v[a]).map(v=>-Y(v))}function m(){return d(c).map(v=>v[0]).map((v,k)=>v+l[k])}return{snaps:c,snapsAligned:y}}function $n(t,e,o,s,i,a){const{groupSlides:r}=i,{min:d,max:l}=s,c=y();function y(){const f=r(a),m=!t||e==="keepSnaps";return o.length===1?[a]:m?f:f.slice(d,l).map((u,v,k)=>{const g=!v,p=Oe(k,v);if(g){const C=se(k[0])+1;return mt(C)}if(p){const C=Ie(a)-se(k)[0]+1;return mt(C,se(k)[0])}return u})}return{slideRegistry:c}}function Vn(t,e,o,s,i){const{reachedAny:a,removeOffset:r,constrain:d}=s;function l(u){return u.concat().sort((v,k)=>Y(v)-Y(k))[0]}function c(u){const v=t?r(u):d(u),k=e.map((p,C)=>({diff:y(p-v,0),index:C})).sort((p,C)=>Y(p.diff)-Y(C.diff)),{index:g}=k[0];return{index:g,distance:v}}function y(u,v){const k=[u,u+o,u-o];if(!t)return u;if(!v)return l(k);const g=k.filter(p=>Ue(p)===v);return g.length?l(g):se(k)-o}function h(u,v){const k=e[u]-i.get(),g=y(k,v);return{index:u,distance:g}}function f(u,v){const k=i.get()+u,{index:g,distance:p}=c(k),C=!t&&a(k);if(!v||C)return{index:g,distance:u};const E=e[g]-p,M=u+y(E,0);return{index:g,distance:M}}return{byDistance:f,byIndex:h,shortcut:y}}function Kn(t,e,o,s,i,a,r){function d(h){const f=h.distance,m=h.index!==e.get();a.add(f),f&&(s.duration()?t.start():(t.update(),t.render(1),t.update())),m&&(o.set(e.get()),e.set(h.index),r.emit("select"))}function l(h,f){const m=i.byDistance(h,f);d(m)}function c(h,f){const m=e.clone().set(h),u=i.byIndex(m.get(),f);d(u)}return{distance:l,index:c}}function Yn(t,e,o,s,i,a,r,d){const l={passive:!0,capture:!0};let c=0;function y(m){if(!d)return;function u(v){if(new Date().getTime()-c>10)return;r.emit("slideFocusStart"),t.scrollLeft=0;const p=o.findIndex(C=>C.includes(v));We(p)&&(i.useDuration(0),s.index(p,0),r.emit("slideFocus"))}a.add(document,"keydown",h,!1),e.forEach((v,k)=>{a.add(v,"focus",g=>{(Ee(d)||d(m,g))&&u(k)},l)})}function h(m){m.code==="Tab"&&(c=new Date().getTime())}return{init:y}}function Ae(t){let e=t;function o(){return e}function s(l){e=r(l)}function i(l){e+=r(l)}function a(l){e-=r(l)}function r(l){return We(l)?l:l.get()}return{get:o,set:s,add:i,subtract:a}}function kt(t,e){const o=t.scroll==="x"?r:d,s=e.style;let i=null,a=!1;function r(f){return`translate3d(${f}px,0px,0px)`}function d(f){return`translate3d(0px,${f}px,0px)`}function l(f){if(a)return;const m=_n(t.direction(f));m!==i&&(s.transform=o(m),i=m)}function c(f){a=!f}function y(){a||(s.transform="",e.getAttribute("style")||e.removeAttribute("style"))}return{clear:y,to:l,toggleActive:c}}function qn(t,e,o,s,i,a,r,d,l){const y=we(i),h=we(i).reverse(),f=g().concat(p());function m(D,A){return D.reduce((F,B)=>F-i[B],A)}function u(D,A){return D.reduce((F,B)=>m(F,A)>0?F.concat([B]):F,[])}function v(D){return a.map((A,F)=>({start:A-s[F]+.5+D,end:A+e-.5+D}))}function k(D,A,F){const B=v(A);return D.map(P=>{const W=F?0:-o,H=F?o:0,U=F?"end":"start",O=B[P][U];return{index:P,loopPoint:O,slideLocation:Ae(-1),translate:kt(t,l[P]),target:()=>d.get()>O?W:H}})}function g(){const D=r[0],A=u(h,D);return k(A,o,!1)}function p(){const D=e-r[0]-1,A=u(y,D);return k(A,-o,!0)}function C(){return f.every(({index:D})=>{const A=y.filter(F=>F!==D);return m(A,e)<=.1})}function E(){f.forEach(D=>{const{target:A,translate:F,slideLocation:B}=D,P=A();P!==B.get()&&(F.to(P),B.set(P))})}function M(){f.forEach(D=>D.translate.clear())}return{canLoop:C,clear:M,loop:E,loopPoints:f}}function Zn(t,e,o){let s,i=!1;function a(l){if(!o)return;function c(y){for(const h of y)if(h.type==="childList"){l.reInit(),e.emit("slidesChanged");break}}s=new MutationObserver(y=>{i||(Ee(o)||o(l,y))&&c(y)}),s.observe(t,{childList:!0})}function r(){s&&s.disconnect(),i=!0}return{init:a,destroy:r}}function Xn(t,e,o,s){const i={};let a=null,r=null,d,l=!1;function c(){d=new IntersectionObserver(u=>{l||(u.forEach(v=>{const k=e.indexOf(v.target);i[k]=v}),a=null,r=null,o.emit("slidesInView"))},{root:t.parentElement,threshold:s}),e.forEach(u=>d.observe(u))}function y(){d&&d.disconnect(),l=!0}function h(u){return De(i).reduce((v,k)=>{const g=parseInt(k),{isIntersecting:p}=i[g];return(u&&p||!u&&!p)&&v.push(g),v},[])}function f(u=!0){if(u&&a)return a;if(!u&&r)return r;const v=h(u);return u&&(a=v),u||(r=v),v}return{init:c,destroy:y,get:f}}function Jn(t,e,o,s,i,a){const{measureSize:r,startEdge:d,endEdge:l}=t,c=o[0]&&i,y=u(),h=v(),f=o.map(r),m=k();function u(){if(!c)return 0;const p=o[0];return Y(e[d]-p[d])}function v(){if(!c)return 0;const p=a.getComputedStyle(se(s));return parseFloat(p.getPropertyValue(`margin-${l}`))}function k(){return o.map((p,C,E)=>{const M=!C,I=Oe(E,C);return M?f[C]+y:I?f[C]+h:E[C+1][d]-p[d]}).map(Y)}return{slideSizes:f,slideSizesWithGaps:m,startGap:y,endGap:h}}function Qn(t,e,o,s,i,a,r,d,l){const{startEdge:c,endEdge:y,direction:h}=t,f=We(o);function m(g,p){return we(g).filter(C=>C%p===0).map(C=>g.slice(C,C+p))}function u(g){return g.length?we(g).reduce((p,C,E)=>{const M=se(p)||0,I=M===0,D=C===Ie(g),A=i[c]-a[M][c],F=i[c]-a[C][y],B=!s&&I?h(r):0,P=!s&&D?h(d):0,W=Y(F-P-(A+B));return E&&W>e+l&&p.push(C),D&&p.push(g.length),p},[]).map((p,C,E)=>{const M=Math.max(E[C-1]||0);return g.slice(M,p)}):[]}function v(g){return f?m(g,o):u(g)}return{groupSlides:v}}function Rn(t,e,o,s,i,a,r){const{align:d,axis:l,direction:c,startIndex:y,loop:h,duration:f,dragFree:m,dragThreshold:u,inViewThreshold:v,slidesToScroll:k,skipSnaps:g,containScroll:p,watchResize:C,watchSlides:E,watchDrag:M,watchFocus:I}=a,D=2,A=Fn(),F=A.measure(e),B=o.map(A.measure),P=Mn(l,c),W=P.measureSize(F),H=Nn(W),U=An(d,W),O=!h&&!!p,z=h||!!p,{slideSizes:q,slideSizesWithGaps:oe,startGap:te,endGap:ie}=Jn(P,F,B,o,z,i),ne=Qn(P,W,k,h,F,B,te,ie,D),{snaps:le,snapsAligned:de}=On(P,U,F,B,ne),X=-se(le)+se(oe),{snapsContained:pe,scrollContainLimit:b}=Gn(W,X,de,p,D),L=O?pe:de,{limit:N}=Wn(X,L,h),J=ft(Ie(L),y,h),ee=J.clone(),$=we(o),w=({dragHandler:Te,scrollBody:Je,scrollBounds:Qe,options:{loop:Be}})=>{Be||Qe.constrain(Te.pointerDown()),Je.seek()},G=({scrollBody:Te,translate:Je,location:Qe,offsetLocation:Be,previousLocation:Bo,scrollLooper:Po,slideLooper:zo,dragHandler:Go,animation:Wo,eventHandler:Mt,scrollBounds:Ho,options:{loop:Et}},jt)=>{const Ft=Te.settled(),Uo=!Ho.shouldConstrain(),Nt=Et?Ft:Ft&&Uo,Bt=Nt&&!Go.pointerDown();Bt&&Wo.stop();const Oo=Qe.get()*jt+Bo.get()*(1-jt);Be.set(Oo),Et&&(Po.loop(Te.direction()),zo.loop()),Je.to(Be.get()),Bt&&Mt.emit("settle"),Nt||Mt.emit("scroll")},V=Ln(s,i,()=>w(Xe),Te=>G(Xe,Te)),Q=.68,ue=L[J.get()],ge=Ae(ue),ve=Ae(ue),me=Ae(ue),ye=Ae(ue),Me=Pn(ge,me,ve,ye,f,Q),qe=Vn(h,L,X,N,ye),Ze=Kn(V,J,ee,Me,qe,ye,r),_t=Un(N),At=_e(),Fo=Xn(e,o,r,v),{slideRegistry:Lt}=$n(O,p,L,b,ne,$),No=Yn(t,o,Lt,Ze,Me,At,r,I),Xe={ownerDocument:s,ownerWindow:i,eventHandler:r,containerRect:F,slideRects:B,animation:V,axis:P,dragHandler:En(P,t,s,i,ye,jn(P,i),ge,V,Ze,Me,qe,J,r,H,m,u,g,Q,M),eventStore:At,percentOfView:H,index:J,indexPrevious:ee,limit:N,location:ge,offsetLocation:me,previousLocation:ve,options:a,resizeHandler:Bn(e,r,i,o,P,C,A),scrollBody:Me,scrollBounds:zn(N,me,ye,Me,H),scrollLooper:Hn(X,N,me,[ge,me,ve,ye]),scrollProgress:_t,scrollSnapList:L.map(_t.get),scrollSnaps:L,scrollTarget:qe,scrollTo:Ze,slideLooper:qn(P,W,X,q,oe,le,L,me,o),slideFocus:No,slidesHandler:Zn(e,r,E),slidesInView:Fo,slideIndexes:$,slideRegistry:Lt,slidesToScroll:ne,target:ye,translate:kt(P,e)};return Xe}function eo(){let t={},e;function o(c){e=c}function s(c){return t[c]||[]}function i(c){return s(c).forEach(y=>y(e,c)),l}function a(c,y){return t[c]=s(c).concat([y]),l}function r(c,y){return t[c]=s(c).filter(h=>h!==y),l}function d(){t={}}const l={init:o,emit:i,off:r,on:a,clear:d};return l}const to={align:"center",axis:"x",container:null,slides:null,containScroll:"trimSnaps",direction:"ltr",slidesToScroll:1,inViewThreshold:0,breakpoints:{},dragFree:!1,dragThreshold:10,loop:!1,skipSnaps:!1,duration:25,startIndex:0,active:!0,watchDrag:!0,watchResize:!0,watchSlides:!0,watchFocus:!0};function no(t){function e(a,r){return ht(a,r||{})}function o(a){const r=a.breakpoints||{},d=De(r).filter(l=>t.matchMedia(l).matches).map(l=>r[l]).reduce((l,c)=>e(l,c),{});return e(a,d)}function s(a){return a.map(r=>De(r.breakpoints||{})).reduce((r,d)=>r.concat(d),[]).map(t.matchMedia)}return{mergeOptions:e,optionsAtMedia:o,optionsMediaQueries:s}}function oo(t){let e=[];function o(a,r){return e=r.filter(({options:d})=>t.optionsAtMedia(d).active!==!1),e.forEach(d=>d.init(a,t)),r.reduce((d,l)=>Object.assign(d,{[l.name]:l}),{})}function s(){e=e.filter(a=>a.destroy())}return{init:o,destroy:s}}function je(t,e,o){const s=t.ownerDocument,i=s.defaultView,a=no(i),r=oo(a),d=_e(),l=eo(),{mergeOptions:c,optionsAtMedia:y,optionsMediaQueries:h}=a,{on:f,off:m,emit:u}=l,v=P;let k=!1,g,p=c(to,je.globalOptions),C=c(p),E=[],M,I,D;function A(){const{container:$,slides:w}=C;I=(He($)?t.querySelector($):$)||t.children[0];const V=He(w)?I.querySelectorAll(w):w;D=[].slice.call(V||I.children)}function F($){const w=Rn(t,I,D,s,i,$,l);if($.loop&&!w.slideLooper.canLoop()){const G=Object.assign({},$,{loop:!1});return F(G)}return w}function B($,w){k||(p=c(p,$),C=y(p),E=w||E,A(),g=F(C),h([p,...E.map(({options:G})=>G)]).forEach(G=>d.add(G,"change",P)),C.active&&(g.translate.to(g.location.get()),g.animation.init(),g.slidesInView.init(),g.slideFocus.init(ee),g.eventHandler.init(ee),g.resizeHandler.init(ee),g.slidesHandler.init(ee),g.options.loop&&g.slideLooper.loop(),I.offsetParent&&D.length&&g.dragHandler.init(ee),M=r.init(ee,E)))}function P($,w){const G=ne();W(),B(c({startIndex:G},$),w),l.emit("reInit")}function W(){g.dragHandler.destroy(),g.eventStore.clear(),g.translate.clear(),g.slideLooper.clear(),g.resizeHandler.destroy(),g.slidesHandler.destroy(),g.slidesInView.destroy(),g.animation.destroy(),r.destroy(),d.clear()}function H(){k||(k=!0,d.clear(),W(),l.emit("destroy"),l.clear())}function U($,w,G){!C.active||k||(g.scrollBody.useBaseFriction().useDuration(w===!0?0:C.duration),g.scrollTo.index($,G||0))}function O($){const w=g.index.add(1).get();U(w,$,-1)}function z($){const w=g.index.add(-1).get();U(w,$,1)}function q(){return g.index.add(1).get()!==ne()}function oe(){return g.index.add(-1).get()!==ne()}function te(){return g.scrollSnapList}function ie(){return g.scrollProgress.get(g.offsetLocation.get())}function ne(){return g.index.get()}function le(){return g.indexPrevious.get()}function de(){return g.slidesInView.get()}function X(){return g.slidesInView.get(!1)}function pe(){return M}function b(){return g}function L(){return t}function N(){return I}function J(){return D}const ee={canScrollNext:q,canScrollPrev:oe,containerNode:N,internalEngine:b,destroy:H,off:m,on:f,emit:u,plugins:pe,previousScrollSnap:le,reInit:v,rootNode:L,scrollNext:O,scrollPrev:z,scrollProgress:ie,scrollSnapList:te,scrollTo:U,selectedScrollSnap:ne,slideNodes:J,slidesInView:de,slidesNotInView:X};return B(e,o),setTimeout(()=>l.emit("init"),0),ee}je.globalOptions=void 0;function Ve(t={},e=[]){const o=x.useRef(t),s=x.useRef(e),[i,a]=x.useState(),[r,d]=x.useState(),l=x.useCallback(()=>{i&&i.reInit(o.current,s.current)},[i]);return x.useEffect(()=>{Ge(o.current,t)||(o.current=t,l())},[t,l]),x.useEffect(()=>{In(s.current,e)||(s.current=e,l())},[e,l]),x.useEffect(()=>{if(wn()&&r){je.globalOptions=Ve.globalOptions;const c=je(r,o.current,s.current);return a(c),()=>c.destroy()}else a(void 0)},[r,a]),[d,i]}Ve.globalOptions=void 0;const R={carouselContainer:"_carouselContainer_1bu1s_1",viewport:"_viewport_1bu1s_11",slides:"_slides_1bu1s_17",slide:"_slide_1bu1s_17",slideInner:"_slideInner_1bu1s_37",loaderOverlay:"_loaderOverlay_1bu1s_45",image:"_image_1bu1s_55",loaded:"_loaded_1bu1s_66",empty:"_empty_1bu1s_78",controls:"_controls_1bu1s_84",arrows:"_arrows_1bu1s_94",dots:"_dots_1bu1s_104",dot:"_dot_1bu1s_104",dotActive:"_dotActive_1bu1s_130"},vt=_.Spinner,yt=({images:t,autoPlay:e=!1,autoDelay:o=5,showArrows:s=!0,showDots:i=!0,variant:a,slidesPerView:r=1,slideSpacing:d=16,cornerRadius:l=0,"data-color":c,"data-size":y})=>{const h={loop:!0,align:"start",containScroll:"trimSnaps",slidesToScroll:1},[f,m]=Ve(h),[u,v]=x.useState(0),[k,g]=x.useState([]),[p,C]=x.useState([]);x.useEffect(()=>{C(new Array((t==null?void 0:t.length)||0).fill(!1))},[t]);const E=x.useCallback(H=>{C(U=>{const O=[...U];return O[H]=!0,O})},[]),M=x.useMemo(()=>o*1e3,[o]),I=x.useCallback(()=>{m&&v(m.selectedScrollSnap())},[m]),D=x.useCallback(H=>m&&m.scrollTo(H),[m]),A=x.useCallback(()=>m&&m.scrollPrev(),[m]),F=x.useCallback(()=>m&&m.scrollNext(),[m]);x.useEffect(()=>{if(m)return m.on("select",I),m.on("reInit",I),g(m.scrollSnapList()),()=>{m.off("select",I),m.off("reInit",I)}},[m,I]),x.useEffect(()=>{m&&(m.reInit(),g(m.scrollSnapList()))},[m,t,r,d]),x.useEffect(()=>{if(!e||!m||!t||t.length<=1)return;const H=window.setInterval(()=>{m.canScrollNext()&&m.scrollNext()},M);return()=>{window.clearInterval(H)}},[e,M,m,t]);const B=Math.max(1,r),P=`${100/B}%`,W=d/2;return n.jsxs("div",{className:R.carouselContainer,"data-color":c,"data-size":y,"data-variant":a,children:[n.jsx("div",{className:R.viewport,ref:f,children:n.jsx("div",{className:R.slides,style:{marginLeft:`-${W}px`,marginRight:`-${W}px`},children:t&&t.length>0?t.map((H,U)=>n.jsx("div",{className:R.slide,style:{flex:`0 0 ${P}`,paddingLeft:`${W}px`,paddingRight:`${W}px`,borderRadius:l>0?`${l}px`:void 0,overflow:"hidden"},children:n.jsxs("div",{className:R.slideInner,style:{borderRadius:`${l}px`,overflow:"hidden",position:"relative",width:"100%",height:"100%"},children:[!p[U]&&n.jsx("div",{className:R.loaderOverlay,children:n.jsx(vt,{"aria-label":"Laster bilde"})}),n.jsx("img",{className:`${R.image} ${p[U]?R.loaded:R.loadingImage}`,src:H.src,alt:H.alt,loading:U<B?"eager":"lazy",crossOrigin:"anonymous",onLoad:()=>E(U),onError:O=>{O.target.style.display="none",E(U)}})]})},`image-${U}-${H.src}`)):n.jsx("div",{className:R.slide,style:{flex:"0 0 100%"},children:n.jsx("div",{className:R.empty,children:"Ingen bilder"})})})}),(s||i&&t&&t.length>1)&&n.jsxs("div",{className:R.controls,"aria-hidden":"false",children:[s&&n.jsxs("div",{className:R.arrows,children:[n.jsx(he,{variant:"primary",icon:!0,"aria-label":"Forrige bilde",onClick:A,disabled:!t||t.length<=1,children:n.jsx(ce.ChevronLeftIcon,{"aria-hidden":!0})}),n.jsx(he,{variant:"primary",icon:!0,"aria-label":"Neste bilde",onClick:F,disabled:!t||t.length<=1,children:n.jsx(ce.ChevronRightIcon,{"aria-hidden":!0})})]}),i&&t&&t.length>1&&n.jsx("div",{className:R.dots,role:"tablist","aria-label":"Bildeposisjon",children:k.map((H,U)=>{const O=U===u;return n.jsx("button",{type:"button",className:`${R.dot} ${O?R.dotActive:""}`,onClick:()=>D(U),"aria-label":`Gå til bilde ${U+1}`,"aria-selected":O,role:"tab"},`dot-${U}`)})})]})]})};yt.displayName="Carousel";const ro=_.Details,so=_.Dialog,ao=_.Divider,Z=_.Dropdown,io=_.ErrorSummary,lo=_.Field,bt=_.FieldDescription,Tt=_.FieldCounter;bt.displayName="Field.Description",Tt.displayName="Field.Counter";const co=_.Fieldset,St=x.forwardRef((t,e)=>n.jsx(_.Heading,{ref:e,...t}));St.displayName="Heading";const Ct=_.Input;Ct.displayName="Input";const xt=x.forwardRef((t,e)=>n.jsx(_.Label,{ref:e,...t}));xt.displayName="Label";const ae=_.Link,uo=_.List,wt=_.Pagination,po=_.usePagination;wt.displayName="Pagination";const Fe=x.forwardRef((t,e)=>n.jsx(_.Paragraph,{ref:e,...t}));Fe.displayName="Paragraph";const go=_.Popover,mo=_.Radio,ho=_.useRadioGroup,Le=Object.assign(_.Search,{Button:_.SearchButton,ClearButton:_.SearchClear,Input:_.SearchInput}),fo=_.Select,ko=_.Skeleton,vo=_.SkipLink,It=_.EXPERIMENTAL_Suggestion;It.displayName="Suggestion";const Ne=_.Switch,yo=_.Table,bo=_.Tabs,To=_.Tag,So=_.Textarea,Co=_.Textfield,xo=_.ToggleGroup,wo=_.Tooltip,Dt=x.forwardRef((t,e)=>n.jsx(_.ValidationMessage,{ref:e,...t}));Dt.displayName="ValidationMessage";const Io={NO:{header:{darkMode:"Nattmodus",toggleTheme:"Bytt tema",language:"Språk:",search:"Søk",searchPlaceholder:"Søk etter innhold...",closeSearch:"Lukk søk",openSearch:"Åpne søk",clearSearch:"Tøm søk",close:"Lukk",menu:"Meny",closeMenu:"Lukk meny",openMenu:"Åpne meny",login:"Logg inn",supportUs:"Støtt oss",suggestions:"Forslag til søk",viewAll:"Vis alle resultater",noResults:"Ingen treff funnet for",selectLanguage:"Velg språk",homeAriaLabel:"Norges Røde Kors Hjem",nav:{design:"Design",components:"Komponenter",code:"Kode",tokens:"Tokens",work:"Vårt arbeid",volunteer:"Bli frivillig",courses:"Kurs og opplæring"}},home:{heroTitle:"Røde Kors Designsystem",heroLead:"Felles komponentbibliotek og retningslinjer for design og utvikling av digitale løsninger i Røde Kors.",searchComponents:"Søk i komponenter",exploreSystem:"Utforsk systemet",componentsDesc:"Bibliotek med ferdige React-komponenter.",designDesc:"Farger, typografi og prinsipper.",codeDesc:"Dokumentasjon, arbeidsflyt og MCP.",universalDesign:"Universell utforming",universalDesignText:"Innebygd tilgjengelighet som standard. Vi følger WCAG 2.1-kravene strengt.",readGuidelines:"Les retningslinjene",consistentBrand:"Konsistent merkevare",consistentBrandText:"Design tokens sikrer at Røde Kors sin visuelle profil ivaretas på alle flater.",seeColors:"Se farger",efficientDev:"Effektiv utvikling",efficientDevText:"Spar tid med ferdige komponenter. Fokuser på funksjonalitet, ikke CSS.",exploreComponents:"Utforsk komponenter",quickActionsTitle:"Hopp rett inn",quickActionCodeTitle:"Start i kode",quickActionCodeText:"Se oppsett, tokens og eksempler.",quickActionDesignTitle:"Designguiden",quickActionDesignText:"Farger, typografi og prinsipper.",quickActionComponentsTitle:"Komponentbibliotek",quickActionComponentsText:"Utforsk og gjenbruk ferdige komponenter.",openCode:"Åpne kode",openDesign:"Åpne design",openComponents:"Åpne komponenter",featureStripTitle:"Nyttig akkurat nå",featureToken:"Oppdaterte designtokens",featureFont:"Source Sans 3 inkludert",featureComponent:"Nye komponentvarianter",featureSeeAll:"Se alle oppdateringer",profile:"Profil",name:"Navn Navnesen",volunteer:"Frivillig",save:"Lagre",approved:"Godkjent",rejected:"Avvist",darkModeLabel:"Mørk modus",importantMessage:"Viktig melding",updateGuidelines:"Husk å oppdatere retningslinjene...",all:"Alle",active:"Aktive",alerts:"Varsler",status:"Status"},components:{title:"Komponenter",intro:"Designsystemet inneholder grunnleggende komponenter som kan settes sammen på mange ulike måter og i forskjellige mønstre.",searchPlaceholder:"Søk etter komponent...",searchAriaLabel:"Søk i komponenter",noResults:"Ingen komponenter funnet for"},code:{sidebar:{overview:"Oversikt",workflow:"Arbeidsflyt",structure:"Struktur",contribute:"Bidra",home:"Startside",getStarted:"Kom i gang",styling:"Styling",designTokens:"Designtokens",fonts:"Fonter",icons:"Bruk av ikoner",figmaMcp:"Fra Figma til Kode (MCP)",introduction:"Introduksjon",cursor:"Cursor",claudeCode:"Claude Code",componentCreation:"Komponent Kreasjon",metadataFiles:"Metadata filer",developerGuide:"Utviklerguide",aiGuide:"AI Guide for Assistanter"},overview:{title:"Røde Kors Designsystem",intro:"Velkommen til Røde Kors Designsystem! Dette repositoriet inneholder et bibliotek med gjenbrukbare UI-komponenter bygget med React, skreddersydd for Norges Røde Kors sine digitale prosjekter.",text1:"Det er utviklet ved å utnytte grunnkomponentene fra Digdirs Designsystemet. Denne tilnærmingen sikrer en helhetlig og gjenkjennelig visuell identitet på tvers av alle applikasjoner for Røde Kors. Systemet er forhåndskonfigurert med det offisielle Røde Kors-temaet, som leveres via en dedikert designtoken-pakke.",text2:"Hovedmålet er å sikre merkevarekonsistens, forbedre utviklingseffektiviteten og opprettholde høye standarder for tilgjengelighet i alle Røde Kors-applikasjoner.",text3:"Storybook fungerer som den interaktive dokumentasjonen og utviklingsmiljøet for å vise og teste disse komponentene.",getStartedCard:"Kom i gang",getStartedDesc:"Installasjon, oppsett og retningslinjer for utviklere.",getStartedLink:"Kom i gang",designTokensCard:"Designtokens",designTokensDesc:"Lær hvordan du bruker designtokens og fonter.",designTokensLink:"Les mer",workflowCard:"Arbeidsflyt",workflowDesc:"Lær hvordan du bruker MCP-verktøy for å hente komponenter direkte fra Figma.",workflowLink:"Les guide"},getStarted:{title:"Kom i gang",intro:"For å ta i bruk Røde Kors Designsystem i din Next.js (eller annen React) applikasjon:",installationTitle:"1. Installasjon",installationText:"Installer de nødvendige npm-pakkene for prosjektet ditt. Du trenger tre pakker: selve komponentbiblioteket (rk-designsystem), grunnstilene fra Digdir, og Røde Kors-temapakken (rk-design-tokens).",githubLink:"Gå til GitHub Repository",npmTitle:"npm",yarnTitle:"yarn",pnpmTitle:"pnpm",note:"Merk: Du trenger ikke å installere @digdir/designsystemet-react separat, da alle nødvendige komponenter er inkludert i rk-designsystem-pakken.",stylesTitle:"2. Inkludering av stiler (CSS)",stylesText1:"For at komponentene skal styles riktig, må du importere stilarkene på øverste nivå i applikasjonen din, for eksempel i layout.tsx (for Next.js App Router) eller _app.tsx (for Next.js Pages Router).",stylesText2:"Viktig rekkefølge: Det er avgjørende at grunnstilarket (@digdir/designsystemet-css) lastes før Røde Kors-temafilen (rk-design-tokens). Dette sikrer at vårt temas tokens overstyrer standardverdiene korrekt.",appRouterExample:"Eksempel for Next.js (App Router - src/app/layout.tsx):",pagesRouterExample:"Eksempel for Next.js (Pages Router - pages/_app.tsx):",usageTitle:"3. Bruk av komponenter",usageText:"Når stilarkene er inkludert, kan du begynne å importere og bruke komponenter i prosjektet ditt. Alle komponenter du trenger er tilgjengelige direkte fra rk-designsystem-pakken.",importTitle:"3.1 Importer og bruk Røde Kors Designsystem-komponenter",nextjsExample:"3.2 Eksempel på bruk i en Next.js-side",updateText:"Utseendet til alle komponenter styres fullt ut av pakken rk-design-tokens. For å motta visuelle oppdateringer til merkevaretemaet (som en ny primærfarge), oppdaterer du ganske enkelt pakken til siste versjon:"},designTokens:{title:"Røde Kors Designtokens",intro:"Dette repositoriet er den sentrale kilden for alle designtokens (farger, typografi, avstander osv.) for Norges Røde Kors sine digitale produkter. Det fungerer som en sannhetskilde (single source of truth) som automatisk distribuerer stilendringer til alle tilkoblede prosjekter.",howToTitle:"Hvordan ta i bruk tokens",howToText:"For å bruke designtokens i ditt prosjekt, må du installere og konfigurere temapakken.",installTitle:"1. Installasjon",importTitle:"2. Importer CSS",importText:"I din applikasjons rot-layout (f.eks. layout.tsx), importer grunnstilarket før Røde Kors-temafilen.",fontTitle:"Hvordan legge til fonten",workflowTitle:"Automatisert arbeidsflyt for Designtokens (End-to-End)",workflowText:"Denne arbeidsflyten etablerer en helautomatisert pipeline som kobler designprosessen vår direkte til live produksjonsapplikasjoner. Når en designer oppdaterer stilen i Figma, bygger, versjonerer og publiserer dette systemet automatisk en ny stilpakke til npm. Deretter varsles Vercel-prosjektene våre, som oppdaterer seg selv og redeployer med de nye stilene.",phase1Title:"Fase 1: En Designer gjør en endring (Publisist)",phase1Item1:"Design i Figma: En designer gjør en endring på en farge, font eller annen designtoken.",phase1Item2:"Push til GitHub: Ved bruk av Token Studio-pluginet pusher designeren endringene. Dette committer automatisk de oppdaterte JSON-filene til main-branchen.",phase1Item3:"Trigge Publisher Workflow: Denne pushen trigger umiddelbart GitHub Action definert i .github/workflows/publish.yml.",phase1Item4:"Bygg & Commit Artefakter: Workflowen kjører npm run build for å generere CSS fra JSON-filene og committer resultatene.",phase1Item5:"Versjonering & Release: Workflowen kjører npm version patch for å øke versjonsnummeret, lage en release-commit, og tagge den.",phase1Item6:"Publiser til npm: Til slutt publiserer workflowen den nye versjonen av pakken til npm-registeret.",phase2Title:"Fase 2: Varsling av applikasjoner (Signalet)",phase2Text:"Send et Dispatch-signal: Etter en vellykket publisering, sender workflowen et repository_dispatch-signal til konsumentprosjekter som rk-designsystem for å varsle om den nye versjonen.",phase3Title:"Fase 3: Automatisk oppdatering og redeploy (Konsumentene)",phase3Item1:'Trigge Consumer Workflow: Dispatch-signalet starter en "Update"-workflow i konsumentprosjektene.',phase3Item2:"Oppdater Avhengigheter: Workflowen kjører npm update rk-design-tokens for å hente den siste versjonen.",phase3Item3:"Commit & Push Oppdateringen: Workflowen committer den oppdaterte package-lock.json-filen.",phase3Item4:"Vercel Auto-Deploys: Vercels Git-integrasjon oppdager den nye commiten og starter automatisk en ny deployment."},fonts:{title:"Fonter",intro:"Røde Kors Designsystem bruker fonten Source Sans 3. For at typografien skal vises korrekt i applikasjonen din, må denne fonten lastes inn.",howToTitle:"Hvordan legge til fonten",howToText:"Du kan inkludere fonten ved å legge til følgende linjer i <head>-elementet i din HTML eller i rot-layouten din:",afterLoadTitle:"Etter lasting",afterLoadText:"Når fonten er lastet, vil CSS-variablene fra rk-design-tokens automatisk ta den i bruk (--ds-font-family).",nextjsTitle:"Eksempel for Next.js",nextjsText:"For Next.js App Router, legg til fonten i layout.tsx:",nextjsPagesText:"For Next.js Pages Router, legg til fonten i _app.tsx eller _document.tsx:",cssVariablesTitle:"CSS-variabler",cssVariablesText:"Etter at fonten er lastet, bruker designsystemet automatisk CSS-variabelen --ds-font-family som er definert i rk-design-tokens pakken. Du trenger ikke å spesifisere fonten manuelt i komponentene dine."},icons:{title:"Bruk av Ikoner",intro:"Dette biblioteket er designet for å fungere sømløst med det offisielle ikonsettet fra NAV/Aksel.",installTitle:"Installasjon",importTitle:"Import og bruk",importText:"Ikoner eksporteres som navngitte React-komponenter. Importer kun de ikonene du trenger (tree‑shakable):",accessibilityTitle:"Tilgjengelighetsguide",accessibilityItem1:"Ikon + synlig tekst: sett aria-hidden på ikonet slik at skjermlesere ikke leser det opp to ganger.",accessibilityItem2:"Ikon-kun triggere (f.eks. en knapp): legg til en beskrivende aria-label på triggeren, behold ikonet aria-hidden.",accessibilityItem3:"Farge: ikoner arver currentColor; bruk komponentens variant/farge for å styre det (f.eks. knappevarianter, tag-farger).",accessibilityItem4:`Størrelse: sett fontSize (f.eks. fontSize="1.25rem") eller inline style (f.eks. style="{ fontSize: '1.25rem' }").`,performanceTitle:"Ytelse",performanceText:"Bruk navngitte importer fra @navikt/aksel-icons for å holde pakkestørrelsen nede – ubrukte ikoner fjernes (tree-shaken) av moderne bundlere."},contributing:{title:"Bidra til Biblioteket",intro:"Denne guiden gir et sett med standarder og beste praksis for å lage nye komponenter. Å følge disse retningslinjene sikrer at komponentbiblioteket vårt forblir konsistent, tilgjengelig og enkelt å vedlikeholde.",getStartedTitle:"Kom i gang (for bidragsytere)",getStartedText:"Følg disse stegene for å kjøre det lokale utviklingsmiljøet. Alle kommandoer skal kjøres fra roten av prosjektet.",principlesTitle:"Kjerneprinsipper",principlesText:"Hver komponent vi bygger bør følge disse kjerneprinsippene:",principlesA11y:"Tilgjengelighet (A11y): Komponenter må kunne brukes av alle, inkludert personer med nedsatt funksjonsevne. Dette betyr korrekte ARIA-attributter, tastaturnavigasjon og semantisk HTML.",principlesReuse:"Gjenbrukbarhet: Komponenter bør være generiske nok til å brukes i flere kontekster uten modifikasjon.",principlesConsistency:"Konsistens: Komponenter skal følge våre etablerte designtokens (farger, avstander, typografi) og ha et konsistent API og struktur.",principlesDocs:"Dokumentasjon: Hver komponent må dokumenteres i Storybook for å gjøre den oppdagbar og enkel å bruke for andre utviklere.",whenTitle:"Når skal man lage en ny komponent",whenText:"Før du begynner å kode, avgjør hvilken type komponent du trenger. De fleste av våre behov faller inn i en av tre kategorier:",wrappedSimpleTitle:"Wrapped Component (Enkel):",wrappedSimpleWhat:"Hva det er: En komponent som direkte wrapper og re-eksporterer en komponent fra @digdir/designsystemet-react uten modifikasjoner.",wrappedSimpleWhen:"Når den skal brukes: Når den grunnleggende Digdir-komponenten dekker behovene våre perfekt, men vi ønsker å inkludere den i vårt eget bibliotek for en konsistent importkilde.",wrappedSimpleExample:"Eksempel: Buttons-komponenten er et perfekt eksempel på dette.",wrappedStyledTitle:"Wrapped Component (med stiloverstyringer):",wrappedStyledWhat:"Hva det er: En wrappet Digdir-komponent hvor vi bruker tilpasset CSS for å justere utseendet slik at det passer bedre til Røde Kors sitt spesifikke designspråk.",wrappedStyledWhen:"Når den skal brukes: Når en Digdir-komponent er funksjonelt korrekt, men trenger visuelle justeringer (f.eks. andre ikoner, border-radius, padding).",wrappedStyledExample:"Eksempel: Alert-komponenten, som bruker composes i CSS for å arve grunnstiler og deretter påføre egne overstyringer.",customTitle:"Custom Component (fra bunnen):",customWhat:"Hva det er: En helt ny komponent bygget når ingen eksisterende Digdir-komponent dekker kravene våre.",customWhen:"Når den skal brukes: For unike UI-mønstre eller funksjonalitet som ikke dekkes av grunnbiblioteket.",customExample:"Eksempel: DateInput-komponenten er en tilpasset komponent med egen tilstand, logikk og styling.",fileStructureTitle:"Filstruktur for komponenter",fileStructureText:"For å opprettholde konsistens, bør hver ny komponent følge denne filstrukturen. Lag en ny mappe under src/components/ med komponentens PascalCase-navn.",codingGuidelinesTitle:"Retningslinjer for koding",componentLogicTitle:"1. Komponentlogikk (MyNewComponent.tsx)",logicTypeScript:"TypeScript først: Alle komponenter må skrives i TypeScript. Definer et Props-interface for komponenten din, som utvider fra grunnleggende HTML-element eller Digdir-komponentprops hvis aktuelt.",logicForwardRef:"Forward Refs: Bruk alltid React.forwardRef for å tillate foreldrekomponenter å få en ref til det underliggende DOM-elementet.",logicA11y:"Tilgjengelighet er obligatorisk:",logicA11yItem1:"Bruk semantisk HTML (<button>, <label>, <nav>).",logicA11yItem2:"Sørg for at alle interaktive elementer kan fokuseres og betjenes med tastatur.",logicA11yItem3:"Gi aria-label for knapper som kun har ikon eller elementer hvor tekstetiketten ikke er synlig.",logicA11yItem4:"Bruk aria-invalid, aria-describedby, osv., for å kommunisere tilstand til hjelpemidler.",logicControlled:"Controlled vs. Uncontrolled: Hvis komponenten din har tilstand (som en input), bør den støtte både kontrollerte (value + onChange) og ukontrollerte (defaultValue) mønstre.",logicProps:"Props-navngiving: Bruk data-* attributter for stylingvarianter (f.eks. data-size, data-color) for å samkjøre med mønstrene i våre eksisterende komponenter.",stylingTitle:"2. Styling (styles.module.css)",stylingModules:"CSS Modules: For tilpassede komponenter må alle stiler plasseres i en styles.module.css-fil. Dette scoper klassenavn lokalt og forhindrer globale stilkonflikter.",stylingTokens:"Designtokens: Bruk alltid våre designtokens (var(--ds-...)) for farger, avstander, fonter, osv. Ikke bruk hardkodede verdier (f.eks. #FFF, 16px).",stylingOverride:"Overstyring av Wrapped Components: For wrapped components, bruk en standard CSS-fil. Bruk @layer og composes nøkkelord for å utvide grunnleggende Digdir-stiler uten å øke CSS-spesifisiteten unødvendig.",documentationTitle:"3. Dokumentasjon (MyNewComponent.stories.tsx)",docsStorybook:"Din Storybook-fil er den offisielle dokumentasjonen. Den må være tydelig og omfattende.",docsMeta:"meta Object: Definer komponentens tittel, komponentreferanse, og tags: ['autodocs'] for å aktivere automatisk dokumentasjon.",docsArgTypes:"argTypes: Dokumenter hver enkelt prop. Gi en beskrivelse, kontrolltype (f.eks. select, boolean, text), og alternativer hvis aktuelt. Dette driver de interaktive kontrollene i Storybook.",docsStories:"Lag flere Stories: Lag en egen story for hver nøkkeltilstand og variant av komponenten din (f.eks. Default, Disabled, WithError, WithIcon).",processTitle:"Bidragsprosess",processPRTitle:"Opprett en Pull Request (PR):",processBranch:"Opprett en Branch: Pull de siste endringene fra main-branchen og opprett en ny feature-branch: git checkout -b feat/min-nye-komponent.",processDraft:"Åpne en Draft PR: Så snart du starter, åpne en draft pull request på GitHub. Dette forhindrer dobbeltarbeid og lar andre se hva du jobber med.",processCommit:"Commit endringene dine: Mens du jobber, lag små, logiske commits.",processReview:'Klar for gjennomgang: Når utviklingen er ferdig og alle automatiserte sjekker passerer, merk PR-en som "Ready for review" og be om en gjennomgang fra designsystem-forvalterne.'},figmaMcp:{title:"Arbeidsflyt: Fra Figma til Kode med MCP",introTitle:"Introduksjon til MCP og Arbeidsflyt",intro:"Denne guiden beskriver hvordan vi bruker Model Context Protocol (MCP) for å koble Figma direkte til utviklingsmiljøet. Dette gjør det mulig å hente designspesifikasjoner, tokens og strukturer automatisk, validert mot vårt designsystem.",whatIsMcpTitle:"Hva er MCP?",whatIsMcpText1:"Model Context Protocol (MCP) er en åpen standard som lar AI-assistenter kommunisere direkte med eksterne datakilder og verktøy. I vår kontekst bruker vi MCP til å koble Figma-designfiler direkte til utviklingsmiljøet vårt.",whatIsMcpText2:"Dette betyr at når du gir AI-en en Figma-lenke, kan den automatisk:",whatIsMcpItem1:"Lese designspesifikasjoner direkte fra Figma",whatIsMcpItem2:"Hente eksakte farger, spacing, typografi og andre design tokens",whatIsMcpItem3:"Forstå komponentstrukturen og hierarkiet",whatIsMcpItem4:"Generere kode som matcher designet nøyaktig",whyUseMcpTitle:"Hvorfor bruke MCP?",whyUseMcpText1:"Tradisjonelt har utviklere måttet manuelt konvertere design til kode, noe som kan være tidkrevende og feilutsatt. Med MCP får vi:",whyUseMcpItem1Title:"Nøyaktighet:",whyUseMcpItem1Text:"AI-en leser designet direkte fra kilde, så ingen informasjon går tapt i oversettelsen.",whyUseMcpItem2Title:"Hastighet:",whyUseMcpItem2Text:"Automatisk konvertering fra design til kode sparer timer med manuelt arbeid.",whyUseMcpItem3Title:"Konsistens:",whyUseMcpItem3Text:"Alle design tokens og komponenter brukes konsekvent, validert mot designsystemet vårt.",whyUseMcpItem4Title:"Effektivitet:",whyUseMcpItem4Text:"Mindre tid på repetitivt arbeid, mer tid på å løse faktiske problemer.",howItWorksTitle:"Hvordan fungerer det?",howItWorksIntro:"Prosessen er enkel og følger disse stegene:",stepByStepTitle:"Steg-for-steg oversikt",stepByStep1Title:"1. Oppsett (kun én gang)",stepByStep1Text:"Du setter opp en lokal MCP-server som kobler Figma til AI-assistenten din. Dette krever en Figma Access Token og litt konfigurasjon.",stepByStep2Title:"2. Hent AI Design System Guide",stepByStep2Text:"Du laster ned en spesiallaget guide som inneholder all informasjon om komponenter, tokens og beste praksis. Dette gir AI-en full kontekst om designsystemet vårt.",stepByStep3Title:"3. Kopier Figma-lenke",stepByStep3Text:"I Figma markerer du den delen av designet du vil implementere og kopierer lenken til den spesifikke komponenten eller rammen.",stepByStep4Title:"4. Gi instruksjoner til AI-en",stepByStep4Text:"Du gir AI-en Figma-lenken sammen med instruksjoner om hva du vil lage. AI-en bruker MCP til å lese designet og genererer kode basert på designsystemet vårt.",stepByStep5Title:"5. Review og juster",stepByStep5Text:"AI-en genererer kode som du kan gjennomgå, teste og justere etter behov. Koden følger automatisk design tokens og komponenter fra designsystemet.",nextStepsTitle:"Neste steg",nextStepsText:"Nå som du forstår grunnleggende om MCP og arbeidsflyten, kan du velge mellom:",nextStepsItem1:"Cursor workflow - for brukere av Cursor IDE",nextStepsItem2:"Claude Code workflow - for brukere av Claude Code",part1Title:"Del 1: Oppsett av Figma MCP Server",part1Intro:"Dette gjøres kun én gang for å aktivere integrasjonen i Cursor/Windsurf.",part1Description:'For at AI-en skal kunne "lese" Figma-filene, må vi sette opp en lokal kobling.',setupStep1Title:"1. Hent Figma Access Token",setupStep1Item1:"Gå til Figma -> Settings -> Personal Access Tokens.",setupStep1Item2:"Klikk Generate new token.",setupStep1Item3:'Navn: F.eks. "Cursor MCP".',setupStep1Item4:"Scopes: Velg File content: Read og File metadata: Read.",setupStep1Item5:"Kopier tokenet (du får ikke se det igjen).",setupStep2Title:"2. Konfigurer i Cursor",setupStep2Item1:"Åpne innstillinger i Cursor (Ctrl/Cmd + ,).",setupStep2Item2:"Gå til Features -> MCP.",setupStep2Item3:"Klikk + Add New MCP Server.",setupStep2Item4:"Fyll inn følgende:",setupStep2Item5:"Type: command",setupStep2Item6:"Name: figma",setupStep2Item7:"Command: npx -y @modelcontextprotocol/server-figma",setupStep2Item8:"Legg til Environment Variable (viktig!):",setupStep2Item9:"Key: FIGMA_ACCESS_TOKEN",setupStep2Item10:"Value: [Lim inn tokenet du kopierte i steg 1]",setupStep2Item11:'Når lyset ved siden av "figma" blir grønt, er verktøyet klart til bruk.',part2Title:"Del 2: Daglig Arbeidsflyt",step0Title:"Steg 0: Indeksering av Dokumentasjon",step0Description:"Gjør dette én gang per prosjekt for å gi AI-en full oversikt over designsystemet.",step0Intro:"For at Cursor skal forstå våre spesifikke tokens, komponentnavn og retningslinjer, må vi la den lese gjennom dokumentasjonen på forhånd.",step0Item1:"Åpne Chat i Cursor (Cmd + L / Ctrl + L).",step0Item2:'Skriv @Docs i tekstfeltet og velg "Add new doc" fra menyen som dukker opp.',step0Item3:"Lim inn URL-en til hovedsiden for dokumentasjonen: https://norwegianredcross.github.io/DesignSystem/",step0Item4:"Gi den et navn som er lett å huske, f.eks. RødeKors.",step0Item5:"Trykk Confirm.",step0WhatHappensTitle:"Hva skjer nå?",step0WhatHappensText:'Cursor vil automatisk "crawle" (lese) gjennom hovedsiden og alle undersider. Den lagrer informasjonen i en lokal database. Dette gjør at du senere kan referere til @RødeKors i chatten, og AI-en vil umiddelbart vite alle fargekoder, spacing-variabler og komponent-regler uten at du trenger å lime inn tekst manuelt. NB: Dette gjelder når du refererer til @RødeKors i chatten. Hvis du bruker .cursorrules, trenger du ikke å legge ved @RødeKors manuelt.',step0_5Title:"Steg 0.5: Hent AI Design System Guide",step0_5Description:"Før du begynner å konvertere Figma-design til kode, må du hente AI Design System Guide. Denne guiden inneholder komplett dokumentasjon om alle komponenter, design tokens, og beste praksis som AI-assistenten trenger for å produsere korrekt kode.",step0_5WhyCurlTitle:"Hvorfor bruke curl?",step0_5WhyCurlText:"curl er den anbefalte metoden fordi:",step0_5WhyCurlItem1:"Filen lastes ned lokalt - AI-assistenten har alltid tilgang til den uten internett",step0_5WhyCurlItem2:"Raskere referanse - Ingen behov for å laste ned på nytt ved hver prompt",step0_5WhyCurlItem3:"Fungerer offline - Etter nedlasting kan du jobbe uten internettforbindelse",step0_5WhyCurlItem4:"Konsistent kontekst - AI-en leser samme versjon av guiden hver gang",step0_5WhyCurlItem5:"Enklere referanse - Bare bruk filnavnet (@AI_DESIGN_SYSTEM_GUIDE.md) i stedet for lange URL-er",cursorWorkflowTitle:"Komplett arbeidsflyt: Cursor",cursorWorkflowIntro:"Følg disse stegene for å sette opp og bruke Figma MCP-arbeidsflyten i Cursor.",claudeWorkflowTitle:"Komplett arbeidsflyt: Claude Code",claudeWorkflowIntro:"Følg disse stegene for å sette opp og bruke Figma MCP-arbeidsflyten i Claude Code.",step0_5ClaudeTitle:"For Claude Code:",step0_5ClaudeIntro:"I Claude Code kan du hente guiden direkte i terminalen eller be Claude om å gjøre det:",step0_5ClaudeMethod1Title:"Metode 1: Hent via terminal",step0_5ClaudeMethod1Step1:"Åpne terminalen i Claude Code",step0_5ClaudeMethod1Step2:"Kjør denne kommandoen:",step0_5ClaudeMethod1Command:"curl -o AI_DESIGN_SYSTEM_GUIDE.md https://norwegianredcross.github.io/DesignSystem/storybook/AI_DESIGN_SYSTEM_GUIDE.md",step0_5ClaudeMethod1Step3:"Verifiser at filen er lastet ned: ls -la AI_DESIGN_SYSTEM_GUIDE.md",step0_5ClaudeMethod2Title:"Metode 2: Be Claude om å hente den",step0_5ClaudeMethod2Text:'Du kan også be Claude Code direkte: "Please fetch the AI Design System Guide from https://norwegianredcross.github.io/DesignSystem/storybook/AI_DESIGN_SYSTEM_GUIDE.md"',step0_5ClaudeMethod2Note:"Merk: Dette laster ned filen lokalt, akkurat som curl-kommandoen.",step0_5ClaudeSetupTitle:"Steg 0.6: Be Claude om å lese guiden og sette opp prosjektet",step0_5ClaudeSetupIntro:"Før du begynner å konvertere Figma-design til kode, må du be Claude om å lese gjennom AI Design System Guide og verifisere at prosjektet er satt opp korrekt i henhold til guiden. Dette sikrer at alle nødvendige pakker, CSS-imports og font-oppsett er på plass før konvertering.",step0_5ClaudeSetupStep1:"Be Claude om å lese AI Design System Guide: Gi Claude en prompt som ber den lese filen @componentlibrary/AI_DESIGN_SYSTEM_GUIDE.md (eller den nedlastede filen hvis den er i prosjektroten)",step0_5ClaudeSetupStep2:"Be Claude om å verifisere CSS-imports: Gi Claude en prompt som ber den sjekke at CSS-filene er importert i riktig rekkefølge (base styles først, deretter theme)",step0_5ClaudeSetupStep3:"Be Claude om å verifisere font-oppsett: Gi Claude en prompt som ber den sjekke at Source Sans 3 er konfigurert korrekt (se Font Setup-seksjonen i guiden)",step0_5ClaudeSetupStep4:"Be Claude om å verifisere pakke-installasjon: Gi Claude en prompt som ber den sjekke at alle nødvendige pakker er installert (rk-designsystem, @digdir/designsystemet-css, rk-design-tokens)",step0_5ClaudeSetupStep5:"Be Claude om å verifisere prosjektstruktur: Gi Claude en prompt som ber den sjekke at prosjektstrukturen matcher anbefalingene i guiden",step0_5ClaudeSetupPromptTitle:"Ferdig prompt å kopiere:",step0_5ClaudeSetupPrompt:`Les gjennom AI_DESIGN_SYSTEM_GUIDE.md filen og verifiser at prosjektet mitt er satt opp korrekt i henhold til guiden. Sjekk spesifikt:
2
2
 
3
3
  1. At CSS-filene er importert i riktig rekkefølge (base styles først, deretter theme)
4
4
  2. At Source Sans 3 font er konfigurert korrekt (se Font Setup-seksjonen)
@@ -438,4 +438,4 @@ Map design elements to our existing components where possible (e.g. Buttons, Hea
438
438
  align-items: flex-start;
439
439
  }
440
440
  }
441
- `}T.Alert=Re,T.Avatar=Pe,T.Badge=et,T.BadgePosition=Nt,T.Breadcrumbs=Bt,T.BreadcrumbsItem=zt,T.BreadcrumbsLink=Gt,T.BreadcrumbsList=Pt,T.Button=he,T.Card=tt,T.CardBlock=Wt,T.Carousel=yt,T.Checkbox=nt,T.Chip=Ot,T.DateInput=ct,T.DatePicker=at,T.Details=no,T.Dialog=oo,T.Divider=ro,T.Dropdown=Z,T.ErrorSummary=so,T.Field=ao,T.FieldCounter=Tt,T.FieldDescription=bt,T.Fieldset=io,T.Footer=Eo,T.Header=Lo,T.Heading=St,T.Input=lo,T.Label=Ct,T.LanguageProvider=Do,T.Link=ae,T.List=co,T.Pagination=uo,T.Paragraph=Fe,T.Popover=go,T.Radio=mo,T.Search=Le,T.Select=fo,T.SkeletonLoader=ko,T.SkipLink=vo,T.Spinner=vt,T.Suggestion=xt,T.Switch=Ne,T.Table=yo,T.Tabs=bo,T.Tag=To,T.Textarea=So,T.Textfield=Co,T.ToggleGroup=xo,T.Tooltip=wo,T.ValidationMessage=wt,T.useCheckboxGroup=Ut,T.useLanguage=_o,T.useLanguageOptional=Ye,T.usePagination=po,T.useRadioGroup=ho,Object.defineProperty(T,Symbol.toStringTag,{value:"Module"})}));
441
+ `}T.Alert=Re,T.Avatar=Pe,T.Badge=et,T.BadgePosition=Pt,T.Breadcrumbs=zt,T.BreadcrumbsItem=Wt,T.BreadcrumbsLink=Ht,T.BreadcrumbsList=Gt,T.Button=he,T.Card=tt,T.CardBlock=Ut,T.Carousel=yt,T.Checkbox=nt,T.Chip=Vt,T.DateInput=ct,T.DatePicker=at,T.Details=ro,T.Dialog=so,T.Divider=ao,T.Dropdown=Z,T.ErrorSummary=io,T.Field=lo,T.FieldCounter=Tt,T.FieldDescription=bt,T.Fieldset=co,T.Footer=Eo,T.Header=Lo,T.Heading=St,T.Input=Ct,T.Label=xt,T.LanguageProvider=Do,T.Link=ae,T.List=uo,T.Pagination=wt,T.Paragraph=Fe,T.Popover=go,T.Radio=mo,T.Search=Le,T.Select=fo,T.SkeletonLoader=ko,T.SkipLink=vo,T.Spinner=vt,T.Suggestion=It,T.Switch=Ne,T.Table=yo,T.Tabs=bo,T.Tag=To,T.Textarea=So,T.Textfield=Co,T.ToggleGroup=xo,T.Tooltip=wo,T.ValidationMessage=Dt,T.useCheckboxGroup=$t,T.useLanguage=_o,T.useLanguageOptional=Ye,T.usePagination=po,T.useRadioGroup=ho,Object.defineProperty(T,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rk-designsystem",
3
- "version": "1.1.77",
3
+ "version": "1.1.78",
4
4
  "description": "A React component library built on top of Digdir Design System",
5
5
  "author": "daniel@tunetek.no",
6
6
  "license": "MIT",