@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,14 +1,14 @@
1
1
  'use client';
2
2
  import { ListItem } from './list-item.js';
3
- import { ListUnordered, ListOrdered } from './lists.js';
3
+ import { ListOrdered, ListUnordered } from './lists.js';
4
4
 
5
- const List = {
5
+ const ListComponent = {
6
6
  Item: ListItem,
7
7
  Ordered: ListOrdered,
8
8
  Unordered: ListUnordered,
9
9
  };
10
- List.Item.displayName = 'List.Item';
11
- List.Ordered.displayName = 'List.Ordered';
12
- List.Unordered.displayName = 'List.Unordered';
10
+ ListComponent.Item.displayName = 'List.Item';
11
+ ListComponent.Ordered.displayName = 'List.Ordered';
12
+ ListComponent.Unordered.displayName = 'List.Unordered';
13
13
 
14
- export { List, ListItem, ListOrdered, ListUnordered };
14
+ export { ListComponent as List, ListItem, ListOrdered, ListUnordered };
@@ -3,6 +3,12 @@ import { jsx } from 'react/jsx-runtime';
3
3
  import { Slot } from '@radix-ui/react-slot';
4
4
  import { forwardRef } from 'react';
5
5
 
6
+ /**
7
+ * Component that provides a list item.
8
+ *
9
+ * @example
10
+ * <List.Item>Item</List.Item>
11
+ */
6
12
  const ListItem = forwardRef(function ListItem({ asChild, ...rest }, ref) {
7
13
  const Component = asChild ? Slot : 'li';
8
14
  return jsx(Component, { ...rest, ref: ref });
@@ -13,10 +13,10 @@ const render = (tagName, { asChild, className, ...rest }, ref) => {
13
13
  * Renders a native `ul` element.
14
14
  *
15
15
  * @example
16
- * <List.Unordered>
17
- * <List.Item>Item 1</List.Item>
18
- * <List.Item>Item 2</List.Item>
19
- * </List.Unordered>
16
+ * <ListUnordered>
17
+ * <ListItem>Item 1</ListItem>
18
+ * <ListItem>Item 2</ListItem>
19
+ * </ListUnordered>
20
20
  */
21
21
  const ListUnordered = forwardRef(function ListUnordered(props, ref) {
22
22
  return render('ul', props, ref);
@@ -26,10 +26,10 @@ const ListUnordered = forwardRef(function ListUnordered(props, ref) {
26
26
  * Renders a native `ol` element.
27
27
  *
28
28
  * @example
29
- * <List.Ordered>
30
- * <List.Item>Item 1</List.Item>
31
- * <List.Item>Item 2</List.Item>
32
- * </List.Ordered>
29
+ * <ListOrdered>
30
+ * <ListItem>Item 1</ListItem>
31
+ * <ListItem>Item 2</ListItem>
32
+ * </ListOrdered>
33
33
  */
34
34
  const ListOrdered = forwardRef(function ListOrdered(props, ref) {
35
35
  return render('ol', props, ref);
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Pagination as Pagination$1 } from './pagination.js';
2
+ import { Pagination } from './pagination.js';
3
3
  import { PaginationButton } from './pagination-button.js';
4
4
  import { PaginationItem } from './pagination-item.js';
5
5
  import { PaginationList } from './pagination-list.js';
@@ -22,13 +22,13 @@ import { PaginationList } from './pagination-list.js';
22
22
  * </Pagination.List>
23
23
  * </Pagination>
24
24
  */
25
- const Pagination = Object.assign(Pagination$1, {
25
+ const PaginationComponent = Object.assign(Pagination, {
26
26
  List: PaginationList,
27
27
  Item: PaginationItem,
28
28
  Button: PaginationButton,
29
29
  });
30
- Pagination.List.displayName = 'Pagination.List';
31
- Pagination.Item.displayName = 'Pagination.Item';
32
- Pagination.Button.displayName = 'Pagination.Button';
30
+ PaginationComponent.List.displayName = 'Pagination.List';
31
+ PaginationComponent.Item.displayName = 'Pagination.Item';
32
+ PaginationComponent.Button.displayName = 'Pagination.Button';
33
33
 
34
- export { Pagination, PaginationButton, PaginationItem, PaginationList };
34
+ export { PaginationComponent as Pagination, PaginationButton, PaginationItem, PaginationList };
@@ -7,9 +7,9 @@ import { Button } from '../button/button.js';
7
7
  * PaginationButton component, use within a Pagination.Item.
8
8
  *
9
9
  * @example
10
- * <Pagination.Item>
11
- * <Pagination.Button aria-label='Forrige side'>Forrige</Pagination.Button>
12
- * </Pagination.Item>
10
+ * <PaginationItem>
11
+ * <PaginationButton aria-label='Forrige side'>Forrige</PaginationButton>
12
+ * </PaginationItem>
13
13
  */
14
14
  const PaginationButton = forwardRef(function PaginationButton(rest, ref) {
15
15
  return jsx(Button, { ref: ref, ...rest });
@@ -7,11 +7,11 @@ import { forwardRef } from 'react';
7
7
  * PaginationItem component, use within a Pagination.List.
8
8
  *
9
9
  * @example
10
- * <Pagination.List>
11
- * <Pagination.Item>
12
- * <Pagination.Button aria-label='Forrige side'>Forrige</Pagination.Button>
13
- * </Pagination.Item>
14
- * </Pagination.List>
10
+ * <PaginationList>
11
+ * <PaginationItem>
12
+ * <PaginationButton aria-label='Forrige side'>Forrige</PaginationButton>
13
+ * </PaginationItem>
14
+ * </PaginationList>
15
15
  */
16
16
  const PaginationItem = forwardRef(function PaginationItem({ asChild, className, ...rest }, ref) {
17
17
  const Component = asChild ? Slot : 'li';
@@ -8,11 +8,11 @@ import { forwardRef } from 'react';
8
8
  *
9
9
  * @example
10
10
  * <Pagination>
11
- * <Pagination.List>
12
- * <Pagination.Item>
13
- * <Pagination.Button aria-label='Forrige side'>Forrige</Pagination.Button>
14
- * </Pagination.Item>
15
- * </Pagination.List>
11
+ * <PaginationList>
12
+ * <PaginationItem>
13
+ * <PaginationButton aria-label='Forrige side'>Forrige</PaginationButton>
14
+ * </PaginationItem>
15
+ * </PaginationList>
16
16
  * </Pagination>
17
17
  */
18
18
  const PaginationList = forwardRef(function PaginationList({ asChild, ...rest }, ref) {
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Popover as Popover$1 } from './popover.js';
2
+ import { Popover } from './popover.js';
3
3
  import { PopoverTrigger } from './popover-trigger.js';
4
4
  import { PopoverTriggerContext } from './popover-trigger-context.js';
5
5
 
@@ -14,11 +14,11 @@ import { PopoverTriggerContext } from './popover-trigger-context.js';
14
14
  * </Popover>
15
15
  * </Popover.TriggerContext>
16
16
  */
17
- const Popover = Object.assign(Popover$1, {
17
+ const PopoverComponent = Object.assign(Popover, {
18
18
  TriggerContext: PopoverTriggerContext,
19
19
  Trigger: PopoverTrigger,
20
20
  });
21
- Popover.TriggerContext.displayName = 'Popover.TriggerContext';
22
- Popover.Trigger.displayName = 'Popover.Trigger';
21
+ PopoverComponent.TriggerContext.displayName = 'Popover.TriggerContext';
22
+ PopoverComponent.Trigger.displayName = 'Popover.Trigger';
23
23
 
24
- export { Popover, PopoverTrigger, PopoverTriggerContext };
24
+ export { PopoverComponent as Popover, PopoverTrigger, PopoverTriggerContext };
@@ -6,12 +6,12 @@ import { createContext, useId, useState } from 'react';
6
6
  * PopoverTriggerContext component, use to wrap a Popover.Trigger and Popover.
7
7
  *
8
8
  * @example
9
- * <Popover.TriggerContext>
10
- * <Popover.Trigger>Open Popover</Popover.Trigger>
9
+ * <PopoverTriggerContext>
10
+ * <PopoverTrigger>Open Popover</PopoverTrigger>
11
11
  * <Popover>
12
12
  * Content
13
13
  * </Popover>
14
- * </Popover.TriggerContext>
14
+ * </PopoverTriggerContext>
15
15
  */
16
16
  const PopoverTriggerContext = ({ children, }) => {
17
17
  const randomPopoverId = useId();
@@ -9,22 +9,22 @@ import { Context } from './popover-trigger-context.js';
9
9
  * PopoverTrigger component, used to trigger a popover.
10
10
  *
11
11
  * @example
12
- * <Popover.TriggerContext>
13
- * <Popover.Trigger>Open Popover</Popover.Trigger>
12
+ * <PopoverTriggerContext>
13
+ * <PopoverTrigger>Open Popover</PopoverTrigger>
14
14
  * <Popover>
15
15
  * Content
16
16
  * </Popover>
17
- * </Popover.TriggerContext>
17
+ * </PopoverTriggerContext>
18
18
  *
19
19
  * @example inline
20
- * <Popover.TriggerContext>
20
+ * <PopoverTriggerContext>
21
21
  * <Paragraph>
22
- * We can use it <Popover.Trigger inline={true}>inline</Popover.Trigger>.
22
+ * We can use it <PopoverTrigger inline={true}>inline</PopoverTrigger>.
23
23
  * </Paragraph>
24
24
  * <Popover>
25
25
  * Content
26
26
  * </Popover>
27
- * </Popover.TriggerContext>
27
+ * </PopoverTriggerContext>
28
28
  */
29
29
  const PopoverTrigger = forwardRef(function PopoverTrigger({ id, inline, asChild, ...rest }, ref) {
30
30
  const { popoverId } = useContext(Context);
@@ -4,8 +4,8 @@ import { autoUpdate, computePosition, offset, flip, shift } from '@floating-ui/d
4
4
  import { Slot } from '@radix-ui/react-slot';
5
5
  import cl from 'clsx/lite';
6
6
  import { forwardRef, useRef, useContext, useState, useEffect } from 'react';
7
- import { Context } from './popover-trigger-context.js';
8
7
  import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
8
+ import { Context } from './popover-trigger-context.js';
9
9
 
10
10
  /**
11
11
  * Popover component, used to display content in a popover over an element.
@@ -40,13 +40,15 @@ const Popover = forwardRef(function Popover({ id, className, onClose, onOpen, op
40
40
  const isOutside = !isTrigger && !popover?.contains(el);
41
41
  if (isTrigger) {
42
42
  event.preventDefault(); // Prevent native Popover API
43
- setInternalOpen((open) => !open);
44
- onOpen?.();
45
43
  }
46
- if (isOutside) {
44
+ if (controlledOpen && (isTrigger || isOutside)) {
47
45
  setInternalOpen(false);
48
46
  onClose?.();
49
47
  }
48
+ else if (!controlledOpen && isTrigger) {
49
+ setInternalOpen(true);
50
+ onOpen?.();
51
+ }
50
52
  };
51
53
  const handleKeydown = (event) => {
52
54
  if (event.key !== 'Escape' || !controlledOpen)
@@ -84,7 +86,7 @@ const Popover = forwardRef(function Popover({ id, className, onClose, onOpen, op
84
86
  arrowPseudoElement,
85
87
  ],
86
88
  }).then(({ x, y }) => {
87
- popover.style.translate = `${x}px ${y}px`;
89
+ popover.style.translate = `${Math.round(x)}px ${Math.round(y)}px`;
88
90
  });
89
91
  });
90
92
  }, [controlledOpen, placement, id, autoPlacement]);
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef } from 'react';
4
- import { Field } from '../field/index.js';
4
+ import { Field as FieldComponent } from '../field/index.js';
5
5
  import { Input } from '../input/input.js';
6
6
  import { Label } from '../label/label.js';
7
7
  import { ValidationMessage } from '../validation-message/validation-message.js';
@@ -13,7 +13,7 @@ import { ValidationMessage } from '../validation-message/validation-message.js';
13
13
  * <Radio label="I agree" value="agree" />
14
14
  */
15
15
  const Radio = forwardRef(function Radio({ 'data-size': size, className, style, children, label, description, error, ...rest }, ref) {
16
- return (jsxs(Field, { "data-size": size, className: className, style: style, children: [jsx(Input, { type: 'radio', ref: ref, ...rest }), !!label && jsx(Label, { weight: 'regular', children: label }), !!description && jsx("div", { "data-field": 'description', children: description }), !!error && jsx(ValidationMessage, { children: error })] }));
16
+ return (jsxs(FieldComponent, { "data-size": size, className: className, style: style, children: [jsx(Input, { type: 'radio', ref: ref, ...rest }), !!label && jsx(Label, { weight: 'regular', children: label }), !!description && jsx("div", { "data-field": 'description', children: description }), !!error && jsx(ValidationMessage, { children: error })] }));
17
17
  });
18
18
 
19
19
  export { Radio };
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Search as Search$1 } from './search.js';
2
+ import { Search } from './search.js';
3
3
  import { SearchButton } from './search-button.js';
4
4
  import { SearchClear } from './search-clear.js';
5
5
  import { SearchInput } from './search-input.js';
@@ -20,13 +20,13 @@ import { SearchInput } from './search-input.js';
20
20
  * <Search.Clear />
21
21
  * </Search>
22
22
  */
23
- const Search = Object.assign(Search$1, {
23
+ const SearchComponent = Object.assign(Search, {
24
24
  Clear: SearchClear,
25
25
  Button: SearchButton,
26
26
  Input: SearchInput,
27
27
  });
28
- Search.Clear.displayName = 'Search.Clear';
29
- Search.Button.displayName = 'Search.Button';
30
- Search.Input.displayName = 'Search.Input';
28
+ SearchComponent.Clear.displayName = 'Search.Clear';
29
+ SearchComponent.Button.displayName = 'Search.Button';
30
+ SearchComponent.Input.displayName = 'Search.Input';
31
31
 
32
- export { Search, SearchButton, SearchClear, SearchInput };
32
+ export { SearchComponent as Search, SearchButton, SearchClear, SearchInput };
@@ -8,8 +8,8 @@ import { Button } from '../button/button.js';
8
8
  *
9
9
  * @example
10
10
  * <Search>
11
- * <Search.Input aria-label='Søk' />
12
- * <Search.Button>Søk</Search.Button>
11
+ * <SearchInput aria-label='Søk' />
12
+ * <SearchButton>Søk</SearchButton>
13
13
  * </Search>
14
14
  */
15
15
  const SearchButton = forwardRef(function SearchButton({ children = 'Søk', ...rest }, ref) {
@@ -9,8 +9,8 @@ import { setReactInputValue } from '../Combobox/utilities.js';
9
9
  *
10
10
  * @example
11
11
  * <Search>
12
- * <Search.Input aria-label='Søk' />
13
- * <Search.Clear />
12
+ * <SearchInput aria-label='Søk' />
13
+ * <SearchClear />
14
14
  * </Search>
15
15
  */
16
16
  const SearchClear = forwardRef(function SearchClear({ 'aria-label': label = 'Tøm', onClick, ...rest }, ref) {
@@ -8,7 +8,7 @@ import { Input } from '../input/input.js';
8
8
  *
9
9
  * @example
10
10
  * <Search>
11
- * <Search.Input aria-label='Søk' />
11
+ * <SearchInput aria-label='Søk' />
12
12
  * </Search>
13
13
  */
14
14
  const SearchInput = forwardRef(function SearchInput({ ...rest }, ref) {
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { Select as Select$1 } from './select.js';
2
+ import { Select } from './select.js';
3
3
  import { SelectOptgroup } from './select-optgroup.js';
4
4
  import { SelectOption } from './select-option.js';
5
5
 
@@ -12,11 +12,11 @@ import { SelectOption } from './select-option.js';
12
12
  * <Select.Option value='2'>Option 2</Select.Option>
13
13
  * </Select>
14
14
  */
15
- const Select = Object.assign(Select$1, {
15
+ const SelectComponent = Object.assign(Select, {
16
16
  Option: SelectOption,
17
17
  Optgroup: SelectOptgroup,
18
18
  });
19
- Select.Option.displayName = 'Select.Option';
20
- Select.Optgroup.displayName = 'Select.Optgroup';
19
+ SelectComponent.Option.displayName = 'Select.Option';
20
+ SelectComponent.Optgroup.displayName = 'Select.Optgroup';
21
21
 
22
- export { Select, SelectOptgroup, SelectOption };
22
+ export { SelectComponent as Select, SelectOptgroup, SelectOption };
@@ -8,10 +8,10 @@ import { forwardRef } from 'react';
8
8
  *
9
9
  * @example
10
10
  * <Select>
11
- * <Select.Optgroup label='Group 1'>
12
- * <Select.Option value='1'>Option 1</Select.Option>
13
- * <Select.Option value='2'>Option 2</Select.Option>
14
- * </Select.Optgroup>
11
+ * <SelectOptgroup label='Group 1'>
12
+ * <SelectOption value='1'>Option 1</SelectOption>
13
+ * <SelectOption value='2'>Option 2</SelectOption>
14
+ * </SelectOptgroup>
15
15
  * </Select>
16
16
  */
17
17
  const SelectOptgroup = forwardRef(function SelectOptgroup({ asChild, ...rest }, ref) {
@@ -8,8 +8,8 @@ import { forwardRef } from 'react';
8
8
  *
9
9
  * @example
10
10
  * <Select>
11
- * <Select.Option value='1'>Option 1</Select.Option>
12
- * <Select.Option value='2'>Option 2</Select.Option>
11
+ * <SelectOption value='1'>Option 1</SelectOption>
12
+ * <SelectOption value='2'>Option 2</SelectOption>
13
13
  * </Select>
14
14
  */
15
15
  const SelectOption = forwardRef(function SelectOption({ asChild, ...rest }, ref) {
@@ -3,8 +3,10 @@ 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 } from 'react';
6
- import { useSynchronizedAnimation } from '../../utilities/hooks/use-synchronized-animation/use-synchronized-animation.js';
7
6
  import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
7
+ import { useSynchronizedAnimation } from '../../utilities/hooks/use-synchronized-animation/use-synchronized-animation.js';
8
+ import '../../utilities/roving-focus/roving-focus-item.js';
9
+ import '../../utilities/roving-focus/roving-focus-root.js';
8
10
 
9
11
  /**
10
12
  * Skeleton is used to represent a draft of page while the content loads.
@@ -2,8 +2,10 @@
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import cl from 'clsx/lite';
4
4
  import { forwardRef } from 'react';
5
- import { useSynchronizedAnimation } from '../../utilities/hooks/use-synchronized-animation/use-synchronized-animation.js';
6
5
  import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
6
+ import { useSynchronizedAnimation } from '../../utilities/hooks/use-synchronized-animation/use-synchronized-animation.js';
7
+ import '../../utilities/roving-focus/roving-focus-item.js';
8
+ import '../../utilities/roving-focus/roving-focus-root.js';
7
9
 
8
10
  /**
9
11
  * Spinner component used for indicating busy or indeterminate loading.
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
  import { Suggestion } from './suggestion.js';
3
- import { SuggestionChips } from './suggestion-chips.js';
4
3
  import { SuggestionClear } from './suggestion-clear.js';
5
4
  import { SuggestionEmpty } from './suggestion-empty.js';
6
5
  import { SuggestionInput } from './suggestion-input.js';
@@ -22,7 +21,6 @@ import { SuggestionOption } from './suggestion-option.js';
22
21
  * </Suggestion>
23
22
  */
24
23
  const EXPERIMENTAL_Suggestion = Object.assign(Suggestion, {
25
- Chips: SuggestionChips,
26
24
  List: SuggestionList,
27
25
  Input: SuggestionInput,
28
26
  Empty: SuggestionEmpty,
@@ -30,11 +28,10 @@ const EXPERIMENTAL_Suggestion = Object.assign(Suggestion, {
30
28
  Clear: SuggestionClear,
31
29
  });
32
30
  EXPERIMENTAL_Suggestion.displayName = 'EXPERIMENTAL_Suggestion';
33
- EXPERIMENTAL_Suggestion.Chips.displayName = 'EXPERIMENTAL_Suggestion.Chips';
34
31
  EXPERIMENTAL_Suggestion.List.displayName = 'EXPERIMENTAL_Suggestion.List';
35
32
  EXPERIMENTAL_Suggestion.Input.displayName = 'EXPERIMENTAL_Suggestion.Input';
36
33
  EXPERIMENTAL_Suggestion.Empty.displayName = 'EXPERIMENTAL_Suggestion.Empty';
37
34
  EXPERIMENTAL_Suggestion.Option.displayName = 'EXPERIMENTAL_Suggestion.Option';
38
35
  EXPERIMENTAL_Suggestion.Clear.displayName = 'EXPERIMENTAL_Suggestion.Clear';
39
36
 
40
- export { EXPERIMENTAL_Suggestion, SuggestionChips as EXPERIMENTAL_SuggestionChips, SuggestionClear as EXPERIMENTAL_SuggestionClear, SuggestionEmpty as EXPERIMENTAL_SuggestionEmpty, SuggestionInput as EXPERIMENTAL_SuggestionInput, SuggestionList as EXPERIMENTAL_SuggestionList, SuggestionOption as EXPERIMENTAL_SuggestionOption };
37
+ export { EXPERIMENTAL_Suggestion, SuggestionClear as EXPERIMENTAL_SuggestionClear, SuggestionEmpty as EXPERIMENTAL_SuggestionEmpty, SuggestionInput as EXPERIMENTAL_SuggestionInput, SuggestionList as EXPERIMENTAL_SuggestionList, SuggestionOption as EXPERIMENTAL_SuggestionOption };
@@ -15,7 +15,7 @@ import { Button } from '../button/button.js';
15
15
  * <Suggestion.List />
16
16
  * </Suggestion>
17
17
  */
18
- const SuggestionClear = forwardRef(function SuggestionClear({ 'aria-label': label = 'Tøm', onClick, ...rest }, ref) {
18
+ const SuggestionClear = forwardRef(function SuggestionClear({ 'aria-label': label = 'Tøm', ...rest }, ref) {
19
19
  return (jsx(Button, { "aria-label": label, asChild: true, icon: true, hidden: true, ref: ref, variant: 'tertiary', ...rest, children: jsx("del", {}) }));
20
20
  });
21
21
 
@@ -2,6 +2,7 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef, useContext, useEffect } from 'react';
4
4
  import '@u-elements/u-datalist';
5
+ import { autoUpdate, computePosition, flip, shift } from '@floating-ui/dom';
5
6
  import { SuggestionContext } from './suggestion.js';
6
7
 
7
8
  /**
@@ -15,10 +16,47 @@ import { SuggestionContext } from './suggestion.js';
15
16
  * <Suggestion.List />
16
17
  * </Suggestion>
17
18
  */
18
- const SuggestionList = forwardRef(function SuggestionList({ singular = '%d forslag', plural = '%d forslag', className, id, ...rest }, ref) {
19
- const { handleFilter } = useContext(SuggestionContext);
19
+ const SuggestionList = forwardRef(function SuggestionList({ singular = '%d forslag', plural = '%d forslag', className, id, autoPlacement = true, ...rest }, ref) {
20
+ const { handleFilter, uComboboxRef } = useContext(SuggestionContext);
20
21
  useEffect(handleFilter); // Must run on every render
21
- return (jsx("u-datalist", { "data-nofilter": true, "data-sr-singular": singular, "data-sr-plural": plural, class: className, ref: ref, ...rest }));
22
+ // Position with floating-ui
23
+ useEffect(() => {
24
+ const trigger = uComboboxRef?.current?.control;
25
+ const list = uComboboxRef?.current?.list;
26
+ if (list && trigger) {
27
+ return autoUpdate(trigger, list, () => {
28
+ computePosition(trigger, list, {
29
+ placement: 'bottom',
30
+ strategy: 'fixed',
31
+ middleware: [
32
+ ...(autoPlacement
33
+ ? [
34
+ flip({
35
+ fallbackAxisSideDirection: 'start',
36
+ fallbackPlacements: ['top'],
37
+ }),
38
+ shift(),
39
+ ]
40
+ : []),
41
+ undefined,
42
+ triggerWidth,
43
+ ],
44
+ }).then(({ x, y, placement }) => {
45
+ const varOperator = placement.startsWith('top') ? '-' : '+';
46
+ list.style.translate = `${Math.round(x)}px calc(${Math.round(y)}px ${varOperator} var(--dsc-suggestion-list-gap))`;
47
+ });
48
+ });
49
+ }
50
+ }, []);
51
+ return (jsx("u-datalist", { "data-nofilter": true, "data-sr-singular": singular, "data-sr-plural": plural, class: className, ref: ref, popover: 'manual', ...rest }));
22
52
  });
53
+ const triggerWidth = {
54
+ name: 'TriggerWidth',
55
+ fn(data) {
56
+ const { elements, rects } = data;
57
+ elements.floating.style.width = `${rects.reference.width}px`;
58
+ return data;
59
+ },
60
+ };
23
61
 
24
62
  export { SuggestionList };
@@ -2,6 +2,18 @@
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { forwardRef } from 'react';
4
4
 
5
+ /**
6
+ * A component for rendering individual options in the Suggestion list.
7
+ *
8
+ * @example
9
+ * <Suggestion>
10
+ * <Suggestion.Input />
11
+ * <Suggestion.List>
12
+ * <Suggestion.Option value='Option 1'>Option 1</Suggestion.Option>
13
+ * <Suggestion.Option value='Option 2'>Option 2</Suggestion.Option>
14
+ * </Suggestion.List>
15
+ * </Suggestion>
16
+ */
5
17
  const SuggestionOption = forwardRef(function SuggestionOption({ className, ...rest }, ref) {
6
18
  return (jsx("u-option", { class: className, ref: ref, ...rest }));
7
19
  });
@@ -1,45 +1,44 @@
1
1
  'use client';
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
- import { forwardRef, createContext, useRef, useId, useState, useEffect, useCallback } from 'react';
3
+ import { forwardRef, useRef, useId, useState, useEffect, useCallback, createContext } from 'react';
4
4
  import '@u-elements/u-combobox';
5
5
  import cl from 'clsx/lite';
6
6
  import { useMergeRefs } from '../../utilities/hooks/use-merge-refs/use-merge-refs.js';
7
+ import { Chip as ChipComponent } from '../chip/index.js';
7
8
 
8
- const SuggestionContext = createContext({
9
- handleFilter: () => undefined,
10
- });
11
9
  const text = (el) => el.textContent?.trim() || '';
12
- const sanitizeItems = (values = []) => (typeof values === 'string'
10
+ const sanitizeItems = (values = []) => typeof values === 'string'
13
11
  ? [{ label: values, value: values }]
14
- : values.map((value) => typeof value === 'string'
15
- ? { label: value, value }
16
- : {
17
- label: value.label || value.value || '',
18
- value: value.value || '',
19
- })).filter((x) => !!x.label);
12
+ : !Array.isArray(values)
13
+ ? [values]
14
+ : values.map((value) => typeof value === 'string' ? { label: value, value } : value);
20
15
  const nextItems = (data, prev, multiple) => {
21
16
  const item = { label: text(data), value: data.value };
22
17
  if (!multiple)
23
- return data.isConnected ? [] : [item];
18
+ return data.isConnected ? undefined : item;
24
19
  return data.isConnected
25
20
  ? sanitizeItems(prev).filter(({ value }) => value !== item.value)
26
21
  : [...sanitizeItems(prev), item];
27
22
  };
28
23
  const defaultFilter = ({ label, input }) => label.toLowerCase().includes(input.value.trim().toLowerCase());
29
- const Suggestion = forwardRef(function Suggestion({ children, className, creatable = false, defaultValue, filter = true, multiple = false, name, onValueChange, value, ...rest }, ref) {
24
+ const Suggestion = forwardRef(function Suggestion({ children, className, creatable = false, defaultSelected, filter = true, multiple = false, name, onBeforeMatch, onSelectedChange, renderSelected = ({ label }) => label, selected, ...rest }, ref) {
30
25
  const uComboboxRef = useRef(null);
31
- const generatedSelectId = useId();
32
- const selectId = rest.id ? `${rest.id}-select` : generatedSelectId;
33
- const isContolled = value !== undefined;
26
+ const genId = useId();
27
+ const selectId = rest.id ? `${rest.id}-select` : genId;
28
+ const isControlled = selected !== undefined;
34
29
  const mergedRefs = useMergeRefs([ref, uComboboxRef]);
35
30
  const [isEmpty, setIsEmpty] = useState(false);
36
- const [selectedItems, setSelectedItems] = useState(sanitizeItems(defaultValue || value));
37
- // Update if controlled values
38
- const prevControlled = useRef(value);
39
- if (value !== prevControlled.current) {
40
- prevControlled.current = value;
41
- setSelectedItems(sanitizeItems(prevControlled.current));
42
- }
31
+ const [defaultItems, setDefaultItems] = useState(sanitizeItems(defaultSelected));
32
+ const selectedItems = selected ? sanitizeItems(selected) : defaultItems;
33
+ const onSelectedChangeRef = useRef(onSelectedChange);
34
+ const selectedItemsRef = useRef(selectedItems);
35
+ // Keep the ref updated with the latest callback
36
+ useEffect(() => {
37
+ onSelectedChangeRef.current = onSelectedChange;
38
+ }, [onSelectedChange]);
39
+ useEffect(() => {
40
+ selectedItemsRef.current = selectedItems;
41
+ }, [selectedItems]);
43
42
  /**
44
43
  * Listerners and handling of adding/removing
45
44
  */
@@ -49,14 +48,21 @@ const Suggestion = forwardRef(function Suggestion({ children, className, creatab
49
48
  event.preventDefault();
50
49
  const multiple = combobox?.multiple;
51
50
  const data = event.detail;
52
- if (isContolled)
53
- onValueChange?.(nextItems(data, prevControlled.current, multiple));
54
- else
55
- setSelectedItems((prevItems) => nextItems(data, prevItems, multiple));
51
+ const nextItem = nextItems(data, selectedItemsRef.current, multiple);
52
+ onSelectedChangeRef.current?.(nextItem || null);
53
+ if (!isControlled)
54
+ setDefaultItems(sanitizeItems(nextItem));
56
55
  };
57
- combobox?.addEventListener('beforechange', beforeChange);
58
- return () => combobox?.removeEventListener('beforechange', beforeChange);
59
- }, [isContolled, setSelectedItems]);
56
+ combobox?.addEventListener('comboboxbeforeselect', beforeChange);
57
+ return () => combobox?.removeEventListener('comboboxbeforeselect', beforeChange);
58
+ }, [isControlled]);
59
+ // Before match event listener
60
+ useEffect(() => {
61
+ const combobox = uComboboxRef.current;
62
+ const beforeMatch = (e) => onBeforeMatch?.(e);
63
+ combobox?.addEventListener('comboboxbeforematch', beforeMatch);
64
+ return () => combobox?.removeEventListener('comboboxbeforematch', beforeMatch);
65
+ }, [onBeforeMatch]);
60
66
  const handleFilter = useCallback(() => {
61
67
  const { control: input, options = [] } = uComboboxRef?.current || {};
62
68
  const filterFn = filter === true ? defaultFilter : filter;
@@ -78,7 +84,10 @@ const Suggestion = forwardRef(function Suggestion({ children, className, creatab
78
84
  }
79
85
  setIsEmpty(index === disabled);
80
86
  }, [filter]);
81
- return (jsx(SuggestionContext.Provider, { value: { isEmpty, selectedItems, handleFilter }, children: jsxs("u-combobox", { "data-multiple": multiple || undefined, "data-creatable": creatable || undefined, class: cl('ds-suggestion', className), ref: mergedRefs, ...rest, children: [children, !!name && (jsx("select", { name: name, multiple: true, hidden: true, id: selectId }))] }) }));
87
+ return (jsx(SuggestionContext.Provider, { value: { isEmpty, handleFilter, uComboboxRef }, children: jsxs("u-combobox", { "data-multiple": multiple || undefined, "data-creatable": creatable || undefined, class: cl('ds-suggestion', className), ref: mergedRefs, ...rest, children: [selectedItems.map((item) => (jsx(ChipComponent.Removable, { value: item.value, asChild: true, children: jsx("data", { children: renderSelected(item) }) }, item.value))), children, !!name && (jsx("select", { name: name, multiple: true, hidden: true, id: selectId }))] }) }));
88
+ });
89
+ const SuggestionContext = createContext({
90
+ handleFilter: () => undefined,
82
91
  });
83
92
 
84
93
  export { Suggestion, SuggestionContext };