@digdir/designsystemet-react 0.0.0-next-20250710132619 → 0.0.0-react-side-effects-20260113071010

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 (465) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/components/Combobox/Combobox.js +4 -2
  3. package/dist/cjs/components/Combobox/Custom.js +1 -1
  4. package/dist/cjs/components/Combobox/Option/Option.js +1 -1
  5. package/dist/cjs/components/Combobox/Option/useComboboxOption.js +3 -1
  6. package/dist/cjs/components/Combobox/internal/ComboboxInput.js +1 -1
  7. package/dist/cjs/{utilities → components/Combobox}/omit/omit.js +2 -0
  8. package/dist/cjs/components/Combobox/useCombobox.js +2 -1
  9. package/dist/cjs/components/Combobox/useComboboxKeyboard.js +4 -1
  10. package/dist/cjs/components/breadcrumbs/index.js +6 -6
  11. package/dist/cjs/components/button/button.js +1 -1
  12. package/dist/cjs/components/card/index.js +3 -3
  13. package/dist/cjs/components/chip/index.js +6 -6
  14. package/dist/cjs/components/details/details.js +1 -1
  15. package/dist/cjs/components/details/index.js +4 -4
  16. package/dist/cjs/components/dialog/dialog.js +18 -5
  17. package/dist/cjs/components/dialog/index.js +5 -5
  18. package/dist/cjs/components/dropdown/dropdown-button.js +12 -0
  19. package/dist/cjs/components/dropdown/dropdown-heading.js +8 -0
  20. package/dist/cjs/components/dropdown/dropdown-item.js +12 -0
  21. package/dist/cjs/components/dropdown/dropdown-list.js +12 -0
  22. package/dist/cjs/components/dropdown/dropdown-trigger-context.js +9 -9
  23. package/dist/cjs/components/dropdown/dropdown-trigger.js +16 -0
  24. package/dist/cjs/components/dropdown/index.js +20 -9
  25. package/dist/cjs/components/error-summary/error-summary-heading.js +8 -0
  26. package/dist/cjs/components/error-summary/error-summary-item.js +4 -4
  27. package/dist/cjs/components/error-summary/error-summary-link.js +8 -1
  28. package/dist/cjs/components/error-summary/error-summary-list.js +15 -0
  29. package/dist/cjs/components/error-summary/index.js +6 -6
  30. package/dist/cjs/components/field/field-counter.js +23 -3
  31. package/dist/cjs/components/field/field-description.js +6 -0
  32. package/dist/cjs/components/field/field-observer.js +8 -6
  33. package/dist/cjs/components/field/field.js +1 -1
  34. package/dist/cjs/components/field/index.js +6 -6
  35. package/dist/cjs/components/fieldset/fieldset-description.js +2 -2
  36. package/dist/cjs/components/fieldset/fieldset-legend.js +1 -1
  37. package/dist/cjs/components/fieldset/index.js +4 -4
  38. package/dist/cjs/components/list/index.js +5 -5
  39. package/dist/cjs/components/list/list-item.js +6 -0
  40. package/dist/cjs/components/list/lists.js +8 -8
  41. package/dist/cjs/components/pagination/index.js +5 -5
  42. package/dist/cjs/components/pagination/pagination-button.js +3 -3
  43. package/dist/cjs/components/pagination/pagination-item.js +5 -5
  44. package/dist/cjs/components/pagination/pagination-list.js +5 -5
  45. package/dist/cjs/components/popover/index.js +4 -4
  46. package/dist/cjs/components/popover/popover-trigger-context.js +3 -3
  47. package/dist/cjs/components/popover/popover-trigger.js +6 -6
  48. package/dist/cjs/components/popover/popover.js +7 -5
  49. package/dist/cjs/components/search/index.js +5 -5
  50. package/dist/cjs/components/search/search-button.js +2 -2
  51. package/dist/cjs/components/search/search-clear.js +2 -2
  52. package/dist/cjs/components/search/search-input.js +1 -1
  53. package/dist/cjs/components/select/index.js +4 -4
  54. package/dist/cjs/components/select/select-optgroup.js +4 -4
  55. package/dist/cjs/components/select/select-option.js +2 -2
  56. package/dist/cjs/components/skeleton/skeleton.js +3 -1
  57. package/dist/cjs/components/spinner/spinner.js +3 -1
  58. package/dist/cjs/components/suggestion/index.js +0 -4
  59. package/dist/cjs/components/suggestion/suggestion-clear.js +1 -1
  60. package/dist/cjs/components/suggestion/suggestion-list.js +41 -3
  61. package/dist/cjs/components/suggestion/suggestion-option.js +12 -0
  62. package/dist/cjs/components/suggestion/suggestion.js +39 -30
  63. package/dist/cjs/components/table/index.js +9 -9
  64. package/dist/cjs/components/table/table-body.js +6 -6
  65. package/dist/cjs/components/table/table-cell.js +1 -1
  66. package/dist/cjs/components/table/table-foot.js +6 -6
  67. package/dist/cjs/components/table/table-head.js +6 -6
  68. package/dist/cjs/components/table/table-header-cell.js +1 -1
  69. package/dist/cjs/components/table/table-row.js +4 -4
  70. package/dist/cjs/components/tabs/index.js +5 -5
  71. package/dist/cjs/components/tabs/tabs-list.js +8 -6
  72. package/dist/cjs/components/tabs/tabs-panel.js +18 -5
  73. package/dist/cjs/components/tabs/tabs-tab.js +6 -3
  74. package/dist/cjs/components/tabs/tabs.js +5 -0
  75. package/dist/cjs/components/tag/tag.js +2 -2
  76. package/dist/cjs/components/textfield/textfield.js +1 -1
  77. package/dist/cjs/components/toggle-group/index.js +3 -3
  78. package/dist/cjs/components/toggle-group/toggle-group-item.js +3 -3
  79. package/dist/cjs/components/toggle-group/toggle-group.js +3 -2
  80. package/dist/cjs/components/toggle-group/use-toggle-groupitem.js +2 -0
  81. package/dist/cjs/components/tooltip/tooltip.js +25 -7
  82. package/dist/cjs/index.js +95 -100
  83. package/dist/cjs/utilities/hooks/use-merge-refs/use-merge-refs.js +1 -1
  84. package/dist/cjs/utilities/hooks/use-pagination/use-pagination.js +2 -2
  85. package/dist/cjs/utilities/hooks/use-synchronized-animation/use-synchronized-animation.js +4 -2
  86. package/dist/cjs/utilities/roving-focus/roving-focus-item.js +1 -1
  87. package/dist/cjs/utilities/roving-focus/roving-focus-root.js +4 -3
  88. package/dist/esm/components/Combobox/Combobox.js +5 -3
  89. package/dist/esm/components/Combobox/ComboboxIdContext.js +1 -1
  90. package/dist/esm/components/Combobox/Custom.js +1 -1
  91. package/dist/esm/components/Combobox/Option/Option.js +1 -1
  92. package/dist/esm/components/Combobox/Option/useComboboxOption.js +3 -1
  93. package/dist/esm/components/Combobox/internal/ComboboxInput.js +1 -1
  94. package/dist/esm/{utilities → components/Combobox}/omit/omit.js +2 -0
  95. package/dist/esm/components/Combobox/useCombobox.js +2 -1
  96. package/dist/esm/components/Combobox/useComboboxKeyboard.js +4 -1
  97. package/dist/esm/components/breadcrumbs/index.js +7 -7
  98. package/dist/esm/components/button/button.js +1 -1
  99. package/dist/esm/components/card/index.js +4 -4
  100. package/dist/esm/components/checkbox/checkbox.js +2 -2
  101. package/dist/esm/components/chip/index.js +7 -7
  102. package/dist/esm/components/details/details.js +1 -1
  103. package/dist/esm/components/details/index.js +5 -5
  104. package/dist/esm/components/dialog/dialog.js +18 -5
  105. package/dist/esm/components/dialog/index.js +6 -6
  106. package/dist/esm/components/dropdown/dropdown-button.js +12 -0
  107. package/dist/esm/components/dropdown/dropdown-heading.js +8 -0
  108. package/dist/esm/components/dropdown/dropdown-item.js +12 -0
  109. package/dist/esm/components/dropdown/dropdown-list.js +12 -0
  110. package/dist/esm/components/dropdown/dropdown-trigger-context.js +9 -9
  111. package/dist/esm/components/dropdown/dropdown-trigger.js +16 -0
  112. package/dist/esm/components/dropdown/index.js +21 -10
  113. package/dist/esm/components/error-summary/error-summary-heading.js +8 -0
  114. package/dist/esm/components/error-summary/error-summary-item.js +4 -4
  115. package/dist/esm/components/error-summary/error-summary-link.js +8 -1
  116. package/dist/esm/components/error-summary/error-summary-list.js +17 -2
  117. package/dist/esm/components/error-summary/error-summary.js +1 -1
  118. package/dist/esm/components/error-summary/index.js +7 -7
  119. package/dist/esm/components/field/field-counter.js +23 -3
  120. package/dist/esm/components/field/field-description.js +6 -0
  121. package/dist/esm/components/field/field-observer.js +8 -6
  122. package/dist/esm/components/field/field.js +1 -1
  123. package/dist/esm/components/field/index.js +7 -7
  124. package/dist/esm/components/fieldset/fieldset-description.js +2 -2
  125. package/dist/esm/components/fieldset/fieldset-legend.js +1 -1
  126. package/dist/esm/components/fieldset/index.js +5 -5
  127. package/dist/esm/components/list/index.js +6 -6
  128. package/dist/esm/components/list/list-item.js +6 -0
  129. package/dist/esm/components/list/lists.js +8 -8
  130. package/dist/esm/components/pagination/index.js +6 -6
  131. package/dist/esm/components/pagination/pagination-button.js +3 -3
  132. package/dist/esm/components/pagination/pagination-item.js +5 -5
  133. package/dist/esm/components/pagination/pagination-list.js +5 -5
  134. package/dist/esm/components/popover/index.js +5 -5
  135. package/dist/esm/components/popover/popover-trigger-context.js +3 -3
  136. package/dist/esm/components/popover/popover-trigger.js +6 -6
  137. package/dist/esm/components/popover/popover.js +7 -5
  138. package/dist/esm/components/radio/radio.js +2 -2
  139. package/dist/esm/components/search/index.js +6 -6
  140. package/dist/esm/components/search/search-button.js +2 -2
  141. package/dist/esm/components/search/search-clear.js +2 -2
  142. package/dist/esm/components/search/search-input.js +1 -1
  143. package/dist/esm/components/select/index.js +5 -5
  144. package/dist/esm/components/select/select-optgroup.js +4 -4
  145. package/dist/esm/components/select/select-option.js +2 -2
  146. package/dist/esm/components/skeleton/skeleton.js +3 -1
  147. package/dist/esm/components/spinner/spinner.js +3 -1
  148. package/dist/esm/components/suggestion/index.js +1 -4
  149. package/dist/esm/components/suggestion/suggestion-clear.js +1 -1
  150. package/dist/esm/components/suggestion/suggestion-list.js +41 -3
  151. package/dist/esm/components/suggestion/suggestion-option.js +12 -0
  152. package/dist/esm/components/suggestion/suggestion.js +40 -31
  153. package/dist/esm/components/switch/switch.js +2 -2
  154. package/dist/esm/components/table/index.js +10 -10
  155. package/dist/esm/components/table/table-body.js +6 -6
  156. package/dist/esm/components/table/table-cell.js +1 -1
  157. package/dist/esm/components/table/table-foot.js +6 -6
  158. package/dist/esm/components/table/table-head.js +6 -6
  159. package/dist/esm/components/table/table-header-cell.js +1 -1
  160. package/dist/esm/components/table/table-row.js +4 -4
  161. package/dist/esm/components/tabs/index.js +6 -6
  162. package/dist/esm/components/tabs/tabs-list.js +8 -6
  163. package/dist/esm/components/tabs/tabs-panel.js +20 -7
  164. package/dist/esm/components/tabs/tabs-tab.js +6 -3
  165. package/dist/esm/components/tabs/tabs.js +6 -1
  166. package/dist/esm/components/tag/tag.js +2 -2
  167. package/dist/esm/components/textfield/textfield.js +2 -2
  168. package/dist/esm/components/toggle-group/index.js +4 -4
  169. package/dist/esm/components/toggle-group/toggle-group-item.js +3 -3
  170. package/dist/esm/components/toggle-group/toggle-group.js +4 -3
  171. package/dist/esm/components/toggle-group/use-toggle-groupitem.js +2 -0
  172. package/dist/esm/components/tooltip/tooltip.js +25 -7
  173. package/dist/esm/index.js +48 -49
  174. package/dist/esm/utilities/hooks/use-merge-refs/use-merge-refs.js +1 -1
  175. package/dist/esm/utilities/hooks/use-pagination/use-pagination.js +2 -2
  176. package/dist/esm/utilities/hooks/use-synchronized-animation/use-synchronized-animation.js +4 -3
  177. package/dist/esm/utilities/roving-focus/roving-focus-item.js +1 -1
  178. package/dist/esm/utilities/roving-focus/roving-focus-root.js +5 -4
  179. package/dist/react-types.d.ts +22 -2
  180. package/dist/types/colors.d.ts +1 -23
  181. package/dist/types/colors.d.ts.map +1 -1
  182. package/dist/types/components/Combobox/Combobox.d.ts +6 -6
  183. package/dist/types/components/Combobox/Combobox.d.ts.map +1 -1
  184. package/dist/types/components/Combobox/ComboboxContext.d.ts +1 -1
  185. package/dist/types/components/Combobox/ComboboxContext.d.ts.map +1 -1
  186. package/dist/types/components/Combobox/ComboboxIdContext.d.ts +2 -2
  187. package/dist/types/components/Combobox/ComboboxIdContext.d.ts.map +1 -1
  188. package/dist/types/components/Combobox/Custom.d.ts +1 -1
  189. package/dist/types/components/Combobox/Custom.d.ts.map +1 -1
  190. package/dist/types/components/Combobox/Empty.d.ts +1 -1
  191. package/dist/types/components/Combobox/Empty.d.ts.map +1 -1
  192. package/dist/types/components/Combobox/Option/Description.d.ts +1 -1
  193. package/dist/types/components/Combobox/Option/Description.d.ts.map +1 -1
  194. package/dist/types/components/Combobox/Option/Option.d.ts +2 -2
  195. package/dist/types/components/Combobox/Option/Option.d.ts.map +1 -1
  196. package/dist/types/components/Combobox/internal/ComboboxClearButton.d.ts +1 -1
  197. package/dist/types/components/Combobox/internal/ComboboxClearButton.d.ts.map +1 -1
  198. package/dist/types/components/Combobox/internal/ComboboxInput.d.ts.map +1 -1
  199. package/dist/types/{utilities → components/Combobox}/omit/omit.d.ts +2 -0
  200. package/dist/types/components/Combobox/omit/omit.d.ts.map +1 -0
  201. package/dist/types/components/Combobox/useCombobox.d.ts +3 -3
  202. package/dist/types/components/Combobox/useCombobox.d.ts.map +1 -1
  203. package/dist/types/components/Combobox/useFormField/FieldsetContext.d.ts +1 -1
  204. package/dist/types/components/Combobox/useFormField/FieldsetContext.d.ts.map +1 -1
  205. package/dist/types/components/Combobox/useFormField/useFormField.d.ts +1 -1
  206. package/dist/types/components/Combobox/useFormField/useFormField.d.ts.map +1 -1
  207. package/dist/types/components/alert/alert.d.ts +3 -3
  208. package/dist/types/components/alert/alert.d.ts.map +1 -1
  209. package/dist/types/components/avatar/avatar.d.ts +10 -28
  210. package/dist/types/components/avatar/avatar.d.ts.map +1 -1
  211. package/dist/types/components/badge/badge-position.d.ts +2 -2
  212. package/dist/types/components/badge/badge-position.d.ts.map +1 -1
  213. package/dist/types/components/badge/badge.d.ts +3 -3
  214. package/dist/types/components/badge/badge.d.ts.map +1 -1
  215. package/dist/types/components/badge/index.d.ts +5 -5
  216. package/dist/types/components/breadcrumbs/breadcrumbs-item.d.ts +1 -1
  217. package/dist/types/components/breadcrumbs/breadcrumbs-item.d.ts.map +1 -1
  218. package/dist/types/components/breadcrumbs/breadcrumbs-link.d.ts +3 -3
  219. package/dist/types/components/breadcrumbs/breadcrumbs-link.d.ts.map +1 -1
  220. package/dist/types/components/breadcrumbs/breadcrumbs-list.d.ts +1 -1
  221. package/dist/types/components/breadcrumbs/breadcrumbs-list.d.ts.map +1 -1
  222. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  223. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts.map +1 -1
  224. package/dist/types/components/breadcrumbs/index.d.ts +48 -12
  225. package/dist/types/components/breadcrumbs/index.d.ts.map +1 -1
  226. package/dist/types/components/button/button.d.ts +7 -5
  227. package/dist/types/components/button/button.d.ts.map +1 -1
  228. package/dist/types/components/card/card-block.d.ts +2 -2
  229. package/dist/types/components/card/card-block.d.ts.map +1 -1
  230. package/dist/types/components/card/card.d.ts +2 -2
  231. package/dist/types/components/card/card.d.ts.map +1 -1
  232. package/dist/types/components/card/index.d.ts +18 -10
  233. package/dist/types/components/card/index.d.ts.map +1 -1
  234. package/dist/types/components/checkbox/checkbox.d.ts +1 -1
  235. package/dist/types/components/checkbox/checkbox.d.ts.map +1 -1
  236. package/dist/types/components/chip/chips.d.ts +4 -4
  237. package/dist/types/components/chip/chips.d.ts.map +1 -1
  238. package/dist/types/components/chip/index.d.ts +33 -14
  239. package/dist/types/components/chip/index.d.ts.map +1 -1
  240. package/dist/types/components/details/details-content.d.ts +1 -1
  241. package/dist/types/components/details/details-content.d.ts.map +1 -1
  242. package/dist/types/components/details/details-summary.d.ts +2 -2
  243. package/dist/types/components/details/details-summary.d.ts.map +1 -1
  244. package/dist/types/components/details/details.d.ts +1 -1
  245. package/dist/types/components/details/details.d.ts.map +1 -1
  246. package/dist/types/components/details/index.d.ts +19 -7
  247. package/dist/types/components/details/index.d.ts.map +1 -1
  248. package/dist/types/components/dialog/dialog-block.d.ts +2 -2
  249. package/dist/types/components/dialog/dialog-block.d.ts.map +1 -1
  250. package/dist/types/components/dialog/dialog-trigger-context.d.ts +1 -1
  251. package/dist/types/components/dialog/dialog-trigger-context.d.ts.map +1 -1
  252. package/dist/types/components/dialog/dialog-trigger.d.ts +5 -5
  253. package/dist/types/components/dialog/dialog-trigger.d.ts.map +1 -1
  254. package/dist/types/components/dialog/dialog.d.ts +24 -4
  255. package/dist/types/components/dialog/dialog.d.ts.map +1 -1
  256. package/dist/types/components/dialog/index.d.ts +46 -25
  257. package/dist/types/components/dialog/index.d.ts.map +1 -1
  258. package/dist/types/components/divider/divider.d.ts +1 -1
  259. package/dist/types/components/divider/divider.d.ts.map +1 -1
  260. package/dist/types/components/dropdown/dropdown-button.d.ts +13 -1
  261. package/dist/types/components/dropdown/dropdown-button.d.ts.map +1 -1
  262. package/dist/types/components/dropdown/dropdown-heading.d.ts +10 -2
  263. package/dist/types/components/dropdown/dropdown-heading.d.ts.map +1 -1
  264. package/dist/types/components/dropdown/dropdown-item.d.ts +13 -1
  265. package/dist/types/components/dropdown/dropdown-item.d.ts.map +1 -1
  266. package/dist/types/components/dropdown/dropdown-list.d.ts +13 -1
  267. package/dist/types/components/dropdown/dropdown-list.d.ts.map +1 -1
  268. package/dist/types/components/dropdown/dropdown-trigger-context.d.ts +9 -9
  269. package/dist/types/components/dropdown/dropdown-trigger.d.ts +17 -1
  270. package/dist/types/components/dropdown/dropdown-trigger.d.ts.map +1 -1
  271. package/dist/types/components/dropdown/dropdown.d.ts +2 -2
  272. package/dist/types/components/dropdown/dropdown.d.ts.map +1 -1
  273. package/dist/types/components/dropdown/index.d.ts +99 -19
  274. package/dist/types/components/dropdown/index.d.ts.map +1 -1
  275. package/dist/types/components/error-summary/error-summary-heading.d.ts +10 -2
  276. package/dist/types/components/error-summary/error-summary-heading.d.ts.map +1 -1
  277. package/dist/types/components/error-summary/error-summary-item.d.ts +6 -6
  278. package/dist/types/components/error-summary/error-summary-item.d.ts.map +1 -1
  279. package/dist/types/components/error-summary/error-summary-link.d.ts +11 -4
  280. package/dist/types/components/error-summary/error-summary-link.d.ts.map +1 -1
  281. package/dist/types/components/error-summary/error-summary-list.d.ts +17 -2
  282. package/dist/types/components/error-summary/error-summary-list.d.ts.map +1 -1
  283. package/dist/types/components/error-summary/error-summary.d.ts +3 -3
  284. package/dist/types/components/error-summary/error-summary.d.ts.map +1 -1
  285. package/dist/types/components/error-summary/index.d.ts +52 -20
  286. package/dist/types/components/error-summary/index.d.ts.map +1 -1
  287. package/dist/types/components/field/field-affix.d.ts +2 -2
  288. package/dist/types/components/field/field-affix.d.ts.map +1 -1
  289. package/dist/types/components/field/field-counter.d.ts +18 -4
  290. package/dist/types/components/field/field-counter.d.ts.map +1 -1
  291. package/dist/types/components/field/field-description.d.ts +7 -1
  292. package/dist/types/components/field/field-description.d.ts.map +1 -1
  293. package/dist/types/components/field/field-observer.d.ts.map +1 -1
  294. package/dist/types/components/field/field.d.ts +2 -2
  295. package/dist/types/components/field/field.d.ts.map +1 -1
  296. package/dist/types/components/field/index.d.ts +45 -17
  297. package/dist/types/components/field/index.d.ts.map +1 -1
  298. package/dist/types/components/fieldset/fieldset-description.d.ts +4 -4
  299. package/dist/types/components/fieldset/fieldset-description.d.ts.map +1 -1
  300. package/dist/types/components/fieldset/fieldset-legend.d.ts +2 -2
  301. package/dist/types/components/fieldset/fieldset-legend.d.ts.map +1 -1
  302. package/dist/types/components/fieldset/fieldset.d.ts +1 -1
  303. package/dist/types/components/fieldset/fieldset.d.ts.map +1 -1
  304. package/dist/types/components/fieldset/index.d.ts +21 -9
  305. package/dist/types/components/fieldset/index.d.ts.map +1 -1
  306. package/dist/types/components/heading/heading.d.ts +2 -2
  307. package/dist/types/components/heading/heading.d.ts.map +1 -1
  308. package/dist/types/components/index.d.ts +2 -2
  309. package/dist/types/components/index.d.ts.map +1 -1
  310. package/dist/types/components/input/input.d.ts +2 -2
  311. package/dist/types/components/input/input.d.ts.map +1 -1
  312. package/dist/types/components/label/label.d.ts +2 -2
  313. package/dist/types/components/label/label.d.ts.map +1 -1
  314. package/dist/types/components/link/link.d.ts +2 -2
  315. package/dist/types/components/link/link.d.ts.map +1 -1
  316. package/dist/types/components/list/index.d.ts +32 -11
  317. package/dist/types/components/list/index.d.ts.map +1 -1
  318. package/dist/types/components/list/list-item.d.ts +8 -2
  319. package/dist/types/components/list/list-item.d.ts.map +1 -1
  320. package/dist/types/components/list/lists.d.ts +12 -12
  321. package/dist/types/components/list/lists.d.ts.map +1 -1
  322. package/dist/types/components/pagination/index.d.ts +38 -15
  323. package/dist/types/components/pagination/index.d.ts.map +1 -1
  324. package/dist/types/components/pagination/pagination-button.d.ts +5 -5
  325. package/dist/types/components/pagination/pagination-button.d.ts.map +1 -1
  326. package/dist/types/components/pagination/pagination-item.d.ts +7 -7
  327. package/dist/types/components/pagination/pagination-item.d.ts.map +1 -1
  328. package/dist/types/components/pagination/pagination-list.d.ts +7 -7
  329. package/dist/types/components/pagination/pagination-list.d.ts.map +1 -1
  330. package/dist/types/components/pagination/pagination.d.ts +2 -2
  331. package/dist/types/components/pagination/pagination.d.ts.map +1 -1
  332. package/dist/types/components/paragraph/paragraph.d.ts +2 -2
  333. package/dist/types/components/paragraph/paragraph.d.ts.map +1 -1
  334. package/dist/types/components/popover/index.d.ts +39 -18
  335. package/dist/types/components/popover/index.d.ts.map +1 -1
  336. package/dist/types/components/popover/popover-trigger-context.d.ts +4 -4
  337. package/dist/types/components/popover/popover-trigger.d.ts +7 -7
  338. package/dist/types/components/popover/popover-trigger.d.ts.map +1 -1
  339. package/dist/types/components/popover/popover.d.ts +3 -3
  340. package/dist/types/components/popover/popover.d.ts.map +1 -1
  341. package/dist/types/components/radio/radio.d.ts +1 -1
  342. package/dist/types/components/radio/radio.d.ts.map +1 -1
  343. package/dist/types/components/search/index.d.ts +34 -15
  344. package/dist/types/components/search/index.d.ts.map +1 -1
  345. package/dist/types/components/search/search-button.d.ts +6 -6
  346. package/dist/types/components/search/search-button.d.ts.map +1 -1
  347. package/dist/types/components/search/search-clear.d.ts +4 -4
  348. package/dist/types/components/search/search-clear.d.ts.map +1 -1
  349. package/dist/types/components/search/search-input.d.ts +2 -2
  350. package/dist/types/components/search/search-input.d.ts.map +1 -1
  351. package/dist/types/components/search/search.d.ts +1 -1
  352. package/dist/types/components/search/search.d.ts.map +1 -1
  353. package/dist/types/components/select/index.d.ts +27 -12
  354. package/dist/types/components/select/index.d.ts.map +1 -1
  355. package/dist/types/components/select/select-optgroup.d.ts +6 -6
  356. package/dist/types/components/select/select-optgroup.d.ts.map +1 -1
  357. package/dist/types/components/select/select-option.d.ts +4 -4
  358. package/dist/types/components/select/select-option.d.ts.map +1 -1
  359. package/dist/types/components/select/select.d.ts +2 -2
  360. package/dist/types/components/select/select.d.ts.map +1 -1
  361. package/dist/types/components/skeleton/skeleton.d.ts +24 -7
  362. package/dist/types/components/skeleton/skeleton.d.ts.map +1 -1
  363. package/dist/types/components/skip-link/skip-link.d.ts +2 -2
  364. package/dist/types/components/skip-link/skip-link.d.ts.map +1 -1
  365. package/dist/types/components/spinner/spinner.d.ts +1 -2
  366. package/dist/types/components/spinner/spinner.d.ts.map +1 -1
  367. package/dist/types/components/suggestion/index.d.ts +67 -44
  368. package/dist/types/components/suggestion/index.d.ts.map +1 -1
  369. package/dist/types/components/suggestion/suggestion-clear.d.ts +2 -2
  370. package/dist/types/components/suggestion/suggestion-clear.d.ts.map +1 -1
  371. package/dist/types/components/suggestion/suggestion-empty.d.ts +1 -1
  372. package/dist/types/components/suggestion/suggestion-empty.d.ts.map +1 -1
  373. package/dist/types/components/suggestion/suggestion-input.d.ts +15 -3
  374. package/dist/types/components/suggestion/suggestion-input.d.ts.map +1 -1
  375. package/dist/types/components/suggestion/suggestion-list.d.ts +12 -2
  376. package/dist/types/components/suggestion/suggestion-list.d.ts.map +1 -1
  377. package/dist/types/components/suggestion/suggestion-option.d.ts +13 -1
  378. package/dist/types/components/suggestion/suggestion-option.d.ts.map +1 -1
  379. package/dist/types/components/suggestion/suggestion.d.ts +47 -57
  380. package/dist/types/components/suggestion/suggestion.d.ts.map +1 -1
  381. package/dist/types/components/switch/switch.d.ts +2 -2
  382. package/dist/types/components/switch/switch.d.ts.map +1 -1
  383. package/dist/types/components/table/index.d.ts +65 -16
  384. package/dist/types/components/table/index.d.ts.map +1 -1
  385. package/dist/types/components/table/table-body.d.ts +7 -7
  386. package/dist/types/components/table/table-body.d.ts.map +1 -1
  387. package/dist/types/components/table/table-cell.d.ts +2 -2
  388. package/dist/types/components/table/table-cell.d.ts.map +1 -1
  389. package/dist/types/components/table/table-foot.d.ts +7 -7
  390. package/dist/types/components/table/table-foot.d.ts.map +1 -1
  391. package/dist/types/components/table/table-head.d.ts +7 -7
  392. package/dist/types/components/table/table-head.d.ts.map +1 -1
  393. package/dist/types/components/table/table-header-cell.d.ts +3 -3
  394. package/dist/types/components/table/table-header-cell.d.ts.map +1 -1
  395. package/dist/types/components/table/table-row.d.ts +5 -5
  396. package/dist/types/components/table/table-row.d.ts.map +1 -1
  397. package/dist/types/components/table/table.d.ts +2 -2
  398. package/dist/types/components/table/table.d.ts.map +1 -1
  399. package/dist/types/components/tabs/index.d.ts +29 -14
  400. package/dist/types/components/tabs/index.d.ts.map +1 -1
  401. package/dist/types/components/tabs/tabs-list.d.ts +5 -5
  402. package/dist/types/components/tabs/tabs-list.d.ts.map +1 -1
  403. package/dist/types/components/tabs/tabs-panel.d.ts +3 -3
  404. package/dist/types/components/tabs/tabs-panel.d.ts.map +1 -1
  405. package/dist/types/components/tabs/tabs-tab.d.ts +3 -3
  406. package/dist/types/components/tabs/tabs-tab.d.ts.map +1 -1
  407. package/dist/types/components/tabs/tabs.d.ts +6 -3
  408. package/dist/types/components/tabs/tabs.d.ts.map +1 -1
  409. package/dist/types/components/tag/tag.d.ts +15 -3
  410. package/dist/types/components/tag/tag.d.ts.map +1 -1
  411. package/dist/types/components/textarea/textarea.d.ts +1 -1
  412. package/dist/types/components/textarea/textarea.d.ts.map +1 -1
  413. package/dist/types/components/textfield/textfield.d.ts +1 -1
  414. package/dist/types/components/textfield/textfield.d.ts.map +1 -1
  415. package/dist/types/components/toggle-group/index.d.ts +11 -11
  416. package/dist/types/components/toggle-group/index.d.ts.map +1 -1
  417. package/dist/types/components/toggle-group/toggle-group-item.d.ts +3 -3
  418. package/dist/types/components/toggle-group/toggle-group-item.d.ts.map +1 -1
  419. package/dist/types/components/toggle-group/toggle-group.d.ts +14 -3
  420. package/dist/types/components/toggle-group/toggle-group.d.ts.map +1 -1
  421. package/dist/types/components/toggle-group/use-toggle-groupitem.d.ts +1 -0
  422. package/dist/types/components/toggle-group/use-toggle-groupitem.d.ts.map +1 -1
  423. package/dist/types/components/tooltip/tooltip.d.ts +11 -1
  424. package/dist/types/components/tooltip/tooltip.d.ts.map +1 -1
  425. package/dist/types/components/validation-message/validation-message.d.ts +3 -3
  426. package/dist/types/components/validation-message/validation-message.d.ts.map +1 -1
  427. package/dist/types/index.d.ts +15 -2
  428. package/dist/types/index.d.ts.map +1 -1
  429. package/dist/types/types.d.ts +1 -1
  430. package/dist/types/types.d.ts.map +1 -1
  431. package/dist/types/utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.d.ts.map +1 -0
  432. package/dist/types/utilities/hooks/deprecated/use-isomorphic-layout-effect/use-isomorphic-layout-effect.d.ts.map +1 -0
  433. package/dist/types/utilities/hooks/deprecated/use-media-query/use-media-query.d.ts.map +1 -0
  434. package/dist/types/utilities/hooks/index.d.ts +3 -3
  435. package/dist/types/utilities/hooks/index.d.ts.map +1 -1
  436. package/dist/types/utilities/hooks/use-synchronized-animation/use-synchronized-animation.d.ts +3 -1
  437. package/dist/types/utilities/hooks/use-synchronized-animation/use-synchronized-animation.d.ts.map +1 -1
  438. package/dist/types/utilities/index.d.ts +4 -3
  439. package/dist/types/utilities/index.d.ts.map +1 -1
  440. package/dist/types/utilities/roving-focus/roving-focus-item.d.ts +2 -2
  441. package/dist/types/utilities/roving-focus/roving-focus-item.d.ts.map +1 -1
  442. package/dist/types/utilities/roving-focus/roving-focus-root.d.ts +3 -3
  443. package/dist/types/utilities/roving-focus/roving-focus-root.d.ts.map +1 -1
  444. package/dist/types/utilities/roving-focus/use-roving-focus.d.ts +173 -172
  445. package/dist/types/utilities/roving-focus/use-roving-focus.d.ts.map +1 -1
  446. package/package.json +28 -30
  447. package/dist/cjs/components/suggestion/suggestion-chips.js +0 -15
  448. package/dist/esm/components/suggestion/suggestion-chips.js +0 -13
  449. package/dist/types/components/suggestion/suggestion-chips.d.ts +0 -19
  450. package/dist/types/components/suggestion/suggestion-chips.d.ts.map +0 -1
  451. package/dist/types/utilities/hooks/use-debounce-callback/use-debounce-callback.d.ts.map +0 -1
  452. package/dist/types/utilities/hooks/use-isomorphic-layout-effect/use-isomorphic-layout-effect.d.ts.map +0 -1
  453. package/dist/types/utilities/hooks/use-media-query/use-media-query.d.ts.map +0 -1
  454. package/dist/types/utilities/omit/omit.d.ts.map +0 -1
  455. package/dist/types/utilities/roving-focus/index.d.ts +0 -4
  456. package/dist/types/utilities/roving-focus/index.d.ts.map +0 -1
  457. /package/dist/cjs/utilities/hooks/{use-debounce-callback → deprecated/use-debounce-callback}/use-debounce-callback.js +0 -0
  458. /package/dist/cjs/utilities/hooks/{use-isomorphic-layout-effect → deprecated/use-isomorphic-layout-effect}/use-isomorphic-layout-effect.js +0 -0
  459. /package/dist/cjs/utilities/hooks/{use-media-query → deprecated/use-media-query}/use-media-query.js +0 -0
  460. /package/dist/esm/utilities/hooks/{use-debounce-callback → deprecated/use-debounce-callback}/use-debounce-callback.js +0 -0
  461. /package/dist/esm/utilities/hooks/{use-isomorphic-layout-effect → deprecated/use-isomorphic-layout-effect}/use-isomorphic-layout-effect.js +0 -0
  462. /package/dist/esm/utilities/hooks/{use-media-query → deprecated/use-media-query}/use-media-query.js +0 -0
  463. /package/dist/types/utilities/hooks/{use-debounce-callback → deprecated/use-debounce-callback}/use-debounce-callback.d.ts +0 -0
  464. /package/dist/types/utilities/hooks/{use-isomorphic-layout-effect → deprecated/use-isomorphic-layout-effect}/use-isomorphic-layout-effect.d.ts +0 -0
  465. /package/dist/types/utilities/hooks/{use-media-query → deprecated/use-media-query}/use-media-query.d.ts +0 -0
@@ -1,15 +1,15 @@
1
1
  'use client';
2
- import { ChipRemovable, ChipRadio, ChipCheckbox, ChipButton } from './chips.js';
2
+ import { ChipButton, ChipCheckbox, ChipRadio, ChipRemovable } from './chips.js';
3
3
 
4
- const Chip = {
4
+ const ChipComponent = {
5
5
  Button: ChipButton,
6
6
  Checkbox: ChipCheckbox,
7
7
  Radio: ChipRadio,
8
8
  Removable: ChipRemovable,
9
9
  };
10
- Chip.Button.displayName = 'Chip.Button';
11
- Chip.Checkbox.displayName = 'Chip.Checkbox';
12
- Chip.Radio.displayName = 'Chip.Radio';
13
- Chip.Removable.displayName = 'Chip.Removable';
10
+ ChipComponent.Button.displayName = 'Chip.Button';
11
+ ChipComponent.Checkbox.displayName = 'Chip.Checkbox';
12
+ ChipComponent.Radio.displayName = 'Chip.Radio';
13
+ ChipComponent.Removable.displayName = 'Chip.Removable';
14
14
 
15
- export { Chip, ChipButton, ChipCheckbox, ChipRadio, ChipRemovable };
15
+ export { ChipComponent as Chip, ChipButton, ChipCheckbox, ChipRadio, ChipRemovable };
@@ -2,8 +2,8 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import cl from 'clsx/lite';
4
4
  import { forwardRef, useRef, useEffect } from 'react';
5
- import '@u-elements/u-details';
6
5
  import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
6
+ import '@u-elements/u-details';
7
7
 
8
8
  /**
9
9
  * Details component, contains `Details.Summary` and `Details.Content` components.
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Details as Details$1 } from './details.js';
2
+ import { Details } from './details.js';
3
3
  import { DetailsContent } from './details-content.js';
4
4
  import { DetailsSummary } from './details-summary.js';
5
5
 
@@ -12,11 +12,11 @@ import { DetailsSummary } from './details-summary.js';
12
12
  * <Details.Content>Content</Details.Content>
13
13
  * </Details>
14
14
  */
15
- const Details = Object.assign(Details$1, {
15
+ const DetailsComponent = Object.assign(Details, {
16
16
  Summary: DetailsSummary,
17
17
  Content: DetailsContent,
18
18
  });
19
- Details.Summary.displayName = 'Details.Summary';
20
- Details.Content.displayName = 'Details.Content';
19
+ DetailsComponent.Summary.displayName = 'Details.Summary';
20
+ DetailsComponent.Content.displayName = 'Details.Content';
21
21
 
22
- export { Details, DetailsContent, DetailsSummary };
22
+ export { DetailsComponent as Details, DetailsContent, DetailsSummary };
@@ -3,9 +3,9 @@ import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { Slot } from '@radix-ui/react-slot';
4
4
  import cl from 'clsx/lite';
5
5
  import { forwardRef, useContext, useRef, useEffect } from 'react';
6
+ import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
6
7
  import { Button } from '../button/button.js';
7
8
  import { Context } from './dialog-trigger-context.js';
8
- import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
9
9
 
10
10
  /**
11
11
  * Dialog component, used to display a dialog dialog.
@@ -30,7 +30,7 @@ import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-ref
30
30
  * Content
31
31
  * </Dialog>
32
32
  */
33
- const Dialog = forwardRef(function Dialog({ asChild, children, className, closeButton = 'Lukk dialogvindu', closedby = 'closerequest', modal = true, onClose, open, ...rest }, ref) {
33
+ const Dialog = forwardRef(function Dialog({ asChild, children, className, placement = 'center', closeButton = 'Lukk dialogvindu', closedby = 'closerequest', modal = true, onClose, open, ...rest }, ref) {
34
34
  const contextRef = useContext(Context);
35
35
  const dialogRef = useRef(null); // This local ref is used to make sure the dialog works without a DialogTriggerContext
36
36
  const Component = asChild ? Slot : 'dialog';
@@ -40,7 +40,19 @@ const Dialog = forwardRef(function Dialog({ asChild, children, className, closeB
40
40
  useEffect(() => {
41
41
  const dialog = dialogRef.current;
42
42
  const handleClosedby = (event) => {
43
+ if (event.defaultPrevented)
44
+ return; // Skip if default action is prevented
43
45
  const { clientY: y, clientX: x, target } = event;
46
+ /* Check if clicked element or its closest parent has data-command='close' */
47
+ if (target instanceof Element && event.type === 'click') {
48
+ const closeElement = target.closest('[data-command="close"]');
49
+ if (closeElement)
50
+ return dialog?.close();
51
+ }
52
+ // if the browser supports closedBy, we let the browser handle it
53
+ // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy
54
+ if (dialog && 'closedBy' in dialog)
55
+ return;
44
56
  if (event instanceof KeyboardEvent)
45
57
  return (closedby === 'none' &&
46
58
  event.key === 'Escape' &&
@@ -71,10 +83,11 @@ const Dialog = forwardRef(function Dialog({ asChild, children, className, closeB
71
83
  /* handle closing */
72
84
  useEffect(() => {
73
85
  const handleClose = (event) => onClose?.(event);
74
- dialogRef.current?.addEventListener('close', handleClose);
75
- return () => dialogRef.current?.removeEventListener('close', handleClose);
86
+ const currentRef = dialogRef.current;
87
+ currentRef?.addEventListener('close', handleClose);
88
+ return () => currentRef?.removeEventListener('close', handleClose);
76
89
  }, [onClose]);
77
- return (jsxs(Component, { className: cl('ds-dialog', className), ref: mergedRefs, "data-modal": modal, ...rest, children: [closeButton !== false && (jsx("form", { method: 'dialog', children: jsx(Button, { "aria-label": closeButton, autoFocus: true, "data-color": 'neutral', icon: true, name: 'close', type: 'submit', variant: 'tertiary' }) })), children] }));
90
+ return (jsxs(Component, { className: cl('ds-dialog', className), ref: mergedRefs, "data-placement": placement, "data-modal": modal, closedby: closedby, ...rest, children: [closeButton !== false && (jsx(Button, { "aria-label": closeButton, "data-color": 'neutral', icon: true, variant: 'tertiary', "data-command": 'close' })), children] }));
78
91
  });
79
92
 
80
93
  export { Dialog };
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Dialog as Dialog$1 } from './dialog.js';
2
+ import { Dialog } from './dialog.js';
3
3
  import { DialogBlock } from './dialog-block.js';
4
4
  import { DialogTrigger } from './dialog-trigger.js';
5
5
  import { DialogTriggerContext } from './dialog-trigger-context.js';
@@ -17,13 +17,13 @@ import { DialogTriggerContext } from './dialog-trigger-context.js';
17
17
  * </Dialog>
18
18
  * </Dialog.TriggerContext>
19
19
  */
20
- const Dialog = Object.assign(Dialog$1, {
20
+ const DialogComponent = Object.assign(Dialog, {
21
21
  Block: DialogBlock,
22
22
  TriggerContext: DialogTriggerContext,
23
23
  Trigger: DialogTrigger,
24
24
  });
25
- Dialog.Block.displayName = 'Dialog.Block';
26
- Dialog.TriggerContext.displayName = 'Dialog.TriggerContext';
27
- Dialog.Trigger.displayName = 'Dialog.Trigger';
25
+ DialogComponent.Block.displayName = 'Dialog.Block';
26
+ DialogComponent.TriggerContext.displayName = 'Dialog.TriggerContext';
27
+ DialogComponent.Trigger.displayName = 'Dialog.Trigger';
28
28
 
29
- export { Dialog, DialogBlock, DialogTrigger, DialogTriggerContext };
29
+ export { DialogComponent as Dialog, DialogBlock, DialogTrigger, DialogTriggerContext };
@@ -3,6 +3,18 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef } from 'react';
4
4
  import { Button } from '../button/button.js';
5
5
 
6
+ /**
7
+ * DropdownButton component, used to display a button in the DropdownItem.
8
+ *
9
+ * @example
10
+ * <Dropdown>
11
+ * <DropdownList>
12
+ * <DropdownItem>
13
+ * <DropdownButton>Button</DropdownButton>
14
+ * </DropdownItem>
15
+ * </DropdownList>
16
+ * </Dropdown>
17
+ */
6
18
  const DropdownButton = forwardRef(function DropdownButton({ ...rest }, ref) {
7
19
  return jsx(Button, { ref: ref, variant: 'tertiary', ...rest });
8
20
  });
@@ -3,6 +3,14 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef } from 'react';
4
4
  import { Heading } from '../heading/heading.js';
5
5
 
6
+ /**
7
+ * DropdownHeading component, used to display a heading in the Dropdown.
8
+ *
9
+ * @example
10
+ * <Dropdown>
11
+ * <DropdownHeading>Heading</DropdownHeading>
12
+ * </Dropdown>
13
+ */
6
14
  const DropdownHeading = forwardRef(function DropdownHeading({ className, ...rest }, ref) {
7
15
  return jsx(Heading, { ref: ref, ...rest });
8
16
  });
@@ -2,6 +2,18 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef } from 'react';
4
4
 
5
+ /**
6
+ * DropdownItem component, used to display an item in the Dropdown. Used within a DropdownList.
7
+ *
8
+ * @example
9
+ * <Dropdown>
10
+ * <DropdownList>
11
+ * <DropdownItem>
12
+ * <DropdownButton>Button</DropdownButton>
13
+ * </DropdownItem>
14
+ * </DropdownList>
15
+ * </Dropdown>
16
+ */
5
17
  const DropdownItem = forwardRef(function DropdownItem({ className, ...rest }, ref) {
6
18
  return jsx("li", { ref: ref, ...rest });
7
19
  });
@@ -2,6 +2,18 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef } from 'react';
4
4
 
5
+ /**
6
+ * DropdownList component, used to display a list of items in the Dropdown.
7
+ *
8
+ * @example
9
+ * <Dropdown>
10
+ * <DropdownList>
11
+ * <DropdownItem>
12
+ * <DropdownButton>Button</DropdownButton>
13
+ * </DropdownItem>
14
+ * </DropdownList>
15
+ * </Dropdown>
16
+ */
5
17
  const DropdownList = forwardRef(function DropdownList({ className, ...rest }, ref) {
6
18
  return jsx("ul", { ref: ref, ...rest });
7
19
  });
@@ -6,17 +6,17 @@ import { PopoverTriggerContext } from '../popover/popover-trigger-context.js';
6
6
  * DropdownTriggerContext enables use of the `.Trigger` for the Dropdown component.
7
7
  *
8
8
  * @example
9
- * <Dropdown.TriggerContext>
10
- * <Dropdown.Trigger>Dropdown</Dropdown.Trigger>
9
+ * <DropdownTriggerContext>
10
+ * <DropdownTrigger>Dropdown</DropdownTrigger>
11
11
  * <Dropdown>
12
- * <Dropdown.Heading>Heading</Dropdown.Heading>
13
- * <Dropdown.List>
14
- * <Dropdown.Item>
15
- * <Dropdown.Button>Button</Dropdown.Button>
16
- * </Dropdown.Item>
17
- * </Dropdown.List>
12
+ * <DropdownHeading>Heading</DropdownHeading>
13
+ * <DropdownList>
14
+ * <DropdownItem>
15
+ * <DropdownButton>Button</DropdownButton>
16
+ * </DropdownItem>
17
+ * </DropdownList>
18
18
  * </Dropdown>
19
- * </Dropdown.TriggerContext>
19
+ * </DropdownTriggerContext>
20
20
  */
21
21
  const DropdownTriggerContext = ({ children, }) => {
22
22
  return jsx(PopoverTriggerContext, { children: children });
@@ -3,6 +3,22 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef } from 'react';
4
4
  import { PopoverTrigger } from '../popover/popover-trigger.js';
5
5
 
6
+ /**
7
+ * DropdownTrigger component, used within a Dropdown.TriggerContext to open a Dropdown.
8
+ *
9
+ * @example
10
+ * <Dropdown.TriggerContext>
11
+ * <Dropdown.Trigger>Dropdown</Dropdown.Trigger>
12
+ * <Dropdown>
13
+ * <Dropdown.Heading>Heading</Dropdown.Heading>
14
+ * <Dropdown.List>
15
+ * <Dropdown.Item>
16
+ * <Dropdown.Button>Button</Dropdown.Button>
17
+ * </Dropdown.Item>
18
+ * </Dropdown.List>
19
+ * </Dropdown>
20
+ * </Dropdown.TriggerContext>
21
+ */
6
22
  const DropdownTrigger = forwardRef(function DropdownTrigger({ asChild, ...rest }, ref) {
7
23
  return jsx(PopoverTrigger, { ref: ref, ...rest });
8
24
  });
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Dropdown as Dropdown$1 } from './dropdown.js';
2
+ import { Dropdown } from './dropdown.js';
3
3
  import { DropdownButton } from './dropdown-button.js';
4
4
  import { DropdownHeading } from './dropdown-heading.js';
5
5
  import { DropdownItem } from './dropdown-item.js';
@@ -10,7 +10,7 @@ import { DropdownTriggerContext } from './dropdown-trigger-context.js';
10
10
  /**
11
11
  * Dropdown component, used to display a list of options.
12
12
  *
13
- * @example
13
+ * @example with TriggerContext
14
14
  * <Dropdown.TriggerContext>
15
15
  * <Dropdown.Trigger>Dropdown trigger</Dropdown.Trigger>
16
16
  * <Dropdown placement='bottom-end'>
@@ -22,8 +22,19 @@ import { DropdownTriggerContext } from './dropdown-trigger-context.js';
22
22
  * </Dropdown.List>
23
23
  * </Dropdown>
24
24
  * </Dropdown.TriggerContext>
25
+ *
26
+ * @example without TriggerContext
27
+ * <Button popovertarget="my-dropdown">Trigger</Button>
28
+ * <Dropdown id="my-dropdown">
29
+ * <Dropdown.Heading>Heading</Dropdown.Heading>
30
+ * <Dropdown.List>
31
+ * <Dropdown.Item>
32
+ * <Dropdown.Button>Item</Dropdown.Button>
33
+ * </Dropdown.Item>
34
+ * </Dropdown.List>
35
+ * </Dropdown>
25
36
  */
26
- const Dropdown = Object.assign(Dropdown$1, {
37
+ const DropdownComponent = Object.assign(Dropdown, {
27
38
  TriggerContext: DropdownTriggerContext,
28
39
  Heading: DropdownHeading,
29
40
  List: DropdownList,
@@ -31,11 +42,11 @@ const Dropdown = Object.assign(Dropdown$1, {
31
42
  Button: DropdownButton,
32
43
  Trigger: DropdownTrigger,
33
44
  });
34
- Dropdown.TriggerContext.displayName = 'Dropdown.TriggerContext';
35
- Dropdown.List.displayName = 'Dropdown.List';
36
- Dropdown.Heading.displayName = 'Dropdown.Heading';
37
- Dropdown.Item.displayName = 'Dropdown.Item';
38
- Dropdown.Button.displayName = 'Dropdown.Button';
39
- Dropdown.Trigger.displayName = 'Dropdown.Trigger';
45
+ DropdownComponent.TriggerContext.displayName = 'Dropdown.TriggerContext';
46
+ DropdownComponent.List.displayName = 'Dropdown.List';
47
+ DropdownComponent.Heading.displayName = 'Dropdown.Heading';
48
+ DropdownComponent.Item.displayName = 'Dropdown.Item';
49
+ DropdownComponent.Button.displayName = 'Dropdown.Button';
50
+ DropdownComponent.Trigger.displayName = 'Dropdown.Trigger';
40
51
 
41
- export { Dropdown, DropdownButton, DropdownHeading, DropdownItem, DropdownList, DropdownTrigger, DropdownTriggerContext };
52
+ export { DropdownComponent as Dropdown, DropdownButton, DropdownHeading, DropdownItem, DropdownList, DropdownTrigger, DropdownTriggerContext };
@@ -4,6 +4,14 @@ import { forwardRef, useContext, useEffect } from 'react';
4
4
  import { Heading } from '../heading/heading.js';
5
5
  import { ErrorSummaryContext } from './error-summary.js';
6
6
 
7
+ /**
8
+ * ErrorSummary heading component, used to display a heading for the error summary.
9
+ *
10
+ * @example
11
+ * <ErrorSummary>
12
+ * <ErrorSummaryHeading>Heading</ErrorSummaryHeading>
13
+ * </ErrorSummary>
14
+ */
7
15
  const ErrorSummaryHeading = forwardRef(function ErrorSummaryHeading({ className, id, ...rest }, ref) {
8
16
  const { headingId, setHeadingId } = useContext(ErrorSummaryContext);
9
17
  useEffect(() => {
@@ -8,11 +8,11 @@ import { ListItem } from '../list/list-item.js';
8
8
  * ErrorSummaryItem component, used to display an error link in the ErrorSummary.
9
9
  *
10
10
  * @example
11
- * <ErrorSummary.Item>
12
- * <ErrorSummary.Link href="#">
11
+ * <ErrorSummaryItem>
12
+ * <ErrorSummaryLink href="#">
13
13
  * Link to error
14
- * </ErrorSummary.Link>
15
- * </ErrorSummary.Item>
14
+ * </ErrorSummaryLink>
15
+ * </ErrorSummaryItem>
16
16
  */
17
17
  const ErrorSummaryItem = forwardRef(function ErrorSummaryItem({ ...rest }, ref) {
18
18
  return jsx(ListItem, { ref: ref, ...rest });
@@ -4,7 +4,14 @@ import { forwardRef } from 'react';
4
4
  import { Link } from '../link/link.js';
5
5
 
6
6
  /**
7
- * Link component used in ErrorSummary.
7
+ * ErrorSummary link component, used to link to a specific error. Used within an ErrorSummary.Item.
8
+ *
9
+ * @example
10
+ * <ErrorSummary>
11
+ * <ErrorSummaryItem>
12
+ * <ErrorSummaryLink href='#'>Error 1</ErrorSummaryLink>
13
+ * </ErrorSummaryItem>
14
+ * </ErrorSummary>
8
15
  */
9
16
  const ErrorSummaryLink = forwardRef(function ErrorSummaryLink({ ...rest }, ref) {
10
17
  return jsx(Link, { ref: ref, "data-color": 'neutral', ...rest });
@@ -1,10 +1,25 @@
1
1
  'use client';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef } from 'react';
4
- import { List } from '../list/index.js';
4
+ import { List as ListComponent } from '../list/index.js';
5
5
 
6
+ /**
7
+ * ErrorSummary list component, used to display a list of errors.
8
+ *
9
+ * @example
10
+ * <ErrorSummary>
11
+ * <ErrorSummary.List>
12
+ * <ErrorSummary.Item>
13
+ * <ErrorSummary.Link href='#'>Error 1</ErrorSummary.Link>
14
+ * </ErrorSummary.Item>
15
+ * <ErrorSummary.Item>
16
+ * <ErrorSummary.Link href='#'>Error 2</ErrorSummary.Link>
17
+ * </ErrorSummary.Item>
18
+ * </ErrorSummary.List>
19
+ * </ErrorSummary>
20
+ */
6
21
  const ErrorSummaryList = forwardRef(function ErrorSummaryList({ ...rest }, ref) {
7
- return jsx(List.Unordered, { ...rest, ref: ref });
22
+ return jsx(ListComponent.Unordered, { ...rest, ref: ref });
8
23
  });
9
24
 
10
25
  export { ErrorSummaryList };
@@ -2,7 +2,7 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { Slot } from '@radix-ui/react-slot';
4
4
  import cl from 'clsx/lite';
5
- import { forwardRef, createContext, useId, useState } from 'react';
5
+ import { createContext, forwardRef, useId, useState } from 'react';
6
6
 
7
7
  const ErrorSummaryContext = createContext({
8
8
  headingId: 'heading',
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { ErrorSummary as ErrorSummary$1 } from './error-summary.js';
2
+ import { ErrorSummary } from './error-summary.js';
3
3
  import { ErrorSummaryHeading } from './error-summary-heading.js';
4
4
  import { ErrorSummaryItem } from './error-summary-item.js';
5
5
  import { ErrorSummaryLink } from './error-summary-link.js';
@@ -21,15 +21,15 @@ import { ErrorSummaryList } from './error-summary-list.js';
21
21
  * </ErrorSummary.List>
22
22
  * </ErrorSummary>
23
23
  */
24
- const ErrorSummary = Object.assign(ErrorSummary$1, {
24
+ const ErrorSummaryComponent = Object.assign(ErrorSummary, {
25
25
  Heading: ErrorSummaryHeading,
26
26
  Item: ErrorSummaryItem,
27
27
  List: ErrorSummaryList,
28
28
  Link: ErrorSummaryLink,
29
29
  });
30
- ErrorSummary.Item.displayName = 'ErrorSummary.Item';
31
- ErrorSummary.Heading.displayName = 'ErrorSummary.Heading';
32
- ErrorSummary.List.displayName = 'ErrorSummary.List';
33
- ErrorSummary.Link.displayName = 'ErrorSummary.Link';
30
+ ErrorSummaryComponent.Item.displayName = 'ErrorSummary.Item';
31
+ ErrorSummaryComponent.Heading.displayName = 'ErrorSummary.Heading';
32
+ ErrorSummaryComponent.List.displayName = 'ErrorSummary.List';
33
+ ErrorSummaryComponent.Link.displayName = 'ErrorSummary.Link';
34
34
 
35
- export { ErrorSummary, ErrorSummaryHeading, ErrorSummaryItem, ErrorSummaryLink, ErrorSummaryList };
35
+ export { ErrorSummaryComponent as ErrorSummary, ErrorSummaryHeading, ErrorSummaryItem, ErrorSummaryLink, ErrorSummaryList };
@@ -1,6 +1,9 @@
1
1
  'use client';
2
2
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef, useState, useRef, useEffect } from 'react';
4
+ import { useDebounceCallback } from '../../utilities/hooks/deprecated/use-debounce-callback/use-debounce-callback.js';
5
+ import '../../utilities/roving-focus/roving-focus-item.js';
6
+ import '../../utilities/roving-focus/roving-focus-root.js';
4
7
  import { Paragraph } from '../paragraph/paragraph.js';
5
8
  import { ValidationMessage } from '../validation-message/validation-message.js';
6
9
  import { isInputLike } from './field-observer.js';
@@ -15,11 +18,15 @@ const label = (text, count) => text.replace('%d', Math.abs(count).toString());
15
18
  * <Field.Counter limit={100} under='%d tegn igjen' over='%d tegn for mye' />
16
19
  * </Field>
17
20
  */
18
- const FieldCounter = forwardRef(function FieldCounter({ limit, under = '%d tegn igjen', over = '%d tegn for mye', ...rest }, ref) {
21
+ const FieldCounter = forwardRef(function FieldCounter({ limit, under = '%d tegn igjen', over = '%d tegn for mye', hint = 'Maks %d tegn tillatt.', ...rest }, ref) {
19
22
  const [count, setCount] = useState(0);
23
+ const [liveRegionText, setLiveRegionText] = useState('');
24
+ const fieldInputRef = useRef(null);
20
25
  const counterRef = useRef(null);
21
26
  const hasExceededLimit = count > limit;
22
27
  const remainder = limit - count;
28
+ const debouncedSetLiveRegionText = useDebounceCallback((text) => setLiveRegionText(text), 1200);
29
+ // Listen to native input events (user typing) to update the counter in real time
23
30
  useEffect(() => {
24
31
  const field = counterRef.current?.closest('.ds-field');
25
32
  const input = Array.from(field?.getElementsByTagName('*') || []).find(isInputLike);
@@ -29,10 +36,23 @@ const FieldCounter = forwardRef(function FieldCounter({ limit, under = '%d tegn
29
36
  };
30
37
  if (input)
31
38
  onInput({ target: input }); // Initial setup
39
+ fieldInputRef.current = input;
32
40
  field?.addEventListener('input', onInput);
33
41
  return () => field?.removeEventListener('input', onInput);
34
- }, [setCount]);
35
- return (jsxs(Fragment, { children: [jsx("div", { "data-field": 'description', className: 'ds-sr-only', "aria-live": 'polite', ref: counterRef, children: hasExceededLimit && label(over, remainder) }), hasExceededLimit ? (jsx(ValidationMessage, { ref: ref, ...rest, children: label(over, remainder) })) : (jsx(Paragraph, { ref: ref, ...rest, "data-field": 'validation', children: label(under, remainder) }))] }));
42
+ }, []);
43
+ /* React does not dispatch a native input event when the value prop changes externally.
44
+ Since the parent re-renders this component when value changes, we can sync on render. */
45
+ useEffect(() => {
46
+ if (fieldInputRef.current) {
47
+ const valueLength = fieldInputRef.current.value.length;
48
+ setCount((prev) => (prev === valueLength ? prev : valueLength));
49
+ }
50
+ });
51
+ // Update live region text when count or limit changes
52
+ useEffect(() => {
53
+ debouncedSetLiveRegionText(label(hasExceededLimit ? over : under, remainder));
54
+ }, [count, limit, over, under, hasExceededLimit, remainder]);
55
+ return (jsxs(Fragment, { children: [jsx("div", { className: 'ds-sr-only', "aria-live": 'polite', ref: counterRef, children: liveRegionText }), hasExceededLimit ? (jsx(ValidationMessage, { ref: ref, ...rest, "aria-hidden": 'true', "data-field": null, children: label(over, remainder) })) : (jsx(Paragraph, { ref: ref, ...rest, "aria-hidden": 'true', children: label(under, remainder) })), jsx("div", { className: 'ds-sr-only', "aria-hidden": 'true', "data-field": 'description', children: label(hint, limit) })] }));
36
56
  });
37
57
 
38
58
  export { FieldCounter };
@@ -2,6 +2,12 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef } from 'react';
4
4
 
5
+ /**
6
+ * Field description component, used to provide additional information below the input.
7
+ *
8
+ * @example
9
+ * <FieldDescription>Additional information</FieldDescription>
10
+ */
5
11
  const FieldDescription = forwardRef(function FieldDescription(rest, ref) {
6
12
  return jsx("div", { "data-field": 'description', ref: ref, ...rest });
7
13
  });
@@ -25,7 +25,7 @@ function fieldObserver(fieldElement) {
25
25
  elements.set(el, el.htmlFor);
26
26
  else if (el.hasAttribute('data-field'))
27
27
  elements.set(el, el.id);
28
- else if (isInputLike(el)) {
28
+ else if (isInputLike(el) && !el.hidden) {
29
29
  input = el;
30
30
  describedby = el.getAttribute('aria-describedby') || '';
31
31
  }
@@ -42,7 +42,7 @@ function fieldObserver(fieldElement) {
42
42
  }
43
43
  }
44
44
  // Connect elements
45
- const describedbyIds = [describedby]; // Keep original aria-describedby
45
+ const describedbyIds = describedby ? describedby.split(' ') : []; // Keep original aria-describedby
46
46
  const inputId = input?.id || uuid;
47
47
  // Reset type counters since we reprocess all elements
48
48
  typeCounter.clear();
@@ -60,10 +60,12 @@ function fieldObserver(fieldElement) {
60
60
  }
61
61
  if (!value)
62
62
  setAttr(el, isLabel(el) ? 'for' : 'id', id); // Ensure we have a value
63
- if (descriptionType === 'validation')
64
- describedbyIds.unshift(el.id); // Validations to the front
65
- else if (descriptionType)
66
- describedbyIds.push(el.id); // Other descriptions to the back
63
+ if (!describedbyIds.includes(el.id)) {
64
+ if (descriptionType === 'validation')
65
+ describedbyIds.unshift(el.id); // Validations to the front
66
+ else if (descriptionType)
67
+ describedbyIds.push(el.id); // Other descriptions to the back
68
+ }
67
69
  }
68
70
  setAttr(input, 'id', inputId);
69
71
  setAttr(input, 'aria-describedby', describedbyIds.join(' ').trim());
@@ -3,8 +3,8 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { Slot } from '@radix-ui/react-slot';
4
4
  import cl from 'clsx/lite';
5
5
  import { forwardRef, useRef, useEffect } from 'react';
6
- import { fieldObserver } from './field-observer.js';
7
6
  import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
7
+ import { fieldObserver } from './field-observer.js';
8
8
 
9
9
  /**
10
10
  * Field component, used to wrap a form field.
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Field as Field$1 } from './field.js';
2
+ import { Field } from './field.js';
3
3
  import { FieldAffix, FieldAffixes } from './field-affix.js';
4
4
  import { FieldCounter } from './field-counter.js';
5
5
  import { FieldDescription } from './field-description.js';
@@ -15,15 +15,15 @@ import { FieldDescription } from './field-description.js';
15
15
  * <ValidationMessage>Feilmelding</ValidationMessage>
16
16
  * </Field>
17
17
  */
18
- const Field = Object.assign(Field$1, {
18
+ const FieldComponent = Object.assign(Field, {
19
19
  Description: FieldDescription,
20
20
  Affixes: FieldAffixes,
21
21
  Affix: FieldAffix,
22
22
  Counter: FieldCounter,
23
23
  });
24
- Field.Description.displayName = 'Field.Description';
25
- Field.Affixes.displayName = 'Field.Affixes';
26
- Field.Affix.displayName = 'Field.Affix';
27
- Field.Counter.displayName = 'Field.Counter';
24
+ FieldComponent.Description.displayName = 'Field.Description';
25
+ FieldComponent.Affixes.displayName = 'Field.Affixes';
26
+ FieldComponent.Affix.displayName = 'Field.Affix';
27
+ FieldComponent.Counter.displayName = 'Field.Counter';
28
28
 
29
- export { Field, FieldAffix, FieldAffixes, FieldCounter, FieldDescription };
29
+ export { FieldComponent as Field, FieldAffix, FieldAffixes, FieldCounter, FieldDescription };
@@ -7,9 +7,9 @@ import { Paragraph } from '../paragraph/paragraph.js';
7
7
  * FieldsetDescription component, used to display a description for a fieldset.
8
8
  *
9
9
  * @example
10
- * <Fieldset.Description>
10
+ * <FieldsetDescription>
11
11
  * Gi en kort beskrivelse i begge feltene
12
- * </Fieldset.Description>
12
+ * </FieldsetDescription>
13
13
  */
14
14
  const FieldsetDescription = forwardRef(function FieldsetDescription(rest, ref) {
15
15
  return jsx(Paragraph, { ref: ref, ...rest });
@@ -7,7 +7,7 @@ import { Label } from '../label/label.js';
7
7
  * FieldsetLegend component, used to display a legend for a fieldset.
8
8
  *
9
9
  * @example
10
- * <Fieldset.Legend>Skriv inn dine svar</Fieldset.Legend>
10
+ * <FieldsetLegend>Skriv inn dine svar</FieldsetLegend>
11
11
  */
12
12
  const FieldsetLegend = forwardRef(function FieldsetLegend(rest, ref) {
13
13
  return (jsx(Label, { asChild: true, children: jsx("legend", { ref: ref, ...rest }) }));
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Fieldset as Fieldset$1 } from './fieldset.js';
2
+ import { Fieldset } from './fieldset.js';
3
3
  import { FieldsetDescription } from './fieldset-description.js';
4
4
  import { FieldsetLegend } from './fieldset-legend.js';
5
5
 
@@ -18,11 +18,11 @@ import { FieldsetLegend } from './fieldset-legend.js';
18
18
  * </Field>
19
19
  * </Fieldset>
20
20
  */
21
- const Fieldset = Object.assign(Fieldset$1, {
21
+ const FieldsetComponent = Object.assign(Fieldset, {
22
22
  Legend: FieldsetLegend,
23
23
  Description: FieldsetDescription,
24
24
  });
25
- Fieldset.Legend.displayName = 'Fieldset.Legend';
26
- Fieldset.Description.displayName = 'Fieldset.Description';
25
+ FieldsetComponent.Legend.displayName = 'Fieldset.Legend';
26
+ FieldsetComponent.Description.displayName = 'Fieldset.Description';
27
27
 
28
- export { Fieldset, FieldsetDescription, FieldsetLegend };
28
+ export { FieldsetComponent as Fieldset, FieldsetDescription, FieldsetLegend };