@altinn/altinn-components 0.24.6 → 0.24.8

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.
Files changed (268) hide show
  1. package/dist/altinn-ds-overrides.css +9 -14
  2. package/dist/altinn-ds.css +18 -18
  3. package/dist/altinn-theme.css +5 -6
  4. package/dist/assets/ActionHeader.css +1 -1
  5. package/dist/assets/Badge.css +1 -1
  6. package/dist/assets/ButtonBase.css +1 -1
  7. package/dist/assets/DatepickerTable.css +1 -1
  8. package/dist/assets/DialogListItem.css +1 -1
  9. package/dist/assets/DialogSelect.css +1 -1
  10. package/dist/assets/DropdownBase.css +1 -1
  11. package/dist/assets/Icon.css +1 -1
  12. package/dist/assets/LayoutBase.css +1 -1
  13. package/dist/assets/ListItemBase.css +1 -1
  14. package/dist/assets/ListItemHeader.css +1 -1
  15. package/dist/assets/ListItemLabel.css +1 -1
  16. package/dist/assets/ListItemSelect.css +1 -1
  17. package/dist/assets/MenuBase.css +1 -1
  18. package/dist/assets/MenuInputField.css +1 -1
  19. package/dist/assets/MenuItemBase.css +1 -1
  20. package/dist/assets/MetaItemBase.css +1 -1
  21. package/dist/assets/PageMenu.css +1 -1
  22. package/dist/assets/ProgressIcon.css +1 -1
  23. package/dist/assets/SnackbarItem.css +1 -1
  24. package/dist/assets/TimelineBase.css +1 -1
  25. package/dist/components/Badge/Badge.js +6 -6
  26. package/dist/components/Button/ButtonBase.js +14 -14
  27. package/dist/components/Datepicker/DatepickerTable.js +1 -1
  28. package/dist/components/Dialog/DialogActivityLog.js +1 -1
  29. package/dist/components/Dialog/DialogLayout.js +13 -14
  30. package/dist/components/Dialog/DialogList.js +11 -11
  31. package/dist/components/Dialog/DialogListItem.js +68 -68
  32. package/dist/components/Dialog/DialogSeenBy.js +4 -4
  33. package/dist/components/Dialog/DialogSelect.js +9 -9
  34. package/dist/components/Dialog/DialogStatus.js +2 -2
  35. package/dist/components/Dropdown/DropdownBase.js +5 -5
  36. package/dist/components/DsComponents/index.js +17 -16
  37. package/dist/components/Icon/Icon.js +4 -4
  38. package/dist/components/Icon/ProgressIcon.js +7 -7
  39. package/dist/components/Layout/LayoutBase.js +1 -1
  40. package/dist/components/LayoutAction/ActionHeader.js +14 -14
  41. package/dist/components/List/ListItemBase.js +19 -19
  42. package/dist/components/List/ListItemHeader.js +32 -32
  43. package/dist/components/List/ListItemLabel.js +11 -11
  44. package/dist/components/List/ListItemSelect.js +7 -7
  45. package/dist/components/Menu/MenuBase.js +10 -10
  46. package/dist/components/Menu/MenuInputField.js +10 -10
  47. package/dist/components/Menu/MenuItemBase.js +27 -27
  48. package/dist/components/Meta/MetaItemBase.js +19 -19
  49. package/dist/components/Meta/Metadata.js +24 -0
  50. package/dist/components/Meta/index.js +15 -15
  51. package/dist/components/Page/AccordionSection.js +16 -0
  52. package/dist/components/Page/ArticleHeader.js +16 -0
  53. package/dist/components/Page/ContactButtons.js +12 -0
  54. package/dist/components/Page/ContactSection.js +20 -21
  55. package/dist/components/Page/DashboardCard.js +49 -0
  56. package/dist/components/Page/DashboardHeader.js +24 -0
  57. package/dist/components/Page/PageDetails.js +9 -0
  58. package/dist/components/Page/PageMenu.js +6 -6
  59. package/dist/components/Page/index.js +28 -18
  60. package/dist/components/Profile/AccountList.js +12 -0
  61. package/dist/components/Profile/AccountListItem.js +88 -0
  62. package/dist/components/Profile/index.js +6 -0
  63. package/dist/components/Snackbar/SnackbarItem.js +12 -12
  64. package/dist/components/Timeline/TimelineBase.js +19 -19
  65. package/dist/components/index.js +184 -169
  66. package/dist/floating-ui.react-BQwG1HOM.js +2840 -0
  67. package/dist/global.css +3 -2
  68. package/dist/index-C8BS_2GY.js +64 -0
  69. package/dist/index-DcykCrjD.js +115 -0
  70. package/dist/index.js +190 -175
  71. package/dist/padding.css +22 -0
  72. package/dist/tokens/$metadata.json +10 -5
  73. package/dist/tokens/$themes.json +46 -14
  74. package/dist/tokens/README.md +8 -7
  75. package/dist/tokens/alert.css +8 -6
  76. package/dist/tokens/alert.json +18 -14
  77. package/dist/tokens/altinn-ds/color/alert.css +8 -6
  78. package/dist/tokens/altinn-ds/color/article.css +8 -6
  79. package/dist/tokens/altinn-ds/color/company.css +6 -5
  80. package/dist/tokens/altinn-ds/color/danger.css +25 -0
  81. package/dist/tokens/altinn-ds/color/info.css +25 -0
  82. package/dist/tokens/altinn-ds/color/neutral.css +25 -0
  83. package/dist/tokens/altinn-ds/color/person.css +8 -6
  84. package/dist/tokens/altinn-ds/color/success.css +25 -0
  85. package/dist/tokens/altinn-ds/color/warning.css +25 -0
  86. package/dist/tokens/altinn-ds/color-scheme/dark.css +252 -412
  87. package/dist/tokens/altinn-ds/color-scheme/light.css +222 -382
  88. package/dist/tokens/altinn-ds/semantic.css +54 -54
  89. package/dist/tokens/altinn-ds/typography/primary.css +10 -15
  90. package/dist/tokens/altinn-ds/typography/secondary.css +10 -15
  91. package/dist/tokens/altinn-ds.css +682 -987
  92. package/dist/tokens/altinn-ds.json +14 -12
  93. package/dist/tokens/article.css +8 -6
  94. package/dist/tokens/article.json +18 -14
  95. package/dist/tokens/color/alert.css +8 -6
  96. package/dist/tokens/color/article.css +8 -6
  97. package/dist/tokens/color/company.css +6 -5
  98. package/dist/tokens/color/danger.css +25 -0
  99. package/dist/tokens/color/info.css +25 -0
  100. package/dist/tokens/color/neutral.css +25 -0
  101. package/dist/tokens/color/person.css +8 -6
  102. package/dist/tokens/color/success.css +25 -0
  103. package/dist/tokens/color/warning.css +25 -0
  104. package/dist/tokens/color-scheme/dark/altinn-ds.json +100 -80
  105. package/dist/tokens/color-scheme/dark/global.json +99 -141
  106. package/dist/tokens/color-scheme/dark.css +252 -412
  107. package/dist/tokens/color-scheme/light/altinn-ds.json +94 -74
  108. package/dist/tokens/color-scheme/light/global.json +90 -132
  109. package/dist/tokens/color-scheme/light.css +222 -382
  110. package/dist/tokens/color.json +185 -141
  111. package/dist/tokens/colors.d.ts +2 -2
  112. package/dist/tokens/company.css +6 -5
  113. package/dist/tokens/company.json +18 -14
  114. package/dist/tokens/danger.css +25 -0
  115. package/dist/tokens/dark/altinn-ds.json +100 -80
  116. package/dist/tokens/dark/global.json +99 -141
  117. package/dist/tokens/dark.css +252 -412
  118. package/dist/tokens/design-tokens/$metadata.json +10 -5
  119. package/dist/tokens/design-tokens/$themes.json +46 -14
  120. package/dist/tokens/design-tokens/primitives/globals.json +2 -14
  121. package/dist/tokens/design-tokens/primitives/modes/color-scheme/dark/altinn-ds.json +100 -80
  122. package/dist/tokens/design-tokens/primitives/modes/color-scheme/dark/global.json +99 -141
  123. package/dist/tokens/design-tokens/primitives/modes/color-scheme/light/altinn-ds.json +94 -74
  124. package/dist/tokens/design-tokens/primitives/modes/color-scheme/light/global.json +90 -132
  125. package/dist/tokens/design-tokens/primitives/modes/size/global.json +21 -21
  126. package/dist/tokens/design-tokens/primitives/modes/typography/primary/altinn-ds.json +14 -12
  127. package/dist/tokens/design-tokens/primitives/modes/typography/secondary/altinn-ds.json +14 -12
  128. package/dist/tokens/design-tokens/primitives/modes/typography/size/large.json +8 -12
  129. package/dist/tokens/design-tokens/primitives/modes/typography/size/medium.json +8 -12
  130. package/dist/tokens/design-tokens/primitives/modes/typography/size/small.json +8 -12
  131. package/dist/tokens/design-tokens/semantic/color.json +185 -141
  132. package/dist/tokens/design-tokens/semantic/modes/main-color/company.json +18 -14
  133. package/dist/tokens/design-tokens/semantic/modes/main-color/person.json +18 -14
  134. package/dist/tokens/design-tokens/semantic/modes/support-color/alert.json +18 -14
  135. package/dist/tokens/design-tokens/semantic/modes/support-color/article.json +18 -14
  136. package/dist/tokens/design-tokens/semantic/style.json +104 -182
  137. package/dist/tokens/design-tokens/themes/altinn-ds.json +61 -39
  138. package/dist/tokens/design-tokens-build/altinn-ds/color/alert.css +8 -6
  139. package/dist/tokens/design-tokens-build/altinn-ds/color/article.css +8 -6
  140. package/dist/tokens/design-tokens-build/altinn-ds/color/company.css +6 -5
  141. package/dist/tokens/design-tokens-build/altinn-ds/color/danger.css +25 -0
  142. package/dist/tokens/design-tokens-build/altinn-ds/color/info.css +25 -0
  143. package/dist/tokens/design-tokens-build/altinn-ds/color/neutral.css +25 -0
  144. package/dist/tokens/design-tokens-build/altinn-ds/color/person.css +8 -6
  145. package/dist/tokens/design-tokens-build/altinn-ds/color/success.css +25 -0
  146. package/dist/tokens/design-tokens-build/altinn-ds/color/warning.css +25 -0
  147. package/dist/tokens/design-tokens-build/altinn-ds/color-scheme/dark.css +252 -412
  148. package/dist/tokens/design-tokens-build/altinn-ds/color-scheme/light.css +222 -382
  149. package/dist/tokens/design-tokens-build/altinn-ds/semantic.css +54 -54
  150. package/dist/tokens/design-tokens-build/altinn-ds/typography/primary.css +10 -15
  151. package/dist/tokens/design-tokens-build/altinn-ds/typography/secondary.css +10 -15
  152. package/dist/tokens/design-tokens-build/altinn-ds.css +682 -987
  153. package/dist/tokens/design-tokens-build/colors.d.ts +2 -2
  154. package/dist/tokens/global.json +90 -132
  155. package/dist/tokens/globals.json +2 -14
  156. package/dist/tokens/info.css +25 -0
  157. package/dist/tokens/large.json +8 -12
  158. package/dist/tokens/light/altinn-ds.json +94 -74
  159. package/dist/tokens/light/global.json +90 -132
  160. package/dist/tokens/light.css +222 -382
  161. package/dist/tokens/main-color/company.json +18 -14
  162. package/dist/tokens/main-color/person.json +18 -14
  163. package/dist/tokens/medium.json +8 -12
  164. package/dist/tokens/modes/color-scheme/dark/altinn-ds.json +100 -80
  165. package/dist/tokens/modes/color-scheme/dark/global.json +99 -141
  166. package/dist/tokens/modes/color-scheme/light/altinn-ds.json +94 -74
  167. package/dist/tokens/modes/color-scheme/light/global.json +90 -132
  168. package/dist/tokens/modes/main-color/company.json +18 -14
  169. package/dist/tokens/modes/main-color/person.json +18 -14
  170. package/dist/tokens/modes/size/global.json +21 -21
  171. package/dist/tokens/modes/support-color/alert.json +18 -14
  172. package/dist/tokens/modes/support-color/article.json +18 -14
  173. package/dist/tokens/modes/typography/primary/altinn-ds.json +14 -12
  174. package/dist/tokens/modes/typography/secondary/altinn-ds.json +14 -12
  175. package/dist/tokens/modes/typography/size/large.json +8 -12
  176. package/dist/tokens/modes/typography/size/medium.json +8 -12
  177. package/dist/tokens/modes/typography/size/small.json +8 -12
  178. package/dist/tokens/neutral.css +25 -0
  179. package/dist/tokens/person.css +8 -6
  180. package/dist/tokens/person.json +18 -14
  181. package/dist/tokens/primary/altinn-ds.json +14 -12
  182. package/dist/tokens/primary.css +10 -15
  183. package/dist/tokens/primitives/globals.json +2 -14
  184. package/dist/tokens/primitives/modes/color-scheme/dark/altinn-ds.json +100 -80
  185. package/dist/tokens/primitives/modes/color-scheme/dark/global.json +99 -141
  186. package/dist/tokens/primitives/modes/color-scheme/light/altinn-ds.json +94 -74
  187. package/dist/tokens/primitives/modes/color-scheme/light/global.json +90 -132
  188. package/dist/tokens/primitives/modes/size/global.json +21 -21
  189. package/dist/tokens/primitives/modes/typography/primary/altinn-ds.json +14 -12
  190. package/dist/tokens/primitives/modes/typography/secondary/altinn-ds.json +14 -12
  191. package/dist/tokens/primitives/modes/typography/size/large.json +8 -12
  192. package/dist/tokens/primitives/modes/typography/size/medium.json +8 -12
  193. package/dist/tokens/primitives/modes/typography/size/small.json +8 -12
  194. package/dist/tokens/secondary/altinn-ds.json +14 -12
  195. package/dist/tokens/secondary.css +10 -15
  196. package/dist/tokens/semantic/color.json +185 -141
  197. package/dist/tokens/semantic/modes/main-color/company.json +18 -14
  198. package/dist/tokens/semantic/modes/main-color/person.json +18 -14
  199. package/dist/tokens/semantic/modes/support-color/alert.json +18 -14
  200. package/dist/tokens/semantic/modes/support-color/article.json +18 -14
  201. package/dist/tokens/semantic/style.json +104 -182
  202. package/dist/tokens/semantic.css +54 -54
  203. package/dist/tokens/size/global.json +21 -21
  204. package/dist/tokens/size/large.json +8 -12
  205. package/dist/tokens/size/medium.json +8 -12
  206. package/dist/tokens/size/small.json +8 -12
  207. package/dist/tokens/small.json +8 -12
  208. package/dist/tokens/style.json +104 -182
  209. package/dist/tokens/success.css +25 -0
  210. package/dist/tokens/support-color/alert.json +18 -14
  211. package/dist/tokens/support-color/article.json +18 -14
  212. package/dist/tokens/themes/altinn-ds.json +61 -39
  213. package/dist/tokens/typography/primary/altinn-ds.json +14 -12
  214. package/dist/tokens/typography/primary.css +10 -15
  215. package/dist/tokens/typography/secondary/altinn-ds.json +14 -12
  216. package/dist/tokens/typography/secondary.css +10 -15
  217. package/dist/tokens/typography/size/large.json +8 -12
  218. package/dist/tokens/typography/size/medium.json +8 -12
  219. package/dist/tokens/typography/size/small.json +8 -12
  220. package/dist/tokens/warning.css +25 -0
  221. package/dist/types/lib/components/Dialog/DialogList.d.ts +2 -1
  222. package/dist/types/lib/components/Dialog/DialogList.stories.d.ts +2 -1
  223. package/dist/types/lib/components/Menu/Examples.stories.d.ts +17 -0
  224. package/dist/types/lib/components/Meta/MetaItemBase.d.ts +1 -1
  225. package/dist/types/lib/components/Meta/{MetaList.d.ts → Metadata.d.ts} +6 -4
  226. package/dist/types/lib/components/Meta/index.d.ts +1 -1
  227. package/dist/types/lib/components/Page/AccordionSection.d.ts +10 -0
  228. package/dist/types/lib/components/Page/ArticleHeader.d.ts +8 -0
  229. package/dist/types/lib/components/Page/ArticleHeader.stories.d.ts +14 -0
  230. package/dist/types/lib/components/Page/ContactButtons.d.ts +7 -0
  231. package/dist/types/lib/components/Page/ContactSection.d.ts +2 -2
  232. package/dist/types/lib/components/Page/DashboardCard.d.ts +10 -0
  233. package/dist/types/lib/components/Page/DashboardHeader.d.ts +10 -0
  234. package/dist/types/lib/components/Page/PageDetails.d.ts +6 -0
  235. package/dist/types/lib/components/Page/Patterns.stories.d.ts +14 -1
  236. package/dist/types/lib/components/Page/index.d.ts +7 -2
  237. package/dist/types/lib/components/Profile/AccountList.d.ts +5 -0
  238. package/dist/types/lib/components/{Meta/MetaList.stories.d.ts → Profile/AccountList.stories.d.ts} +2 -4
  239. package/dist/types/lib/components/Profile/AccountListItem.d.ts +11 -0
  240. package/dist/types/lib/components/Profile/index.d.ts +2 -0
  241. package/dist/types/lib/components/index.d.ts +1 -0
  242. package/dist/usePagination-B2I-a3Aq.js +1089 -0
  243. package/package.json +3 -1
  244. package/dist/assets/MetaList.css +0 -1
  245. package/dist/companyMenuItems-E0wNQAfZ.js +0 -105
  246. package/dist/components/Meta/MetaList.js +0 -22
  247. package/dist/components/Page/Article.js +0 -6
  248. package/dist/tokens/Figma/components.json +0 -22
  249. package/dist/tokens/accent.css +0 -23
  250. package/dist/tokens/accent.json +0 -66
  251. package/dist/tokens/altinn-ds/builtin-colors.css +0 -87
  252. package/dist/tokens/altinn-ds/color/accent.css +0 -23
  253. package/dist/tokens/builtin-colors.css +0 -87
  254. package/dist/tokens/color/accent.css +0 -23
  255. package/dist/tokens/components.json +0 -22
  256. package/dist/tokens/default.json +0 -175
  257. package/dist/tokens/design-tokens/Figma/components.json +0 -22
  258. package/dist/tokens/design-tokens/primitives/size/default.json +0 -175
  259. package/dist/tokens/design-tokens/semantic/modes/main-color/accent.json +0 -66
  260. package/dist/tokens/design-tokens-build/altinn-ds/builtin-colors.css +0 -87
  261. package/dist/tokens/design-tokens-build/altinn-ds/color/accent.css +0 -23
  262. package/dist/tokens/main-color/accent.json +0 -66
  263. package/dist/tokens/modes/main-color/accent.json +0 -66
  264. package/dist/tokens/primitives/size/default.json +0 -175
  265. package/dist/tokens/semantic/modes/main-color/accent.json +0 -66
  266. package/dist/tokens/size/default.json +0 -175
  267. package/dist/types/lib/components/Page/Article.d.ts +0 -6
  268. package/dist/usePagination-CBMPUKt_.js +0 -4073
@@ -0,0 +1,1089 @@
1
+ "use client";
2
+ import { jsxs as P, jsx as c, Fragment as ce } from "react/jsx-runtime";
3
+ import { u as j, c as w, a as Ye, b as Tt, o as Pt, f as Lt, s as Rt, d as Dt, e as At, g as Ft, h as Bt, i as $t, j as zt, k as Mt, l as jt, F as Vt, m as Kt } from "./floating-ui.react-BQwG1HOM.js";
4
+ import * as Ie from "react";
5
+ import { forwardRef as p, useLayoutEffect as Ht, useEffect as L, useRef as A, useState as K, createContext as W, useContext as S, useId as ee, version as qt, useReducer as Ut, useMemo as J, isValidElement as Ge, memo as Xt, useCallback as Wt, Children as Xe } from "react";
6
+ import { a as Je, S as N } from "./index-C8BS_2GY.js";
7
+ import { u as Yt } from "./index-DyDqjche.js";
8
+ import { S as Gt } from "./XMark-Bv1I87Ev.js";
9
+ import { S as Jt } from "./ChevronUp-H8Nuww4h.js";
10
+ import { S as Qt } from "./ChevronDown-CRAwzuD3.js";
11
+ import { u as Zt } from "./useId-CsCRkvK3.js";
12
+ import { S as en } from "./Checkmark-RgzvRNxP.js";
13
+ import { flushSync as tn } from "react-dom";
14
+ var nn = function(t, n) {
15
+ var e = {};
16
+ for (var o in t) Object.prototype.hasOwnProperty.call(t, o) && n.indexOf(o) < 0 && (e[o] = t[o]);
17
+ if (t != null && typeof Object.getOwnPropertySymbols == "function")
18
+ for (var r = 0, o = Object.getOwnPropertySymbols(t); r < o.length; r++)
19
+ n.indexOf(o[r]) < 0 && Object.prototype.propertyIsEnumerable.call(t, o[r]) && (e[o[r]] = t[o[r]]);
20
+ return e;
21
+ };
22
+ const on = p((t, n) => {
23
+ var { title: e, titleId: o } = t, r = nn(t, ["title", "titleId"]);
24
+ let i = Zt();
25
+ return i = e ? o || "title-" + i : void 0, Ie.createElement(
26
+ "svg",
27
+ Object.assign({ xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", fill: "none", viewBox: "0 0 24 24", focusable: !1, role: "img", ref: n, "aria-labelledby": i }, r),
28
+ e ? Ie.createElement("title", { id: i }, e) : null,
29
+ Ie.createElement("path", { fill: "currentColor", fillRule: "evenodd", d: "M12 2.25A4.75 4.75 0 0 0 7.25 7v2.25H7A1.75 1.75 0 0 0 5.25 11v9c0 .414.336.75.75.75h12a.75.75 0 0 0 .75-.75v-9A1.75 1.75 0 0 0 17 9.25h-.25V7A4.75 4.75 0 0 0 12 2.25m3.25 7V7a3.25 3.25 0 0 0-6.5 0v2.25zM12 13a1.5 1.5 0 0 0-.75 2.8V17a.75.75 0 0 0 1.5 0v-1.2A1.5 1.5 0 0 0 12 13", clipRule: "evenodd" })
30
+ );
31
+ }), rn = typeof window < "u" ? Ht : L;
32
+ function Se(t) {
33
+ const n = A(null);
34
+ return rn(() => {
35
+ const e = document.getAnimations().filter((i) => "animationName" in i && i.animationName === t), o = e.find((i) => "animationName" in i && i.animationName === t), r = e.find((i) => {
36
+ var s;
37
+ return ((s = i.effect) == null ? void 0 : s.target) === n.current;
38
+ });
39
+ return r && r === o && (r.currentTime = 0), r && (o != null && o.currentTime) && r !== o && (r.currentTime = o.currentTime), () => {
40
+ r && (o != null && o.currentTime) && (r.currentTime = o.currentTime);
41
+ };
42
+ }, [t]), n;
43
+ }
44
+ const Qe = p(function({ "aria-label": n, className: e, ...o }, r) {
45
+ const i = Se("ds-spinner-rotate-animation"), s = Se("ds-spinner-stroke-animation"), a = j([i, r]);
46
+ return P("svg", { "aria-label": n, className: w("ds-spinner", e), ref: a, role: "img", viewBox: "0 0 50 50", ...o, children: [c("circle", { className: w("ds-spinner__background"), cx: "25", cy: "25", r: "20", fill: "none", strokeWidth: "5" }), c("circle", { className: w("ds-spinner__circle"), cx: "25", cy: "25", r: "20", fill: "none", strokeWidth: "5", ref: s })] });
47
+ }), te = p(function({ asChild: n, className: e, children: o, icon: r = !1, loading: i = !1, variant: s = "primary", ...a }, l) {
48
+ return P(n ? N : "button", {
49
+ "aria-busy": !!i || void 0,
50
+ "aria-disabled": !!i || void 0,
51
+ className: w("ds-button", e),
52
+ "data-icon": r || void 0,
53
+ "data-variant": s,
54
+ ref: l,
55
+ /* don't set type when we use `asChild` */
56
+ type: n ? void 0 : "button",
57
+ ...a,
58
+ children: [i === !0 ? c(Qe, { "aria-hidden": "true" }) : i, c(Je, { children: o })]
59
+ });
60
+ }), sn = p(function({ className: n, count: e, maxCount: o, variant: r = "base", ...i }, s) {
61
+ return c("span", { className: w("ds-badge", n), "data-count": e && o && e > o ? `${o}+` : e, "data-variant": r, ref: s, ...i });
62
+ }), an = p(function({ className: n, overlap: e = "rectangle", placement: o = "top-right", ...r }, i) {
63
+ return c("span", { className: w("ds-badge--position", n), "data-overlap": e, "data-placement": o, ref: i, ...r });
64
+ }), cn = Object.assign(sn, { Position: an });
65
+ cn.Position.displayName = "Badge.Position";
66
+ const ln = p(({ asChild: t, className: n, ...e }, o) => c(t ? N : "a", { className: w("ds-link", n), ref: o, ...e }));
67
+ ln.displayName = "Link";
68
+ const fo = p(function({ asChild: n, className: e, height: o, style: r, variant: i = "rectangle", width: s, ...a }, l) {
69
+ const f = n ? N : "span", b = i === "text", m = Se("ds-skeleton-opacity-fade"), d = j([m, l]);
70
+ return c(f, { "aria-hidden": "true", className: w("ds-skeleton", e), "data-text": b ? "-".repeat(Number(s) || 1) : void 0, "data-variant": i, ref: d, style: b ? r : { width: s, height: o, ...r }, ...a });
71
+ }), mo = p(function({ asChild: n, ...e }, o) {
72
+ return c(n ? N : "li", { ...e, ref: o });
73
+ }), Ze = (t, { asChild: n, className: e, ...o }, r) => c(n ? N : t, { className: w("ds-list", e), ref: r, ...o }), po = p(function(n, e) {
74
+ return Ze("ul", n, e);
75
+ });
76
+ p(function(n, e) {
77
+ return Ze("ol", n, e);
78
+ });
79
+ const Q = p(function({ className: n, weight: e = "medium", asChild: o, ...r }, i) {
80
+ return c(o ? N : "label", { ref: i, className: w("ds-label", n), "data-weight": e, ...r });
81
+ }), bo = p(function({ level: n = 2, className: e, asChild: o, ...r }, i) {
82
+ const s = o ? N : `h${n}`;
83
+ return c(s, { className: w("ds-heading", e), ref: i, ...r });
84
+ }), me = p(function({ className: n, asChild: e, variant: o = "default", ...r }, i) {
85
+ return c(e ? N : "p", { ref: i, className: w("ds-paragraph", n), "data-variant": o, ...r });
86
+ }), Pe = p(function({ className: n, asChild: e, ...o }, r) {
87
+ return c(e ? N : "p", { className: w("ds-validation-message", n), "data-field": "validation", ref: r, ...o });
88
+ }), ho = p(function({ "data-color": n = "info", className: e, ...o }, r) {
89
+ return c("div", { className: w("ds-alert", e), "data-color": n, ref: r, ...o });
90
+ }), Le = p(function({ type: n = "text", className: e, onChange: o, onClick: r, ...i }, s) {
91
+ return c("input", { className: w("ds-input", e), ref: s, type: n, onChange: (a) => i.readOnly || (o == null ? void 0 : o(a)), onClick: (a) => {
92
+ i.readOnly && a.preventDefault(), r == null || r(a);
93
+ }, ...i });
94
+ }), et = p(function({ asChild: n, className: e, ...o }, r) {
95
+ return c(n ? N : "button", { className: w("ds-chip", e), type: n ? void 0 : "button", ref: r, ...o });
96
+ }), tt = p(function(n, e) {
97
+ return c(et, { "data-removable": !0, ref: e, ...n });
98
+ }), nt = p(function({ asChild: n, children: e, className: o, "data-size": r, "data-color": i, ...s }, a) {
99
+ const l = s.type ?? "checkbox";
100
+ return P(n ? N : "label", { className: w("ds-chip", o), "data-size": r, "data-color": i, ref: a, children: [c(Le, { ...s, type: l }), c(Je, { children: e })] });
101
+ }), dn = p(function(n, e) {
102
+ return c(nt, { ref: e, type: "radio", ...n });
103
+ }), pe = {
104
+ Button: et,
105
+ Checkbox: nt,
106
+ Radio: dn,
107
+ Removable: tt
108
+ };
109
+ pe.Button.displayName = "Chip.Button";
110
+ pe.Checkbox.displayName = "Chip.Checkbox";
111
+ pe.Radio.displayName = "Chip.Radio";
112
+ pe.Removable.displayName = "Chip.Removable";
113
+ const un = p(function({ "aria-label": n = "Sidenavigering", asChild: e, className: o, ...r }, i) {
114
+ return c(e ? N : "nav", { "aria-label": n, className: w("ds-pagination", o), ref: i, ...r });
115
+ }), fn = p(function(n, e) {
116
+ return c(te, { ref: e, ...n });
117
+ }), mn = p(function({ asChild: n, className: e, ...o }, r) {
118
+ return c(n ? N : "li", { ref: r, ...o });
119
+ }), pn = p(function({ asChild: n, ...e }, o) {
120
+ return c(n ? N : "ul", { ref: o, ...e });
121
+ }), Re = Object.assign(un, {
122
+ List: pn,
123
+ Item: mn,
124
+ Button: fn
125
+ });
126
+ Re.List.displayName = "Pagination.List";
127
+ Re.Item.displayName = "Pagination.Item";
128
+ Re.Button.displayName = "Pagination.Button";
129
+ function bn(t) {
130
+ if (!t)
131
+ return;
132
+ const n = /* @__PURE__ */ new Map(), e = `:${Date.now().toString(36)}${Math.random().toString(36).slice(2, 5)}`;
133
+ let o = null, r = "";
134
+ const i = (a) => {
135
+ const l = [], f = [];
136
+ for (const d of a)
137
+ d.attributeName && l.push(d.target ?? t), l.push(...d.addedNodes || []), f.push(...d.removedNodes || []);
138
+ for (const d of l)
139
+ We(d) && (ke(d) ? n.set(d, d.htmlFor) : d.hasAttribute("data-field") ? n.set(d, d.id) : _e(d) && (o = d, r = d.getAttribute("aria-describedby") || ""));
140
+ for (const d of f)
141
+ We(d) && (o === d && (o = null), n.has(d) && (fe(d, ke(d) ? "for" : "id", n.get(d)), n.delete(d)));
142
+ const b = [r], m = (o == null ? void 0 : o.id) || e;
143
+ for (const [d, h] of n) {
144
+ const y = d.getAttribute("data-field"), v = y ? `${m}:${y}` : m;
145
+ h || fe(d, ke(d) ? "for" : "id", v), y === "validation" ? b.unshift(d.id) : y && b.push(d.id);
146
+ }
147
+ fe(o, "id", m), fe(o, "aria-describedby", b.join(" ").trim());
148
+ }, s = hn(i);
149
+ return s.observe(t, {
150
+ attributeFilter: ["id", "for", "aria-describedby"],
151
+ attributes: !0,
152
+ childList: !0,
153
+ subtree: !0
154
+ }), i([{ addedNodes: t.querySelectorAll("*") }]), s.takeRecords(), () => s.disconnect();
155
+ }
156
+ const We = (t) => t instanceof Element, ke = (t) => t instanceof HTMLLabelElement, _e = (t) => t instanceof HTMLElement && "validity" in t && !(t instanceof HTMLButtonElement), fe = (t, n, e) => e ? t == null ? void 0 : t.setAttribute(n, e) : t == null ? void 0 : t.removeAttribute(n);
157
+ function hn(t) {
158
+ const n = [], e = new MutationObserver((r) => {
159
+ n.length || requestAnimationFrame(o), n.push(...r);
160
+ }), o = () => {
161
+ t(n, e), n.length = 0, e.takeRecords();
162
+ };
163
+ return e;
164
+ }
165
+ const gn = p(function({ className: n, position: e, ...o }, r) {
166
+ const i = A(null), s = j([i, r]);
167
+ return L(() => bn(i.current), []), c("div", { className: w("ds-field", n), "data-position": e, ref: s, ...o });
168
+ }), yn = p(function({ className: n, ...e }, o) {
169
+ return c("div", { className: w("ds-field-affixes", n), ref: o, ...e });
170
+ }), xn = p(function({ className: n, ...e }, o) {
171
+ return c("span", { className: w("ds-field-affix", n), "aria-hidden": "true", ref: o, ...e });
172
+ }), Ne = (t, n) => t.replace("%d", Math.abs(n).toString()), vn = p(function({ limit: n, under: e = "%d tegn igjen", over: o = "%d tegn for mye", ...r }, i) {
173
+ const [s, a] = K(0), l = A(null), f = s > n, b = n - s;
174
+ return L(() => {
175
+ var y;
176
+ const m = (y = l.current) == null ? void 0 : y.closest(".ds-field"), d = Array.from((m == null ? void 0 : m.getElementsByTagName("*")) || []).find(_e), h = ({ target: v }) => {
177
+ _e(v) && a(v.value.length);
178
+ };
179
+ return d && h({ target: d }), m == null || m.addEventListener("input", h), () => m == null ? void 0 : m.removeEventListener("input", h);
180
+ }, [a]), P(ce, { children: [c("div", { "data-field": "description", className: "ds-sr-only", "aria-live": "polite", ref: l, children: f && Ne(o, b) }), f ? c(Pe, { ref: i, ...r, children: Ne(o, b) }) : c(me, { ref: i, ...r, "data-field": "validation", children: Ne(e, b) })] });
181
+ }), Cn = p(function(n, e) {
182
+ return c("div", { "data-field": "description", ref: e, ...n });
183
+ }), le = Object.assign(gn, {
184
+ Description: Cn,
185
+ Affixes: yn,
186
+ Affix: xn,
187
+ Counter: vn
188
+ });
189
+ le.Description.displayName = "Field.Description";
190
+ le.Affixes.displayName = "Field.Affixes";
191
+ le.Affix.displayName = "Field.Affix";
192
+ le.Counter.displayName = "Field.Counter";
193
+ const go = p(function({ "data-size": n, className: e, style: o, children: r, label: i, description: s, error: a, ...l }, f) {
194
+ return P(le, { "data-size": n, className: e, style: o, children: [c(Le, { type: "checkbox", ref: f, ...l }), !!i && c(Q, { weight: "regular", children: i }), !!s && c("div", { "data-field": "description", children: s }), !!a && c(Pe, { children: a })] });
195
+ }), be = W({}), wn = p(function({ value: n, defaultValue: e, className: o, onChange: r, ...i }, s) {
196
+ const a = n !== void 0, [l, f] = K(e);
197
+ let b = r;
198
+ return a || (b = (m) => {
199
+ f(m), r == null || r(m);
200
+ }, n = l), c(be.Provider, { value: {
201
+ value: n,
202
+ defaultValue: e,
203
+ onChange: b
204
+ }, children: c("div", { className: w("ds-tabs", o), ref: s, ...i }) });
205
+ }), ot = W({
206
+ elements: { current: /* @__PURE__ */ new Map() },
207
+ getOrderedItems: () => [],
208
+ setFocusableValue: () => {
209
+ },
210
+ onShiftTab: () => {
211
+ },
212
+ focusableValue: null,
213
+ orientation: "horizontal"
214
+ }), In = p(({ activeValue: t, asChild: n, orientation: e = "horizontal", onBlur: o, onFocus: r, ...i }, s) => {
215
+ const a = n ? N : "div", [l, f] = K(null), [b, m] = K(!1), d = A(/* @__PURE__ */ new Map()), h = A(null), y = j([s, h]), v = () => {
216
+ if (!h.current)
217
+ return [];
218
+ const u = Array.from(h.current.querySelectorAll("[data-roving-tabindex-item]"));
219
+ return Array.from(d.current).sort((C, g) => u.indexOf(C[1]) - u.indexOf(g[1])).map(([C, g]) => ({ value: C, element: g }));
220
+ };
221
+ return L(() => {
222
+ f(t ?? null);
223
+ }, [t]), c(ot.Provider, { value: {
224
+ elements: d,
225
+ getOrderedItems: v,
226
+ focusableValue: l,
227
+ setFocusableValue: f,
228
+ onShiftTab: () => {
229
+ m(!0);
230
+ },
231
+ orientation: e
232
+ }, children: c(a, { ...i, tabIndex: b ? -1 : 0, onBlur: (u) => {
233
+ o == null || o(u), m(!1), f(t ?? null);
234
+ }, onFocus: (u) => {
235
+ var g, x, I;
236
+ if (r == null || r(u), u.target !== u.currentTarget)
237
+ return;
238
+ const C = v();
239
+ C.length !== 0 && (l != null ? (g = d.current.get(l)) == null || g.focus() : t != null ? (x = d.current.get(t)) == null || x.focus() : (I = C.at(0)) == null || I.element.focus());
240
+ }, ref: y }) });
241
+ }), kn = p(function({ children: n, ...e }, o) {
242
+ const { value: r } = S(be);
243
+ return c(In, { role: "tablist", activeValue: r, orientation: "ambiguous", ref: o, ...e, children: n });
244
+ }), Nn = p(function({ children: n, value: e, ...o }, r) {
245
+ const { value: i } = S(be), s = e === i, [a, l] = K(!1), f = A(null), b = j([r, f]);
246
+ return L(() => {
247
+ if (!f.current)
248
+ return;
249
+ const m = f.current.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
250
+ l(m.length > 0);
251
+ }, [n]), c(ce, { children: s && c("div", { ref: b, role: "tabpanel", tabIndex: a ? void 0 : 0, ...o, children: n }) });
252
+ }), On = (t) => {
253
+ const { elements: n, getOrderedItems: e, setFocusableValue: o, focusableValue: r, onShiftTab: i, orientation: s } = S(ot);
254
+ return {
255
+ getOrderedItems: e,
256
+ isFocusable: r === t,
257
+ orientation: s,
258
+ getRovingProps: (a) => ({
259
+ ...a,
260
+ ref: (l) => {
261
+ l ? n.current.set(t, l) : n.current.delete(t);
262
+ },
263
+ onKeyDown: (l) => {
264
+ var f;
265
+ if ((f = a == null ? void 0 : a.onKeyDown) == null || f.call(a, l), l.shiftKey && l.key === "Tab") {
266
+ i();
267
+ return;
268
+ }
269
+ },
270
+ onFocus: (l) => {
271
+ var f;
272
+ (f = a == null ? void 0 : a.onFocus) == null || f.call(a, l), o(t);
273
+ },
274
+ "data-roving-tabindex-item": !0,
275
+ tabIndex: r === t ? 0 : -1
276
+ })
277
+ };
278
+ };
279
+ function Oe(t, n) {
280
+ const e = t.findIndex((o) => o.value === n);
281
+ return t.at(e === t.length - 1 ? 0 : e + 1);
282
+ }
283
+ function Ee(t, n) {
284
+ const e = t.findIndex((o) => o.value === n);
285
+ return t.at(e === 0 ? -1 : e - 1);
286
+ }
287
+ const En = p(({ value: t, asChild: n, ...e }, o) => {
288
+ const r = n ? N : "div", i = t ?? (typeof e.children == "string" ? e.children : ""), { getOrderedItems: s, getRovingProps: a, orientation: l } = On(i), f = a({
289
+ onKeyDown: (m) => {
290
+ var y;
291
+ (y = e == null ? void 0 : e.onKeyDown) == null || y.call(e, m);
292
+ const d = s();
293
+ let h;
294
+ switch (l) {
295
+ case "horizontal":
296
+ m.key === "ArrowRight" && (h = Oe(d, i)), m.key === "ArrowLeft" && (h = Ee(d, i));
297
+ break;
298
+ case "vertical":
299
+ m.key === "ArrowDown" && (h = Oe(d, i)), m.key === "ArrowUp" && (h = Ee(d, i));
300
+ break;
301
+ case "ambiguous":
302
+ ["ArrowRight", "ArrowDown"].includes(m.key) && (h = Oe(d, i)), ["ArrowLeft", "ArrowUp"].includes(m.key) && (h = Ee(d, i));
303
+ }
304
+ m.key === "Home" && (h = d[0]), m.key === "End" && (h = d[d.length - 1]), h && (m.preventDefault(), h.element.focus());
305
+ }
306
+ }), b = j([o, f.ref]);
307
+ return c(r, { ...e, ...f, ref: b, children: e.children });
308
+ }), Sn = p(function({ value: n, id: e, ...o }, r) {
309
+ const i = S(be), s = e ?? `tab-${ee()}`;
310
+ return c(En, { value: n, ...o, asChild: !0, children: c("button", { ...o, "aria-selected": i.value === n, id: s, onClick: () => {
311
+ var a;
312
+ return (a = i.onChange) == null ? void 0 : a.call(i, n);
313
+ }, ref: r, role: "tab", type: "button" }) });
314
+ }), De = Object.assign(wn, {
315
+ List: kn,
316
+ Tab: Sn,
317
+ Panel: Nn
318
+ });
319
+ De.Tab.displayName = "Tabs.Tab";
320
+ De.List.displayName = "Tabs.List";
321
+ De.Panel.displayName = "Tabs.Panel";
322
+ const rt = ({ children: t }) => {
323
+ const n = ee(), [e, o] = K(n);
324
+ return c(Ae.Provider, { value: { popoverId: e, setPopoverId: o }, children: t });
325
+ };
326
+ rt.displayName = "PopoverTriggerContext";
327
+ const Ae = W({}), _n = p(function({ id: n, className: e, onClose: o, onOpen: r, open: i, variant: s = "default", placement: a = "top", autoPlacement: l = !0, asChild: f = !1, ...b }, m) {
328
+ const d = f ? N : "div", h = A(null), y = j([h, m]), { popoverId: v, setPopoverId: u } = S(Ae), [C, g] = K(!1), x = i ?? C;
329
+ return L(() => {
330
+ var F;
331
+ const I = h.current, O = (z) => {
332
+ var G;
333
+ const B = z.target, H = (G = B == null ? void 0 : B.closest) == null ? void 0 : G.call(B, `[popovertarget="${I == null ? void 0 : I.id}"]`), M = !H && !(I != null && I.contains(B));
334
+ H && (z.preventDefault(), g((T) => !T), r == null || r()), M && (g(!1), o == null || o());
335
+ }, _ = (z) => {
336
+ z.key !== "Escape" || !x || (z.preventDefault(), g(!1), o == null || o());
337
+ };
338
+ return (F = I == null ? void 0 : I.togglePopover) == null || F.call(I, x), document.addEventListener("click", O, !0), document.addEventListener("keydown", _), () => {
339
+ document.removeEventListener("click", O, !0), document.removeEventListener("keydown", _);
340
+ };
341
+ }, [x]), L(() => {
342
+ const I = h.current, O = document.querySelector(`[popovertarget="${I == null ? void 0 : I.id}"]`);
343
+ if (I && O && x)
344
+ return Ye(O, I, () => {
345
+ Tt(O, I, {
346
+ placement: a,
347
+ strategy: "fixed",
348
+ middleware: [
349
+ Pt((_) => {
350
+ const F = getComputedStyle(_.elements.floating, "::before");
351
+ return parseFloat(F.height);
352
+ }),
353
+ ...l ? [Lt({ fallbackAxisSideDirection: "start" }), Rt()] : [],
354
+ Tn
355
+ ]
356
+ }).then(({ x: _, y: F }) => {
357
+ I.style.translate = `${_}px ${F}px`;
358
+ });
359
+ });
360
+ }, [x, a, n, l]), L(() => {
361
+ n && (u == null || u(n));
362
+ }, [n]), c(d, {
363
+ className: w("ds-popover", e),
364
+ id: n || v,
365
+ // @ts-ignore @types/react-dom does not understand popover yet
366
+ popover: "manual",
367
+ "data-variant": s,
368
+ ref: y,
369
+ ...b
370
+ });
371
+ }), Tn = {
372
+ name: "ArrowPseudoElement",
373
+ fn(t) {
374
+ const { elements: n, rects: e, placement: o } = t;
375
+ let r = `${Math.round(e.reference.width / 2 + e.reference.x - t.x)}px`, i = `${Math.round(e.reference.height / 2 + e.reference.y - t.y)}px`;
376
+ switch (e.reference.width > e.floating.width && (r = `${Math.round(e.floating.width / 2)}px`), e.reference.height > e.floating.height && (i = `${Math.round(e.floating.height / 2)}px`), o.split("-")[0]) {
377
+ case "top":
378
+ i = "100%";
379
+ break;
380
+ case "right":
381
+ r = "0";
382
+ break;
383
+ case "bottom":
384
+ i = "0";
385
+ break;
386
+ case "left":
387
+ r = "100%";
388
+ break;
389
+ }
390
+ return n.floating.setAttribute("data-placement", o.split("-")[0]), n.floating.style.setProperty("--ds-popover-arrow-x", r), n.floating.style.setProperty("--ds-popover-arrow-y", i), t;
391
+ }
392
+ }, Pn = p(function({ id: n, inline: e, asChild: o, ...r }, i) {
393
+ const { popoverId: s } = S(Ae), a = o ? N : e ? "button" : te, l = Object.assign({
394
+ [qt.startsWith("19") ? "popoverTarget" : "popovertarget"]: s,
395
+ ...e ? {
396
+ "data-popover": "inline"
397
+ } : {}
398
+ }, r);
399
+ return c(a, { ref: i, ...l });
400
+ }), it = Object.assign(_n, {
401
+ TriggerContext: rt,
402
+ Trigger: Pn
403
+ });
404
+ it.TriggerContext.displayName = "Popover.TriggerContext";
405
+ it.Trigger.displayName = "Popover.Trigger";
406
+ const Fe = W({
407
+ current: null
408
+ }), st = ({ children: t }) => {
409
+ const n = A(null);
410
+ return c(Fe.Provider, { value: n, children: t });
411
+ };
412
+ st.displayName = "DialogTriggerContext";
413
+ const Ln = p(function({ asChild: n, children: e, className: o, closeButton: r = "Lukk dialogvindu", closedby: i = "closerequest", modal: s = !0, onClose: a, open: l, ...f }, b) {
414
+ const m = S(Fe), d = A(null), h = n ? N : "dialog", y = j([m, b, d]), v = s ? "showModal" : "show";
415
+ return L(() => {
416
+ var u;
417
+ return (u = d.current) == null ? void 0 : u[l ? v : "close"]();
418
+ }, [l]), L(() => {
419
+ const u = d.current, C = (x) => {
420
+ var F;
421
+ const { clientY: I, clientX: O, target: _ } = x;
422
+ if (x instanceof KeyboardEvent)
423
+ return i === "none" && x.key === "Escape" && x.preventDefault();
424
+ if (!((F = window.getSelection()) != null && F.toString()) && u && _ === u && i === "any") {
425
+ const { top: z, left: B, right: H, bottom: M } = u.getBoundingClientRect();
426
+ z <= I && I <= M && B <= O && O <= H || u == null || u.close();
427
+ }
428
+ }, g = () => {
429
+ const x = u == null ? void 0 : u.querySelector("[autofocus]");
430
+ document.activeElement !== x && (x == null || x.focus());
431
+ };
432
+ return u == null || u.addEventListener("animationend", g), u == null || u.addEventListener("click", C), u == null || u.addEventListener("keydown", C), () => {
433
+ u == null || u.removeEventListener("animationend", g), u == null || u.removeEventListener("click", C), u == null || u.removeEventListener("keydown", C);
434
+ };
435
+ }, [i]), L(() => {
436
+ var C;
437
+ const u = (g) => a == null ? void 0 : a(g);
438
+ return (C = d.current) == null || C.addEventListener("close", u), () => {
439
+ var g;
440
+ return (g = d.current) == null ? void 0 : g.removeEventListener("close", u);
441
+ };
442
+ }, [a]), P(h, { className: w("ds-dialog", o), ref: y, "data-modal": s, ...f, children: [r !== !1 && c("form", { method: "dialog", children: c(te, { "aria-label": r, autoFocus: !0, "data-color": "neutral", icon: !0, name: "close", type: "submit", variant: "tertiary" }) }), e] });
443
+ }), Rn = p(function({ asChild: n, className: e, ...o }, r) {
444
+ return c(n ? N : "div", { className: w("ds-dialog__block", e), ref: r, ...o });
445
+ }), Dn = p(function({ asChild: n, ...e }, o) {
446
+ const r = S(Fe);
447
+ return c(n ? N : te, { "aria-haspopup": "dialog", onClick: () => {
448
+ var a, l, f;
449
+ ((a = r.current) == null ? void 0 : a.getAttribute("data-modal")) === "true" ? (l = r.current) == null || l.showModal() : (f = r.current) == null || f.show();
450
+ }, ref: o, ...e });
451
+ }), Be = Object.assign(Ln, {
452
+ Block: Rn,
453
+ TriggerContext: st,
454
+ Trigger: Dn
455
+ });
456
+ Be.Block.displayName = "Dialog.Block";
457
+ Be.TriggerContext.displayName = "Dialog.TriggerContext";
458
+ Be.Trigger.displayName = "Dialog.Trigger";
459
+ const Y = W(void 0), at = W({
460
+ activeIndex: 0
461
+ }), An = (t, n) => {
462
+ switch (n.type) {
463
+ case "SET_ACTIVE_INDEX":
464
+ return {
465
+ ...t,
466
+ activeIndex: n.payload
467
+ };
468
+ default:
469
+ return t;
470
+ }
471
+ }, ct = W(() => {
472
+ throw new Error("ComboboxIdDispatch must be used within a provider");
473
+ }), Fn = ({ children: t }) => {
474
+ const [n, e] = Ut(An, {
475
+ activeIndex: 0
476
+ });
477
+ return c(at.Provider, { value: n, children: c(ct.Provider, { value: e, children: t }) });
478
+ };
479
+ function $e() {
480
+ return S(ct);
481
+ }
482
+ function he() {
483
+ return S(at);
484
+ }
485
+ const Z = (t, n) => {
486
+ const e = {}, o = {};
487
+ let r = 0;
488
+ const i = t.length;
489
+ for (; r < i; )
490
+ o[t[r]] = 1, r += 1;
491
+ for (const s in n)
492
+ Object.prototype.hasOwnProperty.call(o, s) || (e[s] = n[s]);
493
+ return e;
494
+ }, lt = p(({ asChild: t, interactive: n, id: e, className: o, ...r }, i) => {
495
+ if (n && !e)
496
+ throw new Error("If ComboboxCustom is interactive, it must have an id");
497
+ const s = t ? N : "div", a = ee(), { activeIndex: l } = he(), f = S(Y);
498
+ if (!f)
499
+ throw new Error("ComboboxCustom must be used within a Combobox");
500
+ const { customIds: b, setListRef: m, getItemProps: d, size: h } = f, y = J(() => e && b.indexOf(e) || 0, [e, b]), v = j([
501
+ (u) => {
502
+ m(y, u);
503
+ },
504
+ i
505
+ ]);
506
+ return c(Q, { "data-size": h, asChild: !0, children: c(s, { ref: v, tabIndex: -1, className: w("ds-combobox__custom", o), id: e || a, role: "option", "aria-selected": l === y, "data-active": l === y, ...Z(["interactive"], r), ...Z(["onClick", "onPointerLeave"], d()) }) });
507
+ });
508
+ function Bn(t) {
509
+ return Ge(t) && t.type === lt;
510
+ }
511
+ function $n(t) {
512
+ return Bn(t) && t.props.interactive === !0;
513
+ }
514
+ const dt = "internal-option-", D = (t) => dt + t, Te = (t) => t.slice(dt.length), ae = (t, n) => {
515
+ const e = t.value;
516
+ t.value = n;
517
+ const o = t._valueTracker;
518
+ typeof o < "u" && o.setValue(e), t.dispatchEvent(new Event("change", { bubbles: !0 }));
519
+ }, zn = p(function({ "aria-label": n = "Tøm", onClick: e, ...o }, r) {
520
+ return c(te, { ref: r, variant: "tertiary", type: "reset", "aria-label": n, onClick: (s) => {
521
+ var f;
522
+ const a = s.target;
523
+ let l = null;
524
+ if (a instanceof HTMLElement && (l = (f = a.closest(".ds-search")) == null ? void 0 : f.querySelector("input")), !l)
525
+ throw new Error("Input is missing");
526
+ if (!(l instanceof HTMLInputElement))
527
+ throw new Error("Input is not an input element");
528
+ s.preventDefault(), ae(l, ""), l.focus(), e == null || e(s);
529
+ }, icon: !0, ...o });
530
+ }), Mn = p(function({ children: n = "Søk", ...e }, o) {
531
+ return c(te, { ref: o, type: "submit", ...e, children: n });
532
+ }), jn = p(function({ ...n }, e) {
533
+ return c(Le, {
534
+ ref: e,
535
+ type: "search",
536
+ /* We need an empty placeholder for the clear button to be able to show/hide */
537
+ placeholder: "",
538
+ ...n
539
+ });
540
+ }), Vn = p(function({ className: n, ...e }, o) {
541
+ return c("div", { ref: o, className: w("ds-search", n), ...e });
542
+ }), ze = Object.assign(Vn, {
543
+ Clear: zn,
544
+ Button: Mn,
545
+ Input: jn
546
+ });
547
+ ze.Clear.displayName = "Search.Clear";
548
+ ze.Button.displayName = "Search.Button";
549
+ ze.Input.displayName = "Search.Input";
550
+ const Kn = W(null), Hn = (t, n) => {
551
+ const e = S(Kn), o = ee(), r = t.id ?? `${n}-${o}`, i = t.errorId ?? `${n}-error-${o}`, s = `${n}-description-${o}`, a = t.size ?? (e == null ? void 0 : e.size) ?? "md", l = (e == null ? void 0 : e.disabled) || (t == null ? void 0 : t.disabled), f = !l && !!(t.error || e != null && e.error);
552
+ return {
553
+ hasError: f,
554
+ errorId: i,
555
+ descriptionId: s,
556
+ size: a,
557
+ inputProps: {
558
+ id: r,
559
+ disabled: l,
560
+ "aria-invalid": f ? !0 : void 0,
561
+ "aria-describedby": w(t["aria-describedby"], !!(t != null && t.description) && typeof (t == null ? void 0 : t.description) == "string" && s, f && !(e != null && e.error) && i, f && !!(e != null && e.error) && (e == null ? void 0 : e.errorId)) || void 0
562
+ }
563
+ };
564
+ }, ut = ({ size: t, error: n, formFieldProps: e }) => c("div", { className: "ds-combobox__error-message", id: e.errorId, "aria-live": "polite", "aria-relevant": "additions removals", children: n && c(Pe, { "data-size": t, children: n }) });
565
+ ut.displayName = "ComboboxError";
566
+ const ft = () => {
567
+ const t = S(Y);
568
+ if (!t)
569
+ throw new Error("ComboboxContext is missing");
570
+ const { size: n, readOnly: e, disabled: o, selectedOptions: r, chipSrLabel: i, handleSelectOption: s, inputRef: a } = t;
571
+ return c(ce, { children: Object.keys(r).map((l) => c(tt, { "data-size": n, disabled: o, onKeyDown: (f) => {
572
+ var b;
573
+ e || o || f.key === "Enter" && (f.stopPropagation(), s({
574
+ option: r[l],
575
+ remove: !0
576
+ }), (b = a == null ? void 0 : a.current) == null || b.focus());
577
+ }, onClick: () => {
578
+ e || o || s({
579
+ option: r[l],
580
+ remove: !0
581
+ });
582
+ }, "aria-label": i(r[l]), children: r[l].label }, l)) });
583
+ };
584
+ ft.displayName = "ComboboxChips";
585
+ const mt = p((t, n) => {
586
+ const e = S(Y);
587
+ if (!e)
588
+ throw new Error("ComboboxContext is missing");
589
+ const { readOnly: o, disabled: r, clearButtonLabel: i, handleSelectOption: s } = e;
590
+ return c("button", { ...t, ref: n, disabled: r, className: w("ds-combobox__clear-button", "ds-focus"), onClick: () => {
591
+ o || r || s({ option: null, clear: !0 });
592
+ }, onKeyDown: (a) => {
593
+ o || r || a.key === "Enter" && (a.stopPropagation(), s({ option: null, clear: !0 }));
594
+ }, type: "button", "aria-label": i, children: c(Gt, { fontSize: "1.5em", title: "Clear selection" }) });
595
+ });
596
+ mt.displayName = "ComboboxClearButton";
597
+ const pt = ({ hideClearButton: t, listId: n, error: e, hideChips: o, handleKeyDown: r, ...i }) => {
598
+ const s = S(Y), a = $e(), l = A(null);
599
+ if (!s)
600
+ throw new Error("ComboboxContext is missing");
601
+ const f = (R) => {
602
+ a == null || a({ type: "SET_ACTIVE_INDEX", payload: R });
603
+ }, { forwareddRef: b, readOnly: m, disabled: d, open: h, inputRef: y, refs: v, inputValue: u, multiple: C, selectedOptions: g, formFieldProps: x, htmlSize: I, options: O, setOpen: _, getReferenceProps: F, setInputValue: z, handleSelectOption: B, size: H } = s, M = j([b, y]), G = (R) => {
604
+ const $ = R.target.value;
605
+ z($), f(0);
606
+ for (const q of Object.values(O))
607
+ if (q.label.toLowerCase() === $.toLowerCase()) {
608
+ if (g[D(q.value)])
609
+ continue;
610
+ B({ option: q });
611
+ }
612
+ }, T = !t && Object.keys(g).length > 0, ne = F({
613
+ ref: v == null ? void 0 : v.setReference,
614
+ role: null,
615
+ "aria-controls": null,
616
+ "aria-expanded": null,
617
+ "aria-haspopup": null,
618
+ /* If we click the wrapper, toggle open, set index to first option, and focus the input */
619
+ onClick(R) {
620
+ var $, q;
621
+ d || m || ($ = l.current) != null && $.contains(R.target) || (_(!h), f(0), (q = y.current) == null || q.focus());
622
+ },
623
+ /* Handles list navigation */
624
+ onKeyDown: r,
625
+ // preventDefault on keydown to avoid sending in form
626
+ onKeyPress(R) {
627
+ R.key === "Enter" && R.preventDefault();
628
+ }
629
+ });
630
+ return c(me, { "data-size": H, asChild: !0, children: P("div", { ...ne, "aria-disabled": d ? "true" : void 0, className: w("ds-textfield__input", "ds-combobox__input__wrapper", m && "ds-combobox--readonly", e && "ds-combobox--error"), children: [P("div", { className: "ds-combobox__chip-and-input", children: [C && !o && c(ft, {}), c(me, { "data-size": H, asChild: !0, children: c("input", { ref: M, "aria-activedescendant": ne["aria-activedescendant"], readOnly: m, "aria-autocomplete": "list", role: "combobox", "aria-expanded": h, "aria-controls": h ? n : void 0, autoComplete: "off", size: I, value: u, ...Z(["style", "className"], i), ...x.inputProps, className: "ds-combobox__input", onChange: (R) => {
631
+ var $;
632
+ G(R), !h && _(!0), ($ = i.onChange) == null || $.call(i, R);
633
+ } }) })] }), T && c(mt, { ref: l }), c("div", { className: "ds-combobox__arrow", children: h ? c(Jt, { title: "arrow up", fontSize: "1.5em" }) : c(Qt, { title: "arrow down", fontSize: "1.5em" }) })] }) });
634
+ };
635
+ pt.displayName = "ComboboxInput";
636
+ const bt = ({ label: t, description: n, hideLabel: e, size: o, readOnly: r, formFieldProps: i }) => P(ce, { children: [t && P(Q, { "data-size": o, htmlFor: i.inputProps.id, className: w("ds-combobox__label", e && "ds-sr-only"), children: [r && c(on, { "aria-hidden": !0, className: "ds-combobox__readonly__icon" }), t] }), n && c(me, { asChild: !0, "data-size": o, children: c("div", { id: i.descriptionId, className: w("ds-combobox__description", e && "ds-sr-only"), children: n }) })] });
637
+ bt.displayName = "ComboboxLabel";
638
+ const ht = ({ selectedOptions: t, multiple: n, name: e }) => {
639
+ const o = Object.keys(t).map((r) => Te(r));
640
+ return c("select", { name: e, multiple: n, style: { display: "none" }, value: n ? o : o[0], onChange: () => {
641
+ }, children: o.map((r) => c("option", { value: r }, r)) });
642
+ };
643
+ ht.displayName = "ComboboxNative";
644
+ const gt = p(({ children: t, className: n, ...e }, o) => c("span", { className: w("ds-combobox__option__description", n), ref: o, ...e, children: t }));
645
+ gt.displayName = "ComboboxOptionDescription";
646
+ const yt = ({ multiple: t, selected: n }) => c("div", { className: w(t && "ds-combobox__option__icon-wrapper", n && "ds-combobox__option__icon-wrapper--selected"), children: n && c(en, { className: "ds-combobox__option__icon-wrapper__icon", "aria-hidden": !0 }) });
647
+ yt.displayName = "SelectedIcon";
648
+ function Me(t, n = 50) {
649
+ const e = A(null);
650
+ return L(() => () => {
651
+ e.current && clearTimeout(e.current);
652
+ }, []), (...r) => {
653
+ e.current && clearTimeout(e.current), e.current = window.setTimeout(() => {
654
+ t(...r);
655
+ }, n);
656
+ };
657
+ }
658
+ const qn = ({ id: t, ref: n, value: e }) => {
659
+ const o = ee(), r = t || o, i = S(Y), { activeIndex: s } = he(), a = $e();
660
+ if (!i)
661
+ throw new Error("ComboboxOption must be used within a Combobox");
662
+ const { selectedOptions: l, onOptionClick: f, setListRef: b, customIds: m, filteredOptions: d } = i, h = J(() => d.indexOf(D(String(e))) + m.length, [m.length, d, e]), y = j([
663
+ (g) => {
664
+ b(h, g);
665
+ },
666
+ n
667
+ ]);
668
+ if (h === -1)
669
+ throw new Error("Internal error: ComboboxOption did not find index");
670
+ const v = l[D(e)], u = s === h;
671
+ L(() => {
672
+ u && (a == null || a({ type: "SET_ACTIVE_INDEX", payload: h }));
673
+ }, [o, t, a, u, h]);
674
+ const C = Me(() => f(e), 50);
675
+ return {
676
+ id: r,
677
+ ref: y,
678
+ selected: v,
679
+ active: u,
680
+ onOptionClick: C
681
+ };
682
+ }, je = Xt(p(({ value: t, description: n, children: e, className: o, ...r }, i) => {
683
+ const s = ee(), { id: a, ref: l, selected: f, active: b, onOptionClick: m } = qn({
684
+ id: r.id,
685
+ ref: i,
686
+ value: t
687
+ }), d = S(Y);
688
+ if (!d)
689
+ throw new Error("ComboboxOption must be used within a Combobox");
690
+ const { size: h, multiple: y, getItemProps: v } = d, u = v();
691
+ return c(Q, { "data-size": "md", asChild: !0, children: P("button", {
692
+ ref: l,
693
+ id: a,
694
+ // biome-ignore lint/a11y/useSemanticElements: biome wants me to use the <option> element
695
+ role: "option",
696
+ type: "button",
697
+ "aria-selected": !!f,
698
+ "aria-labelledby": s,
699
+ tabIndex: -1,
700
+ onClick: (C) => {
701
+ var g;
702
+ m(), (g = r.onClick) == null || g.call(r, C);
703
+ },
704
+ className: w("ds-combobox__option", b && "ds-combobox__option--active", y && "ds-combobox__option--multiple", o),
705
+ ...Z(["displayValue"], r),
706
+ ...Z(["onClick", "onPointerLeave"], u),
707
+ children: [c(Q, { asChild: !0, "data-size": h, children: c("span", { children: c(yt, { multiple: y, selected: !!f }) }) }), P(Q, { className: "ds-combobox__option__label", "data-size": h, id: s, children: [e, n && c(gt, { children: n })] })]
708
+ }) });
709
+ }));
710
+ je.displayName = "ComboboxOption";
711
+ function Un(t) {
712
+ return Ge(t) && t.type === je;
713
+ }
714
+ const Xn = (t) => !!t;
715
+ function Wn({ children: t, inputValue: n, multiple: e, filter: o = (i, s) => s.label.toLowerCase().startsWith(i.toLowerCase()), initialValue: r }) {
716
+ const i = Wt(o, [o]), { optionsChildren: s, customIds: a, restChildren: l, interactiveChildren: f } = J(() => Xe.toArray(t).reduce((g, x) => {
717
+ if (Un(x))
718
+ g.optionsChildren.push(x);
719
+ else if (g.restChildren.push(x), $n(x)) {
720
+ const I = x;
721
+ if (g.interactiveChildren.push(I), !I.props.id)
722
+ throw new Error("If ComboboxCustom is interactive, it must have an id");
723
+ g.customIds.push(I.props.id);
724
+ }
725
+ return g;
726
+ }, {
727
+ optionsChildren: [],
728
+ customIds: [],
729
+ restChildren: [],
730
+ interactiveChildren: []
731
+ }), [t]), b = J(() => {
732
+ const u = [], C = {};
733
+ return s.map((g) => {
734
+ const x = g.props;
735
+ let I = x.displayValue || "";
736
+ if (!x.displayValue) {
737
+ let O = "";
738
+ Xe.forEach(x.children, (_) => {
739
+ if (typeof _ == "string")
740
+ O += _;
741
+ else
742
+ throw new Error("If ComboboxOption is not a string, it must have a displayValue prop");
743
+ }), I = O;
744
+ }
745
+ u.includes(x.value) && console.warn(`Combobox has multiple options with the same value: ${x.value}`), u.push(x.value), C[D(String(x.value))] = {
746
+ value: String(x.value),
747
+ label: I,
748
+ displayValue: x.displayValue,
749
+ description: x.description
750
+ };
751
+ }), C;
752
+ }, [s]), m = J(() => ((r == null ? void 0 : r.map((u) => D(u))) || []).reduce((u, C) => {
753
+ const g = b[C];
754
+ return Xn(g) && (u[C] = g), u;
755
+ }, {}), [r, b]), [d, h] = K(m), { filteredOptions: y, filteredOptionsChildren: v } = J(() => {
756
+ const u = [], C = Object.keys(b).map((g, x) => {
757
+ if (!e && Object.keys(d).length === 1 || e && d[g] || i(n, b[g]))
758
+ return u.push(g), s[x];
759
+ }).filter((g) => g);
760
+ return { filteredOptions: u, filteredOptionsChildren: C };
761
+ }, [
762
+ i,
763
+ n,
764
+ e,
765
+ b,
766
+ s,
767
+ d
768
+ ]);
769
+ return {
770
+ filteredOptionsChildren: v,
771
+ filteredOptions: y,
772
+ restChildren: l,
773
+ options: b,
774
+ customIds: a,
775
+ selectedOptions: d,
776
+ interactiveChildren: f,
777
+ setSelectedOptions: h
778
+ };
779
+ }
780
+ const Yn = ({ readOnly: t, disabled: n, interactiveChildren: e, filteredOptions: o, inputValue: r, selectedOptions: i, multiple: s, open: a, options: l, setOpen: f, handleSelectOption: b }) => {
781
+ const { activeIndex: m } = he();
782
+ return Me((y) => {
783
+ if (!(t || n) && y)
784
+ switch (y.key) {
785
+ case "ArrowDown":
786
+ if (y.preventDefault(), a)
787
+ break;
788
+ f(!0);
789
+ break;
790
+ case "ArrowUp":
791
+ if (y.preventDefault(), m !== 0)
792
+ break;
793
+ f(!1);
794
+ break;
795
+ case "Enter": {
796
+ if (y.preventDefault(), !a)
797
+ break;
798
+ if (m <= e.length - 1) {
799
+ const C = e[m];
800
+ if (C.props.onSelect) {
801
+ C == null || C.props.onSelect();
802
+ return;
803
+ }
804
+ }
805
+ const v = m - e.length, u = o[v];
806
+ b({ option: l[u] });
807
+ break;
808
+ }
809
+ case "Backspace":
810
+ if (!s) {
811
+ const v = Object.keys(i).pop();
812
+ v && b({
813
+ option: i[v],
814
+ remove: !0
815
+ });
816
+ break;
817
+ }
818
+ if (r === "" && s) {
819
+ const v = Object.keys(i).pop();
820
+ v && b({
821
+ option: i[v],
822
+ remove: !0
823
+ });
824
+ }
825
+ break;
826
+ }
827
+ }, 20);
828
+ }, Gn = ({ listRef: t }) => {
829
+ const [n, e] = K(!1), { activeIndex: o } = he(), r = $e(), { refs: i, floatingStyles: s, context: a } = Dt({
830
+ open: n,
831
+ onOpenChange: (y) => {
832
+ y || r == null || r({ type: "SET_ACTIVE_INDEX", payload: 0 }), tn(() => {
833
+ i.floating.current && !y && (i.floating.current.scrollTop = 0), setTimeout(() => {
834
+ e(y);
835
+ }, 1);
836
+ });
837
+ },
838
+ whileElementsMounted: (y, v, u) => (Ye(y, v, u), () => {
839
+ v.scrollTop = 0;
840
+ }),
841
+ middleware: [
842
+ At({ padding: 10 }),
843
+ Ft({
844
+ apply({ rects: y, elements: v }) {
845
+ requestAnimationFrame(() => {
846
+ Object.assign(v.floating.style, {
847
+ width: `${y.reference.width}px`,
848
+ maxHeight: "200px"
849
+ });
850
+ });
851
+ }
852
+ }),
853
+ Bt(10)
854
+ ]
855
+ }), l = $t(a, { role: "listbox" }), f = zt(a), b = Mt(a, {
856
+ listRef: t,
857
+ activeIndex: o,
858
+ virtual: !0,
859
+ scrollItemIntoView: !0,
860
+ enabled: n,
861
+ focusItemOnHover: !0,
862
+ onNavigate: (y) => {
863
+ r == null || r({ type: "SET_ACTIVE_INDEX", payload: y || 0 });
864
+ }
865
+ }), { getReferenceProps: m, getFloatingProps: d, getItemProps: h } = jt([l, f, b]);
866
+ return {
867
+ open: n,
868
+ setOpen: e,
869
+ activeIndex: o,
870
+ refs: i,
871
+ floatingStyles: s,
872
+ context: a,
873
+ getReferenceProps: m,
874
+ getFloatingProps: d,
875
+ getItemProps: h
876
+ };
877
+ }, Jn = p(({ value: t, initialValue: n = [], onValueChange: e, label: o, hideLabel: r = !1, description: i, multiple: s = !1, disabled: a = !1, readOnly: l = !1, hideChips: f = !1, clearButtonLabel: b = "Fjern alt", hideClearButton: m = !1, error: d, errorId: h, id: y, name: v, portal: u = !0, htmlSize: C = 0, virtual: g = !1, children: x, style: I, size: O = "md", loading: _, loadingLabel: F = "Laster...", filter: z, chipSrLabel: B = (T) => "Slett " + T.label, className: H, ...M }, G) => {
878
+ const T = A(null), ne = A(null), R = A([]), [$, q] = K(M.inputValue || "");
879
+ L(() => {
880
+ typeof M.inputValue == "string" && q(M.inputValue);
881
+ }, [M.inputValue]);
882
+ const { selectedOptions: oe, options: U, restChildren: Ct, interactiveChildren: wt, customIds: It, filteredOptionsChildren: ye, filteredOptions: Ve, setSelectedOptions: re } = Wn({
883
+ children: x,
884
+ inputValue: $,
885
+ filter: z,
886
+ multiple: s,
887
+ initialValue: n
888
+ }), { open: xe, setOpen: ve, refs: de, floatingStyles: kt, context: Ke, getReferenceProps: Nt, getFloatingProps: Ot, getItemProps: Et } = Gn({
889
+ listRef: R
890
+ }), ie = Hn({
891
+ disabled: a,
892
+ error: d,
893
+ errorId: h,
894
+ size: O,
895
+ description: i,
896
+ id: y
897
+ }, "combobox");
898
+ L(() => {
899
+ if (t && t.length > 0 && !s) {
900
+ const E = U[D(t[0])];
901
+ T.current && ae(T.current, (E == null ? void 0 : E.label) || "");
902
+ }
903
+ }, [s, t, U]), L(() => {
904
+ if (t && Object.keys(U).length >= 0) {
905
+ const E = t.map((k) => U[D(k)]);
906
+ re(E.reduce((k, se) => (k[D(se.value)] = se, k), {}));
907
+ }
908
+ }, [s, t, U, re]);
909
+ const Ce = Me((E) => {
910
+ var He, qe;
911
+ const { option: k, clear: se, remove: _t } = E;
912
+ if (se) {
913
+ re({}), T.current && ae(T.current, ""), e == null || e([]);
914
+ return;
915
+ }
916
+ if (!k)
917
+ return;
918
+ if (_t) {
919
+ const V = { ...oe };
920
+ delete V[D(k.value)], re(V), e == null || e(Object.keys(V).map((ue) => Te(ue)));
921
+ return;
922
+ }
923
+ const X = { ...oe };
924
+ if (s)
925
+ X[D(k.value)] ? delete X[D(k.value)] : X[D(k.value)] = k, T.current && ae(T.current, ""), (He = T.current) == null || He.focus();
926
+ else {
927
+ for (const V of Object.keys(X))
928
+ delete X[V];
929
+ X[D(k.value)] = k, T.current && ae(T.current, (k == null ? void 0 : k.label) || ""), setTimeout(() => {
930
+ var V, ue, Ue;
931
+ (Ue = T.current) == null || Ue.setSelectionRange(((V = k == null ? void 0 : k.label) == null ? void 0 : V.length) || 0, ((ue = k == null ? void 0 : k.label) == null ? void 0 : ue.length) || 0);
932
+ }, 0);
933
+ }
934
+ re(X), e == null || e(Object.keys(X).map((V) => Te(V))), !s && ve(!1), (qe = de.domReference.current) == null || qe.focus();
935
+ }, 50), St = Yn({
936
+ filteredOptions: Ve,
937
+ selectedOptions: oe,
938
+ readOnly: ie.readOnly || !1,
939
+ disabled: a,
940
+ multiple: s,
941
+ inputValue: $,
942
+ options: U,
943
+ open: xe,
944
+ interactiveChildren: wt,
945
+ setOpen: ve,
946
+ handleSelectOption: Ce
947
+ }), we = Yt({
948
+ count: Object.keys(ye).length,
949
+ getScrollElement: () => g ? de.floating.current : null,
950
+ estimateSize: () => 70,
951
+ measureElement: (E) => E.getBoundingClientRect().height,
952
+ overscan: 7
953
+ });
954
+ return P(Y.Provider, { value: {
955
+ size: O,
956
+ options: U,
957
+ selectedOptions: oe,
958
+ multiple: s,
959
+ disabled: a,
960
+ readOnly: l,
961
+ open: xe,
962
+ inputRef: T,
963
+ refs: de,
964
+ inputValue: $,
965
+ formFieldProps: ie,
966
+ htmlSize: C,
967
+ clearButtonLabel: b,
968
+ customIds: It,
969
+ filteredOptions: Ve,
970
+ setInputValue: q,
971
+ setOpen: ve,
972
+ getReferenceProps: Nt,
973
+ getItemProps: Et,
974
+ /* Recieves the value of the option, and searches for it in our values lookup */
975
+ onOptionClick: (E) => {
976
+ if (l || a)
977
+ return;
978
+ const k = U[D(E)];
979
+ Ce({ option: k });
980
+ },
981
+ handleSelectOption: Ce,
982
+ chipSrLabel: B,
983
+ listRef: R,
984
+ forwareddRef: G,
985
+ setListRef: (E, k) => {
986
+ R.current[E] = k;
987
+ }
988
+ }, children: [P("div", { className: w("ds-combobox", `ds-combobox--${O}`, a && "ds-combobox__disabled", H), style: I, ref: ne, children: [v && c(ht, { name: v, selectedOptions: oe, multiple: s }), c(bt, { label: o, description: i, size: O, readOnly: l, hideLabel: r, formFieldProps: ie }), c(pt, { ...Z(["inputValue"], M), hideClearButton: m, listId: Ke.floatingId || "", error: d, hideChips: f, handleKeyDown: St, "aria-busy": _ }), c(ut, { size: O, error: d, formFieldProps: ie })] }), xe && c(Vt, { root: u ? null : ne, children: c(Kt, { context: Ke, initialFocus: -1, visuallyHiddenDismiss: !0, children: P("div", { "aria-labelledby": ie.inputProps.id, "aria-autocomplete": "list", tabIndex: -1, ...Ot({
989
+ ref: de.setFloating,
990
+ style: {
991
+ ...kt
992
+ }
993
+ }), className: w("ds-combobox__options-wrapper", `ds-combobox--${O}`), children: [g && c("div", { style: {
994
+ height: `${we.getTotalSize()}px`,
995
+ width: "100%",
996
+ position: "relative"
997
+ }, children: we.getVirtualItems().map((E) => c("div", { ref: we.measureElement, "data-index": E.index, style: {
998
+ position: "absolute",
999
+ top: 0,
1000
+ left: 0,
1001
+ width: "100%",
1002
+ transform: `translateY(${E.start}px)`
1003
+ }, children: ye[E.index] }, E.index)) }), _ ? P(lt, { className: "ds-combobox__loading", children: [c(Qe, { "aria-label": "Laster", "data-size": "sm" }), F] }) : P(ce, { children: [Ct, !g && ye] })] }) }) })] });
1004
+ }), xt = p((t, n) => c(Fn, { children: c(Jn, { ...t, ref: n }) }));
1005
+ xt.displayName = "Combobox";
1006
+ const vt = p(({ children: t, className: n, ...e }, o) => {
1007
+ const r = S(Y);
1008
+ if (!r)
1009
+ throw new Error("ComboboxEmpty must be used within a Combobox");
1010
+ const { filteredOptions: i, size: s } = r;
1011
+ return i.length === 0 && c(Q, { "data-size": s, asChild: !0, children: c("div", { ref: o, className: w("ds-combobox__empty", n), ...e, children: t }) });
1012
+ });
1013
+ vt.displayName = "ComboboxEmpty";
1014
+ const ge = xt;
1015
+ ge.Option = je;
1016
+ ge.Empty = vt;
1017
+ ge.Option.displayName = "Combobox.Option";
1018
+ ge.Empty.displayName = "Combobox.Empty";
1019
+ const Qn = (t, n, e) => {
1020
+ const o = (e - 1) / 2, r = Math.min(Math.max(t - Math.floor(o), 1), n - e + 1), i = Math.min(Math.max(t + Math.ceil(o), e), n), s = Array.from({ length: i + 1 - r }, (a, l) => l + r);
1021
+ return e > 4 && r > 1 && s.splice(0, 2, 1, 0), e > 3 && i < n && s.splice(-2, 2, 0, n), s;
1022
+ }, yo = ({ currentPage: t = 1, setCurrentPage: n, onChange: e, totalPages: o = 1, showPages: r = 7 }) => J(() => {
1023
+ const i = t < o, s = t !== 1, a = (l) => (f) => {
1024
+ if (l < 1 || l > o)
1025
+ return f.preventDefault();
1026
+ e == null || e(f, l), f.defaultPrevented || n == null || n(l);
1027
+ };
1028
+ return {
1029
+ /** Number of steps */
1030
+ pages: Qn(t, o, r).map((l, f) => ({
1031
+ /**
1032
+ * Page number or "ellipsis" for the ellipsis item
1033
+ */
1034
+ page: l || "ellipsis",
1035
+ /**
1036
+ * Unique key for the item
1037
+ */
1038
+ itemKey: l ? `page-${l}` : `ellipsis-${f}`,
1039
+ // React key utility
1040
+ /**
1041
+ * Properties to spread on Pagination.Button
1042
+ */
1043
+ buttonProps: l ? {
1044
+ "aria-current": l === t ? "page" : void 0,
1045
+ onClick: a(l),
1046
+ variant: l === t ? "primary" : "tertiary"
1047
+ } : null
1048
+ })),
1049
+ /** Properties to spread on Pagination.Button used for previous naviagation */
1050
+ prevButtonProps: {
1051
+ "aria-disabled": !s,
1052
+ // Using aria-disabled to support all HTML elements because of potential asChild
1053
+ onClick: a(t - 1),
1054
+ variant: "tertiary"
1055
+ },
1056
+ /** Properties to spread on Pagination.Button used for next naviagation */
1057
+ nextButtonProps: {
1058
+ "aria-disabled": !i,
1059
+ // Using aria-disabled to support all HTML elements because of potential asChild
1060
+ onClick: a(t + 1),
1061
+ variant: "tertiary"
1062
+ },
1063
+ /** Indication if previous page action should be shown or not */
1064
+ hasPrev: s,
1065
+ /** Indication if next page action should be shown or not */
1066
+ hasNext: i
1067
+ };
1068
+ }, [t, o, r]);
1069
+ export {
1070
+ ho as A,
1071
+ cn as B,
1072
+ go as C,
1073
+ Be as D,
1074
+ bo as H,
1075
+ ln as L,
1076
+ Re as P,
1077
+ ze as S,
1078
+ De as T,
1079
+ te as a,
1080
+ pe as b,
1081
+ ge as c,
1082
+ mo as d,
1083
+ po as e,
1084
+ me as f,
1085
+ it as g,
1086
+ fo as h,
1087
+ Qe as i,
1088
+ yo as u
1089
+ };