@altinn/altinn-components 0.52.2 → 0.52.4

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 (496) hide show
  1. package/dist/assets/AccountMenuButton.css +1 -1
  2. package/dist/assets/AccountSelector.css +1 -1
  3. package/dist/assets/ActionFooter.css +1 -1
  4. package/dist/assets/ActionHeader.css +1 -1
  5. package/dist/assets/Avatar.css +1 -1
  6. package/dist/assets/Backdrop.css +1 -1
  7. package/dist/assets/BreadcrumbsLink.css +1 -1
  8. package/dist/assets/ButtonBase.css +1 -1
  9. package/dist/assets/ButtonGroup.css +1 -0
  10. package/dist/assets/ButtonGroupDivider.css +1 -0
  11. package/dist/assets/ButtonLabel.css +1 -1
  12. package/dist/assets/DrawerBase.css +1 -1
  13. package/dist/assets/DrawerOrDropdown.css +1 -1
  14. package/dist/assets/DropdownBase.css +1 -1
  15. package/dist/assets/Flex.css +1 -1
  16. package/dist/assets/FooterBase.css +1 -1
  17. package/dist/assets/FooterMenu.css +1 -1
  18. package/dist/assets/GlobalHeader.css +1 -1
  19. package/dist/assets/GlobalHeaderBase.css +1 -1
  20. package/dist/assets/GlobalMenuBase.css +1 -1
  21. package/dist/assets/Grid.css +1 -1
  22. package/dist/assets/Header.css +1 -1
  23. package/dist/assets/HeaderBase.css +1 -1
  24. package/dist/assets/HeaderGroup.css +1 -1
  25. package/dist/assets/HeaderGroup2.css +1 -1
  26. package/dist/assets/HeaderLogo.css +1 -1
  27. package/dist/assets/HeaderSearch.css +1 -1
  28. package/dist/assets/LayoutBody.css +1 -1
  29. package/dist/assets/LayoutContent.css +1 -1
  30. package/dist/assets/LayoutSidebar.css +1 -1
  31. package/dist/assets/ListItemBase.css +1 -1
  32. package/dist/assets/ListItemHeader.css +1 -1
  33. package/dist/assets/ListItemLink.css +1 -1
  34. package/dist/assets/MenuItem.css +1 -1
  35. package/dist/assets/MenuItemBase.css +1 -1
  36. package/dist/assets/MenuSearch.css +1 -1
  37. package/dist/assets/MetaItemBase.css +1 -1
  38. package/dist/assets/NotificationItemBase.css +1 -1
  39. package/dist/assets/NotificationItemIcon.css +1 -1
  40. package/dist/assets/PageMenu.css +1 -1
  41. package/dist/assets/PageTabs.css +1 -1
  42. package/dist/assets/SearchField.css +1 -1
  43. package/dist/assets/SearchbarBase.css +1 -1
  44. package/dist/assets/SearchbarField.css +1 -1
  45. package/dist/assets/SnackbarBase.css +1 -1
  46. package/dist/assets/TimelineBase.css +1 -1
  47. package/dist/assets/ToolbarBase.css +1 -1
  48. package/dist/assets/globalSearch.css +1 -1
  49. package/dist/button-MzZgmHyA.js +23 -0
  50. package/dist/components/AccessAreaListItem/AccessAreaListItem.js +1 -1
  51. package/dist/components/AccessPackageListItem/AccessPackageListItem.js +1 -1
  52. package/dist/components/Account/AccountList.js +23 -23
  53. package/dist/components/Account/AccountListItem.js +1 -1
  54. package/dist/components/Account/AccountListItemControls.js +26 -26
  55. package/dist/components/Account/AccountListItemDetails.js +1 -1
  56. package/dist/components/Account/AccountListVirtual.js +47 -50
  57. package/dist/components/Account/AccountMenu.js +47 -51
  58. package/dist/components/Account/AccountMenuButton.js +65 -65
  59. package/dist/components/Account/AccountNotificationSettings.js +1 -1
  60. package/dist/components/Account/AccountOrganization.js +1 -1
  61. package/dist/components/ActivityLog/ActivityLog.js +13 -13
  62. package/dist/components/ActivityLog/ActivityLogItem.js +1 -1
  63. package/dist/components/ActivityLog/ActivityLogSegment.js +6 -6
  64. package/dist/components/Alert/Alert.js +1 -1
  65. package/dist/components/Article/Article.js +1 -1
  66. package/dist/components/Article/ArticleContact.js +1 -1
  67. package/dist/components/Article/ArticleHeader.js +1 -1
  68. package/dist/components/Attachment/AttachmentLink.js +1 -1
  69. package/dist/components/Avatar/Avatar.js +1 -1
  70. package/dist/components/Avatar/AvatarGroup.js +31 -31
  71. package/dist/components/Badge/Badge.js +1 -1
  72. package/dist/components/Banner/Banner.js +6 -6
  73. package/dist/components/Button/Button.js +1 -1
  74. package/dist/components/Button/ButtonBase.js +2 -2
  75. package/dist/components/Button/ButtonGroup.js +28 -8
  76. package/dist/components/Button/ButtonGroupDivider.js +8 -0
  77. package/dist/components/Button/ButtonIcon.js +1 -1
  78. package/dist/components/Button/ButtonLabel.js +5 -5
  79. package/dist/components/Button/ComboButton.js +1 -1
  80. package/dist/components/Button/FloatingActionButton.js +1 -1
  81. package/dist/components/Button/IconButton.js +1 -1
  82. package/dist/components/Byline/Byline.js +1 -1
  83. package/dist/components/ContextMenu/ContextMenu.js +51 -54
  84. package/dist/components/Dashboard/DashboardCard.js +25 -25
  85. package/dist/components/Dashboard/DashboardHeader.js +1 -1
  86. package/dist/components/Dashboard/DashboardIcon.js +1 -1
  87. package/dist/components/Datepicker/DatepickerBase.js +1 -1
  88. package/dist/components/Datepicker/DatepickerHeader.js +1 -1
  89. package/dist/components/Datepicker/DatepickerTable.js +1 -1
  90. package/dist/components/Dialog/Dialog.js +1 -1
  91. package/dist/components/Dialog/DialogActions.js +13 -16
  92. package/dist/components/Dialog/DialogActivityLog.js +1 -1
  93. package/dist/components/Dialog/DialogAttachments.js +8 -8
  94. package/dist/components/Dialog/DialogBody.js +20 -20
  95. package/dist/components/Dialog/DialogByline.js +14 -14
  96. package/dist/components/Dialog/DialogContact.js +1 -1
  97. package/dist/components/Dialog/DialogHeader.js +1 -1
  98. package/dist/components/Dialog/DialogHistory.js +14 -14
  99. package/dist/components/Dialog/DialogHistoryItem.js +1 -1
  100. package/dist/components/Dialog/DialogHistorySegment.js +15 -15
  101. package/dist/components/Dialog/DialogLayout.js +14 -14
  102. package/dist/components/Dialog/DialogList.js +15 -15
  103. package/dist/components/Dialog/DialogListGroup.js +1 -1
  104. package/dist/components/Dialog/DialogListItem.js +27 -27
  105. package/dist/components/Dialog/DialogMetadata.js +38 -38
  106. package/dist/components/Dialog/DialogSection.js +1 -1
  107. package/dist/components/Dialog/DialogSeenBy.js +1 -1
  108. package/dist/components/Dialog/DialogSelect.js +1 -1
  109. package/dist/components/Dialog/DialogStatus.js +1 -1
  110. package/dist/components/Dialog/DialogTabs.js +1 -1
  111. package/dist/components/Dialog/SeenByLog.js +18 -18
  112. package/dist/components/Dialog/SeenByLogButton.js +1 -1
  113. package/dist/components/Dialog/SeenByLogItem.js +1 -1
  114. package/dist/components/Dropdown/Backdrop.js +1 -1
  115. package/dist/components/Dropdown/DrawerBase.js +1 -1
  116. package/dist/components/Dropdown/DrawerBody.js +1 -1
  117. package/dist/components/Dropdown/DrawerButton.js +1 -1
  118. package/dist/components/Dropdown/DrawerFooter.js +1 -1
  119. package/dist/components/Dropdown/DrawerHeader.js +1 -1
  120. package/dist/components/Dropdown/DrawerOrDropdown.js +30 -30
  121. package/dist/components/Dropdown/DropdownBase.js +1 -1
  122. package/dist/components/Dropdown/FloatingDropdown.js +53 -55
  123. package/dist/components/DsComponents/index.js +9 -9
  124. package/dist/components/Footer/FooterAddress.js +1 -1
  125. package/dist/components/Footer/FooterBase.js +1 -1
  126. package/dist/components/Footer/FooterLogo.js +1 -1
  127. package/dist/components/Footer/FooterMenu.js +1 -1
  128. package/dist/components/Forms/Checkbox.js +1 -1
  129. package/dist/components/Forms/CheckboxOptions.js +1 -1
  130. package/dist/components/Forms/Field.js +8 -8
  131. package/dist/components/Forms/FieldBase.js +1 -1
  132. package/dist/components/Forms/Fieldset.js +2 -2
  133. package/dist/components/Forms/FieldsetBase.js +1 -1
  134. package/dist/components/Forms/Input.js +1 -1
  135. package/dist/components/Forms/Label.js +1 -1
  136. package/dist/components/Forms/Legend.js +1 -1
  137. package/dist/components/Forms/Radio.js +1 -1
  138. package/dist/components/Forms/RadioOptions.js +5 -5
  139. package/dist/components/Forms/SearchField.js +33 -31
  140. package/dist/components/Forms/Select.js +15 -15
  141. package/dist/components/Forms/SelectField.js +1 -1
  142. package/dist/components/Forms/Switch.js +1 -1
  143. package/dist/components/Forms/SwitchOptions.js +4 -4
  144. package/dist/components/Forms/TextField.js +1 -1
  145. package/dist/components/Forms/Textarea.js +1 -1
  146. package/dist/components/Forms/TextareaField.js +1 -1
  147. package/dist/components/GlobalHeader/AccountSelector.js +50 -51
  148. package/dist/components/GlobalHeader/GlobalHeader.js +86 -87
  149. package/dist/components/GlobalHeader/GlobalHeaderBase.js +1 -1
  150. package/dist/components/GlobalHeader/GlobalSearch.js +17 -18
  151. package/dist/components/GlobalHeader/GlobalSearchButton.js +3 -3
  152. package/dist/components/GlobalHeader/HeaderGroup.js +1 -1
  153. package/dist/components/GlobalHeader/HeaderLogo.js +1 -1
  154. package/dist/components/GlobalMenu/BackButton.js +1 -1
  155. package/dist/components/GlobalMenu/GlobalMenu.js +40 -42
  156. package/dist/components/GlobalMenu/GlobalMenuButton.js +10 -10
  157. package/dist/components/GlobalMenu/LocaleButton.js +1 -1
  158. package/dist/components/GlobalMenu/LocaleSwitcher.js +18 -19
  159. package/dist/components/GlobalMenu/LogoutButton.js +1 -1
  160. package/dist/components/GlobalMenu_old/BackButton.js +1 -1
  161. package/dist/components/GlobalMenu_old/CurrentAccount.js +10 -10
  162. package/dist/components/GlobalMenu_old/GlobalMenu.js +50 -53
  163. package/dist/components/GlobalMenu_old/GlobalMenuButton.js +29 -29
  164. package/dist/components/GlobalMenu_old/LogoutButton.js +1 -1
  165. package/dist/components/Header/Header.js +50 -50
  166. package/dist/components/Header/HeaderBase.js +1 -1
  167. package/dist/components/Header/HeaderButton.js +30 -30
  168. package/dist/components/Header/HeaderGroup.js +1 -1
  169. package/dist/components/Header/HeaderLogo.js +1 -1
  170. package/dist/components/Header/HeaderSearch.js +1 -1
  171. package/dist/components/Header/LocaleButton.js +1 -1
  172. package/dist/components/Header/LocaleSwitcher.js +27 -29
  173. package/dist/components/Icon/Icon.js +1 -1
  174. package/dist/components/Icon/IconOrAvatar.js +1 -1
  175. package/dist/components/Icon/ProgressIcon.js +1 -1
  176. package/dist/components/InboxSearch/InboxSearch.js +1 -1
  177. package/dist/components/Layout/Layout.js +39 -39
  178. package/dist/components/LayoutAction/ActionHeader.js +1 -1
  179. package/dist/components/LayoutAction/LayoutAction.js +10 -10
  180. package/dist/components/List/List.js +1 -1
  181. package/dist/components/List/ListBase.js +1 -1
  182. package/dist/components/List/ListItem.js +1 -1
  183. package/dist/components/List/ListItemBase.js +1 -1
  184. package/dist/components/List/ListItemControls.js +1 -1
  185. package/dist/components/List/ListItemHeader.js +1 -1
  186. package/dist/components/List/ListItemIcon.js +1 -1
  187. package/dist/components/List/ListItemLabel.js +1 -1
  188. package/dist/components/List/ListItemLink.js +39 -39
  189. package/dist/components/List/ListItemSelect.js +1 -1
  190. package/dist/components/Menu/MenuBase.js +1 -1
  191. package/dist/components/Menu/MenuItem.js +1 -1
  192. package/dist/components/Menu/MenuItemBase.js +46 -46
  193. package/dist/components/Menu/MenuItemIcon.js +9 -9
  194. package/dist/components/Menu/MenuItemLabel.js +29 -29
  195. package/dist/components/Menu/MenuItems.js +61 -64
  196. package/dist/components/Menu/MenuItemsVirtual.js +111 -120
  197. package/dist/components/Menu/MenuOption.js +1 -1
  198. package/dist/components/Menu/MenuSearch.js +1 -1
  199. package/dist/components/Metadata/MetaBase.js +1 -1
  200. package/dist/components/Metadata/MetaItem.js +1 -1
  201. package/dist/components/Metadata/MetaItemBase.js +1 -1
  202. package/dist/components/Metadata/MetaItemIcon.js +1 -1
  203. package/dist/components/Metadata/MetaProgress.js +1 -1
  204. package/dist/components/Metadata/MetaTimestamp.js +1 -1
  205. package/dist/components/Metadata/Metadata.js +1 -1
  206. package/dist/components/Modal/Modal.js +1 -1
  207. package/dist/components/Modal/ModalBase.js +49 -50
  208. package/dist/components/Modal/ModalBody.js +1 -1
  209. package/dist/components/Modal/ModalFooter.js +1 -1
  210. package/dist/components/Modal/ModalHeader.js +18 -18
  211. package/dist/components/Modal/ModalIcon.js +1 -1
  212. package/dist/components/Notifications/NotificationItem.js +1 -1
  213. package/dist/components/Notifications/NotificationItemBase.js +1 -1
  214. package/dist/components/Notifications/NotificationItemControls.js +1 -1
  215. package/dist/components/Notifications/NotificationItemIcon.js +1 -1
  216. package/dist/components/Page/AccordionSection.js +9 -9
  217. package/dist/components/Page/Breadcrumbs.js +14 -14
  218. package/dist/components/Page/BreadcrumbsLink.js +1 -1
  219. package/dist/components/Page/ContactButtons.js +1 -1
  220. package/dist/components/Page/ContactSection.js +1 -1
  221. package/dist/components/Page/Flex.js +1 -1
  222. package/dist/components/Page/Grid.js +1 -1
  223. package/dist/components/Page/PageDetails.js +5 -5
  224. package/dist/components/Page/PageMenu.js +1 -1
  225. package/dist/components/Page/PageNav.js +17 -17
  226. package/dist/components/Page/PageTabs.js +1 -1
  227. package/dist/components/Page/Section.js +1 -1
  228. package/dist/components/ResourceListItem/ResourceListItem.js +1 -1
  229. package/dist/components/RootProvider/RootProvider.js +30 -30
  230. package/dist/components/Search/SearchItem.js +12 -12
  231. package/dist/components/Searchbar/Autocomplete.js +35 -38
  232. package/dist/components/Searchbar/AutocompleteBase.js +1 -1
  233. package/dist/components/Searchbar/AutocompleteItem.js +1 -1
  234. package/dist/components/Searchbar/Searchbar.js +41 -44
  235. package/dist/components/Searchbar/SearchbarBase.js +1 -1
  236. package/dist/components/Searchbar/SearchbarField.js +59 -60
  237. package/dist/components/Settings/BookmarksSettingsItem.js +57 -59
  238. package/dist/components/Settings/BookmarksSettingsList.js +25 -25
  239. package/dist/components/Settings/SettingsItem.js +48 -48
  240. package/dist/components/Settings/SettingsItemBase.js +1 -1
  241. package/dist/components/Settings/SettingsList.js +25 -25
  242. package/dist/components/Settings/SettingsModal.js +27 -28
  243. package/dist/components/Settings/SettingsSection.js +1 -1
  244. package/dist/components/Settings/UsedByLog.js +31 -31
  245. package/dist/components/Settings/UsedByLogItem.js +1 -1
  246. package/dist/components/Skeleton/Skeleton.js +1 -1
  247. package/dist/components/SkipLink/SkipLink.js +1 -1
  248. package/dist/components/Snackbar/SnackbarItem.js +13 -13
  249. package/dist/components/Snackbar/useSnackbar.js +20 -20
  250. package/dist/components/Timeline/Timeline.js +1 -1
  251. package/dist/components/Timeline/TimelineActivity.js +1 -1
  252. package/dist/components/Timeline/TimelineBase.js +1 -1
  253. package/dist/components/Timeline/TimelineFooter.js +1 -1
  254. package/dist/components/Timeline/TimelineHeader.js +1 -1
  255. package/dist/components/Timeline/TimelineIcon.js +1 -1
  256. package/dist/components/Timeline/TimelineLink.js +1 -1
  257. package/dist/components/Timeline/TimelineSection.js +1 -1
  258. package/dist/components/Timeline/TimelineSegment.js +1 -1
  259. package/dist/components/Toolbar/Toolbar.js +57 -58
  260. package/dist/components/Toolbar/ToolbarAccountMenu.js +36 -36
  261. package/dist/components/Toolbar/ToolbarAdd.js +1 -1
  262. package/dist/components/Toolbar/ToolbarButton.js +1 -1
  263. package/dist/components/Toolbar/ToolbarDaterange.js +1 -1
  264. package/dist/components/Toolbar/ToolbarFilter.js +51 -51
  265. package/dist/components/Toolbar/ToolbarFilterBase.js +1 -1
  266. package/dist/components/Toolbar/ToolbarMenu.js +1 -1
  267. package/dist/components/Toolbar/ToolbarOptions.js +51 -55
  268. package/dist/components/Toolbar/ToolbarSearch.js +1 -1
  269. package/dist/components/Transmission/Transmission.js +45 -45
  270. package/dist/components/Transmission/TransmissionList.js +1 -1
  271. package/dist/components/Transmission/TransmissionType.js +1 -1
  272. package/dist/components/Typography/Heading.js +1 -1
  273. package/dist/components/Typography/Typography.js +1 -1
  274. package/dist/components/Typography/useHighlightedText.js +13 -13
  275. package/dist/components/UserListItem/UserListItem.js +30 -59
  276. package/dist/components/index.js +449 -455
  277. package/dist/{FieldsetLegend-CiZWWPgY.js → fieldset-legend-B6lDmp0N.js} +1 -1
  278. package/dist/global.css +7 -7
  279. package/dist/globalSearch.module-DziLSGZg.js +9 -0
  280. package/dist/{Heading-By5DKz2H.js → heading-C_XYsUfi.js} +1 -1
  281. package/dist/hooks/useAccountSelector.js +96 -97
  282. package/dist/hooks/useClickOutside.js +8 -8
  283. package/dist/hooks/useEnterKey.js +6 -6
  284. package/dist/hooks/useEscapeKey.js +5 -5
  285. package/dist/hooks/useMenu.js +33 -33
  286. package/dist/index-D7FJjvrv.js +86 -0
  287. package/dist/{index-D-VWMqlv.js → index-De5bF0Gf.js} +4 -4
  288. package/dist/index-Dg71_7ad.js +2993 -0
  289. package/dist/index-Q0EA2XB0.js +111 -0
  290. package/dist/index-p1eeF8LQ.js +42 -0
  291. package/dist/index-z82sbSVU.js +105 -0
  292. package/dist/index.js +457 -463
  293. package/dist/input-wBv_FkEV.js +12 -0
  294. package/dist/{Label-9elsbqMH.js → label-xTmTyPhk.js} +1 -1
  295. package/dist/{Paragraph-Bm-eoPYv.js → paragraph-BRiIBpbY.js} +1 -1
  296. package/dist/spinner-0Qe_jRGB.js +23 -0
  297. package/dist/textfield-B_OMMEbF.js +1442 -0
  298. package/dist/tokens/{altinn-ds.css → design-tokens-build/theme.css} +425 -466
  299. package/dist/types/lib/components/Banner/Banner.d.ts +1 -1
  300. package/dist/types/lib/components/Button/ButtonGroup.d.ts +9 -5
  301. package/dist/types/lib/components/Button/ButtonGroup.stories.d.ts +12 -0
  302. package/dist/types/lib/components/Button/ButtonGroupDivider.d.ts +1 -0
  303. package/dist/types/lib/components/Forms/SearchField.stories.d.ts +1 -0
  304. package/dist/types/lib/components/LayoutAction/LayoutAction.d.ts +1 -1
  305. package/dist/types/lib/components/Snackbar/SnackbarItem.d.ts +1 -1
  306. package/dist/types/lib/components/index.d.ts +0 -1
  307. package/dist/types/lib/types/color.d.ts +1 -1
  308. package/dist/types/lib/types/fields.d.ts +1 -1
  309. package/dist/use-merge-refs-Cj4kTYVj.js +29 -0
  310. package/package.json +24 -20
  311. package/dist/Button-B0t0vz2h.js +0 -23
  312. package/dist/Input-B_w6SBmg.js +0 -12
  313. package/dist/Spinner-BDXfwXIh.js +0 -26
  314. package/dist/altinn-ds-overrides.css +0 -53
  315. package/dist/altinn-ds.css +0 -1125
  316. package/dist/components/Bookmarks/BookmarksListItem.js +0 -20
  317. package/dist/components/Bookmarks/BookmarksSection.js +0 -40
  318. package/dist/components/Bookmarks/EditableBookmark.js +0 -92
  319. package/dist/components/Bookmarks/index.js +0 -8
  320. package/dist/globalSearch.module-Ejp7X0dO.js +0 -9
  321. package/dist/index-B6sKSsN9.js +0 -2951
  322. package/dist/index-CnWc2FNH.js +0 -81
  323. package/dist/index-D3Rt9ate.js +0 -116
  324. package/dist/index-D8Pn8SCu.js +0 -78
  325. package/dist/index-L8X2o7IH.js +0 -44
  326. package/dist/tokens/$metadata.json +0 -25
  327. package/dist/tokens/$themes.json +0 -137
  328. package/dist/tokens/README.md +0 -14
  329. package/dist/tokens/alert.css +0 -25
  330. package/dist/tokens/alert.json +0 -70
  331. package/dist/tokens/altinn-ds/color/alert.css +0 -25
  332. package/dist/tokens/altinn-ds/color/article.css +0 -25
  333. package/dist/tokens/altinn-ds/color/company.css +0 -26
  334. package/dist/tokens/altinn-ds/color/danger.css +0 -25
  335. package/dist/tokens/altinn-ds/color/info.css +0 -25
  336. package/dist/tokens/altinn-ds/color/neutral.css +0 -25
  337. package/dist/tokens/altinn-ds/color/person.css +0 -25
  338. package/dist/tokens/altinn-ds/color/success.css +0 -25
  339. package/dist/tokens/altinn-ds/color/warning.css +0 -25
  340. package/dist/tokens/altinn-ds/color-scheme/dark.css +0 -311
  341. package/dist/tokens/altinn-ds/color-scheme/light.css +0 -312
  342. package/dist/tokens/altinn-ds/semantic.css +0 -70
  343. package/dist/tokens/altinn-ds/typography/primary.css +0 -123
  344. package/dist/tokens/altinn-ds/typography/secondary.css +0 -122
  345. package/dist/tokens/altinn-ds.json +0 -22
  346. package/dist/tokens/article.css +0 -25
  347. package/dist/tokens/article.json +0 -70
  348. package/dist/tokens/color/alert.css +0 -25
  349. package/dist/tokens/color/article.css +0 -25
  350. package/dist/tokens/color/company.css +0 -26
  351. package/dist/tokens/color/danger.css +0 -25
  352. package/dist/tokens/color/info.css +0 -25
  353. package/dist/tokens/color/neutral.css +0 -25
  354. package/dist/tokens/color/person.css +0 -25
  355. package/dist/tokens/color/success.css +0 -25
  356. package/dist/tokens/color/warning.css +0 -25
  357. package/dist/tokens/color-scheme/dark/altinn-ds.json +0 -334
  358. package/dist/tokens/color-scheme/dark/global.json +0 -334
  359. package/dist/tokens/color-scheme/dark.css +0 -311
  360. package/dist/tokens/color-scheme/light/altinn-ds.json +0 -334
  361. package/dist/tokens/color-scheme/light/global.json +0 -334
  362. package/dist/tokens/color-scheme/light.css +0 -312
  363. package/dist/tokens/color.json +0 -616
  364. package/dist/tokens/colors.d.ts +0 -10
  365. package/dist/tokens/company.css +0 -26
  366. package/dist/tokens/company.json +0 -70
  367. package/dist/tokens/danger.css +0 -25
  368. package/dist/tokens/dark/altinn-ds.json +0 -334
  369. package/dist/tokens/dark/global.json +0 -334
  370. package/dist/tokens/dark.css +0 -311
  371. package/dist/tokens/design-tokens/$metadata.json +0 -25
  372. package/dist/tokens/design-tokens/$themes.json +0 -137
  373. package/dist/tokens/design-tokens/primitives/globals.json +0 -143
  374. package/dist/tokens/design-tokens/primitives/modes/color-scheme/dark/altinn-ds.json +0 -334
  375. package/dist/tokens/design-tokens/primitives/modes/color-scheme/dark/global.json +0 -334
  376. package/dist/tokens/design-tokens/primitives/modes/color-scheme/light/altinn-ds.json +0 -334
  377. package/dist/tokens/design-tokens/primitives/modes/color-scheme/light/global.json +0 -334
  378. package/dist/tokens/design-tokens/primitives/modes/size/global.json +0 -96
  379. package/dist/tokens/design-tokens/primitives/modes/size/large.json +0 -16
  380. package/dist/tokens/design-tokens/primitives/modes/size/medium.json +0 -16
  381. package/dist/tokens/design-tokens/primitives/modes/size/small.json +0 -16
  382. package/dist/tokens/design-tokens/primitives/modes/typography/primary/altinn-ds.json +0 -22
  383. package/dist/tokens/design-tokens/primitives/modes/typography/secondary/altinn-ds.json +0 -22
  384. package/dist/tokens/design-tokens/primitives/modes/typography/size/large.json +0 -96
  385. package/dist/tokens/design-tokens/primitives/modes/typography/size/medium.json +0 -96
  386. package/dist/tokens/design-tokens/primitives/modes/typography/size/small.json +0 -96
  387. package/dist/tokens/design-tokens/semantic/color.json +0 -616
  388. package/dist/tokens/design-tokens/semantic/modes/main-color/company.json +0 -70
  389. package/dist/tokens/design-tokens/semantic/modes/main-color/person.json +0 -70
  390. package/dist/tokens/design-tokens/semantic/modes/support-color/alert.json +0 -70
  391. package/dist/tokens/design-tokens/semantic/modes/support-color/article.json +0 -70
  392. package/dist/tokens/design-tokens/semantic/style.json +0 -378
  393. package/dist/tokens/design-tokens/themes/altinn-ds.json +0 -386
  394. package/dist/tokens/design-tokens-build/altinn-ds/color/alert.css +0 -25
  395. package/dist/tokens/design-tokens-build/altinn-ds/color/article.css +0 -25
  396. package/dist/tokens/design-tokens-build/altinn-ds/color/company.css +0 -26
  397. package/dist/tokens/design-tokens-build/altinn-ds/color/danger.css +0 -25
  398. package/dist/tokens/design-tokens-build/altinn-ds/color/info.css +0 -25
  399. package/dist/tokens/design-tokens-build/altinn-ds/color/neutral.css +0 -25
  400. package/dist/tokens/design-tokens-build/altinn-ds/color/person.css +0 -25
  401. package/dist/tokens/design-tokens-build/altinn-ds/color/success.css +0 -25
  402. package/dist/tokens/design-tokens-build/altinn-ds/color/warning.css +0 -25
  403. package/dist/tokens/design-tokens-build/altinn-ds/color-scheme/dark.css +0 -311
  404. package/dist/tokens/design-tokens-build/altinn-ds/color-scheme/light.css +0 -312
  405. package/dist/tokens/design-tokens-build/altinn-ds/semantic.css +0 -70
  406. package/dist/tokens/design-tokens-build/altinn-ds/typography/primary.css +0 -123
  407. package/dist/tokens/design-tokens-build/altinn-ds/typography/secondary.css +0 -122
  408. package/dist/tokens/design-tokens-build/altinn-ds.css +0 -1125
  409. package/dist/tokens/design-tokens-build/colors.d.ts +0 -10
  410. package/dist/tokens/global.json +0 -334
  411. package/dist/tokens/globals.json +0 -143
  412. package/dist/tokens/info.css +0 -25
  413. package/dist/tokens/large.json +0 -96
  414. package/dist/tokens/light/altinn-ds.json +0 -334
  415. package/dist/tokens/light/global.json +0 -334
  416. package/dist/tokens/light.css +0 -312
  417. package/dist/tokens/main-color/company.json +0 -70
  418. package/dist/tokens/main-color/person.json +0 -70
  419. package/dist/tokens/medium.json +0 -96
  420. package/dist/tokens/modes/color-scheme/dark/altinn-ds.json +0 -334
  421. package/dist/tokens/modes/color-scheme/dark/global.json +0 -334
  422. package/dist/tokens/modes/color-scheme/light/altinn-ds.json +0 -334
  423. package/dist/tokens/modes/color-scheme/light/global.json +0 -334
  424. package/dist/tokens/modes/main-color/company.json +0 -70
  425. package/dist/tokens/modes/main-color/person.json +0 -70
  426. package/dist/tokens/modes/size/global.json +0 -96
  427. package/dist/tokens/modes/size/large.json +0 -16
  428. package/dist/tokens/modes/size/medium.json +0 -16
  429. package/dist/tokens/modes/size/small.json +0 -16
  430. package/dist/tokens/modes/support-color/alert.json +0 -70
  431. package/dist/tokens/modes/support-color/article.json +0 -70
  432. package/dist/tokens/modes/typography/primary/altinn-ds.json +0 -22
  433. package/dist/tokens/modes/typography/secondary/altinn-ds.json +0 -22
  434. package/dist/tokens/modes/typography/size/large.json +0 -96
  435. package/dist/tokens/modes/typography/size/medium.json +0 -96
  436. package/dist/tokens/modes/typography/size/small.json +0 -96
  437. package/dist/tokens/neutral.css +0 -25
  438. package/dist/tokens/person.css +0 -25
  439. package/dist/tokens/person.json +0 -70
  440. package/dist/tokens/primary/altinn-ds.json +0 -22
  441. package/dist/tokens/primary.css +0 -123
  442. package/dist/tokens/primitives/globals.json +0 -143
  443. package/dist/tokens/primitives/modes/color-scheme/dark/altinn-ds.json +0 -334
  444. package/dist/tokens/primitives/modes/color-scheme/dark/global.json +0 -334
  445. package/dist/tokens/primitives/modes/color-scheme/light/altinn-ds.json +0 -334
  446. package/dist/tokens/primitives/modes/color-scheme/light/global.json +0 -334
  447. package/dist/tokens/primitives/modes/size/global.json +0 -96
  448. package/dist/tokens/primitives/modes/size/large.json +0 -16
  449. package/dist/tokens/primitives/modes/size/medium.json +0 -16
  450. package/dist/tokens/primitives/modes/size/small.json +0 -16
  451. package/dist/tokens/primitives/modes/typography/primary/altinn-ds.json +0 -22
  452. package/dist/tokens/primitives/modes/typography/secondary/altinn-ds.json +0 -22
  453. package/dist/tokens/primitives/modes/typography/size/large.json +0 -96
  454. package/dist/tokens/primitives/modes/typography/size/medium.json +0 -96
  455. package/dist/tokens/primitives/modes/typography/size/small.json +0 -96
  456. package/dist/tokens/secondary/altinn-ds.json +0 -22
  457. package/dist/tokens/secondary.css +0 -122
  458. package/dist/tokens/semantic/color.json +0 -616
  459. package/dist/tokens/semantic/modes/main-color/company.json +0 -70
  460. package/dist/tokens/semantic/modes/main-color/person.json +0 -70
  461. package/dist/tokens/semantic/modes/support-color/alert.json +0 -70
  462. package/dist/tokens/semantic/modes/support-color/article.json +0 -70
  463. package/dist/tokens/semantic/style.json +0 -378
  464. package/dist/tokens/semantic.css +0 -70
  465. package/dist/tokens/size/global.json +0 -96
  466. package/dist/tokens/size/large.json +0 -96
  467. package/dist/tokens/size/medium.json +0 -96
  468. package/dist/tokens/size/small.json +0 -96
  469. package/dist/tokens/small.json +0 -96
  470. package/dist/tokens/style.json +0 -378
  471. package/dist/tokens/success.css +0 -25
  472. package/dist/tokens/support-color/alert.json +0 -70
  473. package/dist/tokens/support-color/article.json +0 -70
  474. package/dist/tokens/themes/altinn-ds.json +0 -386
  475. package/dist/tokens/typography/primary/altinn-ds.json +0 -22
  476. package/dist/tokens/typography/primary.css +0 -123
  477. package/dist/tokens/typography/secondary/altinn-ds.json +0 -22
  478. package/dist/tokens/typography/secondary.css +0 -122
  479. package/dist/tokens/typography/size/large.json +0 -96
  480. package/dist/tokens/typography/size/medium.json +0 -96
  481. package/dist/tokens/typography/size/small.json +0 -96
  482. package/dist/tokens/warning.css +0 -25
  483. package/dist/types/lib/components/Bookmarks/BookmarksListItem.d.ts +0 -7
  484. package/dist/types/lib/components/Bookmarks/BookmarksListItem.stories.d.ts +0 -23
  485. package/dist/types/lib/components/Bookmarks/BookmarksSection.d.ts +0 -12
  486. package/dist/types/lib/components/Bookmarks/BookmarksSection.stories.d.ts +0 -77
  487. package/dist/types/lib/components/Bookmarks/EditableBookmark.d.ts +0 -32
  488. package/dist/types/lib/components/Bookmarks/index.d.ts +0 -3
  489. package/dist/useMergeRefs-DOnoWyUH.js +0 -29
  490. package/dist/usePagination-cq1YWZkE.js +0 -889
  491. /package/dist/{Alert-BzifOfXl.js → alert-BzifOfXl.js} +0 -0
  492. /package/dist/{padding.css → data-padding.css} +0 -0
  493. /package/dist/{shadow.css → data-shadow.css} +0 -0
  494. /package/dist/{spacing.css → data-spacing.css} +0 -0
  495. /package/dist/{altinn-theme.css → data-theme.css} +0 -0
  496. /package/dist/{Textarea-BBstVlPT.js → textarea-BBstVlPT.js} +0 -0
@@ -0,0 +1,1442 @@
1
+ "use client";
2
+ import * as le from "react";
3
+ import xe, { forwardRef as w, useState as A, useRef as F, useEffect as D, createContext as se, useContext as R, useMemo as J, useId as Q, isValidElement as Et, memo as It, useCallback as St, Children as Be, version as kt } from "react";
4
+ import { jsx as c, jsxs as _, Fragment as Se } from "react/jsx-runtime";
5
+ import { c as E } from "./lite-1fxw3LjI.js";
6
+ import { S as M, a as _t } from "./index-D7FJjvrv.js";
7
+ import { C as q, u as ke, a as qe, o as ce, p as P, r as Ee, b as _e, i as Nt, c as Mt, d as zt, e as Tt, f as Rt, g as Pt, h as Dt, s as Ft, j as At, k as Ue, l as Lt, m as ae, F as Bt, n as Vt, q as $t, t as jt, v as Wt, w as Kt, x as Ht } from "./index-Dg71_7ad.js";
8
+ import { flushSync as Xe } from "react-dom";
9
+ import { S as qt, u as Ut } from "./spinner-0Qe_jRGB.js";
10
+ import { V as Ne, u as Me, F as de, a as Xt, b as Yt, c as Ve } from "./index-z82sbSVU.js";
11
+ import { P as Ie } from "./paragraph-BRiIBpbY.js";
12
+ import { I as ue } from "./input-wBv_FkEV.js";
13
+ import { S as Gt } from "./XMark-tKk6aExO.js";
14
+ import { S as Jt, a as Qt } from "./ChevronUp-_BBfEirx.js";
15
+ import { L as K } from "./label-xTmTyPhk.js";
16
+ import { u as Zt } from "./useId-BVFxCjkq.js";
17
+ import { S as en } from "./Checkmark-Byz_C9x4.js";
18
+ import { B as he } from "./button-MzZgmHyA.js";
19
+ import { u as U } from "./use-merge-refs-Cj4kTYVj.js";
20
+ import { T as tn } from "./textarea-BBstVlPT.js";
21
+ var nn = function(o, s) {
22
+ var e = {};
23
+ for (var t in o) Object.prototype.hasOwnProperty.call(o, t) && s.indexOf(t) < 0 && (e[t] = o[t]);
24
+ if (o != null && typeof Object.getOwnPropertySymbols == "function")
25
+ for (var n = 0, t = Object.getOwnPropertySymbols(o); n < t.length; n++)
26
+ s.indexOf(t[n]) < 0 && Object.prototype.propertyIsEnumerable.call(o, t[n]) && (e[t[n]] = o[t[n]]);
27
+ return e;
28
+ };
29
+ const on = w((o, s) => {
30
+ var { title: e, titleId: t } = o, n = nn(o, ["title", "titleId"]);
31
+ let i = Zt();
32
+ return i = e ? t || "title-" + i : void 0, xe.createElement(
33
+ "svg",
34
+ 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: s, "aria-labelledby": i }, n),
35
+ e ? xe.createElement("title", { id: i }, e) : null,
36
+ xe.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" })
37
+ );
38
+ }), Ye = se({
39
+ elements: { current: /* @__PURE__ */ new Map() },
40
+ getOrderedItems: () => [],
41
+ setFocusableValue: () => {
42
+ },
43
+ onShiftTab: () => {
44
+ },
45
+ focusableValue: null,
46
+ orientation: "horizontal"
47
+ }), sn = w(({ activeValue: o, asChild: s, orientation: e = "horizontal", onBlur: t, onFocus: n, ...i }, r) => {
48
+ const a = s ? M : "div", l = o ?? null, [d, h] = A(l), [p, u] = A(!1), f = F(/* @__PURE__ */ new Map()), g = F(null), y = U([r, g]), C = () => {
49
+ if (!g.current)
50
+ return [];
51
+ const b = Array.from(g.current.querySelectorAll("[data-roving-tabindex-item]"));
52
+ return Array.from(f.current).sort((m, v) => b.indexOf(m[1]) - b.indexOf(v[1])).map(([m, v]) => ({ value: m, element: v }));
53
+ };
54
+ return D(() => {
55
+ h(l);
56
+ }, [l]), c(Ye.Provider, { value: {
57
+ elements: f,
58
+ getOrderedItems: C,
59
+ focusableValue: d,
60
+ setFocusableValue: h,
61
+ onShiftTab: () => {
62
+ u(!0);
63
+ },
64
+ orientation: e
65
+ }, children: c(a, { ...i, tabIndex: p ? -1 : 0, onBlur: (b) => {
66
+ t?.(b), u(!1), h(o ?? null);
67
+ }, onFocus: (b) => {
68
+ if (n?.(b), b.target !== b.currentTarget)
69
+ return;
70
+ const m = C();
71
+ m.length !== 0 && (d != null ? f.current.get(d)?.focus() : o != null ? f.current.get(o)?.focus() : m.at(0)?.element.focus());
72
+ }, ref: y }) });
73
+ }), rn = (o) => {
74
+ const { elements: s, getOrderedItems: e, setFocusableValue: t, focusableValue: n, onShiftTab: i, orientation: r } = R(Ye);
75
+ return {
76
+ getOrderedItems: e,
77
+ isFocusable: n === o,
78
+ orientation: r,
79
+ getRovingProps: (a) => ({
80
+ ...a,
81
+ ref: (l) => {
82
+ l ? s.current.set(o, l) : s.current.delete(o);
83
+ },
84
+ onKeyDown: (l) => {
85
+ if (a?.onKeyDown?.(l), l.shiftKey && l.key === "Tab") {
86
+ i();
87
+ return;
88
+ }
89
+ },
90
+ onFocus: (l) => {
91
+ a?.onFocus?.(l), t(o);
92
+ },
93
+ "data-roving-tabindex-item": !0,
94
+ tabIndex: n === o ? 0 : -1
95
+ })
96
+ };
97
+ };
98
+ function we(o, s) {
99
+ const e = o.findIndex((t) => t.value === s);
100
+ return o.at(e === o.length - 1 ? 0 : e + 1);
101
+ }
102
+ function Oe(o, s) {
103
+ const e = o.findIndex((t) => t.value === s);
104
+ return o.at(e === 0 ? -1 : e - 1);
105
+ }
106
+ const an = w(({ value: o, asChild: s, ...e }, t) => {
107
+ const n = s ? M : "div", i = o ?? (typeof e.children == "string" ? e.children : ""), { getOrderedItems: r, getRovingProps: a, orientation: l } = rn(i), d = a({
108
+ onKeyDown: (p) => {
109
+ e?.onKeyDown?.(p);
110
+ const u = r();
111
+ let f;
112
+ switch (l) {
113
+ case "horizontal":
114
+ p.key === "ArrowRight" && (f = we(u, i)), p.key === "ArrowLeft" && (f = Oe(u, i));
115
+ break;
116
+ case "vertical":
117
+ p.key === "ArrowDown" && (f = we(u, i)), p.key === "ArrowUp" && (f = Oe(u, i));
118
+ break;
119
+ case "ambiguous":
120
+ ["ArrowRight", "ArrowDown"].includes(p.key) && (f = we(u, i)), ["ArrowLeft", "ArrowUp"].includes(p.key) && (f = Oe(u, i));
121
+ }
122
+ p.key === "Home" && (f = u[0]), p.key === "End" && (f = u[u.length - 1]), f && (p.preventDefault(), f.element.focus());
123
+ }
124
+ }), h = U([t, d.ref]);
125
+ return c(n, { ...e, ...d, ref: h, children: e.children });
126
+ }), ln = (o, s, e) => {
127
+ const t = (e - 1) / 2, n = Math.max(1, Math.min(Math.max(o - Math.floor(t), 1), s - e + 1)), i = Math.min(Math.max(o + Math.ceil(t), e), s), r = Array.from({ length: i + 1 - n }, (a, l) => l + n);
128
+ return e > 4 && n > 1 && r.splice(0, 2, 1, 0), e > 3 && i < s && r.splice(-2, 2, 0, s), r;
129
+ }, po = ({ currentPage: o = 1, setCurrentPage: s, onChange: e, totalPages: t = 1, showPages: n = 7 }) => J(() => {
130
+ const i = o < t, r = o !== 1, a = (l) => (d) => {
131
+ if (l < 1 || l > t)
132
+ return d.preventDefault();
133
+ e?.(d, l), d.defaultPrevented || s?.(l);
134
+ };
135
+ return {
136
+ /** Number of steps */
137
+ pages: ln(o, t, n).map((l, d) => ({
138
+ /**
139
+ * Page number or "ellipsis" for the ellipsis item
140
+ */
141
+ page: l || "ellipsis",
142
+ /**
143
+ * Unique key for the item
144
+ */
145
+ itemKey: l ? `page-${l}` : `ellipsis-${d}`,
146
+ // React key utility
147
+ /**
148
+ * Properties to spread on Pagination.Button
149
+ */
150
+ buttonProps: l ? {
151
+ "aria-current": l === o ? "page" : void 0,
152
+ onClick: a(l),
153
+ variant: l === o ? "primary" : "tertiary"
154
+ } : null
155
+ })),
156
+ /** Properties to spread on Pagination.Button used for previous naviagation */
157
+ prevButtonProps: {
158
+ "aria-hidden": !r,
159
+ // Using aria-hidden to support all HTML elements because of potential asChild
160
+ onClick: a(o - 1),
161
+ variant: "tertiary"
162
+ },
163
+ /** Properties to spread on Pagination.Button used for next naviagation */
164
+ nextButtonProps: {
165
+ "aria-hidden": !i,
166
+ // Using aria-hidden to support all HTML elements because of potential asChild
167
+ onClick: a(o + 1),
168
+ variant: "tertiary"
169
+ },
170
+ /** Indication if previous page action should be shown or not */
171
+ hasPrev: r,
172
+ /** Indication if next page action should be shown or not */
173
+ hasNext: i
174
+ };
175
+ }, [o, t, n]), cn = w(function({ className: s, count: e, maxCount: t, variant: n = "base", ...i }, r) {
176
+ return c("span", { className: E("ds-badge", s), "data-count": e && t && e > t ? `${t}+` : e, "data-variant": n, ref: r, ...i });
177
+ }), dn = w(function({ className: s, overlap: e = "rectangle", placement: t = "top-right", ...n }, i) {
178
+ return c("span", { className: E("ds-badge--position", s), "data-overlap": e, "data-placement": t, ref: i, ...n });
179
+ }), un = Object.assign(cn, { Position: dn });
180
+ un.Position.displayName = "Badge.Position";
181
+ const hn = w(({ asChild: o, className: s, ...e }, t) => c(o ? M : "a", { className: E("ds-link", s), ref: t, ...e }));
182
+ hn.displayName = "Link";
183
+ function G(o, s, e) {
184
+ let t = e.initialDeps ?? [], n, i = !0;
185
+ function r() {
186
+ var a, l, d;
187
+ let h;
188
+ e.key && ((a = e.debug) != null && a.call(e)) && (h = Date.now());
189
+ const p = o();
190
+ if (!(p.length !== t.length || p.some((g, y) => t[y] !== g)))
191
+ return n;
192
+ t = p;
193
+ let f;
194
+ if (e.key && ((l = e.debug) != null && l.call(e)) && (f = Date.now()), n = s(...p), e.key && ((d = e.debug) != null && d.call(e))) {
195
+ const g = Math.round((Date.now() - h) * 100) / 100, y = Math.round((Date.now() - f) * 100) / 100, C = y / 16, b = (m, v) => {
196
+ for (m = String(m); m.length < v; )
197
+ m = " " + m;
198
+ return m;
199
+ };
200
+ console.info(
201
+ `%c⏱ ${b(y, 5)} /${b(g, 5)} ms`,
202
+ `
203
+ font-size: .6rem;
204
+ font-weight: bold;
205
+ color: hsl(${Math.max(
206
+ 0,
207
+ Math.min(120 - 120 * C, 120)
208
+ )}deg 100% 31%);`,
209
+ e?.key
210
+ );
211
+ }
212
+ return e?.onChange && !(i && e.skipInitialOnChange) && e.onChange(n), i = !1, n;
213
+ }
214
+ return r.updateDeps = (a) => {
215
+ t = a;
216
+ }, r;
217
+ }
218
+ function $e(o, s) {
219
+ if (o === void 0)
220
+ throw new Error("Unexpected undefined");
221
+ return o;
222
+ }
223
+ const fn = (o, s) => Math.abs(o - s) < 1.01, mn = (o, s, e) => {
224
+ let t;
225
+ return function(...n) {
226
+ o.clearTimeout(t), t = o.setTimeout(() => s.apply(this, n), e);
227
+ };
228
+ }, je = (o) => {
229
+ const { offsetWidth: s, offsetHeight: e } = o;
230
+ return { width: s, height: e };
231
+ }, pn = (o) => o, bn = (o) => {
232
+ const s = Math.max(o.startIndex - o.overscan, 0), e = Math.min(o.endIndex + o.overscan, o.count - 1), t = [];
233
+ for (let n = s; n <= e; n++)
234
+ t.push(n);
235
+ return t;
236
+ }, gn = (o, s) => {
237
+ const e = o.scrollElement;
238
+ if (!e)
239
+ return;
240
+ const t = o.targetWindow;
241
+ if (!t)
242
+ return;
243
+ const n = (r) => {
244
+ const { width: a, height: l } = r;
245
+ s({ width: Math.round(a), height: Math.round(l) });
246
+ };
247
+ if (n(je(e)), !t.ResizeObserver)
248
+ return () => {
249
+ };
250
+ const i = new t.ResizeObserver((r) => {
251
+ const a = () => {
252
+ const l = r[0];
253
+ if (l?.borderBoxSize) {
254
+ const d = l.borderBoxSize[0];
255
+ if (d) {
256
+ n({ width: d.inlineSize, height: d.blockSize });
257
+ return;
258
+ }
259
+ }
260
+ n(je(e));
261
+ };
262
+ o.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(a) : a();
263
+ });
264
+ return i.observe(e, { box: "border-box" }), () => {
265
+ i.unobserve(e);
266
+ };
267
+ }, We = {
268
+ passive: !0
269
+ }, Ke = typeof window > "u" ? !0 : "onscrollend" in window, vn = (o, s) => {
270
+ const e = o.scrollElement;
271
+ if (!e)
272
+ return;
273
+ const t = o.targetWindow;
274
+ if (!t)
275
+ return;
276
+ let n = 0;
277
+ const i = o.options.useScrollendEvent && Ke ? () => {
278
+ } : mn(
279
+ t,
280
+ () => {
281
+ s(n, !1);
282
+ },
283
+ o.options.isScrollingResetDelay
284
+ ), r = (h) => () => {
285
+ const { horizontal: p, isRtl: u } = o.options;
286
+ n = p ? e.scrollLeft * (u && -1 || 1) : e.scrollTop, i(), s(n, h);
287
+ }, a = r(!0), l = r(!1);
288
+ e.addEventListener("scroll", a, We);
289
+ const d = o.options.useScrollendEvent && Ke;
290
+ return d && e.addEventListener("scrollend", l, We), () => {
291
+ e.removeEventListener("scroll", a), d && e.removeEventListener("scrollend", l);
292
+ };
293
+ }, yn = (o, s, e) => {
294
+ if (s?.borderBoxSize) {
295
+ const t = s.borderBoxSize[0];
296
+ if (t)
297
+ return Math.round(
298
+ t[e.options.horizontal ? "inlineSize" : "blockSize"]
299
+ );
300
+ }
301
+ return o[e.options.horizontal ? "offsetWidth" : "offsetHeight"];
302
+ }, Cn = (o, {
303
+ adjustments: s = 0,
304
+ behavior: e
305
+ }, t) => {
306
+ var n, i;
307
+ const r = o + s;
308
+ (i = (n = t.scrollElement) == null ? void 0 : n.scrollTo) == null || i.call(n, {
309
+ [t.options.horizontal ? "left" : "top"]: r,
310
+ behavior: e
311
+ });
312
+ };
313
+ class xn {
314
+ constructor(s) {
315
+ this.unsubs = [], this.scrollElement = null, this.targetWindow = null, this.isScrolling = !1, this.currentScrollToIndex = null, this.measurementsCache = [], this.itemSizeCache = /* @__PURE__ */ new Map(), this.laneAssignments = /* @__PURE__ */ new Map(), this.pendingMeasuredCacheIndexes = [], this.prevLanes = void 0, this.lanesChangedFlag = !1, this.lanesSettling = !1, this.scrollRect = null, this.scrollOffset = null, this.scrollDirection = null, this.scrollAdjustments = 0, this.elementsCache = /* @__PURE__ */ new Map(), this.observer = /* @__PURE__ */ (() => {
316
+ let e = null;
317
+ const t = () => e || (!this.targetWindow || !this.targetWindow.ResizeObserver ? null : e = new this.targetWindow.ResizeObserver((n) => {
318
+ n.forEach((i) => {
319
+ const r = () => {
320
+ this._measureElement(i.target, i);
321
+ };
322
+ this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(r) : r();
323
+ });
324
+ }));
325
+ return {
326
+ disconnect: () => {
327
+ var n;
328
+ (n = t()) == null || n.disconnect(), e = null;
329
+ },
330
+ observe: (n) => {
331
+ var i;
332
+ return (i = t()) == null ? void 0 : i.observe(n, { box: "border-box" });
333
+ },
334
+ unobserve: (n) => {
335
+ var i;
336
+ return (i = t()) == null ? void 0 : i.unobserve(n);
337
+ }
338
+ };
339
+ })(), this.range = null, this.setOptions = (e) => {
340
+ Object.entries(e).forEach(([t, n]) => {
341
+ typeof n > "u" && delete e[t];
342
+ }), this.options = {
343
+ debug: !1,
344
+ initialOffset: 0,
345
+ overscan: 1,
346
+ paddingStart: 0,
347
+ paddingEnd: 0,
348
+ scrollPaddingStart: 0,
349
+ scrollPaddingEnd: 0,
350
+ horizontal: !1,
351
+ getItemKey: pn,
352
+ rangeExtractor: bn,
353
+ onChange: () => {
354
+ },
355
+ measureElement: yn,
356
+ initialRect: { width: 0, height: 0 },
357
+ scrollMargin: 0,
358
+ gap: 0,
359
+ indexAttribute: "data-index",
360
+ initialMeasurementsCache: [],
361
+ lanes: 1,
362
+ isScrollingResetDelay: 150,
363
+ enabled: !0,
364
+ isRtl: !1,
365
+ useScrollendEvent: !1,
366
+ useAnimationFrameWithResizeObserver: !1,
367
+ ...e
368
+ };
369
+ }, this.notify = (e) => {
370
+ var t, n;
371
+ (n = (t = this.options).onChange) == null || n.call(t, this, e);
372
+ }, this.maybeNotify = G(
373
+ () => (this.calculateRange(), [
374
+ this.isScrolling,
375
+ this.range ? this.range.startIndex : null,
376
+ this.range ? this.range.endIndex : null
377
+ ]),
378
+ (e) => {
379
+ this.notify(e);
380
+ },
381
+ {
382
+ key: process.env.NODE_ENV !== "production" && "maybeNotify",
383
+ debug: () => this.options.debug,
384
+ initialDeps: [
385
+ this.isScrolling,
386
+ this.range ? this.range.startIndex : null,
387
+ this.range ? this.range.endIndex : null
388
+ ]
389
+ }
390
+ ), this.cleanup = () => {
391
+ this.unsubs.filter(Boolean).forEach((e) => e()), this.unsubs = [], this.observer.disconnect(), this.scrollElement = null, this.targetWindow = null;
392
+ }, this._didMount = () => () => {
393
+ this.cleanup();
394
+ }, this._willUpdate = () => {
395
+ var e;
396
+ const t = this.options.enabled ? this.options.getScrollElement() : null;
397
+ if (this.scrollElement !== t) {
398
+ if (this.cleanup(), !t) {
399
+ this.maybeNotify();
400
+ return;
401
+ }
402
+ this.scrollElement = t, this.scrollElement && "ownerDocument" in this.scrollElement ? this.targetWindow = this.scrollElement.ownerDocument.defaultView : this.targetWindow = ((e = this.scrollElement) == null ? void 0 : e.window) ?? null, this.elementsCache.forEach((n) => {
403
+ this.observer.observe(n);
404
+ }), this.unsubs.push(
405
+ this.options.observeElementRect(this, (n) => {
406
+ this.scrollRect = n, this.maybeNotify();
407
+ })
408
+ ), this.unsubs.push(
409
+ this.options.observeElementOffset(this, (n, i) => {
410
+ this.scrollAdjustments = 0, this.scrollDirection = i ? this.getScrollOffset() < n ? "forward" : "backward" : null, this.scrollOffset = n, this.isScrolling = i, this.maybeNotify();
411
+ })
412
+ ), this._scrollToOffset(this.getScrollOffset(), {
413
+ adjustments: void 0,
414
+ behavior: void 0
415
+ });
416
+ }
417
+ }, this.getSize = () => this.options.enabled ? (this.scrollRect = this.scrollRect ?? this.options.initialRect, this.scrollRect[this.options.horizontal ? "width" : "height"]) : (this.scrollRect = null, 0), this.getScrollOffset = () => this.options.enabled ? (this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset == "function" ? this.options.initialOffset() : this.options.initialOffset), this.scrollOffset) : (this.scrollOffset = null, 0), this.getFurthestMeasurement = (e, t) => {
418
+ const n = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
419
+ for (let r = t - 1; r >= 0; r--) {
420
+ const a = e[r];
421
+ if (n.has(a.lane))
422
+ continue;
423
+ const l = i.get(
424
+ a.lane
425
+ );
426
+ if (l == null || a.end > l.end ? i.set(a.lane, a) : a.end < l.end && n.set(a.lane, !0), n.size === this.options.lanes)
427
+ break;
428
+ }
429
+ return i.size === this.options.lanes ? Array.from(i.values()).sort((r, a) => r.end === a.end ? r.index - a.index : r.end - a.end)[0] : void 0;
430
+ }, this.getMeasurementOptions = G(
431
+ () => [
432
+ this.options.count,
433
+ this.options.paddingStart,
434
+ this.options.scrollMargin,
435
+ this.options.getItemKey,
436
+ this.options.enabled,
437
+ this.options.lanes
438
+ ],
439
+ (e, t, n, i, r, a) => (this.prevLanes !== void 0 && this.prevLanes !== a && (this.lanesChangedFlag = !0), this.prevLanes = a, this.pendingMeasuredCacheIndexes = [], {
440
+ count: e,
441
+ paddingStart: t,
442
+ scrollMargin: n,
443
+ getItemKey: i,
444
+ enabled: r,
445
+ lanes: a
446
+ }),
447
+ {
448
+ key: !1
449
+ }
450
+ ), this.getMeasurements = G(
451
+ () => [this.getMeasurementOptions(), this.itemSizeCache],
452
+ ({ count: e, paddingStart: t, scrollMargin: n, getItemKey: i, enabled: r, lanes: a }, l) => {
453
+ if (!r)
454
+ return this.measurementsCache = [], this.itemSizeCache.clear(), this.laneAssignments.clear(), [];
455
+ if (this.laneAssignments.size > e)
456
+ for (const u of this.laneAssignments.keys())
457
+ u >= e && this.laneAssignments.delete(u);
458
+ this.lanesChangedFlag && (this.lanesChangedFlag = !1, this.lanesSettling = !0, this.measurementsCache = [], this.itemSizeCache.clear(), this.laneAssignments.clear(), this.pendingMeasuredCacheIndexes = []), this.measurementsCache.length === 0 && !this.lanesSettling && (this.measurementsCache = this.options.initialMeasurementsCache, this.measurementsCache.forEach((u) => {
459
+ this.itemSizeCache.set(u.key, u.size);
460
+ }));
461
+ const d = this.lanesSettling ? 0 : this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;
462
+ this.pendingMeasuredCacheIndexes = [], this.lanesSettling && this.measurementsCache.length === e && (this.lanesSettling = !1);
463
+ const h = this.measurementsCache.slice(0, d), p = new Array(a).fill(
464
+ void 0
465
+ );
466
+ for (let u = 0; u < d; u++) {
467
+ const f = h[u];
468
+ f && (p[f.lane] = u);
469
+ }
470
+ for (let u = d; u < e; u++) {
471
+ const f = i(u), g = this.laneAssignments.get(u);
472
+ let y, C;
473
+ if (g !== void 0 && this.options.lanes > 1) {
474
+ y = g;
475
+ const x = p[y], O = x !== void 0 ? h[x] : void 0;
476
+ C = O ? O.end + this.options.gap : t + n;
477
+ } else {
478
+ const x = this.options.lanes === 1 ? h[u - 1] : this.getFurthestMeasurement(h, u);
479
+ C = x ? x.end + this.options.gap : t + n, y = x ? x.lane : u % this.options.lanes, this.options.lanes > 1 && this.laneAssignments.set(u, y);
480
+ }
481
+ const b = l.get(f), m = typeof b == "number" ? b : this.options.estimateSize(u), v = C + m;
482
+ h[u] = {
483
+ index: u,
484
+ start: C,
485
+ size: m,
486
+ end: v,
487
+ key: f,
488
+ lane: y
489
+ }, p[y] = u;
490
+ }
491
+ return this.measurementsCache = h, h;
492
+ },
493
+ {
494
+ key: process.env.NODE_ENV !== "production" && "getMeasurements",
495
+ debug: () => this.options.debug
496
+ }
497
+ ), this.calculateRange = G(
498
+ () => [
499
+ this.getMeasurements(),
500
+ this.getSize(),
501
+ this.getScrollOffset(),
502
+ this.options.lanes
503
+ ],
504
+ (e, t, n, i) => this.range = e.length > 0 && t > 0 ? wn({
505
+ measurements: e,
506
+ outerSize: t,
507
+ scrollOffset: n,
508
+ lanes: i
509
+ }) : null,
510
+ {
511
+ key: process.env.NODE_ENV !== "production" && "calculateRange",
512
+ debug: () => this.options.debug
513
+ }
514
+ ), this.getVirtualIndexes = G(
515
+ () => {
516
+ let e = null, t = null;
517
+ const n = this.calculateRange();
518
+ return n && (e = n.startIndex, t = n.endIndex), this.maybeNotify.updateDeps([this.isScrolling, e, t]), [
519
+ this.options.rangeExtractor,
520
+ this.options.overscan,
521
+ this.options.count,
522
+ e,
523
+ t
524
+ ];
525
+ },
526
+ (e, t, n, i, r) => i === null || r === null ? [] : e({
527
+ startIndex: i,
528
+ endIndex: r,
529
+ overscan: t,
530
+ count: n
531
+ }),
532
+ {
533
+ key: process.env.NODE_ENV !== "production" && "getVirtualIndexes",
534
+ debug: () => this.options.debug
535
+ }
536
+ ), this.indexFromElement = (e) => {
537
+ const t = this.options.indexAttribute, n = e.getAttribute(t);
538
+ return n ? parseInt(n, 10) : (console.warn(
539
+ `Missing attribute name '${t}={index}' on measured element.`
540
+ ), -1);
541
+ }, this._measureElement = (e, t) => {
542
+ const n = this.indexFromElement(e), i = this.measurementsCache[n];
543
+ if (!i)
544
+ return;
545
+ const r = i.key, a = this.elementsCache.get(r);
546
+ a !== e && (a && this.observer.unobserve(a), this.observer.observe(e), this.elementsCache.set(r, e)), e.isConnected && this.resizeItem(n, this.options.measureElement(e, t, this));
547
+ }, this.resizeItem = (e, t) => {
548
+ const n = this.measurementsCache[e];
549
+ if (!n)
550
+ return;
551
+ const i = this.itemSizeCache.get(n.key) ?? n.size, r = t - i;
552
+ r !== 0 && ((this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(n, r, this) : n.start < this.getScrollOffset() + this.scrollAdjustments) && (process.env.NODE_ENV !== "production" && this.options.debug && console.info("correction", r), this._scrollToOffset(this.getScrollOffset(), {
553
+ adjustments: this.scrollAdjustments += r,
554
+ behavior: void 0
555
+ })), this.pendingMeasuredCacheIndexes.push(n.index), this.itemSizeCache = new Map(this.itemSizeCache.set(n.key, t)), this.notify(!1));
556
+ }, this.measureElement = (e) => {
557
+ if (!e) {
558
+ this.elementsCache.forEach((t, n) => {
559
+ t.isConnected || (this.observer.unobserve(t), this.elementsCache.delete(n));
560
+ });
561
+ return;
562
+ }
563
+ this._measureElement(e, void 0);
564
+ }, this.getVirtualItems = G(
565
+ () => [this.getVirtualIndexes(), this.getMeasurements()],
566
+ (e, t) => {
567
+ const n = [];
568
+ for (let i = 0, r = e.length; i < r; i++) {
569
+ const a = e[i], l = t[a];
570
+ n.push(l);
571
+ }
572
+ return n;
573
+ },
574
+ {
575
+ key: process.env.NODE_ENV !== "production" && "getVirtualItems",
576
+ debug: () => this.options.debug
577
+ }
578
+ ), this.getVirtualItemForOffset = (e) => {
579
+ const t = this.getMeasurements();
580
+ if (t.length !== 0)
581
+ return $e(
582
+ t[Ge(
583
+ 0,
584
+ t.length - 1,
585
+ (n) => $e(t[n]).start,
586
+ e
587
+ )]
588
+ );
589
+ }, this.getMaxScrollOffset = () => {
590
+ if (!this.scrollElement) return 0;
591
+ if ("scrollHeight" in this.scrollElement)
592
+ return this.options.horizontal ? this.scrollElement.scrollWidth - this.scrollElement.clientWidth : this.scrollElement.scrollHeight - this.scrollElement.clientHeight;
593
+ {
594
+ const e = this.scrollElement.document.documentElement;
595
+ return this.options.horizontal ? e.scrollWidth - this.scrollElement.innerWidth : e.scrollHeight - this.scrollElement.innerHeight;
596
+ }
597
+ }, this.getOffsetForAlignment = (e, t, n = 0) => {
598
+ if (!this.scrollElement) return 0;
599
+ const i = this.getSize(), r = this.getScrollOffset();
600
+ t === "auto" && (t = e >= r + i ? "end" : "start"), t === "center" ? e += (n - i) / 2 : t === "end" && (e -= i);
601
+ const a = this.getMaxScrollOffset();
602
+ return Math.max(Math.min(a, e), 0);
603
+ }, this.getOffsetForIndex = (e, t = "auto") => {
604
+ e = Math.max(0, Math.min(e, this.options.count - 1));
605
+ const n = this.measurementsCache[e];
606
+ if (!n)
607
+ return;
608
+ const i = this.getSize(), r = this.getScrollOffset();
609
+ if (t === "auto")
610
+ if (n.end >= r + i - this.options.scrollPaddingEnd)
611
+ t = "end";
612
+ else if (n.start <= r + this.options.scrollPaddingStart)
613
+ t = "start";
614
+ else
615
+ return [r, t];
616
+ if (t === "end" && e === this.options.count - 1)
617
+ return [this.getMaxScrollOffset(), t];
618
+ const a = t === "end" ? n.end + this.options.scrollPaddingEnd : n.start - this.options.scrollPaddingStart;
619
+ return [
620
+ this.getOffsetForAlignment(a, t, n.size),
621
+ t
622
+ ];
623
+ }, this.isDynamicMode = () => this.elementsCache.size > 0, this.scrollToOffset = (e, { align: t = "start", behavior: n } = {}) => {
624
+ n === "smooth" && this.isDynamicMode() && console.warn(
625
+ "The `smooth` scroll behavior is not fully supported with dynamic size."
626
+ ), this._scrollToOffset(this.getOffsetForAlignment(e, t), {
627
+ adjustments: void 0,
628
+ behavior: n
629
+ });
630
+ }, this.scrollToIndex = (e, { align: t = "auto", behavior: n } = {}) => {
631
+ n === "smooth" && this.isDynamicMode() && console.warn(
632
+ "The `smooth` scroll behavior is not fully supported with dynamic size."
633
+ ), e = Math.max(0, Math.min(e, this.options.count - 1)), this.currentScrollToIndex = e;
634
+ let i = 0;
635
+ const r = 10, a = (d) => {
636
+ if (!this.targetWindow) return;
637
+ const h = this.getOffsetForIndex(e, d);
638
+ if (!h) {
639
+ console.warn("Failed to get offset for index:", e);
640
+ return;
641
+ }
642
+ const [p, u] = h;
643
+ this._scrollToOffset(p, { adjustments: void 0, behavior: n }), this.targetWindow.requestAnimationFrame(() => {
644
+ const f = () => {
645
+ if (this.currentScrollToIndex !== e) return;
646
+ const g = this.getScrollOffset(), y = this.getOffsetForIndex(e, u);
647
+ if (!y) {
648
+ console.warn("Failed to get offset for index:", e);
649
+ return;
650
+ }
651
+ fn(y[0], g) || l(u);
652
+ };
653
+ this.isDynamicMode() ? this.targetWindow.requestAnimationFrame(f) : f();
654
+ });
655
+ }, l = (d) => {
656
+ this.targetWindow && this.currentScrollToIndex === e && (i++, i < r ? (process.env.NODE_ENV !== "production" && this.options.debug && console.info("Schedule retry", i, r), this.targetWindow.requestAnimationFrame(() => a(d))) : console.warn(
657
+ `Failed to scroll to index ${e} after ${r} attempts.`
658
+ ));
659
+ };
660
+ a(t);
661
+ }, this.scrollBy = (e, { behavior: t } = {}) => {
662
+ t === "smooth" && this.isDynamicMode() && console.warn(
663
+ "The `smooth` scroll behavior is not fully supported with dynamic size."
664
+ ), this._scrollToOffset(this.getScrollOffset() + e, {
665
+ adjustments: void 0,
666
+ behavior: t
667
+ });
668
+ }, this.getTotalSize = () => {
669
+ var e;
670
+ const t = this.getMeasurements();
671
+ let n;
672
+ if (t.length === 0)
673
+ n = this.options.paddingStart;
674
+ else if (this.options.lanes === 1)
675
+ n = ((e = t[t.length - 1]) == null ? void 0 : e.end) ?? 0;
676
+ else {
677
+ const i = Array(this.options.lanes).fill(null);
678
+ let r = t.length - 1;
679
+ for (; r >= 0 && i.some((a) => a === null); ) {
680
+ const a = t[r];
681
+ i[a.lane] === null && (i[a.lane] = a.end), r--;
682
+ }
683
+ n = Math.max(...i.filter((a) => a !== null));
684
+ }
685
+ return Math.max(
686
+ n - this.options.scrollMargin + this.options.paddingEnd,
687
+ 0
688
+ );
689
+ }, this._scrollToOffset = (e, {
690
+ adjustments: t,
691
+ behavior: n
692
+ }) => {
693
+ this.options.scrollToFn(e, { behavior: n, adjustments: t }, this);
694
+ }, this.measure = () => {
695
+ this.itemSizeCache = /* @__PURE__ */ new Map(), this.laneAssignments = /* @__PURE__ */ new Map(), this.notify(!1);
696
+ }, this.setOptions(s);
697
+ }
698
+ }
699
+ const Ge = (o, s, e, t) => {
700
+ for (; o <= s; ) {
701
+ const n = (o + s) / 2 | 0, i = e(n);
702
+ if (i < t)
703
+ o = n + 1;
704
+ else if (i > t)
705
+ s = n - 1;
706
+ else
707
+ return n;
708
+ }
709
+ return o > 0 ? o - 1 : 0;
710
+ };
711
+ function wn({
712
+ measurements: o,
713
+ outerSize: s,
714
+ scrollOffset: e,
715
+ lanes: t
716
+ }) {
717
+ const n = o.length - 1, i = (l) => o[l].start;
718
+ if (o.length <= t)
719
+ return {
720
+ startIndex: 0,
721
+ endIndex: n
722
+ };
723
+ let r = Ge(
724
+ 0,
725
+ n,
726
+ i,
727
+ e
728
+ ), a = r;
729
+ if (t === 1)
730
+ for (; a < n && o[a].end < e + s; )
731
+ a++;
732
+ else if (t > 1) {
733
+ const l = Array(t).fill(0);
734
+ for (; a < n && l.some((h) => h < e + s); ) {
735
+ const h = o[a];
736
+ l[h.lane] = h.end, a++;
737
+ }
738
+ const d = Array(t).fill(e + s);
739
+ for (; r >= 0 && d.some((h) => h >= e); ) {
740
+ const h = o[r];
741
+ d[h.lane] = h.start, r--;
742
+ }
743
+ r = Math.max(0, r - r % t), a = Math.min(n, a + (t - 1 - a % t));
744
+ }
745
+ return { startIndex: r, endIndex: a };
746
+ }
747
+ const He = typeof document < "u" ? le.useLayoutEffect : le.useEffect;
748
+ function On({
749
+ useFlushSync: o = !0,
750
+ ...s
751
+ }) {
752
+ const e = le.useReducer(() => ({}), {})[1], t = {
753
+ ...s,
754
+ onChange: (i, r) => {
755
+ var a;
756
+ o && r ? Xe(e) : e(), (a = s.onChange) == null || a.call(s, i, r);
757
+ }
758
+ }, [n] = le.useState(
759
+ () => new xn(t)
760
+ );
761
+ return n.setOptions(t), He(() => n._didMount(), []), He(() => n._willUpdate()), n;
762
+ }
763
+ function En(o) {
764
+ return On({
765
+ observeElementRect: gn,
766
+ observeElementOffset: vn,
767
+ scrollToFn: Cn,
768
+ ...o
769
+ });
770
+ }
771
+ const Je = ({ size: o, error: s, formFieldProps: e }) => c("div", { className: "ds-combobox__error-message", id: e.errorId, "aria-live": "polite", "aria-relevant": "additions removals", children: s && c(Ne, { "data-size": o, children: s }) });
772
+ Je.displayName = "ComboboxError";
773
+ const Qe = w(function({ asChild: s, className: e, ...t }, n) {
774
+ return c(s ? M : "button", { className: E("ds-chip", e), type: s ? void 0 : "button", ref: n, ...t });
775
+ }), Ze = w(function(s, e) {
776
+ return c(Qe, { "data-removable": !0, ref: e, ...s });
777
+ }), et = w(function({ asChild: s, children: e, className: t, "data-size": n, "data-color": i, ...r }, a) {
778
+ const l = r.type ?? "checkbox";
779
+ return _(s ? M : "label", { className: E("ds-chip", t), "data-size": n, "data-color": i, ref: a, children: [c(ue, { ...r, type: l }), c(_t, { children: e })] });
780
+ }), In = w(function(s, e) {
781
+ return c(et, { ref: e, type: "radio", ...s });
782
+ }), fe = {
783
+ Button: Qe,
784
+ Checkbox: et,
785
+ Radio: In,
786
+ Removable: Ze
787
+ };
788
+ fe.Button.displayName = "Chip.Button";
789
+ fe.Checkbox.displayName = "Chip.Checkbox";
790
+ fe.Radio.displayName = "Chip.Radio";
791
+ fe.Removable.displayName = "Chip.Removable";
792
+ const tt = () => {
793
+ const o = R(q);
794
+ if (!o)
795
+ throw new Error("ComboboxContext is missing");
796
+ const { size: s, readOnly: e, disabled: t, selectedOptions: n, chipSrLabel: i, handleSelectOption: r, inputRef: a } = o;
797
+ return c(Se, { children: Object.keys(n).map((l) => c(Ze, { "data-size": s, disabled: t, onKeyDown: (d) => {
798
+ e || t || d.key === "Enter" && (d.stopPropagation(), r({
799
+ option: n[l],
800
+ remove: !0
801
+ }), a?.current?.focus());
802
+ }, onClick: () => {
803
+ e || t || r({
804
+ option: n[l],
805
+ remove: !0
806
+ });
807
+ }, "aria-label": i(n[l]), children: n[l].label }, l)) });
808
+ };
809
+ tt.displayName = "ComboboxChips";
810
+ const nt = w((o, s) => {
811
+ const e = R(q);
812
+ if (!e)
813
+ throw new Error("ComboboxContext is missing");
814
+ const { readOnly: t, disabled: n, clearButtonLabel: i, handleSelectOption: r } = e;
815
+ return c("button", { ...o, ref: s, disabled: n, className: E("ds-combobox__clear-button", "ds-focus"), onClick: () => {
816
+ t || n || r({ option: null, clear: !0 });
817
+ }, onKeyDown: (a) => {
818
+ t || n || a.key === "Enter" && (a.stopPropagation(), r({ option: null, clear: !0 }));
819
+ }, type: "button", "aria-label": i, children: c(Gt, { fontSize: "1.5em", title: "Clear selection" }) });
820
+ });
821
+ nt.displayName = "ComboboxClearButton";
822
+ const ot = ({ hideClearButton: o, listId: s, error: e, hideChips: t, handleKeyDown: n, ...i }) => {
823
+ const r = R(q), a = ke(), l = F(null);
824
+ if (!r)
825
+ throw new Error("ComboboxContext is missing");
826
+ const d = (T) => {
827
+ a?.({ type: "SET_ACTIVE_INDEX", payload: T });
828
+ }, { forwareddRef: h, readOnly: p, disabled: u, open: f, inputRef: g, refs: y, inputValue: C, multiple: b, selectedOptions: m, formFieldProps: v, htmlSize: x, options: O, setOpen: S, getReferenceProps: k, setInputValue: B, handleSelectOption: L, size: $ } = r, V = qe([h, g]), ie = (T) => {
829
+ const X = T.target.value;
830
+ B(X), d(0);
831
+ for (const Y of Object.values(O))
832
+ if (Y.label.toLowerCase() === X.toLowerCase()) {
833
+ if (m[P(Y.value)])
834
+ continue;
835
+ L({ option: Y });
836
+ }
837
+ }, z = !o && Object.keys(m).length > 0, Z = k({
838
+ ref: y?.setReference,
839
+ role: null,
840
+ "aria-controls": null,
841
+ "aria-expanded": null,
842
+ "aria-haspopup": null,
843
+ /* If we click the wrapper, toggle open, set index to first option, and focus the input */
844
+ onClick(T) {
845
+ u || p || l.current?.contains(T.target) || (S(!f), d(0), g.current?.focus());
846
+ },
847
+ /* Handles list navigation */
848
+ onKeyDown: n,
849
+ // preventDefault on keydown to avoid sending in form
850
+ onKeyPress(T) {
851
+ T.key === "Enter" && T.preventDefault();
852
+ }
853
+ });
854
+ return c(Ie, { "data-size": $, asChild: !0, children: _("div", { ...Z, "aria-disabled": u ? "true" : void 0, className: E("ds-textfield__input", "ds-combobox__input__wrapper", p && "ds-combobox--readonly", e && "ds-combobox--error"), children: [_("div", { className: "ds-combobox__chip-and-input", children: [b && !t && c(tt, {}), c(Ie, { "data-size": $, asChild: !0, children: c("input", { ref: V, "aria-activedescendant": Z["aria-activedescendant"], readOnly: p, "aria-autocomplete": "list", role: "combobox", "aria-expanded": f, "aria-controls": f ? s : void 0, autoComplete: "off", size: x, value: C, ...ce(["style", "className"], i), ...v.inputProps, className: "ds-combobox__input", onChange: (T) => {
855
+ ie(T), !f && S(!0), i.onChange?.(T);
856
+ } }) })] }), z && c(nt, { ref: l }), c("div", { className: "ds-combobox__arrow", children: f ? c(Jt, { title: "arrow up", fontSize: "1.5em" }) : c(Qt, { title: "arrow down", fontSize: "1.5em" }) })] }) });
857
+ };
858
+ ot.displayName = "ComboboxInput";
859
+ const st = ({ label: o, description: s, hideLabel: e, size: t, readOnly: n, formFieldProps: i }) => _(Se, { children: [o && _(K, { "data-size": t, htmlFor: i.inputProps.id, className: E("ds-combobox__label", e && "ds-sr-only"), children: [n && c(on, { "aria-hidden": !0, className: "ds-combobox__readonly__icon" }), o] }), s && c(Ie, { asChild: !0, "data-size": t, children: c("div", { id: i.descriptionId, className: E("ds-combobox__description", e && "ds-sr-only"), children: s }) })] });
860
+ st.displayName = "ComboboxLabel";
861
+ const it = ({ selectedOptions: o, multiple: s, name: e }) => {
862
+ const t = Object.keys(o).map((n) => Ee(n));
863
+ return c("select", { name: e, multiple: s, style: { display: "none" }, value: s ? t : t[0], onChange: () => {
864
+ }, children: t.map((n) => c("option", { value: n }, n)) });
865
+ };
866
+ it.displayName = "ComboboxNative";
867
+ const rt = w(({ children: o, className: s, ...e }, t) => c("span", { className: E("ds-combobox__option__description", s), ref: t, ...e, children: o }));
868
+ rt.displayName = "ComboboxOptionDescription";
869
+ const at = ({ multiple: o, selected: s }) => c("div", { className: E(o && "ds-combobox__option__icon-wrapper", s && "ds-combobox__option__icon-wrapper--selected"), children: s && c(en, { className: "ds-combobox__option__icon-wrapper__icon", "aria-hidden": !0 }) });
870
+ at.displayName = "SelectedIcon";
871
+ const Sn = ({ id: o, ref: s, value: e }) => {
872
+ const t = Q(), n = o || t, i = R(q), { activeIndex: r } = _e(), a = ke();
873
+ if (!i)
874
+ throw new Error("ComboboxOption must be used within a Combobox");
875
+ const { selectedOptions: l, onOptionClick: d, setListRef: h, customIds: p, filteredOptions: u } = i, f = J(() => u.indexOf(P(String(e))) + p.length, [p.length, u, e]), g = qe([
876
+ (m) => {
877
+ h(f, m);
878
+ },
879
+ s
880
+ ]);
881
+ if (f === -1)
882
+ throw new Error("Internal error: ComboboxOption did not find index");
883
+ const y = l[P(e)], C = r === f;
884
+ D(() => {
885
+ C && a?.({ type: "SET_ACTIVE_INDEX", payload: f });
886
+ }, [t, o, a, C, f]);
887
+ const b = Me(() => d(e), 50);
888
+ return {
889
+ id: n,
890
+ ref: g,
891
+ selected: y,
892
+ active: C,
893
+ onOptionClick: b
894
+ };
895
+ }, ze = It(w(({ value: o, description: s, children: e, className: t, ...n }, i) => {
896
+ const r = Q(), { id: a, ref: l, selected: d, active: h, onOptionClick: p } = Sn({
897
+ id: n.id,
898
+ ref: i,
899
+ value: o
900
+ }), u = R(q);
901
+ if (!u)
902
+ throw new Error("ComboboxOption must be used within a Combobox");
903
+ const { size: f, multiple: g, getItemProps: y } = u, C = y();
904
+ return c(K, { "data-size": "md", asChild: !0, children: _("button", { ref: l, id: a, role: "option", type: "button", "aria-selected": !!d, "aria-labelledby": r, tabIndex: -1, onClick: (b) => {
905
+ p(), n.onClick?.(b);
906
+ }, className: E("ds-combobox__option", h && "ds-combobox__option--active", g && "ds-combobox__option--multiple", t), ...ce(["displayValue"], n), ...ce(["onClick", "onPointerLeave"], C), children: [c(K, { asChild: !0, "data-size": f, children: c("span", { children: c(at, { multiple: g, selected: !!d }) }) }), _(K, { className: "ds-combobox__option__label", "data-size": f, id: r, children: [e, s && c(rt, { children: s })] })] }) });
907
+ }));
908
+ ze.displayName = "ComboboxOption";
909
+ function kn(o) {
910
+ return Et(o) && o.type === ze;
911
+ }
912
+ const _n = (o) => !!o;
913
+ function Nn({ children: o, inputValue: s, multiple: e, filter: t = (i, r) => r.label.toLowerCase().startsWith(i.toLowerCase()), initialValue: n }) {
914
+ const i = St(t, [t]), { optionsChildren: r, customIds: a, restChildren: l, interactiveChildren: d } = J(() => Be.toArray(o).reduce((m, v) => {
915
+ if (kn(v))
916
+ m.optionsChildren.push(v);
917
+ else if (m.restChildren.push(v), Nt(v)) {
918
+ const x = v;
919
+ if (m.interactiveChildren.push(x), !x.props.id)
920
+ throw new Error("If ComboboxCustom is interactive, it must have an id");
921
+ m.customIds.push(x.props.id);
922
+ }
923
+ return m;
924
+ }, {
925
+ optionsChildren: [],
926
+ customIds: [],
927
+ restChildren: [],
928
+ interactiveChildren: []
929
+ }), [o]), h = J(() => {
930
+ const C = [], b = {};
931
+ return r.map((m) => {
932
+ const v = m.props;
933
+ let x = v.displayValue || "";
934
+ if (!v.displayValue) {
935
+ let O = "";
936
+ Be.forEach(v.children, (S) => {
937
+ if (typeof S == "string")
938
+ O += S;
939
+ else
940
+ throw new Error("If ComboboxOption is not a string, it must have a displayValue prop");
941
+ }), x = O;
942
+ }
943
+ return C.includes(v.value) && console.warn(`Combobox has multiple options with the same value: ${v.value}`), C.push(v.value), b[P(String(v.value))] = {
944
+ value: String(v.value),
945
+ label: x,
946
+ displayValue: v.displayValue,
947
+ description: v.description
948
+ }, null;
949
+ }), b;
950
+ }, [r]), p = J(() => (n?.map((C) => P(C)) || []).reduce((C, b) => {
951
+ const m = h[b];
952
+ return _n(m) && (C[b] = m), C;
953
+ }, {}), [n, h]), [u, f] = A(p), { filteredOptions: g, filteredOptionsChildren: y } = J(() => {
954
+ const C = [], b = Object.keys(h).map((m, v) => !e && Object.keys(u).length === 1 || e && u[m] || i(s, h[m]) ? (C.push(m), r[v]) : null).filter((m) => m);
955
+ return { filteredOptions: C, filteredOptionsChildren: b };
956
+ }, [
957
+ i,
958
+ s,
959
+ e,
960
+ h,
961
+ r,
962
+ u
963
+ ]);
964
+ return {
965
+ filteredOptionsChildren: y,
966
+ filteredOptions: g,
967
+ restChildren: l,
968
+ options: h,
969
+ customIds: a,
970
+ selectedOptions: u,
971
+ interactiveChildren: d,
972
+ setSelectedOptions: f
973
+ };
974
+ }
975
+ const Mn = ({ readOnly: o, disabled: s, interactiveChildren: e, filteredOptions: t, inputValue: n, selectedOptions: i, multiple: r, open: a, options: l, setOpen: d, handleSelectOption: h }) => {
976
+ const { activeIndex: p } = _e();
977
+ return Me((g) => {
978
+ if (!(o || s) && g)
979
+ switch (g.key) {
980
+ case "ArrowDown":
981
+ if (g.preventDefault(), a)
982
+ break;
983
+ d(!0);
984
+ break;
985
+ case "ArrowUp":
986
+ if (g.preventDefault(), p !== 0)
987
+ break;
988
+ d(!1);
989
+ break;
990
+ case "Enter": {
991
+ if (g.preventDefault(), !a)
992
+ break;
993
+ if (p <= e.length - 1) {
994
+ const b = e[p];
995
+ if (b.props.onSelect) {
996
+ b?.props.onSelect();
997
+ return;
998
+ }
999
+ }
1000
+ const y = p - e.length, C = t[y];
1001
+ h({ option: l[C] });
1002
+ break;
1003
+ }
1004
+ case "Backspace":
1005
+ if (!r) {
1006
+ const y = Object.keys(i).pop();
1007
+ y && h({
1008
+ option: i[y],
1009
+ remove: !0
1010
+ });
1011
+ break;
1012
+ }
1013
+ if (n === "" && r) {
1014
+ const y = Object.keys(i).pop();
1015
+ y && h({
1016
+ option: i[y],
1017
+ remove: !0
1018
+ });
1019
+ }
1020
+ break;
1021
+ }
1022
+ }, 20);
1023
+ }, zn = ({ listRef: o }) => {
1024
+ const [s, e] = A(!1), { activeIndex: t } = _e(), n = ke(), { refs: i, floatingStyles: r, context: a } = Mt({
1025
+ open: s,
1026
+ onOpenChange: (g) => {
1027
+ g || n?.({ type: "SET_ACTIVE_INDEX", payload: 0 }), Xe(() => {
1028
+ i.floating.current && !g && (i.floating.current.scrollTop = 0), setTimeout(() => {
1029
+ e(g);
1030
+ }, 1);
1031
+ });
1032
+ },
1033
+ whileElementsMounted: (g, y, C) => (Ue(g, y, C), () => {
1034
+ y.scrollTop = 0;
1035
+ }),
1036
+ middleware: [
1037
+ Dt({ padding: 10 }),
1038
+ Ft({
1039
+ apply({ rects: g, elements: y }) {
1040
+ requestAnimationFrame(() => {
1041
+ Object.assign(y.floating.style, {
1042
+ width: `${g.reference.width}px`,
1043
+ maxHeight: "200px"
1044
+ });
1045
+ });
1046
+ }
1047
+ }),
1048
+ At(10)
1049
+ ]
1050
+ }), l = zt(a, { role: "listbox" }), d = Tt(a), h = Rt(a, {
1051
+ listRef: o,
1052
+ activeIndex: t,
1053
+ virtual: !0,
1054
+ scrollItemIntoView: !0,
1055
+ enabled: s,
1056
+ focusItemOnHover: !0,
1057
+ onNavigate: (g) => {
1058
+ n?.({ type: "SET_ACTIVE_INDEX", payload: g || 0 });
1059
+ }
1060
+ }), { getReferenceProps: p, getFloatingProps: u, getItemProps: f } = Pt([l, d, h]);
1061
+ return {
1062
+ open: s,
1063
+ setOpen: e,
1064
+ activeIndex: t,
1065
+ refs: i,
1066
+ floatingStyles: r,
1067
+ context: a,
1068
+ getReferenceProps: p,
1069
+ getFloatingProps: u,
1070
+ getItemProps: f
1071
+ };
1072
+ }, Tn = se(null), Rn = (o, s) => {
1073
+ const e = R(Tn), t = Q(), n = o.id ?? `${s}-${t}`, i = o.errorId ?? `${s}-error-${t}`, r = `${s}-description-${t}`, a = o.size ?? e?.size ?? "md", l = e?.disabled || o?.disabled, d = !l && !!(o.error || e?.error);
1074
+ return {
1075
+ hasError: d,
1076
+ errorId: i,
1077
+ descriptionId: r,
1078
+ size: a,
1079
+ inputProps: {
1080
+ id: n,
1081
+ disabled: l,
1082
+ "aria-invalid": d ? !0 : void 0,
1083
+ "aria-describedby": E(o["aria-describedby"], !!o?.description && typeof o?.description == "string" && r, d && !e?.error && i, d && !!e?.error && e?.errorId) || void 0
1084
+ }
1085
+ };
1086
+ }, Pn = w(({ value: o, initialValue: s = [], onValueChange: e, label: t, hideLabel: n = !1, description: i, multiple: r = !1, disabled: a = !1, readOnly: l = !1, hideChips: d = !1, clearButtonLabel: h = "Fjern alt", hideClearButton: p = !1, error: u, errorId: f, id: g, name: y, portal: C = !0, htmlSize: b = 0, virtual: m = !1, children: v, style: x, size: O = "md", loading: S, loadingLabel: k = "Laster...", filter: B, chipSrLabel: L = (z) => "Slett " + z.label, className: $, ...V }, ie) => {
1087
+ const z = F(null), Z = F(null), T = F([]), [X, Y] = A(V.inputValue || "");
1088
+ D(() => {
1089
+ typeof V.inputValue == "string" && Y(V.inputValue);
1090
+ }, [V.inputValue]);
1091
+ const { selectedOptions: ee, options: j, restChildren: mt, interactiveChildren: pt, customIds: bt, filteredOptionsChildren: be, filteredOptions: Ae, setSelectedOptions: te } = Nn({
1092
+ children: v,
1093
+ inputValue: X,
1094
+ filter: B,
1095
+ multiple: r,
1096
+ initialValue: s
1097
+ }), { open: ge, setOpen: ve, refs: re, floatingStyles: gt, context: Le, getReferenceProps: vt, getFloatingProps: yt, getItemProps: Ct } = zn({
1098
+ listRef: T
1099
+ }), ne = Rn({
1100
+ disabled: a,
1101
+ error: u,
1102
+ errorId: f,
1103
+ size: O,
1104
+ description: i,
1105
+ id: g
1106
+ }, "combobox");
1107
+ D(() => {
1108
+ if (o && o.length > 0 && !r) {
1109
+ const N = j[P(o[0])];
1110
+ z.current && ae(z.current, N?.label || "");
1111
+ }
1112
+ }, [r, o, j]), D(() => {
1113
+ if (o && Object.keys(j).length >= 0) {
1114
+ const N = o.map((I) => j[P(I)]);
1115
+ te(N.reduce((I, oe) => (I[P(oe.value)] = oe, I), {}));
1116
+ }
1117
+ }, [r, o, j, te]);
1118
+ const ye = Me((N) => {
1119
+ const { option: I, clear: oe, remove: wt } = N;
1120
+ if (oe) {
1121
+ te({}), z.current && ae(z.current, ""), e?.([]);
1122
+ return;
1123
+ }
1124
+ if (!I)
1125
+ return;
1126
+ if (wt) {
1127
+ const H = { ...ee };
1128
+ delete H[P(I.value)], te(H), e?.(Object.keys(H).map((Ot) => Ee(Ot)));
1129
+ return;
1130
+ }
1131
+ const W = { ...ee };
1132
+ if (r)
1133
+ W[P(I.value)] ? delete W[P(I.value)] : W[P(I.value)] = I, z.current && ae(z.current, ""), z.current?.focus();
1134
+ else {
1135
+ for (const H of Object.keys(W))
1136
+ delete W[H];
1137
+ W[P(I.value)] = I, z.current && ae(z.current, I?.label || ""), setTimeout(() => {
1138
+ z.current?.setSelectionRange(I?.label?.length || 0, I?.label?.length || 0);
1139
+ }, 0);
1140
+ }
1141
+ te(W), e?.(Object.keys(W).map((H) => Ee(H))), !r && ve(!1), re.domReference.current?.focus();
1142
+ }, 50), xt = Mn({
1143
+ filteredOptions: Ae,
1144
+ selectedOptions: ee,
1145
+ readOnly: ne.readOnly || !1,
1146
+ disabled: a,
1147
+ multiple: r,
1148
+ inputValue: X,
1149
+ options: j,
1150
+ open: ge,
1151
+ interactiveChildren: pt,
1152
+ setOpen: ve,
1153
+ handleSelectOption: ye
1154
+ }), Ce = En({
1155
+ count: Object.keys(be).length,
1156
+ getScrollElement: () => m ? re.floating.current : null,
1157
+ estimateSize: () => 70,
1158
+ measureElement: (N) => N.getBoundingClientRect().height,
1159
+ overscan: 7
1160
+ });
1161
+ return _(q.Provider, { value: {
1162
+ size: O,
1163
+ options: j,
1164
+ selectedOptions: ee,
1165
+ multiple: r,
1166
+ disabled: a,
1167
+ readOnly: l,
1168
+ open: ge,
1169
+ inputRef: z,
1170
+ refs: re,
1171
+ inputValue: X,
1172
+ formFieldProps: ne,
1173
+ htmlSize: b,
1174
+ clearButtonLabel: h,
1175
+ customIds: bt,
1176
+ filteredOptions: Ae,
1177
+ setInputValue: Y,
1178
+ setOpen: ve,
1179
+ getReferenceProps: vt,
1180
+ getItemProps: Ct,
1181
+ /* Recieves the value of the option, and searches for it in our values lookup */
1182
+ onOptionClick: (N) => {
1183
+ if (l || a)
1184
+ return;
1185
+ const I = j[P(N)];
1186
+ ye({ option: I });
1187
+ },
1188
+ handleSelectOption: ye,
1189
+ chipSrLabel: L,
1190
+ listRef: T,
1191
+ forwareddRef: ie,
1192
+ setListRef: (N, I) => {
1193
+ T.current[N] = I;
1194
+ }
1195
+ }, children: [_("div", { className: E("ds-combobox", `ds-combobox--${O}`, a && "ds-combobox__disabled", $), style: x, ref: Z, children: [y && c(it, { name: y, selectedOptions: ee, multiple: r }), c(st, { label: t, description: i, size: O, readOnly: l, hideLabel: n, formFieldProps: ne }), c(ot, { ...ce(["inputValue"], V), hideClearButton: p, listId: Le.floatingId || "", error: u, hideChips: d, handleKeyDown: xt, "aria-busy": S }), c(Je, { size: O, error: u, formFieldProps: ne })] }), ge && c(Bt, { root: C ? null : Z, children: c(Vt, { context: Le, initialFocus: -1, visuallyHiddenDismiss: !0, children: _("div", { "aria-labelledby": ne.inputProps.id, "aria-autocomplete": "list", tabIndex: -1, ...yt({
1196
+ ref: re.setFloating,
1197
+ style: {
1198
+ ...gt
1199
+ }
1200
+ }), className: E("ds-combobox__options-wrapper", `ds-combobox--${O}`), children: [m && c("div", { style: {
1201
+ height: `${Ce.getTotalSize()}px`,
1202
+ width: "100%",
1203
+ position: "relative"
1204
+ }, children: Ce.getVirtualItems().map((N) => c("div", { ref: Ce.measureElement, "data-index": N.index, style: {
1205
+ position: "absolute",
1206
+ top: 0,
1207
+ left: 0,
1208
+ width: "100%",
1209
+ transform: `translateY(${N.start}px)`
1210
+ }, children: be[N.index] }, N.index)) }), S ? _($t, { className: "ds-combobox__loading", children: [c(qt, { "aria-label": "Laster", "data-size": "sm" }), k] }) : _(Se, { children: [mt, !m && be] })] }) }) })] });
1211
+ }), lt = w((o, s) => c(Lt, { children: c(Pn, { ...o, ref: s }) }));
1212
+ lt.displayName = "Combobox";
1213
+ const ct = w(({ children: o, className: s, ...e }, t) => {
1214
+ const n = R(q);
1215
+ if (!n)
1216
+ throw new Error("ComboboxEmpty must be used within a Combobox");
1217
+ const { filteredOptions: i, size: r } = n;
1218
+ return i.length === 0 && c(K, { "data-size": r, asChild: !0, children: c("div", { ref: t, className: E("ds-combobox__empty", s), ...e, children: o }) });
1219
+ });
1220
+ ct.displayName = "ComboboxEmpty";
1221
+ const me = lt;
1222
+ me.Option = ze;
1223
+ me.Empty = ct;
1224
+ me.Option.displayName = "Combobox.Option";
1225
+ me.Empty.displayName = "Combobox.Empty";
1226
+ const bo = w(function({ "data-size": s, className: e, style: t, children: n, label: i, description: r, error: a, ...l }, d) {
1227
+ return _(de, { "data-size": s, className: e, style: t, children: [c(ue, { type: "checkbox", ref: d, ...l }), !!i && c(K, { weight: "regular", children: i }), !!r && c("div", { "data-field": "description", children: r }), !!a && c(Ne, { children: a })] });
1228
+ }), Te = se({
1229
+ current: null
1230
+ }), dt = ({ children: o }) => {
1231
+ const s = F(null);
1232
+ return c(Te.Provider, { value: s, children: o });
1233
+ };
1234
+ dt.displayName = "DialogTriggerContext";
1235
+ const Dn = w(function({ asChild: s, children: e, className: t, placement: n = "center", closeButton: i = "Lukk dialogvindu", closedby: r = "closerequest", modal: a = !0, onClose: l, open: d, ...h }, p) {
1236
+ const u = R(Te), f = F(null), g = s ? M : "dialog", y = U([u, p, f]), C = a ? "showModal" : "show";
1237
+ return D(() => f.current?.[d ? C : "close"](), [d]), D(() => {
1238
+ const b = f.current, m = (x) => {
1239
+ if (x.defaultPrevented)
1240
+ return;
1241
+ const { clientY: O, clientX: S, target: k } = x;
1242
+ if (k instanceof Element && x.type === "click" && k.closest('[data-command="close"]'))
1243
+ return b?.close();
1244
+ if (!(b && "closedBy" in b)) {
1245
+ if (x instanceof KeyboardEvent)
1246
+ return r === "none" && x.key === "Escape" && x.preventDefault();
1247
+ if (!window.getSelection()?.toString() && b && k === b && r === "any") {
1248
+ const { top: B, left: L, right: $, bottom: V } = b.getBoundingClientRect();
1249
+ B <= O && O <= V && L <= S && S <= $ || b?.close();
1250
+ }
1251
+ }
1252
+ }, v = () => {
1253
+ const x = b?.querySelector("[autofocus]");
1254
+ document.activeElement !== x && x?.focus();
1255
+ };
1256
+ return b?.addEventListener("animationend", v), b?.addEventListener("click", m), b?.addEventListener("keydown", m), () => {
1257
+ b?.removeEventListener("animationend", v), b?.removeEventListener("click", m), b?.removeEventListener("keydown", m);
1258
+ };
1259
+ }, [r]), D(() => {
1260
+ const b = (v) => l?.(v), m = f.current;
1261
+ return m?.addEventListener("close", b), () => m?.removeEventListener("close", b);
1262
+ }, [l]), _(g, { className: E("ds-dialog", t), ref: y, "data-placement": n, "data-modal": a, closedby: r, ...h, children: [i !== !1 && c(he, { "aria-label": i, "data-color": "neutral", icon: !0, variant: "tertiary", "data-command": "close" }), e] });
1263
+ }), Fn = w(function({ asChild: s, className: e, ...t }, n) {
1264
+ return c(s ? M : "div", { className: E("ds-dialog__block", e), ref: n, ...t });
1265
+ }), An = w(function({ asChild: s, ...e }, t) {
1266
+ const n = R(Te);
1267
+ return c(s ? M : he, { "aria-haspopup": "dialog", onClick: () => {
1268
+ n.current?.getAttribute("data-modal") === "true" ? n.current?.showModal() : n.current?.show();
1269
+ }, ref: t, ...e });
1270
+ }), Re = Object.assign(Dn, {
1271
+ Block: Fn,
1272
+ TriggerContext: dt,
1273
+ Trigger: An
1274
+ });
1275
+ Re.Block.displayName = "Dialog.Block";
1276
+ Re.TriggerContext.displayName = "Dialog.TriggerContext";
1277
+ Re.Trigger.displayName = "Dialog.Trigger";
1278
+ const ut = ({ children: o }) => {
1279
+ const s = Q(), [e, t] = A(s);
1280
+ return c(Pe.Provider, { value: { popoverId: e, setPopoverId: t }, children: o });
1281
+ };
1282
+ ut.displayName = "PopoverTriggerContext";
1283
+ const Pe = se({}), Ln = w(function({ id: s, className: e, onClose: t, onOpen: n, open: i, variant: r = "default", placement: a = "top", autoPlacement: l = !0, asChild: d = !1, ...h }, p) {
1284
+ const u = d ? M : "div", f = F(null), g = U([f, p]), { popoverId: y, setPopoverId: C } = R(Pe), [b, m] = A(!1), v = i ?? b;
1285
+ return D(() => {
1286
+ const x = f.current, O = (k) => {
1287
+ const B = k.target, L = B?.closest?.(`[popovertarget="${x?.id}"]`), $ = !L && !x?.contains(B);
1288
+ L && k.preventDefault(), v && (L || $) ? (m(!1), t?.()) : !v && L && (m(!0), n?.());
1289
+ }, S = (k) => {
1290
+ k.key !== "Escape" || !v || (k.preventDefault(), m(!1), t?.());
1291
+ };
1292
+ return x?.togglePopover?.(v), document.addEventListener("click", O, !0), document.addEventListener("keydown", S), () => {
1293
+ document.removeEventListener("click", O, !0), document.removeEventListener("keydown", S);
1294
+ };
1295
+ }, [v]), D(() => {
1296
+ const x = f.current, O = document.querySelector(`[popovertarget="${x?.id}"]`);
1297
+ if (x && O && v)
1298
+ return Ue(O, x, () => {
1299
+ jt(O, x, {
1300
+ placement: a,
1301
+ strategy: "fixed",
1302
+ middleware: [
1303
+ Wt((S) => {
1304
+ const k = getComputedStyle(S.elements.floating, "::before");
1305
+ return parseFloat(k.height);
1306
+ }),
1307
+ ...l ? [Kt({ fallbackAxisSideDirection: "start" }), Ht()] : [],
1308
+ Bn
1309
+ ]
1310
+ }).then(({ x: S, y: k }) => {
1311
+ x.style.translate = `${Math.round(S)}px ${Math.round(k)}px`;
1312
+ });
1313
+ });
1314
+ }, [v, a, s, l]), D(() => {
1315
+ s && C?.(s);
1316
+ }, [s]), c(u, { className: E("ds-popover", e), id: s || y, popover: "manual", "data-variant": r, ref: g, ...h });
1317
+ }), Bn = {
1318
+ name: "ArrowPseudoElement",
1319
+ fn(o) {
1320
+ const { elements: s, rects: e, placement: t } = o;
1321
+ let n = `${Math.round(e.reference.width / 2 + e.reference.x - o.x)}px`, i = `${Math.round(e.reference.height / 2 + e.reference.y - o.y)}px`;
1322
+ switch (e.reference.width > e.floating.width && (n = `${Math.round(e.floating.width / 2)}px`), e.reference.height > e.floating.height && (i = `${Math.round(e.floating.height / 2)}px`), t.split("-")[0]) {
1323
+ case "top":
1324
+ i = "100%";
1325
+ break;
1326
+ case "right":
1327
+ n = "0";
1328
+ break;
1329
+ case "bottom":
1330
+ i = "0";
1331
+ break;
1332
+ case "left":
1333
+ n = "100%";
1334
+ break;
1335
+ }
1336
+ return s.floating.setAttribute("data-placement", t.split("-")[0]), s.floating.style.setProperty("--ds-popover-arrow-x", n), s.floating.style.setProperty("--ds-popover-arrow-y", i), o;
1337
+ }
1338
+ }, Vn = w(function({ id: s, inline: e, asChild: t, ...n }, i) {
1339
+ const { popoverId: r } = R(Pe), a = t ? M : e ? "button" : he, l = Object.assign({
1340
+ [kt.startsWith("19") ? "popoverTarget" : "popovertarget"]: r,
1341
+ ...e ? {
1342
+ "data-popover": "inline"
1343
+ } : {}
1344
+ }, n);
1345
+ return c(a, { ref: i, ...l });
1346
+ }), go = w(function({ asChild: s, ...e }, t) {
1347
+ return c(s ? M : "li", { ...e, ref: t });
1348
+ }), ht = (o, { asChild: s, className: e, ...t }, n) => c(s ? M : o, { className: E("ds-list", e), ref: n, ...t }), vo = w(function(s, e) {
1349
+ return ht("ul", s, e);
1350
+ });
1351
+ w(function(s, e) {
1352
+ return ht("ol", s, e);
1353
+ });
1354
+ const $n = w(function({ "aria-label": s = "Sidenavigering", asChild: e, className: t, ...n }, i) {
1355
+ return c(e ? M : "nav", { "aria-label": s, className: E("ds-pagination", t), ref: i, ...n });
1356
+ }), jn = w(function(s, e) {
1357
+ return c(he, { ref: e, ...s });
1358
+ }), Wn = w(function({ asChild: s, className: e, ...t }, n) {
1359
+ return c(s ? M : "li", { ref: n, ...t });
1360
+ }), Kn = w(function({ asChild: s, ...e }, t) {
1361
+ return c(s ? M : "ul", { ref: t, ...e });
1362
+ }), De = Object.assign($n, {
1363
+ List: Kn,
1364
+ Item: Wn,
1365
+ Button: jn
1366
+ });
1367
+ De.List.displayName = "Pagination.List";
1368
+ De.Item.displayName = "Pagination.Item";
1369
+ De.Button.displayName = "Pagination.Button";
1370
+ const ft = Object.assign(Ln, {
1371
+ TriggerContext: ut,
1372
+ Trigger: Vn
1373
+ });
1374
+ ft.TriggerContext.displayName = "Popover.TriggerContext";
1375
+ ft.Trigger.displayName = "Popover.Trigger";
1376
+ const yo = w(function({ asChild: s, className: e, height: t, style: n, variant: i = "rectangle", width: r, ...a }, l) {
1377
+ const d = s ? M : "span", h = i === "text", p = Ut("ds-skeleton-opacity-fade"), u = U([p, l]);
1378
+ return c(d, { "aria-hidden": "true", className: E("ds-skeleton", e), "data-text": h ? "-".repeat(Number(r) || 1) : void 0, "data-variant": i, ref: u, style: h ? n : { width: r, height: t, ...n }, ...a });
1379
+ }), Co = w(function({ "data-size": s, children: e, className: t, description: n, label: i, position: r, style: a, ...l }, d) {
1380
+ return _(de, { className: t, "data-position": r, "data-size": s, style: a, children: [c(ue, { type: "checkbox", role: "switch", ref: d, ...l }), !!i && c(K, { weight: "regular", children: i }), !!n && c("div", { "data-field": "description", children: n })] });
1381
+ }), pe = se({}), Hn = w(function({ value: s, defaultValue: e, className: t, onChange: n, ...i }, r) {
1382
+ const a = F(null), l = s !== void 0, [d, h] = A(e), [p, u] = A(/* @__PURE__ */ new Map());
1383
+ let f = n;
1384
+ return l || (f = (g) => {
1385
+ h(g), n?.(g);
1386
+ }, s = d), c(pe.Provider, { value: {
1387
+ value: s,
1388
+ defaultValue: e,
1389
+ onChange: f,
1390
+ tablistRef: a,
1391
+ panelButtonMap: p,
1392
+ setPanelButtonMap: u
1393
+ }, children: c("div", { className: E("ds-tabs", t), ref: r, ...i }) });
1394
+ }), qn = w(function({ children: s, ...e }, t) {
1395
+ const { value: n, tablistRef: i } = R(pe), r = U([t, i]);
1396
+ return c(sn, { role: "tablist", activeValue: n, orientation: "ambiguous", ref: r, ...e, children: s });
1397
+ }), Un = w(function({ children: s, value: e, id: t, ...n }, i) {
1398
+ const { value: r, tablistRef: a, setPanelButtonMap: l } = R(pe), d = e === r, h = Q(), p = t ?? `tabpanel-${h}`, [u, f] = A(!1), [g, y] = A(void 0), C = F(null), b = U([i, C]);
1399
+ return D(() => {
1400
+ if (!C.current)
1401
+ return;
1402
+ const m = C.current.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
1403
+ f(m.length > 0);
1404
+ }, [s]), D(() => {
1405
+ if (!a)
1406
+ return;
1407
+ const m = a.current?.querySelector(`[role="tab"][data-value="${e}"]`);
1408
+ y(m ? m.id : void 0), m && l?.((v) => new Map(v).set(m.id, p));
1409
+ }, [a]), c("div", { ref: b, id: p, role: "tabpanel", tabIndex: u ? void 0 : 0, "aria-labelledby": g, hidden: !d, ...n, children: s });
1410
+ }), Xn = w(function({ value: s, id: e, onClick: t, ...n }, i) {
1411
+ const r = R(pe), a = Q(), l = e ?? `tab-${a}`;
1412
+ return c(an, { value: s, ...n, asChild: !0, children: c("button", { ref: i, id: l, "aria-selected": r.value === s, "data-value": s, role: "tab", type: "button", onClick: (d) => {
1413
+ r.onChange?.(s), t?.(d);
1414
+ }, "aria-controls": r.panelButtonMap?.get(l), ...n }) });
1415
+ }), Fe = Object.assign(Hn, {
1416
+ List: qn,
1417
+ Tab: Xn,
1418
+ Panel: Un
1419
+ });
1420
+ Fe.Tab.displayName = "Tabs.Tab";
1421
+ Fe.List.displayName = "Tabs.List";
1422
+ Fe.Panel.displayName = "Tabs.Panel";
1423
+ const xo = w(function({ label: s, description: e, error: t, multiline: n, prefix: i, suffix: r, "data-size": a, counter: l, style: d, className: h, ...p }, u) {
1424
+ return _(de, { className: h, "data-size": a, style: d, children: [!!s && c(K, { children: s }), !!e && c(Xt, { children: e }), _(Yt, { children: [i === void 0 || c(Ve, { children: i }), n === !0 ? c(tn, { ref: u, "aria-invalid": !!t || void 0, ...p }) : c(ue, { ref: u, "aria-invalid": !!t || void 0, ...p }), r === void 0 || c(Ve, { children: r })] }), !!l && c(de.Counter, { ...typeof l == "number" ? { limit: l } : l }), !!t && c(Ne, { children: t })] });
1425
+ });
1426
+ export {
1427
+ un as B,
1428
+ bo as C,
1429
+ Re as D,
1430
+ hn as L,
1431
+ De as P,
1432
+ Co as S,
1433
+ xo as T,
1434
+ fe as a,
1435
+ me as b,
1436
+ go as c,
1437
+ vo as d,
1438
+ ft as e,
1439
+ yo as f,
1440
+ Fe as g,
1441
+ po as u
1442
+ };