@digdir/designsystemet-react 1.18.0 → 1.19.1

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 (339) hide show
  1. package/dist/cjs/components/divider/divider.js +1 -3
  2. package/dist/cjs/components/file-upload/file-upload.js +31 -0
  3. package/dist/cjs/components/file-upload/index.js +27 -0
  4. package/dist/cjs/components/list/lists.js +6 -8
  5. package/dist/cjs/components/popover/popover.js +11 -6
  6. package/dist/cjs/components/suggestion/index.js +5 -0
  7. package/dist/cjs/components/suggestion/suggestion-clear.js +1 -0
  8. package/dist/cjs/components/suggestion/suggestion-empty.js +2 -4
  9. package/dist/cjs/components/suggestion/suggestion-toggle.js +25 -0
  10. package/dist/cjs/components/suggestion/suggestion.js +2 -4
  11. package/dist/cjs/components/textfield/textfield.js +2 -2
  12. package/dist/cjs/components/toggle-group/index.js +1 -1
  13. package/dist/cjs/components/toggle-group/toggle-group-item.js +2 -2
  14. package/dist/cjs/components/toggle-group/toggle-group.js +4 -5
  15. package/dist/cjs/index.js +28 -24
  16. package/dist/esm/components/divider/divider.js +1 -3
  17. package/dist/esm/components/file-upload/file-upload.js +29 -0
  18. package/dist/esm/components/file-upload/index.js +25 -0
  19. package/dist/esm/components/list/lists.js +6 -8
  20. package/dist/esm/components/popover/popover.js +11 -6
  21. package/dist/esm/components/suggestion/index.js +5 -1
  22. package/dist/esm/components/suggestion/suggestion-clear.js +1 -0
  23. package/dist/esm/components/suggestion/suggestion-empty.js +3 -5
  24. package/dist/esm/components/suggestion/suggestion-toggle.js +23 -0
  25. package/dist/esm/components/suggestion/suggestion.js +2 -4
  26. package/dist/esm/components/textfield/textfield.js +2 -2
  27. package/dist/esm/components/toggle-group/index.js +1 -1
  28. package/dist/esm/components/toggle-group/toggle-group-item.js +2 -2
  29. package/dist/esm/components/toggle-group/toggle-group.js +4 -5
  30. package/dist/esm/index.js +2 -0
  31. package/dist/react-types.d.ts +14 -11
  32. package/dist/types/colors.d.ts +0 -1
  33. package/dist/types/components/Combobox/Combobox.d.ts +2 -3
  34. package/dist/types/components/Combobox/ComboboxContext.d.ts +0 -1
  35. package/dist/types/components/Combobox/ComboboxIdContext.d.ts +0 -1
  36. package/dist/types/components/Combobox/Custom.d.ts +0 -1
  37. package/dist/types/components/Combobox/Empty.d.ts +0 -1
  38. package/dist/types/components/Combobox/Option/Description.d.ts +0 -1
  39. package/dist/types/components/Combobox/Option/Option.d.ts +0 -1
  40. package/dist/types/components/Combobox/Option/SelectedIcon.d.ts +0 -1
  41. package/dist/types/components/Combobox/Option/useComboboxOption.d.ts +0 -1
  42. package/dist/types/components/Combobox/data/data.d.ts +0 -1
  43. package/dist/types/components/Combobox/index.d.ts +0 -1
  44. package/dist/types/components/Combobox/internal/ComboboxChips.d.ts +0 -1
  45. package/dist/types/components/Combobox/internal/ComboboxClearButton.d.ts +0 -1
  46. package/dist/types/components/Combobox/internal/ComboboxError.d.ts +0 -1
  47. package/dist/types/components/Combobox/internal/ComboboxInput.d.ts +0 -1
  48. package/dist/types/components/Combobox/internal/ComboboxLabel.d.ts +0 -1
  49. package/dist/types/components/Combobox/internal/ComboboxNative.d.ts +0 -1
  50. package/dist/types/components/Combobox/omit/omit.d.ts +0 -1
  51. package/dist/types/components/Combobox/useCombobox.d.ts +0 -1
  52. package/dist/types/components/Combobox/useComboboxKeyboard.d.ts +0 -1
  53. package/dist/types/components/Combobox/useFloatingCombobox.d.ts +0 -1
  54. package/dist/types/components/Combobox/useFormField/FieldsetContext.d.ts +0 -1
  55. package/dist/types/components/Combobox/useFormField/useFormField.d.ts +0 -1
  56. package/dist/types/components/Combobox/utilities.d.ts +0 -1
  57. package/dist/types/components/alert/alert.d.ts +2 -19
  58. package/dist/types/components/avatar/avatar.d.ts +0 -1
  59. package/dist/types/components/avatar-stack/avatar-stack.d.ts +0 -1
  60. package/dist/types/components/badge/badge-position.d.ts +0 -1
  61. package/dist/types/components/badge/badge.d.ts +1 -11
  62. package/dist/types/components/badge/index.d.ts +1 -3
  63. package/dist/types/components/breadcrumbs/breadcrumbs-item.d.ts +0 -1
  64. package/dist/types/components/breadcrumbs/breadcrumbs-link.d.ts +0 -1
  65. package/dist/types/components/breadcrumbs/breadcrumbs-list.d.ts +0 -1
  66. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +0 -1
  67. package/dist/types/components/breadcrumbs/index.d.ts +0 -1
  68. package/dist/types/components/button/button.d.ts +1 -11
  69. package/dist/types/components/card/card-block.d.ts +0 -1
  70. package/dist/types/components/card/card.d.ts +0 -1
  71. package/dist/types/components/card/index.d.ts +0 -1
  72. package/dist/types/components/checkbox/checkbox.d.ts +0 -1
  73. package/dist/types/components/chip/chips.d.ts +0 -1
  74. package/dist/types/components/chip/index.d.ts +0 -1
  75. package/dist/types/components/details/details-content.d.ts +0 -1
  76. package/dist/types/components/details/details-summary.d.ts +2 -3
  77. package/dist/types/components/details/details.d.ts +0 -1
  78. package/dist/types/components/details/index.d.ts +0 -1
  79. package/dist/types/components/dialog/dialog-block.d.ts +0 -1
  80. package/dist/types/components/dialog/dialog-trigger-context.d.ts +0 -1
  81. package/dist/types/components/dialog/dialog-trigger.d.ts +1 -3
  82. package/dist/types/components/dialog/dialog.d.ts +0 -1
  83. package/dist/types/components/dialog/index.d.ts +0 -1
  84. package/dist/types/components/divider/divider.d.ts +0 -1
  85. package/dist/types/components/dropdown/dropdown-button.d.ts +0 -1
  86. package/dist/types/components/dropdown/dropdown-heading.d.ts +0 -1
  87. package/dist/types/components/dropdown/dropdown-item.d.ts +0 -1
  88. package/dist/types/components/dropdown/dropdown-list.d.ts +0 -1
  89. package/dist/types/components/dropdown/dropdown-trigger-context.d.ts +0 -1
  90. package/dist/types/components/dropdown/dropdown-trigger.d.ts +0 -1
  91. package/dist/types/components/dropdown/dropdown.d.ts +0 -1
  92. package/dist/types/components/dropdown/index.d.ts +0 -1
  93. package/dist/types/components/error-summary/error-summary-heading.d.ts +0 -1
  94. package/dist/types/components/error-summary/error-summary-item.d.ts +0 -1
  95. package/dist/types/components/error-summary/error-summary-link.d.ts +0 -1
  96. package/dist/types/components/error-summary/error-summary-list.d.ts +0 -1
  97. package/dist/types/components/error-summary/error-summary.d.ts +2 -3
  98. package/dist/types/components/error-summary/index.d.ts +0 -1
  99. package/dist/types/components/field/field-affix.d.ts +0 -1
  100. package/dist/types/components/field/field-counter.d.ts +1 -3
  101. package/dist/types/components/field/field-description.d.ts +0 -1
  102. package/dist/types/components/field/field.d.ts +0 -1
  103. package/dist/types/components/field/index.d.ts +0 -1
  104. package/dist/types/components/fieldset/fieldset-description.d.ts +0 -1
  105. package/dist/types/components/fieldset/fieldset-legend.d.ts +0 -1
  106. package/dist/types/components/fieldset/fieldset.d.ts +0 -1
  107. package/dist/types/components/fieldset/index.d.ts +0 -1
  108. package/dist/types/components/file-upload/file-upload.d.ts +28 -0
  109. package/dist/types/components/file-upload/index.d.ts +24 -0
  110. package/dist/types/components/heading/heading.d.ts +0 -1
  111. package/dist/types/components/index.d.ts +4 -3
  112. package/dist/types/components/input/input.d.ts +1 -2
  113. package/dist/types/components/label/label.d.ts +0 -1
  114. package/dist/types/components/link/link.d.ts +0 -1
  115. package/dist/types/components/list/index.d.ts +0 -1
  116. package/dist/types/components/list/list-item.d.ts +0 -1
  117. package/dist/types/components/list/lists.d.ts +0 -1
  118. package/dist/types/components/pagination/index.d.ts +0 -1
  119. package/dist/types/components/pagination/pagination-button.d.ts +0 -1
  120. package/dist/types/components/pagination/pagination-item.d.ts +0 -1
  121. package/dist/types/components/pagination/pagination-list.d.ts +0 -1
  122. package/dist/types/components/pagination/pagination.d.ts +0 -1
  123. package/dist/types/components/paragraph/paragraph.d.ts +0 -1
  124. package/dist/types/components/popover/index.d.ts +0 -1
  125. package/dist/types/components/popover/popover-trigger-context.d.ts +0 -1
  126. package/dist/types/components/popover/popover-trigger.d.ts +0 -1
  127. package/dist/types/components/popover/popover.d.ts +1 -11
  128. package/dist/types/components/radio/radio.d.ts +0 -1
  129. package/dist/types/components/search/index.d.ts +0 -1
  130. package/dist/types/components/search/search-button.d.ts +1 -3
  131. package/dist/types/components/search/search-clear.d.ts +0 -1
  132. package/dist/types/components/search/search-input.d.ts +0 -1
  133. package/dist/types/components/search/search.d.ts +0 -1
  134. package/dist/types/components/select/index.d.ts +0 -1
  135. package/dist/types/components/select/select-optgroup.d.ts +0 -1
  136. package/dist/types/components/select/select-option.d.ts +0 -1
  137. package/dist/types/components/select/select.d.ts +2 -3
  138. package/dist/types/components/skeleton/skeleton.d.ts +0 -1
  139. package/dist/types/components/skip-link/skip-link.d.ts +0 -1
  140. package/dist/types/components/spinner/spinner.d.ts +0 -1
  141. package/dist/types/components/suggestion/index.d.ts +25 -2
  142. package/dist/types/components/suggestion/suggestion-clear.d.ts +1 -1
  143. package/dist/types/components/suggestion/suggestion-empty.d.ts +14 -3
  144. package/dist/types/components/suggestion/suggestion-input.d.ts +0 -1
  145. package/dist/types/components/suggestion/suggestion-list.d.ts +0 -1
  146. package/dist/types/components/suggestion/suggestion-option.d.ts +0 -1
  147. package/dist/types/components/suggestion/suggestion-toggle.d.ts +30 -0
  148. package/dist/types/components/suggestion/suggestion.d.ts +0 -2
  149. package/dist/types/components/switch/switch.d.ts +0 -1
  150. package/dist/types/components/table/index.d.ts +0 -1
  151. package/dist/types/components/table/table-body.d.ts +0 -1
  152. package/dist/types/components/table/table-cell.d.ts +0 -1
  153. package/dist/types/components/table/table-foot.d.ts +0 -1
  154. package/dist/types/components/table/table-head.d.ts +0 -1
  155. package/dist/types/components/table/table-header-cell.d.ts +0 -1
  156. package/dist/types/components/table/table-row.d.ts +0 -1
  157. package/dist/types/components/table/table.d.ts +0 -1
  158. package/dist/types/components/tabs/index.d.ts +0 -1
  159. package/dist/types/components/tabs/tabs-list.d.ts +0 -1
  160. package/dist/types/components/tabs/tabs-panel.d.ts +0 -1
  161. package/dist/types/components/tabs/tabs-tab.d.ts +0 -1
  162. package/dist/types/components/tabs/tabs.d.ts +1 -2
  163. package/dist/types/components/tag/tag.d.ts +1 -11
  164. package/dist/types/components/textarea/textarea.d.ts +2 -3
  165. package/dist/types/components/textfield/textfield.d.ts +2 -3
  166. package/dist/types/components/toggle-group/index.d.ts +1 -2
  167. package/dist/types/components/toggle-group/toggle-group-item.d.ts +2 -3
  168. package/dist/types/components/toggle-group/toggle-group.d.ts +16 -31
  169. package/dist/types/components/tooltip/tooltip.d.ts +2 -3
  170. package/dist/types/components/validation-message/validation-message.d.ts +2 -14
  171. package/dist/types/index.d.ts +0 -1
  172. package/dist/types/types.d.ts +9 -6
  173. package/dist/types/utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.d.ts +0 -1
  174. package/dist/types/utilities/hooks/deprecated/use-isomorphic-layout-effect/use-isomorphic-layout-effect.d.ts +0 -1
  175. package/dist/types/utilities/hooks/deprecated/use-media-query/use-media-query.d.ts +0 -1
  176. package/dist/types/utilities/hooks/index.d.ts +0 -1
  177. package/dist/types/utilities/hooks/use-checkbox-group/use-checkbox-group.d.ts +0 -1
  178. package/dist/types/utilities/hooks/use-merge-refs/use-merge-refs.d.ts +0 -1
  179. package/dist/types/utilities/hooks/use-pagination/use-pagination.d.ts +0 -1
  180. package/dist/types/utilities/hooks/use-radio-group/use-radio-group.d.ts +0 -1
  181. package/dist/types/utilities/hooks/use-synchronized-animation/use-synchronized-animation.d.ts +0 -1
  182. package/dist/types/utilities/index.d.ts +0 -1
  183. package/dist/types/utilities/roving-focus/roving-focus-item.d.ts +0 -1
  184. package/dist/types/utilities/roving-focus/roving-focus-root.d.ts +0 -1
  185. package/dist/types/utilities/roving-focus/use-roving-focus.d.ts +5 -4
  186. package/dist/types/utilities/types.d.ts +0 -1
  187. package/package.json +21 -21
  188. package/dist/types/colors.d.ts.map +0 -1
  189. package/dist/types/components/Combobox/Combobox.d.ts.map +0 -1
  190. package/dist/types/components/Combobox/ComboboxContext.d.ts.map +0 -1
  191. package/dist/types/components/Combobox/ComboboxIdContext.d.ts.map +0 -1
  192. package/dist/types/components/Combobox/Custom.d.ts.map +0 -1
  193. package/dist/types/components/Combobox/Empty.d.ts.map +0 -1
  194. package/dist/types/components/Combobox/Option/Description.d.ts.map +0 -1
  195. package/dist/types/components/Combobox/Option/Option.d.ts.map +0 -1
  196. package/dist/types/components/Combobox/Option/SelectedIcon.d.ts.map +0 -1
  197. package/dist/types/components/Combobox/Option/useComboboxOption.d.ts.map +0 -1
  198. package/dist/types/components/Combobox/data/data.d.ts.map +0 -1
  199. package/dist/types/components/Combobox/index.d.ts.map +0 -1
  200. package/dist/types/components/Combobox/internal/ComboboxChips.d.ts.map +0 -1
  201. package/dist/types/components/Combobox/internal/ComboboxClearButton.d.ts.map +0 -1
  202. package/dist/types/components/Combobox/internal/ComboboxError.d.ts.map +0 -1
  203. package/dist/types/components/Combobox/internal/ComboboxInput.d.ts.map +0 -1
  204. package/dist/types/components/Combobox/internal/ComboboxLabel.d.ts.map +0 -1
  205. package/dist/types/components/Combobox/internal/ComboboxNative.d.ts.map +0 -1
  206. package/dist/types/components/Combobox/omit/omit.d.ts.map +0 -1
  207. package/dist/types/components/Combobox/useCombobox.d.ts.map +0 -1
  208. package/dist/types/components/Combobox/useComboboxKeyboard.d.ts.map +0 -1
  209. package/dist/types/components/Combobox/useFloatingCombobox.d.ts.map +0 -1
  210. package/dist/types/components/Combobox/useFormField/FieldsetContext.d.ts.map +0 -1
  211. package/dist/types/components/Combobox/useFormField/useFormField.d.ts.map +0 -1
  212. package/dist/types/components/Combobox/utilities.d.ts.map +0 -1
  213. package/dist/types/components/alert/alert.d.ts.map +0 -1
  214. package/dist/types/components/avatar/avatar.d.ts.map +0 -1
  215. package/dist/types/components/avatar-stack/avatar-stack.d.ts.map +0 -1
  216. package/dist/types/components/badge/badge-position.d.ts.map +0 -1
  217. package/dist/types/components/badge/badge.d.ts.map +0 -1
  218. package/dist/types/components/badge/index.d.ts.map +0 -1
  219. package/dist/types/components/breadcrumbs/breadcrumbs-item.d.ts.map +0 -1
  220. package/dist/types/components/breadcrumbs/breadcrumbs-link.d.ts.map +0 -1
  221. package/dist/types/components/breadcrumbs/breadcrumbs-list.d.ts.map +0 -1
  222. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts.map +0 -1
  223. package/dist/types/components/breadcrumbs/index.d.ts.map +0 -1
  224. package/dist/types/components/button/button.d.ts.map +0 -1
  225. package/dist/types/components/card/card-block.d.ts.map +0 -1
  226. package/dist/types/components/card/card.d.ts.map +0 -1
  227. package/dist/types/components/card/index.d.ts.map +0 -1
  228. package/dist/types/components/checkbox/checkbox.d.ts.map +0 -1
  229. package/dist/types/components/chip/chips.d.ts.map +0 -1
  230. package/dist/types/components/chip/index.d.ts.map +0 -1
  231. package/dist/types/components/details/details-content.d.ts.map +0 -1
  232. package/dist/types/components/details/details-summary.d.ts.map +0 -1
  233. package/dist/types/components/details/details.d.ts.map +0 -1
  234. package/dist/types/components/details/index.d.ts.map +0 -1
  235. package/dist/types/components/dialog/dialog-block.d.ts.map +0 -1
  236. package/dist/types/components/dialog/dialog-trigger-context.d.ts.map +0 -1
  237. package/dist/types/components/dialog/dialog-trigger.d.ts.map +0 -1
  238. package/dist/types/components/dialog/dialog.d.ts.map +0 -1
  239. package/dist/types/components/dialog/index.d.ts.map +0 -1
  240. package/dist/types/components/divider/divider.d.ts.map +0 -1
  241. package/dist/types/components/dropdown/dropdown-button.d.ts.map +0 -1
  242. package/dist/types/components/dropdown/dropdown-heading.d.ts.map +0 -1
  243. package/dist/types/components/dropdown/dropdown-item.d.ts.map +0 -1
  244. package/dist/types/components/dropdown/dropdown-list.d.ts.map +0 -1
  245. package/dist/types/components/dropdown/dropdown-trigger-context.d.ts.map +0 -1
  246. package/dist/types/components/dropdown/dropdown-trigger.d.ts.map +0 -1
  247. package/dist/types/components/dropdown/dropdown.d.ts.map +0 -1
  248. package/dist/types/components/dropdown/index.d.ts.map +0 -1
  249. package/dist/types/components/error-summary/error-summary-heading.d.ts.map +0 -1
  250. package/dist/types/components/error-summary/error-summary-item.d.ts.map +0 -1
  251. package/dist/types/components/error-summary/error-summary-link.d.ts.map +0 -1
  252. package/dist/types/components/error-summary/error-summary-list.d.ts.map +0 -1
  253. package/dist/types/components/error-summary/error-summary.d.ts.map +0 -1
  254. package/dist/types/components/error-summary/index.d.ts.map +0 -1
  255. package/dist/types/components/field/field-affix.d.ts.map +0 -1
  256. package/dist/types/components/field/field-counter.d.ts.map +0 -1
  257. package/dist/types/components/field/field-description.d.ts.map +0 -1
  258. package/dist/types/components/field/field.d.ts.map +0 -1
  259. package/dist/types/components/field/index.d.ts.map +0 -1
  260. package/dist/types/components/fieldset/fieldset-description.d.ts.map +0 -1
  261. package/dist/types/components/fieldset/fieldset-legend.d.ts.map +0 -1
  262. package/dist/types/components/fieldset/fieldset.d.ts.map +0 -1
  263. package/dist/types/components/fieldset/index.d.ts.map +0 -1
  264. package/dist/types/components/heading/heading.d.ts.map +0 -1
  265. package/dist/types/components/index.d.ts.map +0 -1
  266. package/dist/types/components/input/input.d.ts.map +0 -1
  267. package/dist/types/components/label/label.d.ts.map +0 -1
  268. package/dist/types/components/link/link.d.ts.map +0 -1
  269. package/dist/types/components/list/index.d.ts.map +0 -1
  270. package/dist/types/components/list/list-item.d.ts.map +0 -1
  271. package/dist/types/components/list/lists.d.ts.map +0 -1
  272. package/dist/types/components/pagination/index.d.ts.map +0 -1
  273. package/dist/types/components/pagination/pagination-button.d.ts.map +0 -1
  274. package/dist/types/components/pagination/pagination-item.d.ts.map +0 -1
  275. package/dist/types/components/pagination/pagination-list.d.ts.map +0 -1
  276. package/dist/types/components/pagination/pagination.d.ts.map +0 -1
  277. package/dist/types/components/paragraph/paragraph.d.ts.map +0 -1
  278. package/dist/types/components/popover/index.d.ts.map +0 -1
  279. package/dist/types/components/popover/popover-trigger-context.d.ts.map +0 -1
  280. package/dist/types/components/popover/popover-trigger.d.ts.map +0 -1
  281. package/dist/types/components/popover/popover.d.ts.map +0 -1
  282. package/dist/types/components/radio/radio.d.ts.map +0 -1
  283. package/dist/types/components/search/index.d.ts.map +0 -1
  284. package/dist/types/components/search/search-button.d.ts.map +0 -1
  285. package/dist/types/components/search/search-clear.d.ts.map +0 -1
  286. package/dist/types/components/search/search-input.d.ts.map +0 -1
  287. package/dist/types/components/search/search.d.ts.map +0 -1
  288. package/dist/types/components/select/index.d.ts.map +0 -1
  289. package/dist/types/components/select/select-optgroup.d.ts.map +0 -1
  290. package/dist/types/components/select/select-option.d.ts.map +0 -1
  291. package/dist/types/components/select/select.d.ts.map +0 -1
  292. package/dist/types/components/skeleton/skeleton.d.ts.map +0 -1
  293. package/dist/types/components/skip-link/skip-link.d.ts.map +0 -1
  294. package/dist/types/components/spinner/spinner.d.ts.map +0 -1
  295. package/dist/types/components/suggestion/index.d.ts.map +0 -1
  296. package/dist/types/components/suggestion/suggestion-clear.d.ts.map +0 -1
  297. package/dist/types/components/suggestion/suggestion-empty.d.ts.map +0 -1
  298. package/dist/types/components/suggestion/suggestion-input.d.ts.map +0 -1
  299. package/dist/types/components/suggestion/suggestion-list.d.ts.map +0 -1
  300. package/dist/types/components/suggestion/suggestion-option.d.ts.map +0 -1
  301. package/dist/types/components/suggestion/suggestion.d.ts.map +0 -1
  302. package/dist/types/components/switch/switch.d.ts.map +0 -1
  303. package/dist/types/components/table/index.d.ts.map +0 -1
  304. package/dist/types/components/table/table-body.d.ts.map +0 -1
  305. package/dist/types/components/table/table-cell.d.ts.map +0 -1
  306. package/dist/types/components/table/table-foot.d.ts.map +0 -1
  307. package/dist/types/components/table/table-head.d.ts.map +0 -1
  308. package/dist/types/components/table/table-header-cell.d.ts.map +0 -1
  309. package/dist/types/components/table/table-row.d.ts.map +0 -1
  310. package/dist/types/components/table/table.d.ts.map +0 -1
  311. package/dist/types/components/tabs/index.d.ts.map +0 -1
  312. package/dist/types/components/tabs/tabs-list.d.ts.map +0 -1
  313. package/dist/types/components/tabs/tabs-panel.d.ts.map +0 -1
  314. package/dist/types/components/tabs/tabs-tab.d.ts.map +0 -1
  315. package/dist/types/components/tabs/tabs.d.ts.map +0 -1
  316. package/dist/types/components/tag/tag.d.ts.map +0 -1
  317. package/dist/types/components/textarea/textarea.d.ts.map +0 -1
  318. package/dist/types/components/textfield/textfield.d.ts.map +0 -1
  319. package/dist/types/components/toggle-group/index.d.ts.map +0 -1
  320. package/dist/types/components/toggle-group/toggle-group-item.d.ts.map +0 -1
  321. package/dist/types/components/toggle-group/toggle-group.d.ts.map +0 -1
  322. package/dist/types/components/tooltip/tooltip.d.ts.map +0 -1
  323. package/dist/types/components/validation-message/validation-message.d.ts.map +0 -1
  324. package/dist/types/index.d.ts.map +0 -1
  325. package/dist/types/types.d.ts.map +0 -1
  326. package/dist/types/utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.d.ts.map +0 -1
  327. package/dist/types/utilities/hooks/deprecated/use-isomorphic-layout-effect/use-isomorphic-layout-effect.d.ts.map +0 -1
  328. package/dist/types/utilities/hooks/deprecated/use-media-query/use-media-query.d.ts.map +0 -1
  329. package/dist/types/utilities/hooks/index.d.ts.map +0 -1
  330. package/dist/types/utilities/hooks/use-checkbox-group/use-checkbox-group.d.ts.map +0 -1
  331. package/dist/types/utilities/hooks/use-merge-refs/use-merge-refs.d.ts.map +0 -1
  332. package/dist/types/utilities/hooks/use-pagination/use-pagination.d.ts.map +0 -1
  333. package/dist/types/utilities/hooks/use-radio-group/use-radio-group.d.ts.map +0 -1
  334. package/dist/types/utilities/hooks/use-synchronized-animation/use-synchronized-animation.d.ts.map +0 -1
  335. package/dist/types/utilities/index.d.ts.map +0 -1
  336. package/dist/types/utilities/roving-focus/roving-focus-item.d.ts.map +0 -1
  337. package/dist/types/utilities/roving-focus/roving-focus-root.d.ts.map +0 -1
  338. package/dist/types/utilities/roving-focus/use-roving-focus.d.ts.map +0 -1
  339. package/dist/types/utilities/types.d.ts.map +0 -1
@@ -12,9 +12,7 @@ var react = require('react');
12
12
  * <Divider />
13
13
  */
14
14
  const Divider = react.forwardRef(function Divider({ className, ...rest }, ref) {
15
- return (
16
- // biome-ignore lint/a11y/noAriaHiddenOnFocusable: <hr> is not foucsable but biome thinks it is
17
- jsxRuntime.jsx("hr", { "aria-hidden": 'true', className: cl('ds-divider', className), ref: ref, ...rest }));
15
+ return (jsxRuntime.jsx("hr", { "aria-hidden": 'true', className: cl('ds-divider', className), ref: ref, ...rest }));
18
16
  });
19
17
 
20
18
  exports.Divider = Divider;
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var cl = require('clsx/lite');
6
+ var react = require('react');
7
+
8
+ /**
9
+ * FileUpload component to present a file upload area.
10
+ *
11
+ * @example
12
+ * <Field>
13
+ * <Label>Upload file</Label>
14
+ * <FileUpload>
15
+ * <CloudUpIcon aria-hidden='true' />
16
+ * <Field.Description>Drop file here</Field.Description>
17
+ * <Field.Description>
18
+ * File must be in csv format and less than 2MB
19
+ * </Field.Description>
20
+ * <Button asChild data-variant='secondary'>
21
+ * <span>Upload file</span>
22
+ * </Button>
23
+ * <input type="file" />
24
+ * </FileUpload>
25
+ * </Field>
26
+ */
27
+ const FileUpload = react.forwardRef(function FileUpload({ className, ...rest }, ref) {
28
+ return (jsxRuntime.jsx("div", { ref: ref, className: cl('ds-file-upload', className), ...rest }));
29
+ });
30
+
31
+ exports.FileUpload = FileUpload;
@@ -0,0 +1,27 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ var fileUpload = require('./file-upload.js');
5
+
6
+ /**
7
+ * FileUpload component to present a file upload area.
8
+ *
9
+ * @example
10
+ * <Field>
11
+ * <Label>Upload file</Label>
12
+ * <FileUpload>
13
+ * <CloudUpIcon aria-hidden='true' />
14
+ * <Field.Description>Drop file here</Field.Description>
15
+ * <Field.Description>
16
+ * File must be in csv format and less than 2MB
17
+ * </Field.Description>
18
+ * <Button asChild data-variant='secondary'>
19
+ * <span>Upload file</span>
20
+ * </Button>
21
+ * <input type="file" />
22
+ * </FileUpload>
23
+ * </Field>
24
+ */
25
+ const EXPERIMENTAL_FileUpload = fileUpload.FileUpload;
26
+
27
+ exports.EXPERIMENTAL_FileUpload = EXPERIMENTAL_FileUpload;
@@ -6,10 +6,6 @@ var reactSlot = require('@radix-ui/react-slot');
6
6
  var cl = require('clsx/lite');
7
7
  var react = require('react');
8
8
 
9
- const render = (tagName, { asChild, className, ...rest }, ref) => {
10
- const Component = asChild ? reactSlot.Slot : tagName;
11
- return jsxRuntime.jsx(Component, { className: cl(`ds-list`, className), ref: ref, ...rest });
12
- };
13
9
  /**
14
10
  * ListUnordered component, used to display a list of items.
15
11
  * Renders a native `ul` element.
@@ -20,8 +16,9 @@ const render = (tagName, { asChild, className, ...rest }, ref) => {
20
16
  * <ListItem>Item 2</ListItem>
21
17
  * </ListUnordered>
22
18
  */
23
- const ListUnordered = react.forwardRef(function ListUnordered(props, ref) {
24
- return render('ul', props, ref);
19
+ const ListUnordered = react.forwardRef(function ListUnordered({ asChild, className, ...rest }, ref) {
20
+ const Component = asChild ? reactSlot.Slot : 'ul';
21
+ return (jsxRuntime.jsx(Component, { className: cl(`ds-list`, className), ref: ref, ...rest }));
25
22
  });
26
23
  /**
27
24
  * ListOrdered component, used to display a list of items.
@@ -33,8 +30,9 @@ const ListUnordered = react.forwardRef(function ListUnordered(props, ref) {
33
30
  * <ListItem>Item 2</ListItem>
34
31
  * </ListOrdered>
35
32
  */
36
- const ListOrdered = react.forwardRef(function ListOrdered(props, ref) {
37
- return render('ol', props, ref);
33
+ const ListOrdered = react.forwardRef(function ListOrdered({ asChild, className, ...rest }, ref) {
34
+ const Component = asChild ? reactSlot.Slot : 'ol';
35
+ return (jsxRuntime.jsx(Component, { className: cl(`ds-list`, className), ref: ref, ...rest }));
38
36
  });
39
37
 
40
38
  exports.ListOrdered = ListOrdered;
@@ -9,6 +9,7 @@ require('@digdir/designsystemet-web');
9
9
  var useMergeRefs = require('../../utilities/hooks/use-merge-refs/use-merge-refs.js');
10
10
  var popoverTriggerContext = require('./popover-trigger-context.js');
11
11
 
12
+ const IS_DROPDOWN = /(?:^|\s)ds-dropdown(?:\s|$)/;
12
13
  /**
13
14
  * Popover component, used to display content in a popover over an element.
14
15
  *
@@ -26,7 +27,7 @@ var popoverTriggerContext = require('./popover-trigger-context.js');
26
27
  * Content
27
28
  * </Popover>
28
29
  */
29
- const Popover = react.forwardRef(function Popover({ id, className, onClose, onOpen, open, variant, placement = 'top', autoPlacement = true, asChild = false, ...rest }, ref) {
30
+ const Popover = react.forwardRef(function Popover({ id, className = '', onClose, onOpen, open, variant, placement = 'top', autoPlacement = true, asChild = false, ...rest }, ref) {
30
31
  const Component = asChild ? reactSlot.Slot : 'div';
31
32
  const popoverRef = react.useRef(null);
32
33
  const mergedRefs = useMergeRefs.useMergeRefs([popoverRef, ref]);
@@ -61,10 +62,12 @@ const Popover = react.forwardRef(function Popover({ id, className, onClose, onOp
61
62
  }
62
63
  };
63
64
  popover?.togglePopover?.(controlledOpen);
64
- if (controlledOpen) {
65
- const options = { detail: document.querySelector(trigger) };
66
- popover?.dispatchEvent(new CustomEvent('ds-toggle-source', options)); // Since togglePopover({ source }) is not supported in all browsers yet
67
- }
65
+ if (controlledOpen)
66
+ popover?.dispatchEvent(new CustomEvent('ds-toggle-source', {
67
+ bubbles: true,
68
+ composed: true, // Enable bubbling out of shadow DOM boundaries
69
+ detail: document.querySelector(trigger), // Since togglePopover({ source }) is not supported in all browsers yet
70
+ }));
68
71
  document.addEventListener('click', handleClick, true); // Use capture to execute before React event API
69
72
  document.addEventListener('keydown', handleKeydown);
70
73
  return () => {
@@ -77,7 +80,9 @@ const Popover = react.forwardRef(function Popover({ id, className, onClose, onOp
77
80
  if (id)
78
81
  setPopoverId?.(id);
79
82
  }, [id]);
80
- return (jsxRuntime.jsx(Component, { className: cl('ds-popover', className), id: id || popoverId, popover: 'manual', "data-placement": placement, "data-variant": variant, ref: mergedRefs, suppressHydrationWarning // Since _ds-floating adds attributes
83
+ return (jsxRuntime.jsx(Component, { className:
84
+ // Prevent double className when using Dropdown component
85
+ cl(IS_DROPDOWN.test(className) ? undefined : 'ds-popover', className), id: id || popoverId, popover: 'manual', "data-placement": placement, "data-variant": variant, ref: mergedRefs, suppressHydrationWarning // Since _ds-floating adds attributes
81
86
  : true, ...rest }));
82
87
  });
83
88
  // NOTE: This is not able to check if the popover is the most recently added #topLayer,
@@ -7,6 +7,7 @@ var suggestionEmpty = require('./suggestion-empty.js');
7
7
  var suggestionInput = require('./suggestion-input.js');
8
8
  var suggestionList = require('./suggestion-list.js');
9
9
  var suggestionOption = require('./suggestion-option.js');
10
+ var suggestionToggle = require('./suggestion-toggle.js');
10
11
 
11
12
  /**
12
13
  * A component that provides a suggestion list for an input field.
@@ -14,6 +15,7 @@ var suggestionOption = require('./suggestion-option.js');
14
15
  * @example
15
16
  * <Suggestion>
16
17
  * <Suggestion.Input />
18
+ * <Suggestion.Toggle />
17
19
  * <Suggestion.Clear />
18
20
  * <Suggestion.List>
19
21
  * <Suggestion.Empty>Tomt</Suggestion.Empty>
@@ -27,6 +29,7 @@ const EXPERIMENTAL_Suggestion = Object.assign(suggestion.Suggestion, {
27
29
  Input: suggestionInput.SuggestionInput,
28
30
  Empty: suggestionEmpty.SuggestionEmpty,
29
31
  Option: suggestionOption.SuggestionOption,
32
+ Toggle: suggestionToggle.SuggestionToggle,
30
33
  Clear: suggestionClear.SuggestionClear,
31
34
  });
32
35
  EXPERIMENTAL_Suggestion.displayName = 'EXPERIMENTAL_Suggestion';
@@ -34,6 +37,7 @@ EXPERIMENTAL_Suggestion.List.displayName = 'EXPERIMENTAL_Suggestion.List';
34
37
  EXPERIMENTAL_Suggestion.Input.displayName = 'EXPERIMENTAL_Suggestion.Input';
35
38
  EXPERIMENTAL_Suggestion.Empty.displayName = 'EXPERIMENTAL_Suggestion.Empty';
36
39
  EXPERIMENTAL_Suggestion.Option.displayName = 'EXPERIMENTAL_Suggestion.Option';
40
+ EXPERIMENTAL_Suggestion.Toggle.displayName = 'EXPERIMENTAL_Suggestion.Toggle';
37
41
  EXPERIMENTAL_Suggestion.Clear.displayName = 'EXPERIMENTAL_Suggestion.Clear';
38
42
 
39
43
  exports.EXPERIMENTAL_SuggestionClear = suggestionClear.SuggestionClear;
@@ -41,4 +45,5 @@ exports.EXPERIMENTAL_SuggestionEmpty = suggestionEmpty.SuggestionEmpty;
41
45
  exports.EXPERIMENTAL_SuggestionInput = suggestionInput.SuggestionInput;
42
46
  exports.EXPERIMENTAL_SuggestionList = suggestionList.SuggestionList;
43
47
  exports.EXPERIMENTAL_SuggestionOption = suggestionOption.SuggestionOption;
48
+ exports.EXPERIMENTAL_SuggestionToggle = suggestionToggle.SuggestionToggle;
44
49
  exports.EXPERIMENTAL_Suggestion = EXPERIMENTAL_Suggestion;
@@ -12,6 +12,7 @@ var react = require('react');
12
12
  * @example
13
13
  * <Suggestion>
14
14
  * <Suggestion.Input />
15
+ * <Suggestion.Toggle />
15
16
  * <Suggestion.Clear />
16
17
  * <Suggestion.List />
17
18
  * </Suggestion>
@@ -3,7 +3,6 @@
3
3
 
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
5
  var react = require('react');
6
- var suggestion = require('./suggestion.js');
7
6
  require('@digdir/designsystemet-web');
8
7
 
9
8
  /**
@@ -17,9 +16,8 @@ require('@digdir/designsystemet-web');
17
16
  * </Suggestion.List>
18
17
  */
19
18
  const SuggestionEmpty = react.forwardRef(function SuggestionEmpty(rest, ref) {
20
- const { isEmpty } = react.useContext(suggestion.SuggestionContext);
21
- return isEmpty ? (jsxRuntime.jsx("u-option", { "data-empty": true, ref: ref, suppressHydrationWarning // Since <u-option> adds attributes
22
- : true, value: '', ...rest })) : null;
19
+ return (jsxRuntime.jsx("u-option", { "data-empty": true, ref: ref, suppressHydrationWarning // Since <u-option> adds attributes
20
+ : true, ...rest }));
23
21
  });
24
22
 
25
23
  exports.SuggestionEmpty = SuggestionEmpty;
@@ -0,0 +1,25 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+ var react = require('react');
6
+
7
+ /**
8
+ * Component that provides a toggle button for the Suggestion list.
9
+ *
10
+ * Place as a descendant of `Suggestion`
11
+ *
12
+ * @example
13
+ * <Suggestion>
14
+ * <Suggestion.Input />
15
+ * <Suggestion.Toggle />
16
+ * <Suggestion.Clear />
17
+ * <Suggestion.List />
18
+ * </Suggestion>
19
+ */
20
+ const SuggestionToggle = react.forwardRef(function SuggestionToggle({ 'aria-label': label = 'Valg', ...rest }, ref) {
21
+ return (jsxRuntime.jsx("button", { "aria-expanded": 'false', "aria-label": label, ref: ref, suppressHydrationWarning // Since <ds-suggestion> adds attributes
22
+ : true, type: 'button', ...rest }));
23
+ });
24
+
25
+ exports.SuggestionToggle = SuggestionToggle;
@@ -28,7 +28,6 @@ const Suggestion = react.forwardRef(function Suggestion({ children, className, c
28
28
  const selectId = rest.id ? `${rest.id}-select` : genId;
29
29
  const isControlled = selected !== undefined;
30
30
  const mergedRefs = useMergeRefs.useMergeRefs([ref, dsSuggestionRef]);
31
- const [isEmpty, setIsEmpty] = react.useState(false);
32
31
  const [defaultItems, setDefaultItems] = react.useState(sanitizeItems(defaultSelected));
33
32
  const selectedItems = selected ? sanitizeItems(selected) : defaultItems;
34
33
  const onSelectedChangeRef = react.useRef(onSelectedChange);
@@ -72,7 +71,7 @@ const Suggestion = react.forwardRef(function Suggestion({ children, className, c
72
71
  const filterFn = filter === true ? defaultFilter : filter;
73
72
  let disabled = 0;
74
73
  let index = 0;
75
- for (const option of options)
74
+ for (const option of Array.from(options))
76
75
  if (!option.hasAttribute('data-empty')) {
77
76
  if (filterFn && input)
78
77
  option.disabled =
@@ -86,9 +85,8 @@ const Suggestion = react.forwardRef(function Suggestion({ children, className, c
86
85
  }) && Boolean(++disabled);
87
86
  index++; // Increment index for each <option>
88
87
  }
89
- setIsEmpty(index === disabled);
90
88
  }, [filter]);
91
- return (jsxRuntime.jsx(SuggestionContext.Provider, { value: { isEmpty, handleFilter, dsSuggestionRef }, children: jsxRuntime.jsxs("ds-suggestion", { "data-multiple": multiple || undefined, "data-creatable": creatable || undefined, class: cl('ds-suggestion', className), ref: mergedRefs, suppressHydrationWarning // Since <ds-suggestion> adds attributes
89
+ return (jsxRuntime.jsx(SuggestionContext.Provider, { value: { handleFilter, dsSuggestionRef }, children: jsxRuntime.jsxs("ds-suggestion", { "data-multiple": multiple || undefined, "data-creatable": creatable || undefined, class: cl('ds-suggestion', className), ref: mergedRefs, suppressHydrationWarning // Since <ds-suggestion> adds attributes
92
90
  : true, ...rest, children: [selectedItems.map((item) => (jsxRuntime.jsx("data", { value: item.value, children: renderSelected(item) }, item.value))), children, !!name && (jsxRuntime.jsx("select", { name: name, multiple: true, hidden: true, id: selectId }))] }) }));
93
91
  });
94
92
  const SuggestionContext = react.createContext({
@@ -20,8 +20,8 @@ var fieldAffix = require('../field/field-affix.js');
20
20
  * @example
21
21
  * <Textfield label="Textfield label">
22
22
  */
23
- const Textfield = react.forwardRef(function Textfield({ label: label$1, description, error, multiline, prefix, suffix, 'data-size': size, counter, style, className, ...rest }, ref) {
24
- return (jsxRuntime.jsxs(index.Field, { className: className, "data-size": size, style: style, children: [!!label$1 && jsxRuntime.jsx(label.Label, { children: label$1 }), !!description && jsxRuntime.jsx(fieldDescription.FieldDescription, { children: description }), jsxRuntime.jsxs(fieldAffix.FieldAffixes, { children: [prefix === undefined || jsxRuntime.jsx(fieldAffix.FieldAffix, { children: prefix }), multiline === true ? (jsxRuntime.jsx(textarea.Textarea, { ref: ref, "aria-invalid": Boolean(error) || undefined, ...rest })) : (jsxRuntime.jsx(input.Input, { ref: ref, "aria-invalid": Boolean(error) || undefined, ...rest })), suffix === undefined || jsxRuntime.jsx(fieldAffix.FieldAffix, { children: suffix })] }), !!counter && (jsxRuntime.jsx(index.Field.Counter, { ...(typeof counter === 'number' ? { limit: counter } : counter) })), !!error && jsxRuntime.jsx(validationMessage.ValidationMessage, { children: error })] }));
23
+ const Textfield = react.forwardRef(function Textfield({ label: label$1, description, error, multiline, prefix, suffix, 'data-color': color, 'data-size': size, counter, style, className, ...rest }, ref) {
24
+ return (jsxRuntime.jsxs(index.Field, { className: className, "data-color": color, "data-size": size, style: style, children: [!!label$1 && jsxRuntime.jsx(label.Label, { children: label$1 }), !!description && jsxRuntime.jsx(fieldDescription.FieldDescription, { children: description }), jsxRuntime.jsxs(fieldAffix.FieldAffixes, { children: [prefix === undefined || jsxRuntime.jsx(fieldAffix.FieldAffix, { children: prefix }), multiline === true ? (jsxRuntime.jsx(textarea.Textarea, { ref: ref, "aria-invalid": Boolean(error) || undefined, ...rest })) : (jsxRuntime.jsx(input.Input, { ref: ref, "aria-invalid": Boolean(error) || undefined, ...rest })), suffix === undefined || jsxRuntime.jsx(fieldAffix.FieldAffix, { children: suffix })] }), !!counter && (jsxRuntime.jsx(index.Field.Counter, { ...(typeof counter === 'number' ? { limit: counter } : counter) })), !!error && jsxRuntime.jsx(validationMessage.ValidationMessage, { children: error })] }));
25
25
  });
26
26
 
27
27
  exports.Textfield = Textfield;
@@ -8,7 +8,7 @@ var toggleGroupItem = require('./toggle-group-item.js');
8
8
  * Display a group of buttons that can be toggled between.
9
9
  *
10
10
  * @example
11
- * <ToggleGroup data-toggle-group="Label" onChange={(value) => console.log(value)}>
11
+ * <ToggleGroup aria-label="Label" onChange={(value) => console.log(value)}>
12
12
  * <ToggleGroup.Item value='1'>Toggle 1</ToggleGroup.Item>
13
13
  * <ToggleGroup.Item value='2'>Toggle 2</ToggleGroup.Item>
14
14
  * <ToggleGroup.Item value='3'>Toggle 3</ToggleGroup.Item>
@@ -16,8 +16,8 @@ const ToggleGroupItem = react.forwardRef(function ToggleGroupItem({ className, c
16
16
  const toggleGroup$1 = react.useContext(toggleGroup.ToggleGroupContext);
17
17
  const value = rawValue ?? genValue;
18
18
  const active = toggleGroup$1.value === value;
19
- const { 'aria-disabled': ariaDisabled, disabled, form, formAction, formEncType, formMethod, formNoValidate, formTarget, required, ...labelProps } = rest;
20
- return (jsxRuntime.jsxs("label", { ref: ref, ...labelProps, className: cl('ds-button', className), "data-variant": 'tertiary', "aria-disabled": ariaDisabled ?? disabled, children: [jsxRuntime.jsx("input", { "aria-disabled": ariaDisabled, checked: active, disabled: disabled, form: form, formAction: formAction, formEncType: formEncType, formMethod: formMethod, formNoValidate: formNoValidate, formTarget: formTarget, name: toggleGroup$1.name, onChange: () => toggleGroup$1.onChange?.(value), required: required, type: 'radio', value: value }), children] }));
19
+ const { 'aria-disabled': ariaDisabled, disabled, readOnly, form, formAction, formEncType, formMethod, formNoValidate, formTarget, required, ...labelProps } = rest;
20
+ return (jsxRuntime.jsxs("label", { ref: ref, ...labelProps, className: cl('ds-button', className), "data-variant": 'tertiary', "aria-disabled": ariaDisabled ?? disabled, children: [jsxRuntime.jsx("input", { "aria-disabled": ariaDisabled, checked: active, disabled: disabled, readOnly: readOnly, form: form, formAction: formAction, formEncType: formEncType, formMethod: formMethod, formNoValidate: formNoValidate, formTarget: formTarget, name: toggleGroup$1.name, onChange: () => toggleGroup$1.onChange?.(value), required: required, type: 'radio', value: value }), children] }));
21
21
  });
22
22
 
23
23
  exports.ToggleGroupItem = ToggleGroupItem;
@@ -10,13 +10,13 @@ const ToggleGroupContext = react.createContext({});
10
10
  * Display a group of buttons that can be toggled between.
11
11
  *
12
12
  * @example
13
- * <ToggleGroup data-toggle-group="Label" onChange={(value) => console.log(value)}>
13
+ * <ToggleGroup aria-label="Label" onChange={(value) => console.log(value)}>
14
14
  * <ToggleGroup.Item value='1'>Toggle 1</ToggleGroup.Item>
15
15
  * <ToggleGroup.Item value='2'>Toggle 2</ToggleGroup.Item>
16
16
  * <ToggleGroup.Item value='3'>Toggle 3</ToggleGroup.Item>
17
17
  * </ToggleGroup>
18
18
  */
19
- const ToggleGroup = react.forwardRef(function ToggleGroup({ children, className, defaultValue, name, onChange, value, variant, ...rest }, ref) {
19
+ const ToggleGroup = react.forwardRef(function ToggleGroup({ 'data-toggle-group': label, children, className, defaultValue, name, onChange, value, variant, ...rest }, ref) {
20
20
  const nameId = react.useId();
21
21
  const isControlled = value !== undefined;
22
22
  const [uncontrolledValue, setUncontrolledValue] = react.useState(defaultValue);
@@ -34,9 +34,8 @@ const ToggleGroup = react.forwardRef(function ToggleGroup({ children, className,
34
34
  onChange: onValueChange,
35
35
  value,
36
36
  variant,
37
- }, children: jsxRuntime.jsx("fieldset", { className: cl('ds-toggle-group', className), "data-toggle-group": '' // Default to empty string to ensure attribute is present
38
- , "data-variant": variant, suppressHydrationWarning // Since @digdir/designsystemet-web adds attributes
39
- : true, ref: ref, ...rest, children: children }) }));
37
+ }, children: jsxRuntime.jsx("fieldset", { "aria-label": label, className: cl('ds-toggle-group', className), "data-variant": variant, focusgroup: 'radiogroup', ref: ref, suppressHydrationWarning // Since @digdir/designsystemet-web adds attributes
38
+ : true, ...rest, children: children }) }));
40
39
  });
41
40
 
42
41
  exports.ToggleGroup = ToggleGroup;
package/dist/cjs/index.js CHANGED
@@ -16,31 +16,32 @@ var index$5 = require('./components/details/index.js');
16
16
  var index$6 = require('./components/dialog/index.js');
17
17
  var divider = require('./components/divider/divider.js');
18
18
  var index$7 = require('./components/dropdown/index.js');
19
- var index$9 = require('./components/error-summary/index.js');
20
- var index$a = require('./components/field/index.js');
21
- var index$b = require('./components/fieldset/index.js');
19
+ var index$a = require('./components/error-summary/index.js');
20
+ var index$b = require('./components/field/index.js');
21
+ var index$c = require('./components/fieldset/index.js');
22
+ var index$8 = require('./components/file-upload/index.js');
22
23
  var heading = require('./components/heading/heading.js');
23
24
  var input = require('./components/input/input.js');
24
25
  var label = require('./components/label/label.js');
25
26
  var link = require('./components/link/link.js');
26
- var index$c = require('./components/list/index.js');
27
- var index$d = require('./components/pagination/index.js');
27
+ var index$d = require('./components/list/index.js');
28
+ var index$e = require('./components/pagination/index.js');
28
29
  var paragraph = require('./components/paragraph/paragraph.js');
29
- var index$e = require('./components/popover/index.js');
30
+ var index$f = require('./components/popover/index.js');
30
31
  var radio = require('./components/radio/radio.js');
31
- var index$f = require('./components/search/index.js');
32
- var index$g = require('./components/select/index.js');
32
+ var index$g = require('./components/search/index.js');
33
+ var index$h = require('./components/select/index.js');
33
34
  var skeleton = require('./components/skeleton/skeleton.js');
34
35
  var skipLink = require('./components/skip-link/skip-link.js');
35
36
  var spinner = require('./components/spinner/spinner.js');
36
- var index$8 = require('./components/suggestion/index.js');
37
+ var index$9 = require('./components/suggestion/index.js');
37
38
  var _switch = require('./components/switch/switch.js');
38
- var index$h = require('./components/table/index.js');
39
- var index$i = require('./components/tabs/index.js');
39
+ var index$i = require('./components/table/index.js');
40
+ var index$j = require('./components/tabs/index.js');
40
41
  var tag = require('./components/tag/tag.js');
41
42
  var textarea = require('./components/textarea/textarea.js');
42
43
  var textfield = require('./components/textfield/textfield.js');
43
- var index$j = require('./components/toggle-group/index.js');
44
+ var index$k = require('./components/toggle-group/index.js');
44
45
  var tooltip = require('./components/tooltip/tooltip.js');
45
46
  var validationMessage = require('./components/validation-message/validation-message.js');
46
47
  var omit = require('./components/Combobox/omit/omit.js');
@@ -78,6 +79,7 @@ var suggestionEmpty = require('./components/suggestion/suggestion-empty.js');
78
79
  var suggestionInput = require('./components/suggestion/suggestion-input.js');
79
80
  var suggestionList = require('./components/suggestion/suggestion-list.js');
80
81
  var suggestionOption = require('./components/suggestion/suggestion-option.js');
82
+ var suggestionToggle = require('./components/suggestion/suggestion-toggle.js');
81
83
  var errorSummaryHeading = require('./components/error-summary/error-summary-heading.js');
82
84
  var errorSummaryItem = require('./components/error-summary/error-summary-item.js');
83
85
  var errorSummaryLink = require('./components/error-summary/error-summary-link.js');
@@ -126,31 +128,32 @@ exports.Details = index$5.Details;
126
128
  exports.Dialog = index$6.Dialog;
127
129
  exports.Divider = divider.Divider;
128
130
  exports.Dropdown = index$7.Dropdown;
129
- exports.ErrorSummary = index$9.ErrorSummary;
130
- exports.Field = index$a.Field;
131
- exports.Fieldset = index$b.Fieldset;
131
+ exports.ErrorSummary = index$a.ErrorSummary;
132
+ exports.Field = index$b.Field;
133
+ exports.Fieldset = index$c.Fieldset;
134
+ exports.EXPERIMENTAL_FileUpload = index$8.EXPERIMENTAL_FileUpload;
132
135
  exports.Heading = heading.Heading;
133
136
  exports.Input = input.Input;
134
137
  exports.Label = label.Label;
135
138
  exports.Link = link.Link;
136
- exports.List = index$c.List;
137
- exports.Pagination = index$d.Pagination;
139
+ exports.List = index$d.List;
140
+ exports.Pagination = index$e.Pagination;
138
141
  exports.Paragraph = paragraph.Paragraph;
139
- exports.Popover = index$e.Popover;
142
+ exports.Popover = index$f.Popover;
140
143
  exports.Radio = radio.Radio;
141
- exports.Search = index$f.Search;
142
- exports.Select = index$g.Select;
144
+ exports.Search = index$g.Search;
145
+ exports.Select = index$h.Select;
143
146
  exports.Skeleton = skeleton.Skeleton;
144
147
  exports.SkipLink = skipLink.SkipLink;
145
148
  exports.Spinner = spinner.Spinner;
146
- exports.EXPERIMENTAL_Suggestion = index$8.EXPERIMENTAL_Suggestion;
149
+ exports.EXPERIMENTAL_Suggestion = index$9.EXPERIMENTAL_Suggestion;
147
150
  exports.Switch = _switch.Switch;
148
- exports.Table = index$h.Table;
149
- exports.Tabs = index$i.Tabs;
151
+ exports.Table = index$i.Table;
152
+ exports.Tabs = index$j.Tabs;
150
153
  exports.Tag = tag.Tag;
151
154
  exports.Textarea = textarea.Textarea;
152
155
  exports.Textfield = textfield.Textfield;
153
- exports.ToggleGroup = index$j.ToggleGroup;
156
+ exports.ToggleGroup = index$k.ToggleGroup;
154
157
  exports.Tooltip = tooltip.Tooltip;
155
158
  exports.ValidationMessage = validationMessage.ValidationMessage;
156
159
  exports.omit = omit.omit;
@@ -190,6 +193,7 @@ exports.EXPERIMENTAL_SuggestionEmpty = suggestionEmpty.SuggestionEmpty;
190
193
  exports.EXPERIMENTAL_SuggestionInput = suggestionInput.SuggestionInput;
191
194
  exports.EXPERIMENTAL_SuggestionList = suggestionList.SuggestionList;
192
195
  exports.EXPERIMENTAL_SuggestionOption = suggestionOption.SuggestionOption;
196
+ exports.EXPERIMENTAL_SuggestionToggle = suggestionToggle.SuggestionToggle;
193
197
  exports.ErrorSummaryHeading = errorSummaryHeading.ErrorSummaryHeading;
194
198
  exports.ErrorSummaryItem = errorSummaryItem.ErrorSummaryItem;
195
199
  exports.ErrorSummaryLink = errorSummaryLink.ErrorSummaryLink;
@@ -10,9 +10,7 @@ import { forwardRef } from 'react';
10
10
  * <Divider />
11
11
  */
12
12
  const Divider = forwardRef(function Divider({ className, ...rest }, ref) {
13
- return (
14
- // biome-ignore lint/a11y/noAriaHiddenOnFocusable: <hr> is not foucsable but biome thinks it is
15
- jsx("hr", { "aria-hidden": 'true', className: cl('ds-divider', className), ref: ref, ...rest }));
13
+ return (jsx("hr", { "aria-hidden": 'true', className: cl('ds-divider', className), ref: ref, ...rest }));
16
14
  });
17
15
 
18
16
  export { Divider };
@@ -0,0 +1,29 @@
1
+ 'use client';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import cl from 'clsx/lite';
4
+ import { forwardRef } from 'react';
5
+
6
+ /**
7
+ * FileUpload component to present a file upload area.
8
+ *
9
+ * @example
10
+ * <Field>
11
+ * <Label>Upload file</Label>
12
+ * <FileUpload>
13
+ * <CloudUpIcon aria-hidden='true' />
14
+ * <Field.Description>Drop file here</Field.Description>
15
+ * <Field.Description>
16
+ * File must be in csv format and less than 2MB
17
+ * </Field.Description>
18
+ * <Button asChild data-variant='secondary'>
19
+ * <span>Upload file</span>
20
+ * </Button>
21
+ * <input type="file" />
22
+ * </FileUpload>
23
+ * </Field>
24
+ */
25
+ const FileUpload = forwardRef(function FileUpload({ className, ...rest }, ref) {
26
+ return (jsx("div", { ref: ref, className: cl('ds-file-upload', className), ...rest }));
27
+ });
28
+
29
+ export { FileUpload };
@@ -0,0 +1,25 @@
1
+ 'use client';
2
+ import { FileUpload } from './file-upload.js';
3
+
4
+ /**
5
+ * FileUpload component to present a file upload area.
6
+ *
7
+ * @example
8
+ * <Field>
9
+ * <Label>Upload file</Label>
10
+ * <FileUpload>
11
+ * <CloudUpIcon aria-hidden='true' />
12
+ * <Field.Description>Drop file here</Field.Description>
13
+ * <Field.Description>
14
+ * File must be in csv format and less than 2MB
15
+ * </Field.Description>
16
+ * <Button asChild data-variant='secondary'>
17
+ * <span>Upload file</span>
18
+ * </Button>
19
+ * <input type="file" />
20
+ * </FileUpload>
21
+ * </Field>
22
+ */
23
+ const EXPERIMENTAL_FileUpload = FileUpload;
24
+
25
+ export { EXPERIMENTAL_FileUpload };
@@ -4,10 +4,6 @@ import { Slot } from '@radix-ui/react-slot';
4
4
  import cl from 'clsx/lite';
5
5
  import { forwardRef } from 'react';
6
6
 
7
- const render = (tagName, { asChild, className, ...rest }, ref) => {
8
- const Component = asChild ? Slot : tagName;
9
- return jsx(Component, { className: cl(`ds-list`, className), ref: ref, ...rest });
10
- };
11
7
  /**
12
8
  * ListUnordered component, used to display a list of items.
13
9
  * Renders a native `ul` element.
@@ -18,8 +14,9 @@ const render = (tagName, { asChild, className, ...rest }, ref) => {
18
14
  * <ListItem>Item 2</ListItem>
19
15
  * </ListUnordered>
20
16
  */
21
- const ListUnordered = forwardRef(function ListUnordered(props, ref) {
22
- return render('ul', props, ref);
17
+ const ListUnordered = forwardRef(function ListUnordered({ asChild, className, ...rest }, ref) {
18
+ const Component = asChild ? Slot : 'ul';
19
+ return (jsx(Component, { className: cl(`ds-list`, className), ref: ref, ...rest }));
23
20
  });
24
21
  /**
25
22
  * ListOrdered component, used to display a list of items.
@@ -31,8 +28,9 @@ const ListUnordered = forwardRef(function ListUnordered(props, ref) {
31
28
  * <ListItem>Item 2</ListItem>
32
29
  * </ListOrdered>
33
30
  */
34
- const ListOrdered = forwardRef(function ListOrdered(props, ref) {
35
- return render('ol', props, ref);
31
+ const ListOrdered = forwardRef(function ListOrdered({ asChild, className, ...rest }, ref) {
32
+ const Component = asChild ? Slot : 'ol';
33
+ return (jsx(Component, { className: cl(`ds-list`, className), ref: ref, ...rest }));
36
34
  });
37
35
 
38
36
  export { ListOrdered, ListUnordered };
@@ -7,6 +7,7 @@ import '@digdir/designsystemet-web';
7
7
  import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
8
8
  import { Context } from './popover-trigger-context.js';
9
9
 
10
+ const IS_DROPDOWN = /(?:^|\s)ds-dropdown(?:\s|$)/;
10
11
  /**
11
12
  * Popover component, used to display content in a popover over an element.
12
13
  *
@@ -24,7 +25,7 @@ import { Context } from './popover-trigger-context.js';
24
25
  * Content
25
26
  * </Popover>
26
27
  */
27
- const Popover = forwardRef(function Popover({ id, className, onClose, onOpen, open, variant, placement = 'top', autoPlacement = true, asChild = false, ...rest }, ref) {
28
+ const Popover = forwardRef(function Popover({ id, className = '', onClose, onOpen, open, variant, placement = 'top', autoPlacement = true, asChild = false, ...rest }, ref) {
28
29
  const Component = asChild ? Slot : 'div';
29
30
  const popoverRef = useRef(null);
30
31
  const mergedRefs = useMergeRefs([popoverRef, ref]);
@@ -59,10 +60,12 @@ const Popover = forwardRef(function Popover({ id, className, onClose, onOpen, op
59
60
  }
60
61
  };
61
62
  popover?.togglePopover?.(controlledOpen);
62
- if (controlledOpen) {
63
- const options = { detail: document.querySelector(trigger) };
64
- popover?.dispatchEvent(new CustomEvent('ds-toggle-source', options)); // Since togglePopover({ source }) is not supported in all browsers yet
65
- }
63
+ if (controlledOpen)
64
+ popover?.dispatchEvent(new CustomEvent('ds-toggle-source', {
65
+ bubbles: true,
66
+ composed: true, // Enable bubbling out of shadow DOM boundaries
67
+ detail: document.querySelector(trigger), // Since togglePopover({ source }) is not supported in all browsers yet
68
+ }));
66
69
  document.addEventListener('click', handleClick, true); // Use capture to execute before React event API
67
70
  document.addEventListener('keydown', handleKeydown);
68
71
  return () => {
@@ -75,7 +78,9 @@ const Popover = forwardRef(function Popover({ id, className, onClose, onOpen, op
75
78
  if (id)
76
79
  setPopoverId?.(id);
77
80
  }, [id]);
78
- return (jsx(Component, { className: cl('ds-popover', className), id: id || popoverId, popover: 'manual', "data-placement": placement, "data-variant": variant, ref: mergedRefs, suppressHydrationWarning // Since _ds-floating adds attributes
81
+ return (jsx(Component, { className:
82
+ // Prevent double className when using Dropdown component
83
+ cl(IS_DROPDOWN.test(className) ? undefined : 'ds-popover', className), id: id || popoverId, popover: 'manual', "data-placement": placement, "data-variant": variant, ref: mergedRefs, suppressHydrationWarning // Since _ds-floating adds attributes
79
84
  : true, ...rest }));
80
85
  });
81
86
  // NOTE: This is not able to check if the popover is the most recently added #topLayer,
@@ -5,6 +5,7 @@ import { SuggestionEmpty } from './suggestion-empty.js';
5
5
  import { SuggestionInput } from './suggestion-input.js';
6
6
  import { SuggestionList } from './suggestion-list.js';
7
7
  import { SuggestionOption } from './suggestion-option.js';
8
+ import { SuggestionToggle } from './suggestion-toggle.js';
8
9
 
9
10
  /**
10
11
  * A component that provides a suggestion list for an input field.
@@ -12,6 +13,7 @@ import { SuggestionOption } from './suggestion-option.js';
12
13
  * @example
13
14
  * <Suggestion>
14
15
  * <Suggestion.Input />
16
+ * <Suggestion.Toggle />
15
17
  * <Suggestion.Clear />
16
18
  * <Suggestion.List>
17
19
  * <Suggestion.Empty>Tomt</Suggestion.Empty>
@@ -25,6 +27,7 @@ const EXPERIMENTAL_Suggestion = Object.assign(Suggestion, {
25
27
  Input: SuggestionInput,
26
28
  Empty: SuggestionEmpty,
27
29
  Option: SuggestionOption,
30
+ Toggle: SuggestionToggle,
28
31
  Clear: SuggestionClear,
29
32
  });
30
33
  EXPERIMENTAL_Suggestion.displayName = 'EXPERIMENTAL_Suggestion';
@@ -32,6 +35,7 @@ EXPERIMENTAL_Suggestion.List.displayName = 'EXPERIMENTAL_Suggestion.List';
32
35
  EXPERIMENTAL_Suggestion.Input.displayName = 'EXPERIMENTAL_Suggestion.Input';
33
36
  EXPERIMENTAL_Suggestion.Empty.displayName = 'EXPERIMENTAL_Suggestion.Empty';
34
37
  EXPERIMENTAL_Suggestion.Option.displayName = 'EXPERIMENTAL_Suggestion.Option';
38
+ EXPERIMENTAL_Suggestion.Toggle.displayName = 'EXPERIMENTAL_Suggestion.Toggle';
35
39
  EXPERIMENTAL_Suggestion.Clear.displayName = 'EXPERIMENTAL_Suggestion.Clear';
36
40
 
37
- export { EXPERIMENTAL_Suggestion, SuggestionClear as EXPERIMENTAL_SuggestionClear, SuggestionEmpty as EXPERIMENTAL_SuggestionEmpty, SuggestionInput as EXPERIMENTAL_SuggestionInput, SuggestionList as EXPERIMENTAL_SuggestionList, SuggestionOption as EXPERIMENTAL_SuggestionOption };
41
+ export { EXPERIMENTAL_Suggestion, SuggestionClear as EXPERIMENTAL_SuggestionClear, SuggestionEmpty as EXPERIMENTAL_SuggestionEmpty, SuggestionInput as EXPERIMENTAL_SuggestionInput, SuggestionList as EXPERIMENTAL_SuggestionList, SuggestionOption as EXPERIMENTAL_SuggestionOption, SuggestionToggle as EXPERIMENTAL_SuggestionToggle };