@cube-dev/ui-kit 0.141.0 → 0.142.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/dist/CHANGELOG.md +103 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.js +17 -3
  20. package/dist/components/actions/Button/Button.js.map +1 -1
  21. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  22. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  23. package/dist/components/actions/ButtonSplit/context.js +1 -1
  24. package/dist/components/actions/CommandMenu/CommandMenu.js +3 -4
  25. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  26. package/dist/components/actions/CommandMenu/styled.js +1 -1
  27. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  28. package/dist/components/actions/ItemActionContext.js +1 -1
  29. package/dist/components/actions/ItemButton/ItemButton.js +18 -2
  30. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  31. package/dist/components/actions/Link/Link.js +1 -1
  32. package/dist/components/actions/Menu/Menu.js +3 -4
  33. package/dist/components/actions/Menu/Menu.js.map +1 -1
  34. package/dist/components/actions/Menu/MenuItem.js +1 -1
  35. package/dist/components/actions/Menu/MenuSection.js +1 -1
  36. package/dist/components/actions/Menu/MenuTrigger.js +8 -5
  37. package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
  38. package/dist/components/actions/Menu/SubMenuTrigger.js +10 -7
  39. package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
  40. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  41. package/dist/components/actions/Menu/context.js +1 -1
  42. package/dist/components/actions/Menu/styled.js +1 -1
  43. package/dist/components/actions/index.js +1 -1
  44. package/dist/components/actions/use-action.js +1 -1
  45. package/dist/components/actions/use-anchored-menu.js +4 -3
  46. package/dist/components/actions/use-anchored-menu.js.map +1 -1
  47. package/dist/components/actions/use-context-menu.js +4 -3
  48. package/dist/components/actions/use-context-menu.js.map +1 -1
  49. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  50. package/dist/components/content/Alert/Alert.js +1 -1
  51. package/dist/components/content/Alert/use-alert.js +1 -1
  52. package/dist/components/content/Avatar/Avatar.js +1 -1
  53. package/dist/components/content/Badge/Badge.js +1 -1
  54. package/dist/components/content/Card/Card.js +1 -1
  55. package/dist/components/content/Content.js +1 -1
  56. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  57. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  58. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  59. package/dist/components/content/Divider.js +1 -1
  60. package/dist/components/content/Footer.js +1 -1
  61. package/dist/components/content/Header.js +1 -1
  62. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  63. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  64. package/dist/components/content/Item/Item.js +1 -1
  65. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  66. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  67. package/dist/components/content/Layout/GridLayout.js +1 -1
  68. package/dist/components/content/Layout/Layout.js +1 -1
  69. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  70. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  71. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  72. package/dist/components/content/Layout/LayoutContent.js +1 -1
  73. package/dist/components/content/Layout/LayoutContext.js +1 -1
  74. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  75. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  76. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  77. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  78. package/dist/components/content/Layout/LayoutPane.js +1 -1
  79. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  80. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  81. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  82. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  83. package/dist/components/content/Layout/index.js +1 -1
  84. package/dist/components/content/Layout/utils.js +1 -1
  85. package/dist/components/content/Paragraph.js +1 -1
  86. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  87. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  88. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  89. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  90. package/dist/components/content/Result/Result.js +1 -1
  91. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  92. package/dist/components/content/Tag/Tag.js +1 -1
  93. package/dist/components/content/Text.js +1 -1
  94. package/dist/components/content/TextItem/TextItem.js +1 -1
  95. package/dist/components/content/Title.js +1 -1
  96. package/dist/components/content/Tree/Tree.js +1 -1
  97. package/dist/components/content/Tree/TreeNode.js +1 -1
  98. package/dist/components/content/Tree/styled.js +1 -1
  99. package/dist/components/content/Tree/tree-index.js +1 -1
  100. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  101. package/dist/components/content/Tree/use-load-data.js +1 -1
  102. package/dist/components/content/highlightText.js +1 -1
  103. package/dist/components/content/use-auto-tooltip.js +1 -1
  104. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  105. package/dist/components/fields/Checkbox/CheckboxGroup.js +3 -3
  106. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  107. package/dist/components/fields/Checkbox/context.js +1 -1
  108. package/dist/components/fields/ComboBox/ComboBox.js +11 -7
  109. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  110. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  111. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  112. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  113. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  114. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  115. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  116. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  117. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  118. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  119. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  120. package/dist/components/fields/DatePicker/intl.js +1 -1
  121. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  122. package/dist/components/fields/DatePicker/props.js +1 -1
  123. package/dist/components/fields/DatePicker/utils.js +1 -1
  124. package/dist/components/fields/FileInput/FileInput.js +1 -1
  125. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  126. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -21
  127. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  128. package/dist/components/fields/Input/Input.js +1 -1
  129. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  130. package/dist/components/fields/ListBox/ListBox.js +2 -1
  131. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  132. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  133. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  134. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  135. package/dist/components/fields/Picker/Picker.js +1 -21
  136. package/dist/components/fields/Picker/Picker.js.map +1 -1
  137. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  138. package/dist/components/fields/RadioGroup/RadioGroup.js +3 -3
  139. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  140. package/dist/components/fields/RadioGroup/context.js +1 -1
  141. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  142. package/dist/components/fields/Select/Select.js +10 -7
  143. package/dist/components/fields/Select/Select.js.map +1 -1
  144. package/dist/components/fields/Slider/Gradation.js +1 -1
  145. package/dist/components/fields/Slider/HueSlider.js +1 -1
  146. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  147. package/dist/components/fields/Slider/Slider.js +1 -1
  148. package/dist/components/fields/Slider/SliderBase.js +1 -1
  149. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  150. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  151. package/dist/components/fields/Slider/elements.js +1 -1
  152. package/dist/components/fields/Slider/index.js +1 -1
  153. package/dist/components/fields/Switch/Switch.js +1 -1
  154. package/dist/components/fields/TextArea/TextArea.js +1 -1
  155. package/dist/components/fields/TextInput/TextInput.js +1 -1
  156. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  157. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  158. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  159. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  160. package/dist/components/form/Form/Field.js +1 -1
  161. package/dist/components/form/Form/Form.d.ts +1 -2
  162. package/dist/components/form/Form/Form.js +3 -3
  163. package/dist/components/form/Form/Form.js.map +1 -1
  164. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  165. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  166. package/dist/components/form/Form/SubmitError.js +1 -1
  167. package/dist/components/form/Form/index.d.ts +1 -1
  168. package/dist/components/form/Form/index.js +1 -1
  169. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  170. package/dist/components/form/Form/use-field/use-field.js +1 -1
  171. package/dist/components/form/Form/use-form.js +1 -1
  172. package/dist/components/form/Form/validation.js +1 -1
  173. package/dist/components/form/Label.js +3 -3
  174. package/dist/components/form/Label.js.map +1 -1
  175. package/dist/components/form/wrapper.js +1 -1
  176. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  177. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  178. package/dist/components/layout/Flex.js +1 -1
  179. package/dist/components/layout/Flow.js +1 -1
  180. package/dist/components/layout/Grid.js +1 -1
  181. package/dist/components/layout/Panel.js +1 -1
  182. package/dist/components/layout/Prefix.js +1 -1
  183. package/dist/components/layout/ResizablePanel.js +1 -1
  184. package/dist/components/layout/Space.js +1 -1
  185. package/dist/components/layout/Suffix.js +1 -1
  186. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  187. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  188. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  189. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  190. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  191. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  192. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  193. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  194. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  195. package/dist/components/navigation/Tabs/styled.js +1 -1
  196. package/dist/components/navigation/Tabs/types.js +1 -1
  197. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  198. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  199. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  200. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  201. package/dist/components/other/Calendar/Calendar.js +1 -1
  202. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  203. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  204. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  205. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  206. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  207. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  208. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  209. package/dist/components/overlays/Dialog/Dialog.d.ts +1 -2
  210. package/dist/components/overlays/Dialog/Dialog.js +3 -3
  211. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  212. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  213. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  214. package/dist/components/overlays/Dialog/DialogTrigger.js +54 -8
  215. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  216. package/dist/components/overlays/Dialog/context.js +1 -1
  217. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  218. package/dist/components/overlays/Modal/Modal.js +3 -3
  219. package/dist/components/overlays/Modal/Modal.js.map +1 -1
  220. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  221. package/dist/components/overlays/Modal/Overlay.js +1 -1
  222. package/dist/components/overlays/Modal/Popover.js +1 -1
  223. package/dist/components/overlays/Modal/Tray.js +3 -3
  224. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  225. package/dist/components/overlays/Modal/Underlay.js +1 -1
  226. package/dist/components/overlays/Notifications/Notification.js +1 -1
  227. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  228. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  229. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  230. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  231. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  232. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  233. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  234. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  235. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  236. package/dist/components/overlays/Notifications/index.js +1 -1
  237. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  238. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  239. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  240. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  241. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  242. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  243. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  244. package/dist/components/overlays/Toast/index.js +1 -1
  245. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  246. package/dist/components/overlays/Toast/useToast.js +1 -1
  247. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  248. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  249. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  250. package/dist/components/overlays/Tooltip/context.js +1 -1
  251. package/dist/components/portal/Portal.js +1 -1
  252. package/dist/components/portal/PortalProvider.js +1 -1
  253. package/dist/components/portal/usePortal.js +1 -1
  254. package/dist/components/shared/DraggableCollection.js +1 -1
  255. package/dist/components/shared/InvalidIcon.js +1 -1
  256. package/dist/components/shared/ValidIcon.js +1 -1
  257. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  258. package/dist/components/status/Spin/Cube.js +1 -1
  259. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  260. package/dist/components/status/Spin/Spin.js +1 -1
  261. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  262. package/dist/data/item-themes.js +1 -1
  263. package/dist/data/themes.js +1 -1
  264. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  265. package/dist/icons/AdjustmentsIcon.js +1 -1
  266. package/dist/icons/AiIcon.js +1 -1
  267. package/dist/icons/AreaChartIcon.js +1 -1
  268. package/dist/icons/BackwardIcon.js +1 -1
  269. package/dist/icons/BarChartIcon.js +1 -1
  270. package/dist/icons/BellFilledIcon.js +1 -1
  271. package/dist/icons/BellIcon.js +1 -1
  272. package/dist/icons/BooleanIcon.js +1 -1
  273. package/dist/icons/CalendarEditIcon.js +1 -1
  274. package/dist/icons/CalendarIcon.js +1 -1
  275. package/dist/icons/CaretDownIcon.js +1 -1
  276. package/dist/icons/CaretUpIcon.js +1 -1
  277. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  278. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  279. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  280. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  281. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  282. package/dist/icons/ChartBarLineIcon.js +1 -1
  283. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  284. package/dist/icons/ChartBarStackedIcon.js +1 -1
  285. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  286. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  287. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  288. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  289. package/dist/icons/ChartBubbleIcon.js +1 -1
  290. package/dist/icons/ChartDonut2Icon.js +1 -1
  291. package/dist/icons/ChartFunnelIcon.js +1 -1
  292. package/dist/icons/ChartHeatmapIcon.js +1 -1
  293. package/dist/icons/ChartKPIIcon.js +1 -1
  294. package/dist/icons/ChartPie2Icon.js +1 -1
  295. package/dist/icons/ChartScatterIcon.js +1 -1
  296. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  297. package/dist/icons/CheckCircleIcon.js +1 -1
  298. package/dist/icons/CheckIcon.js +1 -1
  299. package/dist/icons/CircleFilledIcon.js +1 -1
  300. package/dist/icons/ClearIcon.js +1 -1
  301. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  302. package/dist/icons/CloseCircleIcon.js +1 -1
  303. package/dist/icons/CloseIcon.js +1 -1
  304. package/dist/icons/CodeIcon.js +1 -1
  305. package/dist/icons/ColumnTotalIcon.js +1 -1
  306. package/dist/icons/CopyIcon.js +1 -1
  307. package/dist/icons/CountIcon.js +1 -1
  308. package/dist/icons/CubeIcon.js +1 -1
  309. package/dist/icons/CubePauseIcon.js +1 -1
  310. package/dist/icons/CubePlayIcon.js +1 -1
  311. package/dist/icons/CurrencyDollarIcon.js +1 -1
  312. package/dist/icons/DangerIcon.js +1 -1
  313. package/dist/icons/DashboardIcon.js +1 -1
  314. package/dist/icons/DatabaseIcon.js +1 -1
  315. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  316. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  317. package/dist/icons/DirectionIcon.js +1 -1
  318. package/dist/icons/DonutIcon.js +1 -1
  319. package/dist/icons/DownIcon.js +1 -1
  320. package/dist/icons/EditIcon.js +1 -1
  321. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  322. package/dist/icons/ExclamationCircleIcon.js +1 -1
  323. package/dist/icons/ExclamationIcon.js +1 -1
  324. package/dist/icons/EyeIcon.js +1 -1
  325. package/dist/icons/EyeInvisibleIcon.js +1 -1
  326. package/dist/icons/FilterIcon.js +1 -1
  327. package/dist/icons/FolderFilledIcon.js +1 -1
  328. package/dist/icons/FolderIcon.js +1 -1
  329. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  330. package/dist/icons/FolderOpenIcon.js +1 -1
  331. package/dist/icons/ForwardIcon.js +1 -1
  332. package/dist/icons/GripVerticalIcon.js +1 -1
  333. package/dist/icons/HierarchyIcon.js +1 -1
  334. package/dist/icons/HierarchyOpenIcon.js +1 -1
  335. package/dist/icons/Icon.js +1 -1
  336. package/dist/icons/InfoCircleIcon.js +1 -1
  337. package/dist/icons/InfoIcon.js +1 -1
  338. package/dist/icons/KeyIcon.js +1 -1
  339. package/dist/icons/LeftIcon.js +1 -1
  340. package/dist/icons/LineChartIcon.js +1 -1
  341. package/dist/icons/LoadingIcon.js +1 -1
  342. package/dist/icons/LockFilledIcon.js +1 -1
  343. package/dist/icons/LockIcon.js +1 -1
  344. package/dist/icons/MoreIcon.js +1 -1
  345. package/dist/icons/NotAllowedIcon.js +1 -1
  346. package/dist/icons/Number123Icon.js +1 -1
  347. package/dist/icons/NumberIcon.js +1 -1
  348. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  349. package/dist/icons/PauseCircleIcon.js +1 -1
  350. package/dist/icons/PauseIcon.js +1 -1
  351. package/dist/icons/PercentageIcon.js +1 -1
  352. package/dist/icons/PieChartIcon.js +1 -1
  353. package/dist/icons/PlayCircleIcon.js +1 -1
  354. package/dist/icons/PlayIcon.js +1 -1
  355. package/dist/icons/PlusIcon.js +1 -1
  356. package/dist/icons/ProgressBarIcon.js +1 -1
  357. package/dist/icons/ReloadIcon.js +1 -1
  358. package/dist/icons/ReportIcon.js +1 -1
  359. package/dist/icons/ReturnIcon.js +1 -1
  360. package/dist/icons/RightIcon.js +1 -1
  361. package/dist/icons/RowTotalsIcon.js +1 -1
  362. package/dist/icons/SchemeIcon.js +1 -1
  363. package/dist/icons/SearchIcon.js +1 -1
  364. package/dist/icons/SemanticQueryIcon.js +1 -1
  365. package/dist/icons/SettingsIcon.js +1 -1
  366. package/dist/icons/ShieldFilledIcon.js +1 -1
  367. package/dist/icons/ShieldIcon.js +1 -1
  368. package/dist/icons/SlashIcon.js +1 -1
  369. package/dist/icons/SparklesIcon.js +1 -1
  370. package/dist/icons/SqlIcon.js +1 -1
  371. package/dist/icons/StatsIcon.js +1 -1
  372. package/dist/icons/StopIcon.js +1 -1
  373. package/dist/icons/StringIcon.js +1 -1
  374. package/dist/icons/SubtotalsIcon.js +1 -1
  375. package/dist/icons/SwitchIcon.js +1 -1
  376. package/dist/icons/TableIcon.js +1 -1
  377. package/dist/icons/ThumbsDownIcon.js +1 -1
  378. package/dist/icons/ThumbsUpIcon.js +1 -1
  379. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  380. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  381. package/dist/icons/ThunderboltIcon.js +1 -1
  382. package/dist/icons/TimeIcon.js +1 -1
  383. package/dist/icons/TrashIcon.js +1 -1
  384. package/dist/icons/UnlockIcon.js +1 -1
  385. package/dist/icons/UpIcon.js +1 -1
  386. package/dist/icons/UserGroupIcon.js +1 -1
  387. package/dist/icons/UserIcon.js +1 -1
  388. package/dist/icons/UserLockIcon.js +1 -1
  389. package/dist/icons/ViewIcon.js +1 -1
  390. package/dist/icons/WarningFilledIcon.js +1 -1
  391. package/dist/icons/WarningIcon.js +1 -1
  392. package/dist/icons/wrap-icon.js +1 -1
  393. package/dist/index.d.ts +2 -1
  394. package/dist/index.js +3 -2
  395. package/dist/index.js.map +1 -1
  396. package/dist/provider.js +1 -1
  397. package/dist/providers/TrackingProvider.js +1 -1
  398. package/dist/providers/navigationAdapter.default.js +1 -1
  399. package/dist/tokens/base.js +1 -1
  400. package/dist/tokens/colors.js +1 -1
  401. package/dist/tokens/index.js +1 -1
  402. package/dist/tokens/layout.js +1 -1
  403. package/dist/tokens/palette.js +1 -1
  404. package/dist/tokens/shadows.js +1 -1
  405. package/dist/tokens/sizes.js +1 -1
  406. package/dist/tokens/spacing.js +1 -1
  407. package/dist/tokens/typography.js +1 -1
  408. package/dist/utils/ResizeSensor.js +1 -1
  409. package/dist/utils/index.d.ts +1 -0
  410. package/dist/utils/is-dev-env.js +1 -1
  411. package/dist/utils/modules.js +1 -1
  412. package/dist/utils/promise.js +1 -1
  413. package/dist/utils/raf.js +1 -1
  414. package/dist/utils/random.js +1 -1
  415. package/dist/utils/range.js +1 -1
  416. package/dist/utils/react/RenderCache.js +1 -1
  417. package/dist/utils/react/Slots.js +1 -1
  418. package/dist/utils/react/chain.js +1 -1
  419. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  420. package/dist/utils/react/index.d.ts +1 -0
  421. package/dist/utils/react/index.js +2 -1
  422. package/dist/utils/react/interactions.js +1 -1
  423. package/dist/utils/react/isTextOnly.js +1 -1
  424. package/dist/utils/react/mapProps.js +1 -1
  425. package/dist/utils/react/mergeProps.js +1 -1
  426. package/dist/utils/react/nullableValue.js +1 -1
  427. package/dist/utils/react/resolveIcon.js +1 -1
  428. package/dist/utils/react/sharedStore.js +1 -1
  429. package/dist/utils/react/useCombinedRefs.js +1 -1
  430. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  431. package/dist/utils/react/useEventBus.js +26 -17
  432. package/dist/utils/react/useEventBus.js.map +1 -1
  433. package/dist/utils/react/useId.js +1 -1
  434. package/dist/utils/react/useIsDarwin.js +1 -1
  435. package/dist/utils/react/useKeySymbols.js +1 -1
  436. package/dist/utils/react/useLayoutEffect.js +1 -1
  437. package/dist/utils/react/useLocalStorage.js +1 -1
  438. package/dist/utils/react/useMergeStyles.js +1 -1
  439. package/dist/utils/react/usePopoverSync.d.ts +116 -0
  440. package/dist/utils/react/usePopoverSync.js +131 -11
  441. package/dist/utils/react/usePopoverSync.js.map +1 -1
  442. package/dist/utils/react/useQaProps.js +1 -1
  443. package/dist/utils/react/useViewportSize.js +1 -1
  444. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  445. package/dist/utils/selection.js +1 -1
  446. package/dist/utils/styles.js +1 -1
  447. package/dist/utils/tree.js +1 -1
  448. package/dist/utils/warnings.js +1 -1
  449. package/dist/version.js +2 -2
  450. package/docs/components/actions/Button.md +102 -24
  451. package/docs/components/actions/ItemButton.md +71 -34
  452. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/providers/navigationAdapter.default.ts
3
3
  /**
4
4
  * Converts a Path object to a string URL
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/tokens/base.ts
3
3
  /**
4
4
  * Base design system tokens.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { PALETTE_TOKENS } from "./palette.js";
3
3
 
4
4
  //#region src/tokens/colors.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { BASE_TOKENS } from "./base.js";
3
3
  import { COLOR_TOKENS } from "./colors.js";
4
4
  import { LAYOUT_TOKENS } from "./layout.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/tokens/layout.ts
3
3
  /**
4
4
  * Layout-related tokens for common UI dimensions.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { glaze } from "@tenphi/glaze";
3
3
 
4
4
  //#region src/tokens/palette.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/tokens/shadows.ts
3
3
  /**
4
4
  * Shadow tokens using tasty shorthand syntax.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/tokens/sizes.ts
3
3
  /**
4
4
  * Component size values in pixels.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/tokens/spacing.ts
3
3
  /**
4
4
  * Spacing tokens using tasty multiplier syntax.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/tokens/typography.ts
3
3
  /**
4
4
  * Typography presets for headings, text, and special styles.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/utils/ResizeSensor.ts
3
3
  /**
4
4
  * Iterate over each of the provided element(s).
@@ -10,6 +10,7 @@ import { wrapNodeIfPlain } from "./react/wrapNodeIfPlain.js";
10
10
  import { useViewportSize } from "./react/useViewportSize.js";
11
11
  import { useQaProps } from "./react/useQaProps.js";
12
12
  import { EventBusContextValue, EventBusListener, EventBusProvider, useEventBus, useEventListener } from "./react/useEventBus.js";
13
+ import { UsePopoverSyncOptions, useDismissParentPopover, usePopoverSync } from "./react/usePopoverSync.js";
13
14
  import { UseControlledFocusVisibleResult, useControlledFocusVisible } from "./react/useControlledFocusVisible.js";
14
15
  import { RenderCache, RenderCacheProps } from "./react/RenderCache.js";
15
16
  import { useLocalStorage } from "./react/useLocalStorage.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/utils/is-dev-env.ts
3
3
  function isDevEnv() {
4
4
  if (typeof window !== "undefined" && window.localStorage) try {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/utils/modules.ts
3
3
  function extractModule(promise) {
4
4
  return promise.then((module) => module.default || module);
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/utils/promise.ts
3
3
  function timeout(ms = 30) {
4
4
  return new Promise((resolve) => {
package/dist/utils/raf.js CHANGED
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/utils/raf.ts
3
3
  /**
4
4
  * Chains N requestAnimationFrame calls and returns a cancel function.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/utils/random.ts
3
3
  function random(min, max) {
4
4
  const realMin = min < max ? min : max;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/utils/range.ts
3
3
  function range(count) {
4
4
  return Array.from({ length: count }, (_, i) => i);
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { useRef } from "react";
3
3
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { mergeProps } from "./mergeProps.js";
3
3
  import { Children, cloneElement, createContext, useContext, useMemo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/utils/react/chain.ts
3
3
  /**
4
4
  * Calls all functions in the order they were chained with the same arguments.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/utils/react/forwardRefWithGenerics.tsx
3
3
  /**
4
4
  * A helper for creating forwardRef components with generic types.
@@ -10,6 +10,7 @@ import { wrapNodeIfPlain } from "./wrapNodeIfPlain.js";
10
10
  import { useViewportSize } from "./useViewportSize.js";
11
11
  import { useQaProps } from "./useQaProps.js";
12
12
  import { EventBusContextValue, EventBusListener, EventBusProvider, useEventBus, useEventListener } from "./useEventBus.js";
13
+ import { UsePopoverSyncOptions, useDismissParentPopover, usePopoverSync } from "./usePopoverSync.js";
13
14
  import { UseControlledFocusVisibleResult, useControlledFocusVisible } from "./useControlledFocusVisible.js";
14
15
  import { RenderCache, RenderCacheProps } from "./RenderCache.js";
15
16
  import { useLocalStorage } from "./useLocalStorage.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { chain } from "./chain.js";
3
3
  import { forwardRefWithGenerics } from "./forwardRefWithGenerics.js";
4
4
  import { isTextOnly } from "./isTextOnly.js";
@@ -10,6 +10,7 @@ import { wrapNodeIfPlain } from "./wrapNodeIfPlain.js";
10
10
  import { useViewportSize } from "./useViewportSize.js";
11
11
  import { useQaProps } from "./useQaProps.js";
12
12
  import { EventBusProvider, useEventBus, useEventListener } from "./useEventBus.js";
13
+ import { useDismissParentPopover, usePopoverSync } from "./usePopoverSync.js";
13
14
  import { useControlledFocusVisible } from "./useControlledFocusVisible.js";
14
15
  import { RenderCache } from "./RenderCache.js";
15
16
  import { useLocalStorage } from "./useLocalStorage.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { useState } from "react";
3
3
  import { useFocus, useFocusVisible } from "react-aria";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { Children, isValidElement } from "react";
3
3
 
4
4
  //#region src/utils/react/isTextOnly.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/utils/react/mapProps.ts
3
3
  /** Converts AriaButtonProps to CubeButtonProps */
4
4
  function ariaToCubeButtonProps(props) {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { chain } from "./chain.js";
3
3
  import { mergeIds } from "./useId.js";
4
4
  import { mergeStyles } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/utils/react/nullableValue.ts
3
3
  function castNullableStringValue(props) {
4
4
  return castNullableField(props, ["value", "defaultValue"], "string", (v) => String(v));
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  //#region src/utils/react/resolveIcon.ts
3
3
  /**
4
4
  * Resolves a dynamic icon prop to its content and slot state.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { useEvent } from "../../_internal/hooks/use-event.js";
3
3
  import { useSyncExternalStore } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { useEffect, useRef } from "react";
3
3
 
4
4
  //#region src/utils/react/useCombinedRefs.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { createSharedStore } from "./sharedStore.js";
3
3
  import { useEffect } from "react";
4
4
  import { useFocusVisible } from "react-aria";
@@ -1,5 +1,5 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
2
- import React, { createContext, useCallback, useContext, useEffect, useRef } from "react";
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
+ import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef } from "react";
3
3
 
4
4
  //#region src/utils/react/useEventBus.ts
5
5
  const EventBusContext = createContext(null);
@@ -18,6 +18,7 @@ const EventBusContext = createContext(null);
18
18
  * ```
19
19
  */
20
20
  function EventBusProvider({ children }) {
21
+ const parentBus = useContext(EventBusContext);
21
22
  const listeners = useRef({});
22
23
  const off = useCallback((event, listener) => {
23
24
  const eventListeners = listeners.current[event];
@@ -30,22 +31,30 @@ function EventBusProvider({ children }) {
30
31
  const eventListeners = listeners.current[event];
31
32
  if (eventListeners) eventListeners.forEach((listener) => listener(data));
32
33
  }, []);
33
- const contextValue = {
34
- emit: useCallback((event, data) => {
35
- setTimeout(() => {
36
- emitSync(event, data);
37
- }, 0);
38
- }, []),
34
+ const emit = useCallback((event, data) => {
35
+ setTimeout(() => {
36
+ emitSync(event, data);
37
+ }, 0);
38
+ }, [emitSync]);
39
+ const on = useCallback((event, listener) => {
40
+ if (!listeners.current[event]) listeners.current[event] = [];
41
+ listeners.current[event].push(listener);
42
+ return () => {
43
+ off(event, listener);
44
+ };
45
+ }, [off]);
46
+ const localContextValue = useMemo(() => ({
47
+ emit,
39
48
  emitSync,
40
- on: useCallback((event, listener) => {
41
- if (!listeners.current[event]) listeners.current[event] = [];
42
- listeners.current[event].push(listener);
43
- return () => {
44
- off(event, listener);
45
- };
46
- }, [off]),
49
+ on,
47
50
  off
48
- };
51
+ }), [
52
+ emit,
53
+ emitSync,
54
+ on,
55
+ off
56
+ ]);
57
+ const contextValue = parentBus ?? localContextValue;
49
58
  return React.createElement(EventBusContext.Provider, { value: contextValue }, children);
50
59
  }
51
60
  /**
@@ -121,5 +130,5 @@ function useEventListener(event, listener, deps = []) {
121
130
  }
122
131
 
123
132
  //#endregion
124
- export { EventBusProvider, useEventBus, useEventListener };
133
+ export { EventBusContext, EventBusProvider, useEventBus, useEventListener };
125
134
  //# sourceMappingURL=useEventBus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEventBus.js","names":[],"sources":["../../../src/utils/react/useEventBus.ts"],"sourcesContent":["import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from 'react';\n\nexport type EventBusListener<T = any> = (data: T) => void;\n\nexport interface EventBusContextValue {\n emit: <T = any>(event: string, data?: T) => void;\n emitSync: <T = any>(event: string, data?: T) => void;\n on: <T = any>(event: string, listener: EventBusListener<T>) => () => void;\n off: <T = any>(event: string, listener: EventBusListener<T>) => void;\n}\n\nconst EventBusContext = createContext<EventBusContextValue | null>(null);\n\nexport interface EventBusProviderProps {\n children: ReactNode;\n}\n\n/**\n * EventBusProvider provides a global event system for the application.\n *\n * @example\n * ```tsx\n * function App() {\n * return (\n * <EventBusProvider>\n * <YourComponents />\n * </EventBusProvider>\n * );\n * }\n * ```\n */\nexport function EventBusProvider({ children }: EventBusProviderProps) {\n const listeners = useRef<Record<string, EventBusListener[]>>({});\n\n const off = useCallback(\n <T = any>(event: string, listener: EventBusListener<T>) => {\n const eventListeners = listeners.current[event];\n if (eventListeners) {\n listeners.current[event] = eventListeners.filter((l) => l !== listener);\n\n // Clean up empty event arrays\n if (listeners.current[event].length === 0) {\n delete listeners.current[event];\n }\n }\n },\n [],\n );\n\n const emitSync = useCallback(<T = any>(event: string, data?: T) => {\n const eventListeners = listeners.current[event];\n if (eventListeners) {\n eventListeners.forEach((listener) => listener(data));\n }\n }, []);\n\n const emit = useCallback(<T = any>(event: string, data?: T) => {\n // Use setTimeout to ensure async emission after current render cycle\n setTimeout(() => {\n emitSync(event, data);\n }, 0);\n }, []);\n\n const on = useCallback(\n <T = any>(event: string, listener: EventBusListener<T>) => {\n if (!listeners.current[event]) {\n listeners.current[event] = [];\n }\n listeners.current[event].push(listener);\n\n // Return cleanup function\n return () => {\n off(event, listener);\n };\n },\n [off],\n );\n\n const contextValue: EventBusContextValue = {\n emit,\n emitSync,\n on,\n off,\n };\n\n return React.createElement(\n EventBusContext.Provider,\n { value: contextValue },\n children,\n );\n}\n\n/**\n * Hook to access the event bus functionality.\n * Must be used within an EventBusProvider.\n *\n * @example\n * ```tsx\n * function Component() {\n * const { emit, emitSync, on } = useEventBus();\n *\n * const handleClick = () => {\n * emit('user-action', { type: 'click', target: 'button' });\n * };\n *\n * const handleSyncAction = () => {\n * emitSync('sync-action', { immediate: true });\n * };\n *\n * useEffect(() => {\n * const unsubscribe = on('data-updated', (data) => {\n * console.log('Data updated:', data);\n * });\n *\n * return unsubscribe;\n * }, [on]);\n *\n * return (\n * <div>\n * <button onClick={handleClick}>Async Event</button>\n * <button onClick={handleSyncAction}>Sync Event</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useEventBus(): EventBusContextValue {\n const context = useContext(EventBusContext);\n\n if (!context) {\n throw new Error('useEventBus must be used within an EventBusProvider');\n }\n\n return context;\n}\n\n/**\n * Convenience hook for subscribing to events with automatic cleanup.\n * The listener will be automatically unsubscribed when the component unmounts\n * or when the dependencies change.\n *\n * @param event - The event name to listen for\n * @param listener - The callback function to execute when the event is emitted\n * @param deps - Dependency array for the effect (similar to useEffect)\n *\n * @example\n * ```tsx\n * function NotificationComponent() {\n * const [message, setMessage] = useState('');\n *\n * useEventListener('notification', (data) => {\n * setMessage(data.message);\n * }, []);\n *\n * return <div>{message}</div>;\n * }\n * ```\n */\nexport function useEventListener<T = any>(\n event: string,\n listener: EventBusListener<T>,\n deps: React.DependencyList = [],\n) {\n const { on } = useEventBus();\n\n useEffect(() => {\n const unsubscribe = on(event, listener);\n return unsubscribe;\n }, [event, on, ...deps]);\n}\n"],"mappings":";;;;AAkBA,MAAM,kBAAkB,cAA2C,KAAK;;;;;;;;;;;;;;;AAoBxE,SAAgB,iBAAiB,EAAE,YAAmC;CACpE,MAAM,YAAY,OAA2C,EAAE,CAAC;CAEhE,MAAM,MAAM,aACA,OAAe,aAAkC;EACzD,MAAM,iBAAiB,UAAU,QAAQ;AACzC,MAAI,gBAAgB;AAClB,aAAU,QAAQ,SAAS,eAAe,QAAQ,MAAM,MAAM,SAAS;AAGvE,OAAI,UAAU,QAAQ,OAAO,WAAW,EACtC,QAAO,UAAU,QAAQ;;IAI/B,EAAE,CACH;CAED,MAAM,WAAW,aAAsB,OAAe,SAAa;EACjE,MAAM,iBAAiB,UAAU,QAAQ;AACzC,MAAI,eACF,gBAAe,SAAS,aAAa,SAAS,KAAK,CAAC;IAErD,EAAE,CAAC;CAwBN,MAAM,eAAqC;EACzC,MAvBW,aAAsB,OAAe,SAAa;AAE7D,oBAAiB;AACf,aAAS,OAAO,KAAK;MACpB,EAAE;KACJ,EAAE,CAAC;EAmBJ;EACA,IAlBS,aACC,OAAe,aAAkC;AACzD,OAAI,CAAC,UAAU,QAAQ,OACrB,WAAU,QAAQ,SAAS,EAAE;AAE/B,aAAU,QAAQ,OAAO,KAAK,SAAS;AAGvC,gBAAa;AACX,QAAI,OAAO,SAAS;;KAGxB,CAAC,IAAI,CACN;EAMC;EACD;AAED,QAAO,MAAM,cACX,gBAAgB,UAChB,EAAE,OAAO,cAAc,EACvB,SACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCH,SAAgB,cAAoC;CAClD,MAAM,UAAU,WAAW,gBAAgB;AAE3C,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,sDAAsD;AAGxE,QAAO;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,SAAgB,iBACd,OACA,UACA,OAA6B,EAAE,EAC/B;CACA,MAAM,EAAE,OAAO,aAAa;AAE5B,iBAAgB;AAEd,SADoB,GAAG,OAAO,SAAS;IAEtC;EAAC;EAAO;EAAI,GAAG;EAAK,CAAC"}
1
+ {"version":3,"file":"useEventBus.js","names":[],"sources":["../../../src/utils/react/useEventBus.ts"],"sourcesContent":["import React, {\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\n\nexport type EventBusListener<T = any> = (data: T) => void;\n\nexport interface EventBusContextValue {\n emit: <T = any>(event: string, data?: T) => void;\n emitSync: <T = any>(event: string, data?: T) => void;\n on: <T = any>(event: string, listener: EventBusListener<T>) => () => void;\n off: <T = any>(event: string, listener: EventBusListener<T>) => void;\n}\n\nexport const EventBusContext = createContext<EventBusContextValue | null>(null);\n\nexport interface EventBusProviderProps {\n children: ReactNode;\n}\n\n/**\n * EventBusProvider provides a global event system for the application.\n *\n * @example\n * ```tsx\n * function App() {\n * return (\n * <EventBusProvider>\n * <YourComponents />\n * </EventBusProvider>\n * );\n * }\n * ```\n */\nexport function EventBusProvider({ children }: EventBusProviderProps) {\n // If we're already inside a parent EventBusProvider (e.g. the global Root\n // one), DO NOT create a fresh bus — that would isolate listeners and\n // emitters across the boundary. This matters because overlays (Popover,\n // Modal, Tray) re-wrap their content with our `Provider` from\n // `provider.tsx`, which transparently nests an EventBusProvider. Cross-\n // overlay events such as `popover:dismiss-ancestor` (a Button inside a\n // popover footer dismissing the popover host) only work when both sides\n // share the same bus.\n const parentBus = useContext(EventBusContext);\n\n const listeners = useRef<Record<string, EventBusListener[]>>({});\n\n const off = useCallback(\n <T = any>(event: string, listener: EventBusListener<T>) => {\n const eventListeners = listeners.current[event];\n if (eventListeners) {\n listeners.current[event] = eventListeners.filter((l) => l !== listener);\n\n // Clean up empty event arrays\n if (listeners.current[event].length === 0) {\n delete listeners.current[event];\n }\n }\n },\n [],\n );\n\n const emitSync = useCallback(<T = any>(event: string, data?: T) => {\n const eventListeners = listeners.current[event];\n if (eventListeners) {\n eventListeners.forEach((listener) => listener(data));\n }\n }, []);\n\n const emit = useCallback(\n <T = any>(event: string, data?: T) => {\n setTimeout(() => {\n emitSync(event, data);\n }, 0);\n },\n [emitSync],\n );\n\n const on = useCallback(\n <T = any>(event: string, listener: EventBusListener<T>) => {\n if (!listeners.current[event]) {\n listeners.current[event] = [];\n }\n listeners.current[event].push(listener);\n\n // Return cleanup function\n return () => {\n off(event, listener);\n };\n },\n [off],\n );\n\n // Always compute the local contextValue so hook order stays stable, then\n // pick parent OR local. `useMemo` keeps the local value referentially\n // stable across renders — every consumer of `EventBusContext` (notably\n // `useDismissParentPopover` inside every `Button` / `ItemButton`) would\n // otherwise re-render on every render of this provider.\n const localContextValue = useMemo<EventBusContextValue>(\n () => ({ emit, emitSync, on, off }),\n [emit, emitSync, on, off],\n );\n\n const contextValue = parentBus ?? localContextValue;\n\n return React.createElement(\n EventBusContext.Provider,\n { value: contextValue },\n children,\n );\n}\n\n/**\n * Hook to access the event bus functionality.\n * Must be used within an EventBusProvider.\n *\n * @example\n * ```tsx\n * function Component() {\n * const { emit, emitSync, on } = useEventBus();\n *\n * const handleClick = () => {\n * emit('user-action', { type: 'click', target: 'button' });\n * };\n *\n * const handleSyncAction = () => {\n * emitSync('sync-action', { immediate: true });\n * };\n *\n * useEffect(() => {\n * const unsubscribe = on('data-updated', (data) => {\n * console.log('Data updated:', data);\n * });\n *\n * return unsubscribe;\n * }, [on]);\n *\n * return (\n * <div>\n * <button onClick={handleClick}>Async Event</button>\n * <button onClick={handleSyncAction}>Sync Event</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useEventBus(): EventBusContextValue {\n const context = useContext(EventBusContext);\n\n if (!context) {\n throw new Error('useEventBus must be used within an EventBusProvider');\n }\n\n return context;\n}\n\n/**\n * Convenience hook for subscribing to events with automatic cleanup.\n * The listener will be automatically unsubscribed when the component unmounts\n * or when the dependencies change.\n *\n * @param event - The event name to listen for\n * @param listener - The callback function to execute when the event is emitted\n * @param deps - Dependency array for the effect (similar to useEffect)\n *\n * @example\n * ```tsx\n * function NotificationComponent() {\n * const [message, setMessage] = useState('');\n *\n * useEventListener('notification', (data) => {\n * setMessage(data.message);\n * }, []);\n *\n * return <div>{message}</div>;\n * }\n * ```\n */\nexport function useEventListener<T = any>(\n event: string,\n listener: EventBusListener<T>,\n deps: React.DependencyList = [],\n) {\n const { on } = useEventBus();\n\n useEffect(() => {\n const unsubscribe = on(event, listener);\n return unsubscribe;\n }, [event, on, ...deps]);\n}\n"],"mappings":";;;;AAmBA,MAAa,kBAAkB,cAA2C,KAAK;;;;;;;;;;;;;;;AAoB/E,SAAgB,iBAAiB,EAAE,YAAmC;CASpE,MAAM,YAAY,WAAW,gBAAgB;CAE7C,MAAM,YAAY,OAA2C,EAAE,CAAC;CAEhE,MAAM,MAAM,aACA,OAAe,aAAkC;EACzD,MAAM,iBAAiB,UAAU,QAAQ;AACzC,MAAI,gBAAgB;AAClB,aAAU,QAAQ,SAAS,eAAe,QAAQ,MAAM,MAAM,SAAS;AAGvE,OAAI,UAAU,QAAQ,OAAO,WAAW,EACtC,QAAO,UAAU,QAAQ;;IAI/B,EAAE,CACH;CAED,MAAM,WAAW,aAAsB,OAAe,SAAa;EACjE,MAAM,iBAAiB,UAAU,QAAQ;AACzC,MAAI,eACF,gBAAe,SAAS,aAAa,SAAS,KAAK,CAAC;IAErD,EAAE,CAAC;CAEN,MAAM,OAAO,aACD,OAAe,SAAa;AACpC,mBAAiB;AACf,YAAS,OAAO,KAAK;KACpB,EAAE;IAEP,CAAC,SAAS,CACX;CAED,MAAM,KAAK,aACC,OAAe,aAAkC;AACzD,MAAI,CAAC,UAAU,QAAQ,OACrB,WAAU,QAAQ,SAAS,EAAE;AAE/B,YAAU,QAAQ,OAAO,KAAK,SAAS;AAGvC,eAAa;AACX,OAAI,OAAO,SAAS;;IAGxB,CAAC,IAAI,CACN;CAOD,MAAM,oBAAoB,eACjB;EAAE;EAAM;EAAU;EAAI;EAAK,GAClC;EAAC;EAAM;EAAU;EAAI;EAAI,CAC1B;CAED,MAAM,eAAe,aAAa;AAElC,QAAO,MAAM,cACX,gBAAgB,UAChB,EAAE,OAAO,cAAc,EACvB,SACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCH,SAAgB,cAAoC;CAClD,MAAM,UAAU,WAAW,gBAAgB;AAE3C,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,sDAAsD;AAGxE,QAAO;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,SAAgB,iBACd,OACA,UACA,OAA6B,EAAE,EAC/B;CACA,MAAM,EAAE,OAAO,aAAa;AAE5B,iBAAgB;AAEd,SADoB,GAAG,OAAO,SAAS;IAEtC;EAAC;EAAO;EAAI,GAAG;EAAK,CAAC"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "./useLayoutEffect.js";
3
3
  import { useEffect, useRef, useState } from "react";
4
4
  import { useSSRSafeId } from "@react-aria/ssr";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { useEffect, useState } from "react";
3
3
 
4
4
  //#region src/utils/react/useIsDarwin.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { useIsDarwin } from "./useIsDarwin.js";
3
3
  import { useMemo } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import * as React$1 from "react";
3
3
 
4
4
  //#region src/utils/react/useLayoutEffect.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { useEvent } from "../../_internal/hooks/use-event.js";
3
3
  import { useCallback, useSyncExternalStore } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.141.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.142.1 | Cube Dev Team */
2
2
  import { mergeStyles } from "@tenphi/tasty";
3
3
  import { useMemo } from "react";
4
4
 
@@ -0,0 +1,116 @@
1
+
2
+ import { RefObject } from "react";
3
+
4
+ //#region src/utils/react/usePopoverSync.d.ts
5
+ interface UsePopoverSyncOptions {
6
+ /** Stable identifier for this popover instance (typically a generateRandomId() memo). */
7
+ menuId: string;
8
+ /** Current open state of this popover. */
9
+ isOpen: boolean;
10
+ /** Called when another popover opens while this one is open. */
11
+ onClose: () => void;
12
+ /**
13
+ * When `false`, this popover does not participate in the sync (no listening,
14
+ * no emitting). Useful for "dummy" triggers that proxy a real one (see
15
+ * `MenuTrigger`'s `isDummy`). Defaults to `true`.
16
+ */
17
+ enabled?: boolean;
18
+ /**
19
+ * Ref to the popover's trigger element. When provided, the element is
20
+ * included in the `popover:open` emit payload so peers can detect whether
21
+ * the new opener is nested inside their own overlay (and skip closing in
22
+ * that case). Optional — omitting it preserves the legacy "always close on
23
+ * peer open" behaviour.
24
+ */
25
+ triggerRef?: RefObject<HTMLElement | null>;
26
+ /**
27
+ * Ref to the overlay/container element that hosts this popover's content.
28
+ * When provided, the listener performs a DOM `contains()` check on incoming
29
+ * peer triggers: peers whose trigger lives inside this container are
30
+ * considered nested children and do NOT close us.
31
+ */
32
+ containerRef?: RefObject<HTMLElement | null>;
33
+ /**
34
+ * Whether this overlay closes when a Button/ItemButton inside its container
35
+ * is pressed. Defaults to `true` (popover semantics — popovers are transient
36
+ * surfaces and any action inside them should dismiss them). Set to `false`
37
+ * for modals/trays/fullscreen dialogs — buttons inside a Dialog should not
38
+ * auto-close it. Requires `containerRef` to be set; without it the listener
39
+ * has no way to determine whether the dispatching button is "inside" this
40
+ * overlay and is effectively a no-op.
41
+ */
42
+ dismissOnInnerButtonPress?: boolean;
43
+ /**
44
+ * Whether this overlay closes when a peer popover opens. Defaults to `true`
45
+ * (popover semantics — only one popover open at a time). Set to `false` for
46
+ * modals/trays/fullscreen dialogs so a peer popover opening cannot bypass
47
+ * the dialog's own `isDismissable` / `onClose` handling and yank it shut.
48
+ *
49
+ * The host still EMITS `popover:open` regardless of this flag, so opening a
50
+ * modal/tray correctly dismisses any peer popover that was open before.
51
+ */
52
+ closeOnPeerOpen?: boolean;
53
+ }
54
+ /**
55
+ * Coordinates the "only one popover open at a time" invariant via the EventBus.
56
+ *
57
+ * - When `isOpen` flips `false -> true`, emits `popover:open` once.
58
+ * - While open, listens for peers' `popover:open` events and calls `onClose`.
59
+ *
60
+ * Implementation notes (ALL of these matter — losing any one re-introduces a
61
+ * race that surfaces only under rapid trigger switching, which is hard to
62
+ * reproduce in tests):
63
+ *
64
+ * 1. `isOpen` and `onClose` are read through refs inside the listener, so the
65
+ * subscription effect's dep array does NOT include `isOpen`/`onClose`. This
66
+ * keeps the listener identity stable across open/close transitions and
67
+ * avoids the unsubscribe-emit-resubscribe window where an emit can be
68
+ * delivered to a stale listener (or no listener).
69
+ * 2. The emit fires only on the `false -> true` transition, gated by
70
+ * `wasOpenRef`. A re-render where `isOpen` is still `true` must NOT
71
+ * re-emit, otherwise it could re-trigger listeners on peers that just
72
+ * opened in the same render flush.
73
+ * 3. The `enabled` flag short-circuits both effects symmetrically. When it
74
+ * flips off, `wasOpenRef` is reset so re-enabling later still emits if
75
+ * `isOpen` is true at that moment.
76
+ */
77
+ declare function usePopoverSync({
78
+ menuId,
79
+ isOpen,
80
+ onClose,
81
+ enabled,
82
+ triggerRef,
83
+ containerRef,
84
+ dismissOnInnerButtonPress,
85
+ closeOnPeerOpen
86
+ }: UsePopoverSyncOptions): void;
87
+ /**
88
+ * Hook that returns a dispatcher to close the popover that contains a given
89
+ * DOM element. Used by `Button` / `ItemButton` to implement the default
90
+ * "press inside a popover closes the popover" behaviour. Custom (non-Cube)
91
+ * interactive controls can call this directly:
92
+ *
93
+ * ```tsx
94
+ * const dismiss = useDismissParentPopover();
95
+ * <MyCustomPressable onPress={(e) => { doThing(); dismiss(e.currentTarget); }} />
96
+ * ```
97
+ *
98
+ * The actual dismiss is dispatched through the EventBus, which defers via
99
+ * `setTimeout(0)` — so the user's synchronous handler (and any React state
100
+ * updates it triggers) flushes BEFORE the popover closes. This is critical
101
+ * for the "open a hoisted modal from a popover footer" case: the modal
102
+ * mounts first, then the popover closes.
103
+ *
104
+ * Only popover-type containers (those that pass `dismissOnInnerButtonPress`
105
+ * as `true`, the default) react to the event. Modal/tray/fullscreen Dialog
106
+ * containers explicitly opt out so a Button inside their content does not
107
+ * auto-close them.
108
+ *
109
+ * When called outside an `EventBusProvider` (e.g. in unit tests that render
110
+ * a Button without wrapping in `<Root>`), the returned function is a no-op —
111
+ * the dismiss flow gracefully degrades rather than throwing.
112
+ */
113
+ declare function useDismissParentPopover(): (from: Element | null) => void;
114
+ //#endregion
115
+ export { UsePopoverSyncOptions, useDismissParentPopover, usePopoverSync };
116
+ //# sourceMappingURL=usePopoverSync.d.ts.map