@navikt/ds-react 7.35.3 → 7.37.0

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 (622) hide show
  1. package/cjs/accordion/AccordionContent.js +1 -1
  2. package/cjs/accordion/AccordionContent.js.map +1 -1
  3. package/cjs/accordion/AccordionHeader.js +1 -1
  4. package/cjs/accordion/AccordionHeader.js.map +1 -1
  5. package/cjs/alert/base-alert/content/BaseAlertContent.js +1 -1
  6. package/cjs/alert/base-alert/content/BaseAlertContent.js.map +1 -1
  7. package/cjs/alert/base-alert/root/BaseAlertRoot.context.d.ts +3 -2
  8. package/cjs/alert/base-alert/root/BaseAlertRoot.context.js +2 -3
  9. package/cjs/alert/base-alert/root/BaseAlertRoot.context.js.map +1 -1
  10. package/cjs/chips/Removable.js +1 -1
  11. package/cjs/chips/Removable.js.map +1 -1
  12. package/cjs/chips/Toggle.js +1 -1
  13. package/cjs/chips/Toggle.js.map +1 -1
  14. package/cjs/collapsible/Collapsible.context.d.ts +3 -2
  15. package/cjs/collapsible/Collapsible.context.js +3 -3
  16. package/cjs/collapsible/Collapsible.context.js.map +1 -1
  17. package/cjs/copybutton/CopyButton.js +5 -5
  18. package/cjs/copybutton/CopyButton.js.map +1 -1
  19. package/cjs/date/Date.Dialog.js +1 -1
  20. package/cjs/date/Date.Dialog.js.map +1 -1
  21. package/cjs/date/Date.Input.d.ts +3 -2
  22. package/cjs/date/Date.Input.js +4 -3
  23. package/cjs/date/Date.Input.js.map +1 -1
  24. package/cjs/date/Date.locale.d.ts +3 -2
  25. package/cjs/date/Date.locale.js +4 -2
  26. package/cjs/date/Date.locale.js.map +1 -1
  27. package/cjs/date/datepicker/parts/DatePicker.DayButton.d.ts +1 -1
  28. package/cjs/date/datepicker/parts/DatePicker.DayButton.js +1 -1
  29. package/cjs/date/datepicker/parts/DatePicker.DayButton.js.map +1 -1
  30. package/cjs/date/datepicker/parts/DatePicker.RDP.js +12 -2
  31. package/cjs/date/datepicker/parts/DatePicker.RDP.js.map +1 -1
  32. package/cjs/date/monthpicker/MonthPicker.context.d.ts +1 -1
  33. package/cjs/date/monthpicker/MonthPicker.context.js +2 -2
  34. package/cjs/date/monthpicker/MonthPicker.context.js.map +1 -1
  35. package/cjs/date/monthpicker/MonthPicker.js +1 -2
  36. package/cjs/date/monthpicker/MonthPicker.js.map +1 -1
  37. package/cjs/dialog/backdrop/DialogBackdropInternal.d.ts +5 -0
  38. package/cjs/dialog/backdrop/DialogBackdropInternal.js +59 -0
  39. package/cjs/dialog/backdrop/DialogBackdropInternal.js.map +1 -0
  40. package/cjs/dialog/body/DialogBody.d.ts +18 -0
  41. package/cjs/{link/stories/RandomIcon.js → dialog/body/DialogBody.js} +33 -13
  42. package/cjs/dialog/body/DialogBody.js.map +1 -0
  43. package/cjs/dialog/close-trigger/DialogCloseTrigger.d.ts +20 -0
  44. package/cjs/dialog/close-trigger/DialogCloseTrigger.js +76 -0
  45. package/cjs/dialog/close-trigger/DialogCloseTrigger.js.map +1 -0
  46. package/cjs/dialog/description/DialogDescription.d.ts +19 -0
  47. package/cjs/dialog/description/DialogDescription.js +73 -0
  48. package/cjs/dialog/description/DialogDescription.js.map +1 -0
  49. package/cjs/dialog/footer/DialogFooter.d.ts +20 -0
  50. package/cjs/dialog/footer/DialogFooter.js +71 -0
  51. package/cjs/dialog/footer/DialogFooter.js.map +1 -0
  52. package/cjs/dialog/header/DialogHeader.d.ts +25 -0
  53. package/cjs/dialog/header/DialogHeader.js +77 -0
  54. package/cjs/dialog/header/DialogHeader.js.map +1 -0
  55. package/cjs/dialog/index.d.ts +18 -0
  56. package/cjs/dialog/index.js +23 -0
  57. package/cjs/dialog/index.js.map +1 -0
  58. package/cjs/dialog/popup/DialogPopup.d.ts +22 -0
  59. package/cjs/dialog/popup/DialogPopup.js +75 -0
  60. package/cjs/dialog/popup/DialogPopup.js.map +1 -0
  61. package/cjs/dialog/popup/DialogPopupInternal.d.ts +60 -0
  62. package/cjs/dialog/popup/DialogPopupInternal.js +166 -0
  63. package/cjs/dialog/popup/DialogPopupInternal.js.map +1 -0
  64. package/cjs/dialog/root/DialogRoot.context.d.ts +84 -0
  65. package/cjs/dialog/root/DialogRoot.context.js +11 -0
  66. package/cjs/dialog/root/DialogRoot.context.js.map +1 -0
  67. package/cjs/dialog/root/DialogRoot.d.ts +179 -0
  68. package/cjs/dialog/root/DialogRoot.js +133 -0
  69. package/cjs/dialog/root/DialogRoot.js.map +1 -0
  70. package/cjs/dialog/title/DialogTitle.d.ts +18 -0
  71. package/cjs/dialog/title/DialogTitle.js +80 -0
  72. package/cjs/dialog/title/DialogTitle.js.map +1 -0
  73. package/cjs/dialog/trigger/DialogTrigger.d.ts +20 -0
  74. package/cjs/dialog/trigger/DialogTrigger.js +71 -0
  75. package/cjs/dialog/trigger/DialogTrigger.js.map +1 -0
  76. package/cjs/expansion-card/ExpansionCardContent.js +1 -1
  77. package/cjs/expansion-card/ExpansionCardContent.js.map +1 -1
  78. package/cjs/form/checkbox/Checkbox.js +1 -1
  79. package/cjs/form/checkbox/Checkbox.js.map +1 -1
  80. package/cjs/form/combobox/ComboboxWrapper.js +3 -1
  81. package/cjs/form/combobox/ComboboxWrapper.js.map +1 -1
  82. package/cjs/form/combobox/FilteredOptions/FilteredOptions.js +2 -4
  83. package/cjs/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
  84. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.d.ts +1 -1
  85. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js +2 -2
  86. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
  87. package/cjs/form/combobox/Input/Input.context.d.ts +1 -1
  88. package/cjs/form/combobox/Input/Input.context.js +2 -2
  89. package/cjs/form/combobox/Input/Input.context.js.map +1 -1
  90. package/cjs/form/combobox/Input/InputController.js.map +1 -1
  91. package/cjs/form/combobox/SelectedOptions/selectedOptionsContext.d.ts +1 -1
  92. package/cjs/form/combobox/SelectedOptions/selectedOptionsContext.js +4 -2
  93. package/cjs/form/combobox/SelectedOptions/selectedOptionsContext.js.map +1 -1
  94. package/cjs/form/combobox/customOptionsContext.d.ts +1 -1
  95. package/cjs/form/combobox/customOptionsContext.js +2 -2
  96. package/cjs/form/combobox/customOptionsContext.js.map +1 -1
  97. package/cjs/form/error-summary/ErrorSummary.js +3 -1
  98. package/cjs/form/error-summary/ErrorSummary.js.map +1 -1
  99. package/cjs/form/file-upload/FileUpload.context.d.ts +3 -2
  100. package/cjs/form/file-upload/FileUpload.context.js +4 -2
  101. package/cjs/form/file-upload/FileUpload.context.js.map +1 -1
  102. package/cjs/form/file-upload/parts/dropzone/Dropzone.js +2 -0
  103. package/cjs/form/file-upload/parts/dropzone/Dropzone.js.map +1 -1
  104. package/cjs/form/radio/Radio.js +1 -1
  105. package/cjs/form/radio/Radio.js.map +1 -1
  106. package/cjs/form/search/Search.js +3 -2
  107. package/cjs/form/search/Search.js.map +1 -1
  108. package/cjs/guide-panel/GuidePanel.js +1 -1
  109. package/cjs/guide-panel/GuidePanel.js.map +1 -1
  110. package/cjs/help-text/HelpText.js +1 -1
  111. package/cjs/help-text/HelpText.js.map +1 -1
  112. package/cjs/index.d.ts +1 -0
  113. package/cjs/index.js +3 -1
  114. package/cjs/index.js.map +1 -1
  115. package/cjs/inline-message/root/InlineMessage.js +1 -1
  116. package/cjs/inline-message/root/InlineMessage.js.map +1 -1
  117. package/cjs/internal-header/InternalHeader.js +1 -1
  118. package/cjs/internal-header/InternalHeader.js.map +1 -1
  119. package/cjs/internal-header/InternalHeaderUser.d.ts +2 -2
  120. package/cjs/internal-header/InternalHeaderUser.js +1 -1
  121. package/cjs/internal-header/InternalHeaderUser.js.map +1 -1
  122. package/cjs/layout/base/BasePrimitive.js +1 -1
  123. package/cjs/layout/base/BasePrimitive.js.map +1 -1
  124. package/cjs/layout/bleed/Bleed.js +1 -1
  125. package/cjs/layout/bleed/Bleed.js.map +1 -1
  126. package/cjs/layout/box/Box.js +1 -1
  127. package/cjs/layout/box/Box.js.map +1 -1
  128. package/cjs/layout/grid/HGrid.js +1 -1
  129. package/cjs/layout/grid/HGrid.js.map +1 -1
  130. package/cjs/layout/page/Page.js +1 -1
  131. package/cjs/layout/page/Page.js.map +1 -1
  132. package/cjs/layout/stack/Stack.js +1 -1
  133. package/cjs/layout/stack/Stack.js.map +1 -1
  134. package/cjs/link/Link.js +1 -1
  135. package/cjs/link/Link.js.map +1 -1
  136. package/cjs/link-card/LinkCard.js +2 -2
  137. package/cjs/link-card/LinkCard.js.map +1 -1
  138. package/cjs/list/List.js +1 -1
  139. package/cjs/list/List.js.map +1 -1
  140. package/cjs/modal/Modal.context.d.ts +4 -3
  141. package/cjs/modal/Modal.context.js +3 -3
  142. package/cjs/modal/Modal.context.js.map +1 -1
  143. package/cjs/modal/Modal.js +1 -1
  144. package/cjs/modal/Modal.js.map +1 -1
  145. package/cjs/overlays/action-menu/ActionMenu.js +6 -4
  146. package/cjs/overlays/action-menu/ActionMenu.js.map +1 -1
  147. package/cjs/overlays/dismissablelayer/DismissableLayer.d.ts +16 -4
  148. package/cjs/overlays/dismissablelayer/DismissableLayer.js +34 -5
  149. package/cjs/overlays/dismissablelayer/DismissableLayer.js.map +1 -1
  150. package/cjs/overlays/dismissablelayer/util/dispatchCustomEvent.d.ts +3 -2
  151. package/cjs/overlays/dismissablelayer/util/dispatchCustomEvent.js +1 -0
  152. package/cjs/overlays/dismissablelayer/util/dispatchCustomEvent.js.map +1 -1
  153. package/cjs/overlays/dismissablelayer/util/useEscapeKeydown.js +2 -2
  154. package/cjs/overlays/dismissablelayer/util/useEscapeKeydown.js.map +1 -1
  155. package/cjs/overlays/dismissablelayer/util/useFocusOutside.js +2 -2
  156. package/cjs/overlays/dismissablelayer/util/useFocusOutside.js.map +1 -1
  157. package/cjs/overlays/dismissablelayer/util/usePointerDownOutside.d.ts +2 -2
  158. package/cjs/overlays/dismissablelayer/util/usePointerDownOutside.js +2 -2
  159. package/cjs/overlays/dismissablelayer/util/usePointerDownOutside.js.map +1 -1
  160. package/cjs/overlays/dismissablelayer/util/usePointerUpOutside.d.ts +10 -0
  161. package/cjs/overlays/dismissablelayer/util/usePointerUpOutside.js +79 -0
  162. package/cjs/overlays/dismissablelayer/util/usePointerUpOutside.js.map +1 -0
  163. package/cjs/overlays/floating/Floating.d.ts +3 -2
  164. package/cjs/overlays/floating/Floating.js +9 -12
  165. package/cjs/overlays/floating/Floating.js.map +1 -1
  166. package/cjs/overlays/floating-menu/Menu.js +15 -19
  167. package/cjs/overlays/floating-menu/Menu.js.map +1 -1
  168. package/cjs/overlays/floating-menu/parts/RovingFocus.js +2 -1
  169. package/cjs/overlays/floating-menu/parts/RovingFocus.js.map +1 -1
  170. package/cjs/pagination/PaginationItem.js +1 -1
  171. package/cjs/pagination/PaginationItem.js.map +1 -1
  172. package/cjs/popover/Popover.js +28 -6
  173. package/cjs/popover/Popover.js.map +1 -1
  174. package/cjs/portal/Portal.js +1 -1
  175. package/cjs/portal/Portal.js.map +1 -1
  176. package/cjs/process/Process.js +2 -4
  177. package/cjs/process/Process.js.map +1 -1
  178. package/cjs/progress-bar/ProgressBar.js +4 -8
  179. package/cjs/progress-bar/ProgressBar.js.map +1 -1
  180. package/cjs/stepper/context.d.ts +3 -2
  181. package/cjs/stepper/context.js +3 -5
  182. package/cjs/stepper/context.js.map +1 -1
  183. package/cjs/tabs/Tabs.context.d.ts +4 -3
  184. package/cjs/tabs/Tabs.context.js +3 -5
  185. package/cjs/tabs/Tabs.context.js.map +1 -1
  186. package/cjs/theme/Theme.d.ts +2 -2
  187. package/cjs/theme/Theme.js +4 -8
  188. package/cjs/theme/Theme.js.map +1 -1
  189. package/cjs/timeline/period/ClickablePeriod.js +1 -1
  190. package/cjs/timeline/period/ClickablePeriod.js.map +1 -1
  191. package/cjs/timeline/period/index.js +1 -1
  192. package/cjs/timeline/period/index.js.map +1 -1
  193. package/cjs/toggle-group/ToggleGroup.context.d.ts +4 -3
  194. package/cjs/toggle-group/ToggleGroup.context.js +3 -5
  195. package/cjs/toggle-group/ToggleGroup.context.js.map +1 -1
  196. package/cjs/toggle-group/ToggleGroup.js +1 -1
  197. package/cjs/toggle-group/ToggleGroup.js.map +1 -1
  198. package/cjs/tooltip/Tooltip.js +3 -1
  199. package/cjs/tooltip/Tooltip.js.map +1 -1
  200. package/cjs/util/composition-warning/CompositionWarning.d.ts +3 -2
  201. package/cjs/util/composition-warning/CompositionWarning.js +3 -2
  202. package/cjs/util/composition-warning/CompositionWarning.js.map +1 -1
  203. package/cjs/util/create-strict-context.d.ts +40 -0
  204. package/cjs/util/{create-context.js → create-strict-context.js} +21 -19
  205. package/cjs/util/create-strict-context.js.map +1 -0
  206. package/cjs/util/focus-boundary/FocusBoundary.d.ts +1 -1
  207. package/cjs/util/focus-boundary/FocusBoundary.js +59 -16
  208. package/cjs/util/focus-boundary/FocusBoundary.js.map +1 -1
  209. package/cjs/util/hideNonTargetElements.js +2 -2
  210. package/cjs/util/hooks/descendants/useDescendant.d.ts +1 -1
  211. package/cjs/util/hooks/descendants/useDescendant.js +2 -2
  212. package/cjs/util/hooks/descendants/useDescendant.js.map +1 -1
  213. package/cjs/util/hooks/index.d.ts +0 -1
  214. package/cjs/util/hooks/index.js +1 -3
  215. package/cjs/util/hooks/index.js.map +1 -1
  216. package/{esm/overlays/overlay → cjs/util}/hooks/useAnimationsFinished.d.ts +1 -1
  217. package/cjs/{overlays/overlay → util}/hooks/useAnimationsFinished.js +7 -8
  218. package/cjs/util/hooks/useAnimationsFinished.js.map +1 -0
  219. package/cjs/util/hooks/useControllableState.js +4 -4
  220. package/cjs/util/hooks/useControllableState.js.map +1 -1
  221. package/cjs/util/hooks/useEventCallback.d.ts +2 -5
  222. package/cjs/util/hooks/useEventCallback.js +2 -3
  223. package/cjs/util/hooks/useEventCallback.js.map +1 -1
  224. package/cjs/util/hooks/useId.js +4 -1
  225. package/cjs/util/hooks/useId.js.map +1 -1
  226. package/cjs/util/hooks/useMergeRefs.js +2 -1
  227. package/cjs/util/hooks/useMergeRefs.js.map +1 -1
  228. package/cjs/{overlays/overlay → util}/hooks/useOpenChangeAnimationComplete.js +3 -3
  229. package/cjs/util/hooks/useOpenChangeAnimationComplete.js.map +1 -0
  230. package/cjs/util/hooks/usePrevious.js.map +1 -1
  231. package/cjs/util/hooks/useScrollLock.js.map +1 -1
  232. package/cjs/{overlays/overlay → util}/hooks/useTransitionStatus.d.ts +6 -1
  233. package/cjs/{overlays/overlay → util}/hooks/useTransitionStatus.js +15 -4
  234. package/cjs/util/hooks/useTransitionStatus.js.map +1 -0
  235. package/cjs/util/hooks/useValueAsRef.d.ts +6 -0
  236. package/cjs/util/hooks/{useLatestRef.js → useValueAsRef.js} +3 -3
  237. package/cjs/util/hooks/useValueAsRef.js.map +1 -0
  238. package/cjs/util/link-anchor/LinkAnchor.js +2 -2
  239. package/cjs/util/link-anchor/LinkAnchor.js.map +1 -1
  240. package/cjs/util/resolveRef.d.ts +8 -0
  241. package/cjs/util/resolveRef.js +16 -0
  242. package/cjs/util/resolveRef.js.map +1 -0
  243. package/cjs/util/virtualfocus/Context.d.ts +4 -3
  244. package/cjs/util/virtualfocus/Context.js +4 -2
  245. package/cjs/util/virtualfocus/Context.js.map +1 -1
  246. package/esm/accordion/AccordionContent.js +1 -1
  247. package/esm/accordion/AccordionContent.js.map +1 -1
  248. package/esm/accordion/AccordionHeader.js +1 -1
  249. package/esm/accordion/AccordionHeader.js.map +1 -1
  250. package/esm/alert/base-alert/content/BaseAlertContent.js +1 -1
  251. package/esm/alert/base-alert/content/BaseAlertContent.js.map +1 -1
  252. package/esm/alert/base-alert/root/BaseAlertRoot.context.d.ts +3 -2
  253. package/esm/alert/base-alert/root/BaseAlertRoot.context.js +2 -3
  254. package/esm/alert/base-alert/root/BaseAlertRoot.context.js.map +1 -1
  255. package/esm/chips/Removable.js +1 -1
  256. package/esm/chips/Removable.js.map +1 -1
  257. package/esm/chips/Toggle.js +1 -1
  258. package/esm/chips/Toggle.js.map +1 -1
  259. package/esm/collapsible/Collapsible.context.d.ts +3 -2
  260. package/esm/collapsible/Collapsible.context.js +2 -2
  261. package/esm/collapsible/Collapsible.context.js.map +1 -1
  262. package/esm/copybutton/CopyButton.js +5 -5
  263. package/esm/copybutton/CopyButton.js.map +1 -1
  264. package/esm/date/Date.Dialog.js +1 -1
  265. package/esm/date/Date.Dialog.js.map +1 -1
  266. package/esm/date/Date.Input.d.ts +3 -2
  267. package/esm/date/Date.Input.js +3 -2
  268. package/esm/date/Date.Input.js.map +1 -1
  269. package/esm/date/Date.locale.d.ts +3 -2
  270. package/esm/date/Date.locale.js +4 -2
  271. package/esm/date/Date.locale.js.map +1 -1
  272. package/esm/date/datepicker/parts/DatePicker.DayButton.d.ts +1 -1
  273. package/esm/date/datepicker/parts/DatePicker.DayButton.js +1 -1
  274. package/esm/date/datepicker/parts/DatePicker.DayButton.js.map +1 -1
  275. package/esm/date/datepicker/parts/DatePicker.RDP.js +12 -2
  276. package/esm/date/datepicker/parts/DatePicker.RDP.js.map +1 -1
  277. package/esm/date/monthpicker/MonthPicker.context.d.ts +1 -1
  278. package/esm/date/monthpicker/MonthPicker.context.js +2 -2
  279. package/esm/date/monthpicker/MonthPicker.context.js.map +1 -1
  280. package/esm/date/monthpicker/MonthPicker.js +1 -2
  281. package/esm/date/monthpicker/MonthPicker.js.map +1 -1
  282. package/esm/dialog/backdrop/DialogBackdropInternal.d.ts +5 -0
  283. package/esm/dialog/backdrop/DialogBackdropInternal.js +23 -0
  284. package/esm/dialog/backdrop/DialogBackdropInternal.js.map +1 -0
  285. package/esm/dialog/body/DialogBody.d.ts +18 -0
  286. package/esm/dialog/body/DialogBody.js +33 -0
  287. package/esm/dialog/body/DialogBody.js.map +1 -0
  288. package/esm/dialog/close-trigger/DialogCloseTrigger.d.ts +20 -0
  289. package/esm/dialog/close-trigger/DialogCloseTrigger.js +40 -0
  290. package/esm/dialog/close-trigger/DialogCloseTrigger.js.map +1 -0
  291. package/esm/dialog/description/DialogDescription.d.ts +19 -0
  292. package/esm/dialog/description/DialogDescription.js +37 -0
  293. package/esm/dialog/description/DialogDescription.js.map +1 -0
  294. package/esm/dialog/footer/DialogFooter.d.ts +20 -0
  295. package/esm/dialog/footer/DialogFooter.js +35 -0
  296. package/esm/dialog/footer/DialogFooter.js.map +1 -0
  297. package/esm/dialog/header/DialogHeader.d.ts +25 -0
  298. package/esm/dialog/header/DialogHeader.js +41 -0
  299. package/esm/dialog/header/DialogHeader.js.map +1 -0
  300. package/esm/dialog/index.d.ts +18 -0
  301. package/esm/dialog/index.js +11 -0
  302. package/esm/dialog/index.js.map +1 -0
  303. package/esm/dialog/popup/DialogPopup.d.ts +22 -0
  304. package/esm/dialog/popup/DialogPopup.js +39 -0
  305. package/esm/dialog/popup/DialogPopup.js.map +1 -0
  306. package/esm/dialog/popup/DialogPopupInternal.d.ts +60 -0
  307. package/esm/dialog/popup/DialogPopupInternal.js +130 -0
  308. package/esm/dialog/popup/DialogPopupInternal.js.map +1 -0
  309. package/esm/dialog/root/DialogRoot.context.d.ts +84 -0
  310. package/esm/dialog/root/DialogRoot.context.js +7 -0
  311. package/esm/dialog/root/DialogRoot.context.js.map +1 -0
  312. package/esm/dialog/root/DialogRoot.d.ts +179 -0
  313. package/esm/dialog/root/DialogRoot.js +97 -0
  314. package/esm/dialog/root/DialogRoot.js.map +1 -0
  315. package/esm/dialog/title/DialogTitle.d.ts +18 -0
  316. package/esm/dialog/title/DialogTitle.js +44 -0
  317. package/esm/dialog/title/DialogTitle.js.map +1 -0
  318. package/esm/dialog/trigger/DialogTrigger.d.ts +20 -0
  319. package/esm/dialog/trigger/DialogTrigger.js +35 -0
  320. package/esm/dialog/trigger/DialogTrigger.js.map +1 -0
  321. package/esm/expansion-card/ExpansionCardContent.js +1 -1
  322. package/esm/expansion-card/ExpansionCardContent.js.map +1 -1
  323. package/esm/form/checkbox/Checkbox.js +1 -1
  324. package/esm/form/checkbox/Checkbox.js.map +1 -1
  325. package/esm/form/combobox/ComboboxWrapper.js +3 -1
  326. package/esm/form/combobox/ComboboxWrapper.js.map +1 -1
  327. package/esm/form/combobox/FilteredOptions/FilteredOptions.js +2 -4
  328. package/esm/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
  329. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.d.ts +1 -1
  330. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js +2 -2
  331. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
  332. package/esm/form/combobox/Input/Input.context.d.ts +1 -1
  333. package/esm/form/combobox/Input/Input.context.js +2 -2
  334. package/esm/form/combobox/Input/Input.context.js.map +1 -1
  335. package/esm/form/combobox/Input/InputController.js.map +1 -1
  336. package/esm/form/combobox/SelectedOptions/selectedOptionsContext.d.ts +1 -1
  337. package/esm/form/combobox/SelectedOptions/selectedOptionsContext.js +4 -2
  338. package/esm/form/combobox/SelectedOptions/selectedOptionsContext.js.map +1 -1
  339. package/esm/form/combobox/customOptionsContext.d.ts +1 -1
  340. package/esm/form/combobox/customOptionsContext.js +2 -2
  341. package/esm/form/combobox/customOptionsContext.js.map +1 -1
  342. package/esm/form/error-summary/ErrorSummary.js +3 -1
  343. package/esm/form/error-summary/ErrorSummary.js.map +1 -1
  344. package/esm/form/file-upload/FileUpload.context.d.ts +3 -2
  345. package/esm/form/file-upload/FileUpload.context.js +4 -2
  346. package/esm/form/file-upload/FileUpload.context.js.map +1 -1
  347. package/esm/form/file-upload/parts/dropzone/Dropzone.js +2 -0
  348. package/esm/form/file-upload/parts/dropzone/Dropzone.js.map +1 -1
  349. package/esm/form/radio/Radio.js +1 -1
  350. package/esm/form/radio/Radio.js.map +1 -1
  351. package/esm/form/search/Search.js +3 -2
  352. package/esm/form/search/Search.js.map +1 -1
  353. package/esm/guide-panel/GuidePanel.js +1 -1
  354. package/esm/guide-panel/GuidePanel.js.map +1 -1
  355. package/esm/help-text/HelpText.js +1 -1
  356. package/esm/help-text/HelpText.js.map +1 -1
  357. package/esm/index.d.ts +1 -0
  358. package/esm/index.js +1 -0
  359. package/esm/index.js.map +1 -1
  360. package/esm/inline-message/root/InlineMessage.js +1 -1
  361. package/esm/inline-message/root/InlineMessage.js.map +1 -1
  362. package/esm/internal-header/InternalHeader.js +1 -1
  363. package/esm/internal-header/InternalHeader.js.map +1 -1
  364. package/esm/internal-header/InternalHeaderUser.d.ts +2 -2
  365. package/esm/internal-header/InternalHeaderUser.js +1 -1
  366. package/esm/internal-header/InternalHeaderUser.js.map +1 -1
  367. package/esm/layout/base/BasePrimitive.js +1 -1
  368. package/esm/layout/base/BasePrimitive.js.map +1 -1
  369. package/esm/layout/bleed/Bleed.js +1 -1
  370. package/esm/layout/bleed/Bleed.js.map +1 -1
  371. package/esm/layout/box/Box.js +1 -1
  372. package/esm/layout/box/Box.js.map +1 -1
  373. package/esm/layout/grid/HGrid.js +1 -1
  374. package/esm/layout/grid/HGrid.js.map +1 -1
  375. package/esm/layout/page/Page.js +1 -1
  376. package/esm/layout/page/Page.js.map +1 -1
  377. package/esm/layout/stack/Stack.js +1 -1
  378. package/esm/layout/stack/Stack.js.map +1 -1
  379. package/esm/link/Link.js +1 -1
  380. package/esm/link/Link.js.map +1 -1
  381. package/esm/link-card/LinkCard.js +2 -2
  382. package/esm/link-card/LinkCard.js.map +1 -1
  383. package/esm/list/List.js +1 -1
  384. package/esm/list/List.js.map +1 -1
  385. package/esm/modal/Modal.context.d.ts +4 -3
  386. package/esm/modal/Modal.context.js +2 -2
  387. package/esm/modal/Modal.context.js.map +1 -1
  388. package/esm/modal/Modal.js +1 -1
  389. package/esm/modal/Modal.js.map +1 -1
  390. package/esm/overlays/action-menu/ActionMenu.js +6 -4
  391. package/esm/overlays/action-menu/ActionMenu.js.map +1 -1
  392. package/esm/overlays/dismissablelayer/DismissableLayer.d.ts +16 -4
  393. package/esm/overlays/dismissablelayer/DismissableLayer.js +34 -5
  394. package/esm/overlays/dismissablelayer/DismissableLayer.js.map +1 -1
  395. package/esm/overlays/dismissablelayer/util/dispatchCustomEvent.d.ts +3 -2
  396. package/esm/overlays/dismissablelayer/util/dispatchCustomEvent.js +1 -0
  397. package/esm/overlays/dismissablelayer/util/dispatchCustomEvent.js.map +1 -1
  398. package/esm/overlays/dismissablelayer/util/useEscapeKeydown.js +2 -2
  399. package/esm/overlays/dismissablelayer/util/useEscapeKeydown.js.map +1 -1
  400. package/esm/overlays/dismissablelayer/util/useFocusOutside.js +2 -2
  401. package/esm/overlays/dismissablelayer/util/useFocusOutside.js.map +1 -1
  402. package/esm/overlays/dismissablelayer/util/usePointerDownOutside.d.ts +2 -2
  403. package/esm/overlays/dismissablelayer/util/usePointerDownOutside.js +2 -2
  404. package/esm/overlays/dismissablelayer/util/usePointerDownOutside.js.map +1 -1
  405. package/esm/overlays/dismissablelayer/util/usePointerUpOutside.d.ts +10 -0
  406. package/esm/overlays/dismissablelayer/util/usePointerUpOutside.js +76 -0
  407. package/esm/overlays/dismissablelayer/util/usePointerUpOutside.js.map +1 -0
  408. package/esm/overlays/floating/Floating.d.ts +3 -2
  409. package/esm/overlays/floating/Floating.js +9 -12
  410. package/esm/overlays/floating/Floating.js.map +1 -1
  411. package/esm/overlays/floating-menu/Menu.js +16 -20
  412. package/esm/overlays/floating-menu/Menu.js.map +1 -1
  413. package/esm/overlays/floating-menu/parts/RovingFocus.js +3 -2
  414. package/esm/overlays/floating-menu/parts/RovingFocus.js.map +1 -1
  415. package/esm/pagination/PaginationItem.js +1 -1
  416. package/esm/pagination/PaginationItem.js.map +1 -1
  417. package/esm/popover/Popover.js +28 -6
  418. package/esm/popover/Popover.js.map +1 -1
  419. package/esm/portal/Portal.js +1 -1
  420. package/esm/portal/Portal.js.map +1 -1
  421. package/esm/process/Process.js +2 -4
  422. package/esm/process/Process.js.map +1 -1
  423. package/esm/progress-bar/ProgressBar.js +4 -8
  424. package/esm/progress-bar/ProgressBar.js.map +1 -1
  425. package/esm/stepper/context.d.ts +3 -2
  426. package/esm/stepper/context.js +2 -4
  427. package/esm/stepper/context.js.map +1 -1
  428. package/esm/tabs/Tabs.context.d.ts +4 -3
  429. package/esm/tabs/Tabs.context.js +2 -4
  430. package/esm/tabs/Tabs.context.js.map +1 -1
  431. package/esm/theme/Theme.d.ts +2 -2
  432. package/esm/theme/Theme.js +4 -8
  433. package/esm/theme/Theme.js.map +1 -1
  434. package/esm/timeline/period/ClickablePeriod.js +1 -1
  435. package/esm/timeline/period/ClickablePeriod.js.map +1 -1
  436. package/esm/timeline/period/index.js +1 -1
  437. package/esm/timeline/period/index.js.map +1 -1
  438. package/esm/toggle-group/ToggleGroup.context.d.ts +4 -3
  439. package/esm/toggle-group/ToggleGroup.context.js +2 -4
  440. package/esm/toggle-group/ToggleGroup.context.js.map +1 -1
  441. package/esm/toggle-group/ToggleGroup.js +1 -1
  442. package/esm/toggle-group/ToggleGroup.js.map +1 -1
  443. package/esm/tooltip/Tooltip.js +3 -1
  444. package/esm/tooltip/Tooltip.js.map +1 -1
  445. package/esm/util/composition-warning/CompositionWarning.d.ts +3 -2
  446. package/esm/util/composition-warning/CompositionWarning.js +3 -2
  447. package/esm/util/composition-warning/CompositionWarning.js.map +1 -1
  448. package/esm/util/create-strict-context.d.ts +40 -0
  449. package/esm/util/{create-context.js → create-strict-context.js} +22 -19
  450. package/esm/util/create-strict-context.js.map +1 -0
  451. package/esm/util/focus-boundary/FocusBoundary.d.ts +1 -1
  452. package/esm/util/focus-boundary/FocusBoundary.js +57 -14
  453. package/esm/util/focus-boundary/FocusBoundary.js.map +1 -1
  454. package/esm/util/hideNonTargetElements.js +2 -2
  455. package/esm/util/hooks/descendants/useDescendant.d.ts +1 -1
  456. package/esm/util/hooks/descendants/useDescendant.js +2 -2
  457. package/esm/util/hooks/descendants/useDescendant.js.map +1 -1
  458. package/esm/util/hooks/index.d.ts +0 -1
  459. package/esm/util/hooks/index.js +0 -1
  460. package/esm/util/hooks/index.js.map +1 -1
  461. package/{cjs/overlays/overlay → esm/util}/hooks/useAnimationsFinished.d.ts +1 -1
  462. package/esm/{overlays/overlay → util}/hooks/useAnimationsFinished.js +7 -8
  463. package/esm/util/hooks/useAnimationsFinished.js.map +1 -0
  464. package/esm/util/hooks/useControllableState.js +4 -4
  465. package/esm/util/hooks/useControllableState.js.map +1 -1
  466. package/esm/util/hooks/useEventCallback.d.ts +2 -5
  467. package/esm/util/hooks/useEventCallback.js +4 -4
  468. package/esm/util/hooks/useEventCallback.js.map +1 -1
  469. package/esm/util/hooks/useId.js +4 -1
  470. package/esm/util/hooks/useId.js.map +1 -1
  471. package/esm/util/hooks/useMergeRefs.js +2 -1
  472. package/esm/util/hooks/useMergeRefs.js.map +1 -1
  473. package/esm/{overlays/overlay → util}/hooks/useOpenChangeAnimationComplete.js +3 -3
  474. package/esm/util/hooks/useOpenChangeAnimationComplete.js.map +1 -0
  475. package/esm/util/hooks/usePrevious.js.map +1 -1
  476. package/esm/util/hooks/useScrollLock.js.map +1 -1
  477. package/esm/{overlays/overlay → util}/hooks/useTransitionStatus.d.ts +6 -1
  478. package/esm/{overlays/overlay → util}/hooks/useTransitionStatus.js +12 -2
  479. package/esm/util/hooks/useTransitionStatus.js.map +1 -0
  480. package/esm/util/hooks/useValueAsRef.d.ts +6 -0
  481. package/esm/util/hooks/{useLatestRef.js → useValueAsRef.js} +3 -2
  482. package/esm/util/hooks/useValueAsRef.js.map +1 -0
  483. package/esm/util/link-anchor/LinkAnchor.js +2 -2
  484. package/esm/util/link-anchor/LinkAnchor.js.map +1 -1
  485. package/esm/util/resolveRef.d.ts +8 -0
  486. package/esm/util/resolveRef.js +14 -0
  487. package/esm/util/resolveRef.js.map +1 -0
  488. package/esm/util/virtualfocus/Context.d.ts +4 -3
  489. package/esm/util/virtualfocus/Context.js +4 -2
  490. package/esm/util/virtualfocus/Context.js.map +1 -1
  491. package/package.json +13 -3
  492. package/src/accordion/AccordionContent.tsx +1 -1
  493. package/src/accordion/AccordionHeader.tsx +1 -1
  494. package/src/alert/base-alert/content/BaseAlertContent.tsx +1 -1
  495. package/src/alert/base-alert/root/BaseAlertRoot.context.tsx +5 -5
  496. package/src/chips/Removable.tsx +1 -1
  497. package/src/chips/Toggle.tsx +1 -1
  498. package/src/collapsible/Collapsible.context.tsx +9 -7
  499. package/src/copybutton/CopyButton.tsx +5 -5
  500. package/src/date/Date.Dialog.tsx +0 -1
  501. package/src/date/Date.Input.tsx +8 -5
  502. package/src/date/Date.locale.ts +7 -3
  503. package/src/date/datepicker/parts/DatePicker.DayButton.tsx +1 -1
  504. package/src/date/datepicker/parts/DatePicker.RDP.tsx +12 -2
  505. package/src/date/monthpicker/MonthPicker.context.tsx +9 -7
  506. package/src/date/monthpicker/MonthPicker.tsx +1 -2
  507. package/src/dialog/backdrop/DialogBackdropInternal.tsx +29 -0
  508. package/src/dialog/body/DialogBody.tsx +36 -0
  509. package/src/dialog/close-trigger/DialogCloseTrigger.tsx +51 -0
  510. package/src/dialog/description/DialogDescription.tsx +44 -0
  511. package/src/dialog/footer/DialogFooter.tsx +38 -0
  512. package/src/dialog/header/DialogHeader.tsx +62 -0
  513. package/src/dialog/index.ts +19 -0
  514. package/src/dialog/popup/DialogPopup.tsx +61 -0
  515. package/src/dialog/popup/DialogPopupInternal.tsx +285 -0
  516. package/src/dialog/root/DialogRoot.context.ts +89 -0
  517. package/src/dialog/root/DialogRoot.tsx +296 -0
  518. package/src/dialog/title/DialogTitle.tsx +52 -0
  519. package/src/dialog/trigger/DialogTrigger.tsx +47 -0
  520. package/src/expansion-card/ExpansionCardContent.tsx +1 -1
  521. package/src/form/checkbox/Checkbox.tsx +1 -1
  522. package/src/form/combobox/ComboboxWrapper.tsx +1 -0
  523. package/src/form/combobox/FilteredOptions/FilteredOptions.tsx +1 -2
  524. package/src/form/combobox/FilteredOptions/filteredOptionsContext.tsx +9 -7
  525. package/src/form/combobox/Input/Input.context.tsx +3 -3
  526. package/src/form/combobox/Input/InputController.tsx +1 -0
  527. package/src/form/combobox/SelectedOptions/selectedOptionsContext.tsx +7 -3
  528. package/src/form/combobox/customOptionsContext.tsx +9 -7
  529. package/src/form/error-summary/ErrorSummary.tsx +1 -0
  530. package/src/form/file-upload/FileUpload.context.tsx +7 -3
  531. package/src/form/file-upload/parts/dropzone/Dropzone.tsx +6 -4
  532. package/src/form/radio/Radio.tsx +1 -1
  533. package/src/form/search/Search.tsx +3 -2
  534. package/src/guide-panel/GuidePanel.tsx +1 -1
  535. package/src/help-text/HelpText.tsx +1 -1
  536. package/src/index.ts +12 -0
  537. package/src/inline-message/root/InlineMessage.tsx +2 -1
  538. package/src/internal-header/InternalHeader.tsx +1 -1
  539. package/src/internal-header/InternalHeaderUser.tsx +4 -4
  540. package/src/layout/base/BasePrimitive.tsx +1 -1
  541. package/src/layout/bleed/Bleed.tsx +1 -1
  542. package/src/layout/box/Box.tsx +1 -1
  543. package/src/layout/grid/HGrid.tsx +1 -1
  544. package/src/layout/page/Page.tsx +1 -1
  545. package/src/layout/stack/Stack.tsx +1 -1
  546. package/src/link/Link.tsx +1 -1
  547. package/src/link-card/LinkCard.tsx +3 -3
  548. package/src/list/List.tsx +1 -1
  549. package/src/modal/Modal.context.ts +4 -4
  550. package/src/modal/Modal.tsx +1 -1
  551. package/src/overlays/action-menu/ActionMenu.tsx +7 -5
  552. package/src/overlays/dismissablelayer/DismissableLayer.tsx +65 -13
  553. package/src/overlays/dismissablelayer/util/dispatchCustomEvent.ts +3 -2
  554. package/src/overlays/dismissablelayer/util/useEscapeKeydown.ts +2 -2
  555. package/src/overlays/dismissablelayer/util/useFocusOutside.ts +2 -2
  556. package/src/overlays/dismissablelayer/util/usePointerDownOutside.ts +4 -4
  557. package/src/overlays/dismissablelayer/util/usePointerUpOutside.ts +95 -0
  558. package/src/overlays/floating/Floating.tsx +15 -20
  559. package/src/overlays/floating-menu/Menu.tsx +25 -26
  560. package/src/overlays/floating-menu/parts/RovingFocus.tsx +3 -2
  561. package/src/pagination/PaginationItem.tsx +1 -1
  562. package/src/popover/Popover.tsx +35 -6
  563. package/src/portal/Portal.tsx +1 -1
  564. package/src/process/Process.tsx +3 -5
  565. package/src/progress-bar/ProgressBar.tsx +2 -4
  566. package/src/stepper/context.ts +8 -8
  567. package/src/tabs/Tabs.context.ts +7 -8
  568. package/src/theme/Theme.tsx +15 -17
  569. package/src/timeline/period/ClickablePeriod.tsx +1 -1
  570. package/src/timeline/period/index.tsx +2 -1
  571. package/src/toggle-group/ToggleGroup.context.ts +8 -8
  572. package/src/toggle-group/ToggleGroup.tsx +1 -1
  573. package/src/tooltip/Tooltip.tsx +3 -1
  574. package/src/util/composition-warning/CompositionWarning.tsx +4 -3
  575. package/src/util/create-strict-context.tsx +91 -0
  576. package/src/util/focus-boundary/FocusBoundary.tsx +76 -17
  577. package/src/util/hideNonTargetElements.ts +2 -2
  578. package/src/util/hooks/descendants/useDescendant.tsx +5 -4
  579. package/src/util/hooks/index.ts +0 -1
  580. package/src/{overlays/overlay → util}/hooks/useAnimationsFinished.ts +8 -9
  581. package/src/util/hooks/useControllableState.ts +10 -13
  582. package/src/util/hooks/useEventCallback.ts +5 -6
  583. package/src/util/hooks/useId.ts +6 -1
  584. package/src/util/hooks/useMergeRefs.ts +3 -1
  585. package/src/{overlays/overlay → util}/hooks/useOpenChangeAnimationComplete.ts +3 -3
  586. package/src/util/hooks/usePrevious.ts +1 -0
  587. package/src/util/hooks/useScrollLock.ts +0 -1
  588. package/src/{overlays/overlay → util}/hooks/useTransitionStatus.ts +14 -2
  589. package/src/util/hooks/{useLatestRef.ts → useValueAsRef.ts} +3 -1
  590. package/src/util/link-anchor/LinkAnchor.tsx +7 -5
  591. package/src/util/resolveRef.ts +20 -0
  592. package/src/util/virtualfocus/Context.tsx +8 -6
  593. package/cjs/link/stories/RandomIcon.d.ts +0 -2
  594. package/cjs/link/stories/RandomIcon.js.map +0 -1
  595. package/cjs/overlays/overlay/hooks/useAnimationsFinished.js.map +0 -1
  596. package/cjs/overlays/overlay/hooks/useOpenChangeAnimationComplete.js.map +0 -1
  597. package/cjs/overlays/overlay/hooks/useTransitionStatus.js.map +0 -1
  598. package/cjs/util/create-context.d.ts +0 -20
  599. package/cjs/util/create-context.js.map +0 -1
  600. package/cjs/util/hooks/useCallbackRef.d.ts +0 -6
  601. package/cjs/util/hooks/useCallbackRef.js +0 -18
  602. package/cjs/util/hooks/useCallbackRef.js.map +0 -1
  603. package/cjs/util/hooks/useLatestRef.d.ts +0 -5
  604. package/cjs/util/hooks/useLatestRef.js.map +0 -1
  605. package/esm/link/stories/RandomIcon.d.ts +0 -2
  606. package/esm/link/stories/RandomIcon.js +0 -9
  607. package/esm/link/stories/RandomIcon.js.map +0 -1
  608. package/esm/overlays/overlay/hooks/useAnimationsFinished.js.map +0 -1
  609. package/esm/overlays/overlay/hooks/useOpenChangeAnimationComplete.js.map +0 -1
  610. package/esm/overlays/overlay/hooks/useTransitionStatus.js.map +0 -1
  611. package/esm/util/create-context.d.ts +0 -20
  612. package/esm/util/create-context.js.map +0 -1
  613. package/esm/util/hooks/useCallbackRef.d.ts +0 -6
  614. package/esm/util/hooks/useCallbackRef.js +0 -15
  615. package/esm/util/hooks/useCallbackRef.js.map +0 -1
  616. package/esm/util/hooks/useLatestRef.d.ts +0 -5
  617. package/esm/util/hooks/useLatestRef.js.map +0 -1
  618. package/src/link/stories/RandomIcon.tsx +0 -10
  619. package/src/util/create-context.tsx +0 -79
  620. package/src/util/hooks/useCallbackRef.ts +0 -20
  621. /package/cjs/{overlays/overlay → util}/hooks/useOpenChangeAnimationComplete.d.ts +0 -0
  622. /package/esm/{overlays/overlay → util}/hooks/useOpenChangeAnimationComplete.d.ts +0 -0
@@ -54,7 +54,7 @@ export const InlineMessage: OverridableComponent<
54
54
  forwardedRef,
55
55
  ) => {
56
56
  const { cn } = useRenameCSS();
57
- const themeContext = useThemeInternal(false);
57
+ const themeContext = useThemeInternal();
58
58
 
59
59
  const translate = useI18n("global");
60
60
  const statusId = useId();
@@ -76,6 +76,7 @@ export const InlineMessage: OverridableComponent<
76
76
  {`${translate(status)}: `}
77
77
  </BodyShort>
78
78
  )}
79
+ {/** biome-ignore lint/a11y/useAriaPropsSupportedByRole: Testing shows that this works. */}
79
80
  <span
80
81
  data-color={themeContext?.color}
81
82
  id={contentId}
@@ -78,7 +78,7 @@ interface InternalHeaderComponent
78
78
  * ```
79
79
  */
80
80
  export const InternalHeader = forwardRef(({ className, ...rest }, ref) => {
81
- const themeContext = useThemeInternal(false);
81
+ const themeContext = useThemeInternal();
82
82
  const { cn } = useRenameCSS();
83
83
 
84
84
  /*
@@ -7,11 +7,11 @@ export interface InternalHeaderUserProps
7
7
  /**
8
8
  * User name
9
9
  */
10
- name: string;
10
+ name: React.ReactNode;
11
11
  /**
12
12
  * User description
13
13
  */
14
- description?: string;
14
+ description?: React.ReactNode;
15
15
  }
16
16
 
17
17
  export const InternalHeaderUser = forwardRef<
@@ -26,12 +26,12 @@ export const InternalHeaderUser = forwardRef<
26
26
  ref={ref}
27
27
  className={cn("navds-internalheader__user", className)}
28
28
  >
29
- <span>
29
+ <div>
30
30
  <BodyShort size="small" as="div">
31
31
  {name}
32
32
  </BodyShort>
33
33
  {description && <Detail as="div">{description}</Detail>}
34
- </span>
34
+ </div>
35
35
  </div>
36
36
  );
37
37
  });
@@ -251,7 +251,7 @@ export const BasePrimitive = ({
251
251
  flexShrink,
252
252
  gridColumn,
253
253
  }: BasePrimitiveProps) => {
254
- const themeContext = useThemeInternal(false);
254
+ const themeContext = useThemeInternal();
255
255
  const { cn } = useRenameCSS();
256
256
  const prefix = themeContext?.isDarkside ? "ax" : "a";
257
257
 
@@ -80,7 +80,7 @@ export const Bleed = forwardRef<HTMLDivElement, BleedProps>(
80
80
  },
81
81
  ref,
82
82
  ) => {
83
- const themeContext = useThemeInternal(false);
83
+ const themeContext = useThemeInternal();
84
84
  const { cn } = useRenameCSS();
85
85
  const prefix = themeContext?.isDarkside ? "ax" : "a";
86
86
 
@@ -108,7 +108,7 @@ export const BoxComponent: OverridableComponent<BoxProps, HTMLDivElement> =
108
108
  },
109
109
  ref,
110
110
  ) => {
111
- const themeContext = useThemeInternal(false);
111
+ const themeContext = useThemeInternal();
112
112
  const { cn } = useRenameCSS();
113
113
 
114
114
  if (
@@ -77,7 +77,7 @@ export const HGrid: OverridableComponent<HGridProps, HTMLDivElement> =
77
77
  },
78
78
  ref,
79
79
  ) => {
80
- const themeContext = useThemeInternal(false);
80
+ const themeContext = useThemeInternal();
81
81
  const prefix = themeContext?.isDarkside ? "ax" : "a";
82
82
  const { cn } = useRenameCSS();
83
83
 
@@ -53,7 +53,7 @@ export const PageComponent: OverridableComponent<PageProps, HTMLElement> =
53
53
  },
54
54
  ref,
55
55
  ) => {
56
- const themeContext = useThemeInternal(false);
56
+ const themeContext = useThemeInternal();
57
57
  const { cn } = useRenameCSS();
58
58
 
59
59
  if (
@@ -83,7 +83,7 @@ export const Stack: OverridableComponent<StackProps, HTMLDivElement> =
83
83
  },
84
84
  ref,
85
85
  ) => {
86
- const themeContext = useThemeInternal(false);
86
+ const themeContext = useThemeInternal();
87
87
  const prefix = themeContext?.isDarkside ? "ax" : "a";
88
88
  const { cn } = useRenameCSS();
89
89
 
package/src/link/Link.tsx CHANGED
@@ -64,7 +64,7 @@ export const Link: OverridableComponent<LinkProps, HTMLAnchorElement> =
64
64
  },
65
65
  ref,
66
66
  ) => {
67
- const themeContext = useThemeInternal(false);
67
+ const themeContext = useThemeInternal();
68
68
  const { cn } = useRenameCSS();
69
69
 
70
70
  /*
@@ -1,7 +1,7 @@
1
1
  import React, { HTMLAttributes, forwardRef } from "react";
2
2
  import { useRenameCSS } from "../theme/Theme";
3
3
  import { BodyLong, Heading } from "../typography";
4
- import { createContext } from "../util/create-context";
4
+ import { createStrictContext } from "../util/create-strict-context";
5
5
  import {
6
6
  LinkAnchor,
7
7
  LinkAnchorArrow,
@@ -31,8 +31,8 @@ type LinkCardContextProps = {
31
31
  size: LinkCardProps["size"];
32
32
  };
33
33
 
34
- const [LinkCardContextProvider, useLinkCardContext] =
35
- createContext<LinkCardContextProps>({
34
+ const { Provider: LinkCardContextProvider, useContext: useLinkCardContext } =
35
+ createStrictContext<LinkCardContextProps>({
36
36
  name: "LinkCardContextProvider",
37
37
  });
38
38
 
package/src/list/List.tsx CHANGED
@@ -59,7 +59,7 @@ export const List = forwardRef<HTMLDivElement, ListProps>(
59
59
  const { size: contextSize } = useContext(ListContext);
60
60
 
61
61
  const { cn } = useRenameCSS();
62
- const themeContext = useThemeInternal(false);
62
+ const themeContext = useThemeInternal();
63
63
 
64
64
  const listSize = size ?? contextSize;
65
65
 
@@ -1,13 +1,13 @@
1
1
  import React from "react";
2
- import { createContext } from "../util/create-context";
2
+ import { createStrictContext } from "../util/create-strict-context";
3
3
 
4
4
  interface ModalContextProps {
5
5
  closeHandler?: React.MouseEventHandler<HTMLButtonElement>;
6
- ref: React.RefObject<HTMLDialogElement>;
6
+ modalRef: React.RefObject<HTMLDialogElement>;
7
7
  }
8
8
 
9
- export const [ModalContextProvider, useModalContext] =
10
- createContext<ModalContextProps>({
9
+ export const { Provider: ModalContextProvider, useContext: useModalContext } =
10
+ createStrictContext<ModalContextProps>({
11
11
  name: "ModalContext",
12
12
  errorMessage: "<Modal.Header> must be used within a <Modal>",
13
13
  });
@@ -251,7 +251,7 @@ export const Modal = forwardRef<HTMLDialogElement, ModalProps>(
251
251
  >
252
252
  <ModalContextProvider
253
253
  closeHandler={getCloseHandler(modalRef, header, onBeforeClose)}
254
- ref={modalRef}
254
+ modalRef={modalRef}
255
255
  >
256
256
  {header && (
257
257
  <ModalHeader>
@@ -5,7 +5,7 @@ import { Slot } from "../../slot/Slot";
5
5
  import { useRenameCSS, useThemeInternal } from "../../theme/Theme";
6
6
  import { OverridableComponent, useId } from "../../util";
7
7
  import { composeEventHandlers } from "../../util/composeEventHandlers";
8
- import { createContext } from "../../util/create-context";
8
+ import { createStrictContext } from "../../util/create-strict-context";
9
9
  import { useMergeRefs } from "../../util/hooks";
10
10
  import { useControllableState } from "../../util/hooks/useControllableState";
11
11
  import { requireReactElement } from "../../util/requireReactElement";
@@ -24,8 +24,8 @@ type ActionMenuContextValue = {
24
24
  rootElement: MenuPortalProps["rootElement"];
25
25
  };
26
26
 
27
- const [ActionMenuProvider, useActionMenuContext] =
28
- createContext<ActionMenuContextValue>({
27
+ const { Provider: ActionMenuProvider, useContext: useActionMenuContext } =
28
+ createStrictContext<ActionMenuContextValue>({
29
29
  name: "ActionMenuContext",
30
30
  errorMessage:
31
31
  "ActionMenu sub-components cannot be rendered outside the ActionMenu component.",
@@ -251,7 +251,9 @@ const ActionMenuRoot = ({
251
251
  const triggerRef = useRef<HTMLButtonElement>(null);
252
252
 
253
253
  const modalContext = useModalContext(false);
254
- const rootElement = modalContext ? modalContext.ref.current : rootElementProp;
254
+ const rootElement = modalContext
255
+ ? modalContext.modalRef.current
256
+ : rootElementProp;
255
257
 
256
258
  const [open = false, setOpen] = useControllableState({
257
259
  value: openProp,
@@ -773,7 +775,7 @@ export const ActionMenuRadioItem = forwardRef<
773
775
  ref,
774
776
  ) => {
775
777
  const { cn } = useRenameCSS();
776
- const themeContext = useThemeInternal(false);
778
+ const themeContext = useThemeInternal();
777
779
 
778
780
  return (
779
781
  <Menu.RadioItem
@@ -6,12 +6,13 @@ import { ownerDocument } from "../../util/owner";
6
6
  import { AsChild } from "../../util/types/AsChild";
7
7
  import {
8
8
  CustomFocusEvent,
9
- CustomPointerDownEvent,
9
+ CustomPointerEvent,
10
10
  } from "./util/dispatchCustomEvent";
11
11
  import { getSortedLayers } from "./util/sort-layers";
12
12
  import { useEscapeKeydown } from "./util/useEscapeKeydown";
13
13
  import { useFocusOutside } from "./util/useFocusOutside";
14
14
  import { usePointerDownOutside } from "./util/usePointerDownOutside";
15
+ import { usePointerUpOutside } from "./util/usePointerUpOutside";
15
16
 
16
17
  interface DismissableLayerBaseProps
17
18
  extends React.HTMLAttributes<HTMLDivElement> {
@@ -30,7 +31,19 @@ interface DismissableLayerBaseProps
30
31
  * Event handler called when the a `pointerdown` event happens outside of the `DismissableLayer`.
31
32
  * Can be prevented.
32
33
  */
33
- onPointerDownOutside?: (event: CustomPointerDownEvent) => void;
34
+ onPointerDownOutside?: (event: CustomPointerEvent) => void;
35
+ /**
36
+ * Event handler called when the a `pointerup` event happens outside of the `DismissableLayer`.
37
+ * Can be prevented.
38
+ */
39
+ onPointerUpOutside?: (event: CustomPointerEvent) => void;
40
+ /**
41
+ * Enables listening for `pointerup` outside the `DismissableLayer`.
42
+ * In most cases `pointerdown` is sufficient, but in some cases (like modal, drawer)
43
+ * we want to mimic native OS behaviour and only close on `pointerup`.
44
+ * @default false
45
+ */
46
+ enablePointerUpOutside?: boolean;
34
47
  /**
35
48
  * Event handler called when the focus moves outside of the `DismissableLayer`.
36
49
  * Can be prevented.
@@ -41,13 +54,11 @@ interface DismissableLayerBaseProps
41
54
  * Specifically, when a `pointerdown` event happens outside or focus moves outside of it.
42
55
  * Can be prevented.
43
56
  */
44
- onInteractOutside?: (
45
- event: CustomPointerDownEvent | CustomFocusEvent,
46
- ) => void;
57
+ onInteractOutside?: (event: CustomPointerEvent | CustomFocusEvent) => void;
47
58
  /**
48
59
  * Handler called when the `DismissableLayer` should be dismissed
49
60
  */
50
- onDismiss?: () => void;
61
+ onDismiss?: (event: Event) => void;
51
62
  /**
52
63
  * Stops `onDismiss` from beeing called when interacting with the `safeZone` elements.
53
64
  */
@@ -90,6 +101,8 @@ const DismissableLayer = forwardRef<HTMLDivElement, DismissableLayerProps>(
90
101
  onEscapeKeyDown,
91
102
  onFocusOutside,
92
103
  onPointerDownOutside,
104
+ onPointerUpOutside,
105
+ enablePointerUpOutside = false,
93
106
  safeZone,
94
107
  asChild,
95
108
  enabled = true,
@@ -124,9 +137,7 @@ const DismissableLayer = forwardRef<HTMLDivElement, DismissableLayerProps>(
124
137
  * We want to prevent the Layer from closing when the trigger/anchor element or its child elements are interacted with.
125
138
  * To achieve this, we check if the event target is the trigger/anchor or a child. If it is, we prevent default event behavior.
126
139
  */
127
- function handleOutsideEvent(
128
- event: CustomFocusEvent | CustomPointerDownEvent,
129
- ) {
140
+ function handleOutsideEvent(event: CustomFocusEvent | CustomPointerEvent) {
130
141
  if (!safeZone?.anchor) {
131
142
  return;
132
143
  }
@@ -182,7 +193,36 @@ const DismissableLayer = forwardRef<HTMLDivElement, DismissableLayerProps>(
182
193
  safeZone && handleOutsideEvent(event);
183
194
 
184
195
  if (!event.defaultPrevented && onDismiss) {
185
- onDismiss();
196
+ onDismiss(event);
197
+ }
198
+ },
199
+ ownerDoc,
200
+ enabled,
201
+ );
202
+
203
+ const pointerUpOutside = usePointerUpOutside(
204
+ (event) => {
205
+ if (!shouldEnablePointerEvents || !enablePointerUpOutside) {
206
+ return;
207
+ }
208
+
209
+ /**
210
+ * We call these before letting `handleOutsideEvent` do its checks to give consumer a chance to preventDefault based certain cases.
211
+ */
212
+ onPointerUpOutside?.(event);
213
+ onInteractOutside?.(event);
214
+
215
+ /**
216
+ * Add safeZone to prevent closing when interacting with trigger/anchor or its children.
217
+ */
218
+ safeZone && handleOutsideEvent(event);
219
+
220
+ /**
221
+ * Both `onPointerUpOutside`, `onInteractOutside` and `handleOutsideEvent`
222
+ * are able to preventDefault the event, thus stopping call for `onDismiss`.
223
+ */
224
+ if (!event.defaultPrevented && onDismiss) {
225
+ onDismiss(event);
186
226
  }
187
227
  },
188
228
  ownerDoc,
@@ -203,7 +243,7 @@ const DismissableLayer = forwardRef<HTMLDivElement, DismissableLayerProps>(
203
243
  safeZone && handleOutsideEvent(event);
204
244
 
205
245
  if (!event.defaultPrevented && onDismiss) {
206
- onDismiss();
246
+ onDismiss(event);
207
247
  }
208
248
  },
209
249
  ownerDoc,
@@ -230,8 +270,13 @@ const DismissableLayer = forwardRef<HTMLDivElement, DismissableLayerProps>(
230
270
  * We want to `preventDefault` the escape-event to avoid sideeffect from other elements on screen
231
271
  */
232
272
  if (!event.defaultPrevented && onDismiss) {
273
+ onDismiss(event);
274
+
275
+ /**
276
+ * Preventing after dismiss allows us to check if user prevents default on the escape event
277
+ * to avoid side effects on other elements after this layer has been dismissed.
278
+ */
233
279
  event.preventDefault();
234
- onDismiss();
235
280
  }
236
281
  },
237
282
  ownerDoc,
@@ -364,7 +409,14 @@ const DismissableLayer = forwardRef<HTMLDivElement, DismissableLayerProps>(
364
409
  )}
365
410
  onPointerDownCapture={composeEventHandlers(
366
411
  restProps.onPointerDownCapture,
367
- pointerDownOutside.onPointerDownCapture,
412
+ () => {
413
+ pointerDownOutside.onPointerDownCapture();
414
+ pointerUpOutside.onPointerDownCapture();
415
+ },
416
+ )}
417
+ onPointerUpCapture={composeEventHandlers(
418
+ restProps.onPointerUpCapture,
419
+ pointerUpOutside.onPointerUpCapture,
368
420
  )}
369
421
  >
370
422
  {children}
@@ -1,15 +1,16 @@
1
1
  import ReactDOM from "react-dom";
2
2
 
3
3
  type CustomFocusEvent = CustomEvent<{ originalEvent: FocusEvent }>;
4
- type CustomPointerDownEvent = CustomEvent<{
4
+ type CustomPointerEvent = CustomEvent<{
5
5
  originalEvent: PointerEvent;
6
6
  }>;
7
7
 
8
- export type { CustomFocusEvent, CustomPointerDownEvent };
8
+ export type { CustomFocusEvent, CustomPointerEvent };
9
9
 
10
10
  export const CUSTOM_EVENTS = {
11
11
  FOCUS_OUTSIDE: "AKSEL_FOCUS_OUTSIDE",
12
12
  POINTER_DOWN_OUTSIDE: "AKSEL_POINTER_DOWN_OUTSIDE",
13
+ POINTER_UP_OUTSIDE: "AKSEL_POINTER_UP_OUTSIDE",
13
14
  };
14
15
 
15
16
  /**
@@ -1,12 +1,12 @@
1
1
  import { useEffect } from "react";
2
- import { useCallbackRef } from "../../../util/hooks";
2
+ import { useEventCallback } from "../../../util/hooks/useEventCallback";
3
3
 
4
4
  export function useEscapeKeydown(
5
5
  callback?: (event: KeyboardEvent) => void,
6
6
  ownerDocument: Document = globalThis?.document,
7
7
  enabled: boolean = true,
8
8
  ) {
9
- const onEscapeKeyDown = useCallbackRef(callback);
9
+ const onEscapeKeyDown = useEventCallback(callback);
10
10
 
11
11
  useEffect(() => {
12
12
  if (!enabled) {
@@ -1,5 +1,5 @@
1
1
  import { useEffect, useRef } from "react";
2
- import { useCallbackRef } from "../../../util/hooks";
2
+ import { useEventCallback } from "../../../util/hooks/useEventCallback";
3
3
  import {
4
4
  CUSTOM_EVENTS,
5
5
  CustomFocusEvent,
@@ -14,7 +14,7 @@ export function useFocusOutside(
14
14
  ownerDocument: Document = globalThis?.document,
15
15
  enabled: boolean = true,
16
16
  ) {
17
- const handleFocusOutside = useCallbackRef(callback) as EventListener;
17
+ const handleFocusOutside = useEventCallback(callback) as EventListener;
18
18
  const isFocusInsideReactTreeRef = useRef(false);
19
19
 
20
20
  useEffect(() => {
@@ -1,9 +1,9 @@
1
1
  import { useEffect, useRef } from "react";
2
- import { useCallbackRef } from "../../../util/hooks";
2
+ import { useEventCallback } from "../../../util/hooks/useEventCallback";
3
3
  import { useTimeout } from "../../../util/hooks/useTimeout";
4
4
  import {
5
5
  CUSTOM_EVENTS,
6
- CustomPointerDownEvent,
6
+ CustomPointerEvent,
7
7
  dispatchCustomEvent,
8
8
  } from "./dispatchCustomEvent";
9
9
 
@@ -14,11 +14,11 @@ import {
14
14
  * By checking `isPointerInsideReactTreeRef` we can determine if the event happened outside the subtree of the node, saving some element-comparisons.
15
15
  */
16
16
  export function usePointerDownOutside(
17
- callback?: (event: CustomPointerDownEvent) => void,
17
+ callback?: (event: CustomPointerEvent) => void,
18
18
  ownerDocument: Document = globalThis?.document,
19
19
  enabled: boolean = true,
20
20
  ) {
21
- const handlePointerDownOutside = useCallbackRef(callback) as EventListener;
21
+ const handlePointerDownOutside = useEventCallback(callback) as EventListener;
22
22
  const isPointerInsideReactTreeRef = useRef(false);
23
23
  const handleClickRef = useRef<typeof handlePointerDownOutside>(() => {});
24
24
  const timeout = useTimeout();
@@ -0,0 +1,95 @@
1
+ import { useEffect, useRef } from "react";
2
+ import { useEventCallback } from "../../../util/hooks/useEventCallback";
3
+ import {
4
+ CUSTOM_EVENTS,
5
+ CustomPointerEvent,
6
+ dispatchCustomEvent,
7
+ } from "./dispatchCustomEvent";
8
+
9
+ /**
10
+ * Listens for `pointerup` outside a react subtree.
11
+ * Returns props to pass to the node we want to check for outside events.
12
+ * By checking `isPointerInsideReactTreeRef` we can determine if the event happened outside the subtree of the node, saving some element-comparisons.
13
+ */
14
+ export function usePointerUpOutside(
15
+ callback?: (event: CustomPointerEvent) => void,
16
+ ownerDocument: Document = globalThis?.document,
17
+ enabled: boolean = true,
18
+ ) {
19
+ // Keep callback ref stable
20
+ const handlePointerUpOutside = useEventCallback(callback) as EventListener;
21
+ // Tracks if the pointer interaction started inside the React subtree.
22
+ const isPointerInsideReactTreeRef = useRef(false);
23
+
24
+ useEffect(() => {
25
+ if (!enabled) {
26
+ return;
27
+ }
28
+
29
+ const handlePointerUp = (event: PointerEvent) => {
30
+ /**
31
+ * The `DismisableLayer`-API is based on the ability to stop events from propagating and in the end calling `onDismiss`
32
+ * if `usePointerUpOutside`-callback does not run `event.preventDefault()`.
33
+ *
34
+ * Although `pointerup` is already a cancelable event, we still dispatch a custom event (discrete)
35
+ * to keep parity with focus outside handling and ensure ordering.
36
+ *
37
+ * Since pointer events are `discrete` in React we rely on the same custom dispatch strategy.
38
+ */
39
+ if (event.target && !isPointerInsideReactTreeRef.current) {
40
+ dispatchCustomEvent(
41
+ CUSTOM_EVENTS.POINTER_UP_OUTSIDE,
42
+ handlePointerUpOutside,
43
+ { originalEvent: event },
44
+ { discrete: true },
45
+ );
46
+ }
47
+ /* Reset for next interaction. */
48
+ isPointerInsideReactTreeRef.current = false;
49
+ };
50
+
51
+ /* Mostly relevant if user moved touch after touch-start */
52
+ const handlePointerCancel = () => {
53
+ /* Reset state if interaction is cancelled */
54
+ isPointerInsideReactTreeRef.current = false;
55
+ };
56
+
57
+ /**
58
+ * If this hook executes in a component that mounts via a `pointerup` event, the event
59
+ * would bubble up to the document and trigger a `pointerUpOutside` event. We avoid
60
+ * this by delaying the event listener registration on the document.
61
+ * This is not React specific, but rather how the DOM works, ie:
62
+ * ```
63
+ * button.addEventListener('pointerup', () => {
64
+ * console.log('I will log');
65
+ * document.addEventListener('pointerup', () => {
66
+ * console.log('I will also log');
67
+ * })
68
+ * });
69
+ */
70
+ const timerId = window.setTimeout(() => {
71
+ ownerDocument.addEventListener("pointerup", handlePointerUp);
72
+ ownerDocument.addEventListener("pointercancel", handlePointerCancel);
73
+ }, 0);
74
+
75
+ return () => {
76
+ window.clearTimeout(timerId);
77
+ ownerDocument.removeEventListener("pointerup", handlePointerUp);
78
+ ownerDocument.removeEventListener("pointercancel", handlePointerCancel);
79
+ };
80
+ }, [ownerDocument, handlePointerUpOutside, enabled]);
81
+
82
+ /**
83
+ * Ensures we check React component tree (not just DOM tree).
84
+ * This makes sure that if you start or end a pointer interaction inside the
85
+ * React tree (e.g. Modal), we don't trigger the outside event on pointer up.
86
+ */
87
+ return {
88
+ onPointerDownCapture: () => {
89
+ isPointerInsideReactTreeRef.current = true;
90
+ },
91
+ onPointerUpCapture: () => {
92
+ isPointerInsideReactTreeRef.current = true;
93
+ },
94
+ };
95
+ }
@@ -20,14 +20,11 @@ import React, {
20
20
  } from "react";
21
21
  import { useModalContext } from "../../modal/Modal.context";
22
22
  import { Slot } from "../../slot/Slot";
23
- import { createContext } from "../../util/create-context";
24
- import {
25
- useCallbackRef,
26
- useClientLayoutEffect,
27
- useMergeRefs,
28
- } from "../../util/hooks";
23
+ import { createStrictContext } from "../../util/create-strict-context";
24
+ import { useClientLayoutEffect, useMergeRefs } from "../../util/hooks";
25
+ import { useEventCallback } from "../../util/hooks/useEventCallback";
26
+ import { useOpenChangeAnimationComplete } from "../../util/hooks/useOpenChangeAnimationComplete";
29
27
  import { AsChildProps } from "../../util/types";
30
- import { useOpenChangeAnimationComplete } from "../overlay/hooks/useOpenChangeAnimationComplete";
31
28
  import {
32
29
  type Align,
33
30
  type Measurable,
@@ -44,11 +41,9 @@ type FloatingContextValue = {
44
41
  onAnchorChange: (anchor: Measurable | null) => void;
45
42
  };
46
43
 
47
- export const [FloatingProvider, useFloatingContext] =
48
- createContext<FloatingContextValue>({
44
+ export const { Provider: FloatingProvider, useContext: useFloatingContext } =
45
+ createStrictContext<FloatingContextValue>({
49
46
  name: "FloatingContext",
50
- hookName: "useFloating",
51
- providerName: "FloatingProvider",
52
47
  });
53
48
 
54
49
  interface FloatingProps {
@@ -171,12 +166,12 @@ type FloatingContentContextValue = {
171
166
  hideArrow: boolean;
172
167
  };
173
168
 
174
- const [FloatingContentProvider, useFloatingContentContext] =
175
- createContext<FloatingContentContextValue>({
176
- name: "FloatingContentContext",
177
- hookName: "useFloatingContentContext",
178
- providerName: "FloatingContentProvider",
179
- });
169
+ const {
170
+ Provider: FloatingContentProvider,
171
+ useContext: useFloatingContentContext,
172
+ } = createStrictContext<FloatingContentContextValue>({
173
+ name: "FloatingContentContext",
174
+ });
180
175
 
181
176
  type Boundary = Element | null;
182
177
 
@@ -364,15 +359,15 @@ const FloatingContent = forwardRef<HTMLDivElement, FloatingContentProps>(
364
359
  }, [autoUpdateWhileMounted, enabled, floatingElements, update]);
365
360
 
366
361
  useOpenChangeAnimationComplete({
367
- enabled: !!modalContext?.ref,
362
+ enabled: !!modalContext?.modalRef,
368
363
  open: enabled,
369
- ref: modalContext?.ref,
364
+ ref: modalContext?.modalRef,
370
365
  onComplete: update,
371
366
  });
372
367
 
373
368
  const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);
374
369
 
375
- const handlePlaced = useCallbackRef(onPlaced);
370
+ const handlePlaced = useEventCallback(onPlaced);
376
371
 
377
372
  useClientLayoutEffect(() => {
378
373
  isPositioned && handlePlaced?.();