@cube-dev/ui-kit 0.190.5 → 0.190.6

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 (599) hide show
  1. package/dist/CHANGELOG.md +20 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.js +1 -1
  19. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  20. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  21. package/dist/components/actions/ButtonSplit/context.js +1 -1
  22. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  23. package/dist/components/actions/CommandMenu/styled.js +1 -1
  24. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  25. package/dist/components/actions/ItemActionContext.js +1 -1
  26. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  27. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  28. package/dist/components/actions/Link/Link.js +1 -1
  29. package/dist/components/actions/Menu/Menu.js +1 -1
  30. package/dist/components/actions/Menu/MenuItem.js +1 -1
  31. package/dist/components/actions/Menu/MenuSection.js +1 -1
  32. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  35. package/dist/components/actions/Menu/context.js +1 -1
  36. package/dist/components/actions/Menu/styled.js +1 -1
  37. package/dist/components/actions/actions-run.js +1 -1
  38. package/dist/components/actions/index.js +1 -1
  39. package/dist/components/actions/use-action.js +1 -1
  40. package/dist/components/actions/use-anchored-menu.js +1 -1
  41. package/dist/components/actions/use-context-menu.js +1 -1
  42. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  43. package/dist/components/content/Alert/Alert.js +1 -1
  44. package/dist/components/content/Alert/use-alert.js +1 -1
  45. package/dist/components/content/Avatar/Avatar.js +1 -1
  46. package/dist/components/content/Badge/Badge.js +1 -1
  47. package/dist/components/content/Card/Card.js +1 -1
  48. package/dist/components/content/Content.js +1 -1
  49. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  50. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  51. package/dist/components/content/Disclosure/Disclosure.d.ts +5 -5
  52. package/dist/components/content/Disclosure/Disclosure.js +104 -75
  53. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  54. package/dist/components/content/Divider.js +1 -1
  55. package/dist/components/content/Footer.js +1 -1
  56. package/dist/components/content/Header.js +1 -1
  57. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  58. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  59. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  60. package/dist/components/content/Item/Item.js +1 -1
  61. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  62. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  63. package/dist/components/content/Layout/GridLayout.js +1 -1
  64. package/dist/components/content/Layout/Layout.js +1 -1
  65. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  66. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  67. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  68. package/dist/components/content/Layout/LayoutContent.js +1 -1
  69. package/dist/components/content/Layout/LayoutContext.js +1 -1
  70. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  71. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  72. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  73. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  74. package/dist/components/content/Layout/LayoutPane.js +1 -1
  75. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  76. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  77. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  78. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  79. package/dist/components/content/Layout/index.js +1 -1
  80. package/dist/components/content/Layout/utils.js +1 -1
  81. package/dist/components/content/Paragraph.js +1 -1
  82. package/dist/components/content/Placeholder/Placeholder.js +22 -20
  83. package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
  84. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  85. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  86. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  87. package/dist/components/content/Result/Result.js +1 -1
  88. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  89. package/dist/components/content/Tag/Tag.js +1 -1
  90. package/dist/components/content/Text.d.ts +28 -28
  91. package/dist/components/content/Text.js +1 -1
  92. package/dist/components/content/TextItem/TextItem.js +1 -1
  93. package/dist/components/content/Title.js +1 -1
  94. package/dist/components/content/Tree/Tree.js +1 -1
  95. package/dist/components/content/Tree/TreeNode.js +1 -1
  96. package/dist/components/content/Tree/styled.js +1 -1
  97. package/dist/components/content/Tree/tree-index.js +1 -1
  98. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  99. package/dist/components/content/Tree/use-load-data.js +1 -1
  100. package/dist/components/content/highlightText.js +1 -1
  101. package/dist/components/content/use-auto-tooltip.js +1 -1
  102. package/dist/components/data/DataTable/DataTable.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  104. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  105. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  106. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  107. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  108. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  109. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  110. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  111. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  112. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  113. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  114. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  115. package/dist/components/data/TableBase/RowCollection.js +1 -1
  116. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  117. package/dist/components/data/TableBase/TableRow.js +1 -1
  118. package/dist/components/data/TableBase/TableView.js +1 -1
  119. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  120. package/dist/components/data/TableBase/column-header.js +1 -1
  121. package/dist/components/data/TableBase/column-menu.js +1 -1
  122. package/dist/components/data/TableBase/column-styles.js +1 -1
  123. package/dist/components/data/TableBase/column-tint.js +1 -1
  124. package/dist/components/data/TableBase/row-menu.js +1 -1
  125. package/dist/components/data/TableBase/styled.js +1 -1
  126. package/dist/components/data/TableBase/table-tree.js +1 -1
  127. package/dist/components/data/TableBase/types.js +1 -1
  128. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  129. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  130. package/dist/components/data/TableBase/use-column-order.js +1 -1
  131. package/dist/components/data/TableBase/use-container-width.js +1 -1
  132. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  133. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  134. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  135. package/dist/components/data/TableBase/use-table-search.js +1 -1
  136. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  137. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  138. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  139. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  140. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  141. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  142. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  143. package/dist/components/fields/Checkbox/context.js +1 -1
  144. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  145. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  146. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  147. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  148. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  149. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  150. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  151. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  152. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  153. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  154. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  155. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  156. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  157. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  158. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  159. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  160. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  161. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  162. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  163. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  164. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  165. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  166. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  167. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  168. package/dist/components/fields/DatePicker/period.js +1 -1
  169. package/dist/components/fields/DatePicker/props.js +1 -1
  170. package/dist/components/fields/DatePicker/utils.js +1 -1
  171. package/dist/components/fields/FileInput/FileInput.js +1 -1
  172. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  173. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  174. package/dist/components/fields/Input/Input.js +1 -1
  175. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  176. package/dist/components/fields/ListBox/ListBox.js +1 -1
  177. package/dist/components/fields/ListBox/optionId.js +1 -1
  178. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  179. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  180. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  181. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  182. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  183. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  184. package/dist/components/fields/Picker/Picker.js +1 -1
  185. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  186. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  187. package/dist/components/fields/RadioGroup/context.js +1 -1
  188. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  189. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  190. package/dist/components/fields/Select/Select.d.ts +5 -5
  191. package/dist/components/fields/Select/Select.js +3 -4
  192. package/dist/components/fields/Select/Select.js.map +1 -1
  193. package/dist/components/fields/Slider/Gradation.js +1 -1
  194. package/dist/components/fields/Slider/HueSlider.js +1 -1
  195. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  196. package/dist/components/fields/Slider/Slider.js +1 -1
  197. package/dist/components/fields/Slider/SliderBase.js +3 -4
  198. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  199. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  200. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  201. package/dist/components/fields/Slider/elements.js +1 -1
  202. package/dist/components/fields/Slider/index.js +1 -1
  203. package/dist/components/fields/Switch/Switch.js +1 -1
  204. package/dist/components/fields/TagInput/TagInput.js +1 -1
  205. package/dist/components/fields/TagInput/TagList.js +1 -1
  206. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  207. package/dist/components/fields/TagInput/useTagError.js +1 -1
  208. package/dist/components/fields/TextArea/TextArea.js +1 -1
  209. package/dist/components/fields/TextInput/TextInput.js +1 -1
  210. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  211. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  212. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  213. package/dist/components/fields/TriggerActions.js +1 -1
  214. package/dist/components/fields/color/ColorPanel.js +1 -1
  215. package/dist/components/fields/color/channels.js +1 -1
  216. package/dist/components/fields/color/color.js +1 -1
  217. package/dist/components/fields/color/context.js +1 -1
  218. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  219. package/dist/components/form/Form/Field.js +1 -1
  220. package/dist/components/form/Form/Form.js +1 -1
  221. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  222. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  223. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  224. package/dist/components/form/Form/SubmitError.js +1 -1
  225. package/dist/components/form/Form/backend.js +1 -1
  226. package/dist/components/form/Form/index.js +1 -1
  227. package/dist/components/form/Form/modern/actions.js +1 -1
  228. package/dist/components/form/Form/modern/context.js +1 -1
  229. package/dist/components/form/Form/modern/controller.js +1 -1
  230. package/dist/components/form/Form/modern/field-binding.js +1 -1
  231. package/dist/components/form/Form/modern/field.js +1 -1
  232. package/dist/components/form/Form/modern/react.js +1 -1
  233. package/dist/components/form/Form/modern/store.js +1 -1
  234. package/dist/components/form/Form/modern/validation.js +1 -1
  235. package/dist/components/form/Form/modern/values.js +1 -1
  236. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  237. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  238. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  239. package/dist/components/form/Form/use-field/use-field.js +1 -1
  240. package/dist/components/form/Form/use-form.js +1 -1
  241. package/dist/components/form/Form/validation.js +1 -1
  242. package/dist/components/form/Label.js +1 -1
  243. package/dist/components/form/legacy-tooltip.js +1 -1
  244. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  245. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  246. package/dist/components/form/validation/use-validation-props.js +1 -1
  247. package/dist/components/form/wrapper.js +1 -1
  248. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +6 -8
  249. package/dist/components/helpers/DisplayTransition/DisplayTransition.js.map +1 -1
  250. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  251. package/dist/components/layout/Board/Board.js +1 -1
  252. package/dist/components/layout/Board/BoardProvider.js +1 -1
  253. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  254. package/dist/components/layout/Board/Widget.js +1 -1
  255. package/dist/components/layout/Board/WidgetHost.js +1 -1
  256. package/dist/components/layout/Board/board-context.js +1 -1
  257. package/dist/components/layout/Board/board-store.js +1 -1
  258. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  259. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  260. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  261. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  262. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  263. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  264. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  265. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  266. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  267. package/dist/components/layout/Board/index.js +1 -1
  268. package/dist/components/layout/Board/responsive-utils.js +1 -1
  269. package/dist/components/layout/Board/use-board-layout.js +1 -1
  270. package/dist/components/layout/Board/use-board-registry.js +1 -1
  271. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  272. package/dist/components/layout/Board/use-board-selection.js +1 -1
  273. package/dist/components/layout/Flex.js +1 -1
  274. package/dist/components/layout/Flow.js +1 -1
  275. package/dist/components/layout/Grid.js +1 -1
  276. package/dist/components/layout/Panel.js +1 -1
  277. package/dist/components/layout/Prefix.js +1 -1
  278. package/dist/components/layout/ResizablePanel.js +1 -1
  279. package/dist/components/layout/Space.js +1 -1
  280. package/dist/components/layout/Suffix.js +1 -1
  281. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  282. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  283. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  284. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  285. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  286. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  287. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  288. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  289. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  290. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  291. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  292. package/dist/components/navigation/Tabs/styled.js +1 -1
  293. package/dist/components/navigation/Tabs/types.js +1 -1
  294. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  295. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  296. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  297. package/dist/components/other/Calendar/Calendar.js +1 -1
  298. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  299. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  300. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  301. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  302. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  303. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  304. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  305. package/dist/components/other/Calendar/styled.js +1 -1
  306. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  307. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  308. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  309. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  310. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  311. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  312. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  313. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  314. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  315. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  316. package/dist/components/overlays/Dialog/context.js +1 -1
  317. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  318. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  319. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  320. package/dist/components/overlays/Modal/Modal.js +1 -1
  321. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  322. package/dist/components/overlays/Modal/Overlay.js +1 -1
  323. package/dist/components/overlays/Modal/Popover.js +1 -1
  324. package/dist/components/overlays/Modal/Tray.js +1 -1
  325. package/dist/components/overlays/Modal/Underlay.js +1 -1
  326. package/dist/components/overlays/Notifications/Notification.js +1 -1
  327. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  328. package/dist/components/overlays/Notifications/NotificationCard.js +5 -2
  329. package/dist/components/overlays/Notifications/NotificationCard.js.map +1 -1
  330. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  331. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  332. package/dist/components/overlays/Notifications/OverlayContainer.js +4 -2
  333. package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
  334. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  335. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  336. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  337. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  338. package/dist/components/overlays/Notifications/index.js +1 -1
  339. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  340. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  341. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  342. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  343. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  344. package/dist/components/overlays/Notifications/use-toast-state.js +2 -2
  345. package/dist/components/overlays/Notifications/use-toast-state.js.map +1 -1
  346. package/dist/components/overlays/Toast/ToastItem.js +9 -2
  347. package/dist/components/overlays/Toast/ToastItem.js.map +1 -1
  348. package/dist/components/overlays/Toast/index.js +1 -1
  349. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  350. package/dist/components/overlays/Toast/useToast.js +1 -1
  351. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  352. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  353. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  354. package/dist/components/overlays/Tooltip/context.js +1 -1
  355. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  356. package/dist/components/portal/Portal.js +1 -1
  357. package/dist/components/portal/PortalProvider.js +1 -1
  358. package/dist/components/portal/usePortal.js +1 -1
  359. package/dist/components/shared/DraggableCollection.js +1 -1
  360. package/dist/components/shared/InvalidIcon.js +1 -1
  361. package/dist/components/shared/ValidIcon.js +1 -1
  362. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  363. package/dist/components/status/Spin/Cube.js +1 -1
  364. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  365. package/dist/components/status/Spin/Spin.js +1 -1
  366. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  367. package/dist/data/item-themes.js +1 -1
  368. package/dist/data/themes.js +1 -1
  369. package/dist/eslint-plugin/defaults.generated.js +5 -1
  370. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  371. package/dist/eslint-plugin/index.js +1 -1
  372. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  373. package/dist/i18n/I18nProvider.js +1 -1
  374. package/dist/i18n/createFormatter.js +1 -1
  375. package/dist/i18n/index.js +1 -1
  376. package/dist/i18n/instance.js +1 -1
  377. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  378. package/dist/i18n/locales/en-US/uikit.js +1 -1
  379. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  380. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  381. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  382. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  383. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  384. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  385. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  386. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  387. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  388. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  389. package/dist/i18n/locales.js +1 -1
  390. package/dist/i18n/useFormatter.js +1 -1
  391. package/dist/i18n/useI18n.js +1 -1
  392. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  393. package/dist/icons/AdjustmentsIcon.js +1 -1
  394. package/dist/icons/AiIcon.js +1 -1
  395. package/dist/icons/AreaChartIcon.js +1 -1
  396. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  397. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  398. package/dist/icons/BackwardIcon.js +1 -1
  399. package/dist/icons/BarChartIcon.js +1 -1
  400. package/dist/icons/BellFilledIcon.js +1 -1
  401. package/dist/icons/BellIcon.js +1 -1
  402. package/dist/icons/BooleanIcon.js +1 -1
  403. package/dist/icons/CalendarEditIcon.js +1 -1
  404. package/dist/icons/CalendarIcon.js +1 -1
  405. package/dist/icons/CaretDownIcon.js +1 -1
  406. package/dist/icons/CaretUpIcon.js +1 -1
  407. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  408. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  409. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  410. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  411. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  412. package/dist/icons/ChartBarLineIcon.js +1 -1
  413. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  414. package/dist/icons/ChartBarStackedIcon.js +1 -1
  415. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  416. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  417. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  418. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  419. package/dist/icons/ChartBubbleIcon.js +1 -1
  420. package/dist/icons/ChartDonut2Icon.js +1 -1
  421. package/dist/icons/ChartFunnelIcon.js +1 -1
  422. package/dist/icons/ChartHeatmapIcon.js +1 -1
  423. package/dist/icons/ChartKPIIcon.js +1 -1
  424. package/dist/icons/ChartPie2Icon.js +1 -1
  425. package/dist/icons/ChartScatterIcon.js +1 -1
  426. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  427. package/dist/icons/CheckCircleIcon.js +1 -1
  428. package/dist/icons/CheckIcon.js +1 -1
  429. package/dist/icons/CircleFilledIcon.js +1 -1
  430. package/dist/icons/ClearIcon.js +1 -1
  431. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  432. package/dist/icons/CloseCircleIcon.js +1 -1
  433. package/dist/icons/CloseIcon.js +1 -1
  434. package/dist/icons/CodeIcon.js +1 -1
  435. package/dist/icons/ColumnTotalIcon.js +1 -1
  436. package/dist/icons/CopyIcon.js +1 -1
  437. package/dist/icons/CountIcon.js +1 -1
  438. package/dist/icons/CubeIcon.js +1 -1
  439. package/dist/icons/CubePauseIcon.js +1 -1
  440. package/dist/icons/CubePlayIcon.js +1 -1
  441. package/dist/icons/CurrencyDollarIcon.js +1 -1
  442. package/dist/icons/DangerIcon.js +1 -1
  443. package/dist/icons/DashboardIcon.js +1 -1
  444. package/dist/icons/DatabaseIcon.js +1 -1
  445. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  446. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  447. package/dist/icons/DirectionIcon.js +1 -1
  448. package/dist/icons/DonutIcon.js +1 -1
  449. package/dist/icons/DownIcon.js +1 -1
  450. package/dist/icons/EditIcon.js +1 -1
  451. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  452. package/dist/icons/ExclamationCircleIcon.js +1 -1
  453. package/dist/icons/ExclamationIcon.js +1 -1
  454. package/dist/icons/EyeIcon.js +1 -1
  455. package/dist/icons/EyeInvisibleIcon.js +1 -1
  456. package/dist/icons/FilterIcon.js +1 -1
  457. package/dist/icons/FolderFilledIcon.js +1 -1
  458. package/dist/icons/FolderIcon.js +1 -1
  459. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  460. package/dist/icons/FolderOpenIcon.js +1 -1
  461. package/dist/icons/ForwardIcon.js +1 -1
  462. package/dist/icons/GripVerticalIcon.js +1 -1
  463. package/dist/icons/HierarchyIcon.js +1 -1
  464. package/dist/icons/HierarchyOpenIcon.js +1 -1
  465. package/dist/icons/Icon.js +1 -1
  466. package/dist/icons/InfoCircleIcon.js +1 -1
  467. package/dist/icons/InfoIcon.js +1 -1
  468. package/dist/icons/KeyIcon.js +1 -1
  469. package/dist/icons/LeftIcon.js +1 -1
  470. package/dist/icons/LineChartIcon.js +1 -1
  471. package/dist/icons/LoadingIcon.js +1 -1
  472. package/dist/icons/LockFilledIcon.js +1 -1
  473. package/dist/icons/LockIcon.js +1 -1
  474. package/dist/icons/MoreIcon.js +1 -1
  475. package/dist/icons/NotAllowedIcon.js +1 -1
  476. package/dist/icons/Number123Icon.js +1 -1
  477. package/dist/icons/NumberIcon.js +1 -1
  478. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  479. package/dist/icons/PauseCircleIcon.js +1 -1
  480. package/dist/icons/PauseIcon.js +1 -1
  481. package/dist/icons/PercentageIcon.js +1 -1
  482. package/dist/icons/PieChartIcon.js +1 -1
  483. package/dist/icons/PipetteIcon.js +1 -1
  484. package/dist/icons/PlayCircleIcon.js +1 -1
  485. package/dist/icons/PlayIcon.js +1 -1
  486. package/dist/icons/PlusIcon.js +1 -1
  487. package/dist/icons/ProgressBarIcon.js +1 -1
  488. package/dist/icons/ReloadIcon.js +1 -1
  489. package/dist/icons/ReportIcon.js +1 -1
  490. package/dist/icons/ReturnIcon.js +1 -1
  491. package/dist/icons/RightIcon.js +1 -1
  492. package/dist/icons/RowTotalsIcon.js +1 -1
  493. package/dist/icons/SchemeIcon.js +1 -1
  494. package/dist/icons/SearchIcon.js +1 -1
  495. package/dist/icons/SemanticQueryIcon.js +1 -1
  496. package/dist/icons/SettingsIcon.js +1 -1
  497. package/dist/icons/ShieldFilledIcon.js +1 -1
  498. package/dist/icons/ShieldIcon.js +1 -1
  499. package/dist/icons/SlashIcon.js +1 -1
  500. package/dist/icons/SparklesIcon.js +1 -1
  501. package/dist/icons/SqlIcon.js +1 -1
  502. package/dist/icons/StatsIcon.js +1 -1
  503. package/dist/icons/StopIcon.js +1 -1
  504. package/dist/icons/StringIcon.js +1 -1
  505. package/dist/icons/SubtotalsIcon.js +1 -1
  506. package/dist/icons/SwitchIcon.js +1 -1
  507. package/dist/icons/TableIcon.js +1 -1
  508. package/dist/icons/ThumbsDownIcon.js +1 -1
  509. package/dist/icons/ThumbsUpIcon.js +1 -1
  510. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  511. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  512. package/dist/icons/ThunderboltIcon.js +1 -1
  513. package/dist/icons/TimeIcon.js +1 -1
  514. package/dist/icons/TrashIcon.js +1 -1
  515. package/dist/icons/UnlockIcon.js +1 -1
  516. package/dist/icons/UpIcon.js +1 -1
  517. package/dist/icons/UserGroupIcon.js +1 -1
  518. package/dist/icons/UserIcon.js +1 -1
  519. package/dist/icons/UserLockIcon.js +1 -1
  520. package/dist/icons/ViewIcon.js +1 -1
  521. package/dist/icons/WarningFilledIcon.js +1 -1
  522. package/dist/icons/WarningIcon.js +1 -1
  523. package/dist/icons/wrap-icon.js +1 -1
  524. package/dist/index.js +1 -1
  525. package/dist/probe/canonicalize.js +1 -1
  526. package/dist/probe/css.js +1 -1
  527. package/dist/probe/index.js +1 -1
  528. package/dist/provider.js +1 -1
  529. package/dist/providers/TrackingProvider.js +1 -1
  530. package/dist/providers/navigationAdapter.default.js +1 -1
  531. package/dist/tokens/all-tokens.js +1 -1
  532. package/dist/tokens/base.js +1 -1
  533. package/dist/tokens/color-seed.js +1 -1
  534. package/dist/tokens/color-theme.js +1 -1
  535. package/dist/tokens/colors.js +1 -1
  536. package/dist/tokens/layout.js +1 -1
  537. package/dist/tokens/lazy-styles.js +1 -1
  538. package/dist/tokens/legacy-color.js +1 -1
  539. package/dist/tokens/palette-config.js +1 -1
  540. package/dist/tokens/palette.js +1 -1
  541. package/dist/tokens/resolve.js +1 -1
  542. package/dist/tokens/shadows.js +1 -1
  543. package/dist/tokens/sizes.js +1 -1
  544. package/dist/tokens/spacing.js +1 -1
  545. package/dist/tokens/typography.js +1 -1
  546. package/dist/utils/ResizeSensor.js +1 -1
  547. package/dist/utils/colors.js +1 -1
  548. package/dist/utils/dotize.js +1 -1
  549. package/dist/utils/is-dev-env.js +1 -1
  550. package/dist/utils/modules.js +1 -1
  551. package/dist/utils/promise.js +1 -1
  552. package/dist/utils/raf.js +1 -1
  553. package/dist/utils/random.js +1 -1
  554. package/dist/utils/range.js +1 -1
  555. package/dist/utils/react/RenderCache.js +1 -1
  556. package/dist/utils/react/Slots.js +1 -1
  557. package/dist/utils/react/chain.js +1 -1
  558. package/dist/utils/react/disabledProps.js +1 -1
  559. package/dist/utils/react/escapePropagation.js +1 -1
  560. package/dist/utils/react/forwardRefWithGenerics.d.ts +5 -19
  561. package/dist/utils/react/forwardRefWithGenerics.js +6 -20
  562. package/dist/utils/react/forwardRefWithGenerics.js.map +1 -1
  563. package/dist/utils/react/index.js +1 -1
  564. package/dist/utils/react/interactions.js +1 -1
  565. package/dist/utils/react/isTextOnly.js +1 -1
  566. package/dist/utils/react/mapProps.js +1 -1
  567. package/dist/utils/react/mergeProps.js +1 -1
  568. package/dist/utils/react/nullableValue.js +1 -1
  569. package/dist/utils/react/programmaticFocus.js +1 -1
  570. package/dist/utils/react/resolveIcon.js +1 -1
  571. package/dist/utils/react/sharedStore.js +1 -1
  572. package/dist/utils/react/useBufferedValue.js +1 -1
  573. package/dist/utils/react/useCombinedRefs.js +1 -1
  574. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  575. package/dist/utils/react/useEventBus.js +1 -1
  576. package/dist/utils/react/useId.js +1 -1
  577. package/dist/utils/react/useIsDarwin.js +1 -1
  578. package/dist/utils/react/useKeySymbols.js +1 -1
  579. package/dist/utils/react/useLayoutEffect.js +1 -1
  580. package/dist/utils/react/useLocalStorage.js +1 -1
  581. package/dist/utils/react/useMergeStyles.js +1 -1
  582. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  583. package/dist/utils/react/usePopoverSync.js +1 -1
  584. package/dist/utils/react/useQaProps.js +1 -1
  585. package/dist/utils/react/useScheme.js +1 -1
  586. package/dist/utils/react/useViewportSize.js +1 -1
  587. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  588. package/dist/utils/selection.js +1 -1
  589. package/dist/utils/styles.js +1 -1
  590. package/dist/utils/tree.js +1 -1
  591. package/dist/utils/warnings.js +1 -1
  592. package/dist/version.js +2 -2
  593. package/docs/FieldProperties.md +1 -1
  594. package/docs/components/actions/Button.md +1 -0
  595. package/docs/components/content/Disclosure.md +10 -3
  596. package/docs/components/content/Placeholder.md +14 -0
  597. package/docs/components/content/Skeleton.md +2 -0
  598. package/docs/components/form/Form.md +1 -0
  599. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/overlays/Notifications/NotificationContext.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { NotificationCard } from "./NotificationCard.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1,5 +1,6 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
3
+ import { useViewportSize } from "../../../utils/react/useViewportSize.js";
3
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
5
  import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransition.js";
5
6
  import { Portal } from "../../portal/Portal.js";
@@ -33,7 +34,7 @@ const OverlayItemWrapper = tasty({ styles: {
33
34
  "": "translateX(-50%) translateY(-50%)",
34
35
  "isMeasured & isShown": "translateX(-50%) translateY(0)"
35
36
  },
36
- width: "max-content 50x",
37
+ width: "initial max-content min((100vw - 4x), 50x)",
37
38
  pointerEvents: "auto",
38
39
  transition: {
39
40
  "": "opacity $transition ease-in, transform $transition ease-in",
@@ -101,6 +102,7 @@ function useItemPositions(visibleItems) {
101
102
  $[5] = t4;
102
103
  } else t4 = $[5];
103
104
  useLayoutEffect$1(t4);
105
+ useViewportSize();
104
106
  let t5;
105
107
  if ($[6] !== heights || $[7] !== settledIds) {
106
108
  t5 = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayContainer.js","names":["tasty","FocusEvent","Key","RefObject","useCallback","useEffect","useMemo","useRef","useState","useEvent","useLayoutEffect","DisplayTransition","Portal","ToastItem","NotificationItem","InternalToast","DismissReason","InternalNotification","COLLAPSE_VISIBLE_HEIGHT","CONTAINER_OFFSET","ITEM_GAP","DEFAULT_ITEM_HEIGHT","OverlayContainerElement","styles","position","top","left","transform","zIndex","padding","height","pointerEvents","OverlayItemWrapper","width","transition","isMeasured","opacity","isShown","OverlayItem","kind","data","getItemId","item","internalId","isItemExiting","isExiting","getItemCreatedAt","createdAt","ItemPositionsResult","heights","Record","settledIds","Set","positions","Map","lastPositionsRef","ReturnType","itemRefs","HTMLDivElement","createRefCallback","itemId","displayRef","el","HTMLElement","useItemPositions","visibleItems","$","_c","t0","Symbol","for","setHeights","t1","t2","t3","setSettledIds","rafRef","t4","newHeights","hasChanges","current","forEach","id","offsetHeight","id_0","Object","keys","has","t5","heightKeys","newIds","filter","id_1","hasStaleIds","size","some","id_2","length","cancelAnimationFrame","prev","id_3","requestAnimationFrame","prev_0","next","id_4","add","id_5","t6","t7","el_0","set","delete","posMap","currentTop","id_6","height_0","t8","t9","pos","id_7","t10","CollapseStateResult","isCollapsed","handleMouseEnter","handleMouseLeave","handleFocus","handleBlur","e","containerRef","useCollapseState","canCollapse","allItems","onPauseChange","setIsCollapsed","boundsRef","refs","minX","Infinity","minY","maxX","maxY","rect","getBoundingClientRect","Math","min","max","right","bottom","DOMRect","x","y","toJSON","_temp","updateBounds","handleMouseMove","bounds","isInBounds","clientX","clientY","window","addEventListener","removeEventListener","e_0","contains","relatedTarget","Node","OverlayContainerProps","toasts","notifications","onToastExitComplete","onNotificationExitComplete","onNotificationDismiss","reason","onNotificationRestore","paused","OverlayContainer","items","map","_temp2","_temp3","sort","_temp4","_temp5","_temp6","hasNotifications","_temp7","hasActionableToasts","handleNotificationDismiss","item_0","handleExitComplete","T0","T1","t11","bb0","getItemStyle","item_1","index","total","baseTop","get","isNewest","collapsedTop","const","visibleIndexMap","_temp8","item_3","visibleIndex","t12","ref","itemProps","title","description","theme","icon","isLoading","actions","t13","item_2","index_0","t_0","t","n_0","n","a","b"],"sources":["../../../../src/components/overlays/Notifications/OverlayContainer.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport {\n FocusEvent,\n Key,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { DisplayTransition } from '../../helpers/DisplayTransition/DisplayTransition';\nimport { Portal } from '../../portal';\nimport { ToastItem } from '../Toast/ToastItem';\n\nimport { NotificationItem } from './NotificationItem';\n\nimport type { InternalToast } from '../Toast/types';\nimport type { DismissReason, InternalNotification } from './types';\n\n// ─── Constants ───────────────────────────────────────────────────────\n\nconst COLLAPSE_VISIBLE_HEIGHT = 10;\nconst CONTAINER_OFFSET = 16;\nconst ITEM_GAP = 8;\nconst DEFAULT_ITEM_HEIGHT = 56;\n\n// ─── Styled Elements ─────────────────────────────────────────────────\n\nconst OverlayContainerElement = tasty({\n styles: {\n position: 'fixed',\n top: '2x',\n left: '50%',\n transform: 'translateX(-50%)',\n zIndex: 100,\n padding: '1x',\n height: '0',\n pointerEvents: 'none',\n },\n});\n\nconst OverlayItemWrapper = tasty({\n styles: {\n position: 'absolute',\n top: '0',\n left: '50%',\n transform: {\n '': 'translateX(-50%) translateY(-50%)',\n 'isMeasured & isShown': 'translateX(-50%) translateY(0)',\n },\n width: 'max-content 50x',\n pointerEvents: 'auto',\n transition: {\n '': 'opacity $transition ease-in, transform $transition ease-in',\n isMeasured:\n 'top $transition ease-in, opacity $transition ease-in, transform $transition ease-in',\n },\n opacity: {\n '': 0,\n isShown: 1,\n },\n },\n});\n\n// ─── Unified Item Type ───────────────────────────────────────────────\n\ntype OverlayItem =\n | { kind: 'toast'; data: InternalToast }\n | { kind: 'notification'; data: InternalNotification };\n\nfunction getItemId(item: OverlayItem): string {\n return item.data.internalId;\n}\n\nfunction isItemExiting(item: OverlayItem): boolean {\n return item.data.isExiting === true;\n}\n\nfunction getItemCreatedAt(item: OverlayItem): number {\n return item.data.createdAt;\n}\n\n// ─── useItemPositions Hook ───────────────────────────────────────────\n\ninterface ItemPositionsResult {\n heights: Record<string, number>;\n /** Set of item IDs that have been measured AND painted at their correct position. */\n settledIds: Set<string>;\n positions: Map<string, number>;\n lastPositionsRef: ReturnType<typeof useRef<Map<string, number>>>;\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>;\n createRefCallback: (\n itemId: string,\n displayRef: (el: HTMLElement | null) => void,\n ) => (el: HTMLDivElement | null) => void;\n}\n\n/**\n * Manages height measurement, position calculation, and ref tracking\n * for overlay items. Extracted from OverlayContainer for readability.\n */\nfunction useItemPositions(visibleItems: OverlayItem[]): ItemPositionsResult {\n const [heights, setHeights] = useState<Record<string, number>>({});\n const itemRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n const lastPositionsRef = useRef<Map<string, number>>(new Map());\n\n // Items that have been measured AND painted at their correct position.\n // Lags one frame behind `heights` so the browser paints the item at\n // its final `top` before the CSS `top` transition is enabled.\n const [settledIds, setSettledIds] = useState<Set<string>>(new Set());\n const rafRef = useRef<number | null>(null);\n\n // Measure heights using layout effect to avoid visible layout shifts.\n // Runs every render but bails early if nothing changed.\n useLayoutEffect(() => {\n const newHeights: Record<string, number> = {};\n let hasChanges = false;\n\n itemRefs.current.forEach((el, id) => {\n const height = el.offsetHeight || DEFAULT_ITEM_HEIGHT;\n newHeights[id] = height;\n\n if (heights[id] !== height) {\n hasChanges = true;\n }\n });\n\n for (const id of Object.keys(heights)) {\n if (!itemRefs.current.has(id)) {\n hasChanges = true;\n }\n }\n\n if (hasChanges) {\n setHeights(newHeights);\n }\n });\n\n // After heights change, schedule settledIds update for the next frame.\n // This ensures the item is painted at its correct position (with no top\n // transition) before we enable the transition.\n useEffect(() => {\n const heightKeys = Object.keys(heights);\n const newIds = heightKeys.filter((id) => !settledIds.has(id));\n const hasStaleIds =\n settledIds.size > 0 && [...settledIds].some((id) => !(id in heights));\n\n if (newIds.length === 0 && !hasStaleIds) return;\n\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n }\n\n // For pruning-only updates (no new items), apply synchronously since\n // there's no need to wait for a paint frame.\n if (newIds.length === 0 && hasStaleIds) {\n setSettledIds((prev) => new Set(heightKeys.filter((id) => prev.has(id))));\n return;\n }\n\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n setSettledIds((prev) => {\n const next = new Set<string>();\n\n // Only keep IDs that still exist in heights (prune removed items)\n for (const id of heightKeys) {\n if (prev.has(id)) {\n next.add(id);\n }\n }\n\n for (const id of newIds) {\n next.add(id);\n }\n\n return next;\n });\n });\n\n return () => {\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n }, [heights]);\n\n const createRefCallback =\n (itemId: string, displayRef: (el: HTMLElement | null) => void) =>\n (el: HTMLDivElement | null) => {\n displayRef(el);\n\n if (el) {\n itemRefs.current.set(itemId, el);\n } else {\n itemRefs.current.delete(itemId);\n }\n };\n\n const positions = useMemo(() => {\n const posMap = new Map<string, number>();\n let currentTop = 0;\n\n for (const item of visibleItems) {\n const id = getItemId(item);\n posMap.set(id, currentTop);\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n currentTop += height + ITEM_GAP;\n }\n\n return posMap;\n }, [visibleItems, heights]);\n\n useEffect(() => {\n positions.forEach((pos, id) => {\n lastPositionsRef.current.set(id, pos);\n });\n }, [positions]);\n\n return {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n };\n}\n\n// ─── useCollapseState Hook ───────────────────────────────────────────\n\ninterface CollapseStateResult {\n isCollapsed: boolean;\n handleMouseEnter: () => void;\n handleMouseLeave: () => void;\n handleFocus: () => void;\n handleBlur: (e: FocusEvent) => void;\n containerRef: RefObject<HTMLDivElement | null>;\n}\n\n/**\n * Manages collapse/expand behavior and pause state for the overlay container.\n * Extracted from OverlayContainer for readability.\n */\nfunction useCollapseState(\n canCollapse: boolean,\n allItems: OverlayItem[],\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>,\n onPauseChange: (paused: boolean) => void,\n): CollapseStateResult {\n const [isCollapsed, setIsCollapsed] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const boundsRef = useRef<DOMRect | null>(null);\n\n const updateBounds = () => {\n const refs = itemRefs.current;\n\n if (!refs || refs.size === 0) {\n boundsRef.current = null;\n return;\n }\n\n let minX = Infinity,\n minY = Infinity,\n maxX = -Infinity,\n maxY = -Infinity;\n\n refs.forEach((el) => {\n const rect = el.getBoundingClientRect();\n minX = Math.min(minX, rect.left);\n minY = Math.min(minY, rect.top);\n maxX = Math.max(maxX, rect.right);\n maxY = Math.max(maxY, rect.bottom);\n });\n\n if (typeof DOMRect !== 'undefined') {\n boundsRef.current = new DOMRect(minX, minY, maxX - minX, maxY - minY);\n } else {\n boundsRef.current = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n top: minY,\n right: maxX,\n bottom: maxY,\n left: minX,\n toJSON: () => ({}),\n } as DOMRect;\n }\n };\n\n // Track mouse for collapse — expand when mouse leaves bounds\n useEffect(() => {\n if (!isCollapsed) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n const bounds = boundsRef.current;\n\n if (!bounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n return;\n }\n\n const padding = 20;\n const isInBounds =\n e.clientX >= bounds.left - padding &&\n e.clientX <= bounds.right + padding &&\n e.clientY >= bounds.top - padding &&\n e.clientY <= bounds.bottom + padding;\n\n if (!isInBounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n }\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n return () => window.removeEventListener('mousemove', handleMouseMove);\n }, [isCollapsed, onPauseChange]);\n\n // Update bounds when items change\n useEffect(() => {\n updateBounds();\n }, [allItems, updateBounds]);\n\n const handleMouseEnter = () => {\n updateBounds();\n onPauseChange(true);\n\n if (canCollapse) {\n setIsCollapsed(true);\n }\n };\n\n const handleMouseLeave = () => {\n if (!isCollapsed) {\n onPauseChange(false);\n }\n };\n\n const handleFocus = () => {\n onPauseChange(true);\n };\n\n const handleBlur = (e: FocusEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.relatedTarget as Node)\n ) {\n onPauseChange(false);\n }\n };\n\n return {\n isCollapsed,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n };\n}\n\n// ─── Overlay Container ───────────────────────────────────────────────\n//\n// INTENTIONAL: Position calculations are done manually (absolute positioning + JS\n// height tracking) rather than relying on CSS flexbox/grid layout. This is\n// deliberate — the container mixes enter/exit animations, collapse behavior, and\n// heterogeneous item sizes (toasts vs notifications) which require per-item\n// position control. CSS-only solutions (e.g., flex column with gap) break when\n// items exit asynchronously or when collapse transforms need to be computed per-item.\n\nexport interface OverlayContainerProps {\n toasts: InternalToast[];\n notifications: InternalNotification[];\n onToastExitComplete: (internalId: string) => void;\n onNotificationExitComplete: (internalId: string) => void;\n onNotificationDismiss: (id: Key, reason: DismissReason) => void;\n onNotificationRestore: (id: Key) => void;\n onPauseChange: (paused: boolean) => void;\n}\n\nexport function OverlayContainer({\n toasts,\n notifications,\n onToastExitComplete,\n onNotificationExitComplete,\n onNotificationDismiss,\n onNotificationRestore,\n onPauseChange,\n}: OverlayContainerProps) {\n // Merge toasts and notifications into a single ordered list\n const allItems: OverlayItem[] = useMemo(() => {\n const items: OverlayItem[] = [\n ...toasts.map((t): OverlayItem => ({ kind: 'toast', data: t })),\n ...notifications.map(\n (n): OverlayItem => ({ kind: 'notification', data: n }),\n ),\n ];\n\n // Sort by createdAt ascending (oldest first = bottom of stack, newest last = top)\n items.sort((a, b) => getItemCreatedAt(a) - getItemCreatedAt(b));\n\n return items;\n }, [toasts, notifications]);\n\n const visibleItems = useMemo(\n () => allItems.filter((item) => !isItemExiting(item)),\n [allItems],\n );\n const hasNotifications = notifications.some((n) => !n.isExiting);\n const hasActionableToasts = toasts.some((t) => !t.isExiting && t.actions);\n const canCollapse = !hasNotifications && !hasActionableToasts;\n\n const {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n } = useItemPositions(visibleItems);\n\n const {\n isCollapsed,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n } = useCollapseState(canCollapse, allItems, itemRefs, onPauseChange);\n\n // ─── Callbacks ─────────────────────────────────────────────────────\n\n // When the user dismisses a notification they were hovering, the element\n // is removed from the DOM so mouseLeave never fires. Explicitly unpause\n // so remaining notifications' timers resume.\n const handleNotificationDismiss = useEvent(\n (id: Key, reason: DismissReason) => {\n onNotificationDismiss(id, reason);\n onPauseChange(false);\n },\n );\n\n const handleExitComplete = useEvent((item: OverlayItem) => {\n const id = getItemId(item);\n lastPositionsRef.current?.delete(id);\n\n if (item.kind === 'toast') {\n onToastExitComplete(item.data.internalId);\n } else {\n onNotificationExitComplete(item.data.internalId);\n }\n });\n\n // useCallback (not useEvent) because this is called during render.\n // useEvent defers the ref update to useLayoutEffect, so during render\n // it would still read the previous closure's positions/heights.\n const getItemStyle = (item: OverlayItem, index: number, total: number) => {\n const id = getItemId(item);\n const baseTop = positions.get(id) ?? lastPositionsRef.current?.get(id) ?? 0;\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n\n if (!isCollapsed || !canCollapse) {\n return { top: `${baseTop}px` };\n }\n\n const isNewest = index === total - 1;\n const collapsedTop = COLLAPSE_VISIBLE_HEIGHT - CONTAINER_OFFSET - height;\n\n return {\n top: `${collapsedTop}px`,\n zIndex: index,\n opacity: isNewest ? 1 : 0,\n pointerEvents: 'none' as const,\n };\n };\n\n // Build a visibleIndex lookup map to avoid O(n²) findIndex inside render loop\n const visibleIndexMap = new Map<string, number>(\n visibleItems.map((item, index) => [getItemId(item), index]),\n );\n\n if (allItems.length === 0) return null;\n\n return (\n <Portal>\n <OverlayContainerElement\n ref={containerRef}\n // Portaled outside any open Dialog, so React Aria would count a press\n // on a toast as a press outside it: the Dialog closed and the action\n // never ran. A top layer is never \"outside\", stays reachable by focus\n // from a Dialog's contained scope and visible to screen readers, as\n // React Aria's own toast region does.\n data-react-aria-top-layer=\"\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {allItems.map((item) => {\n const itemId = getItemId(item);\n const visibleIndex = visibleIndexMap.get(itemId) ?? 0;\n const isExiting = isItemExiting(item);\n\n return (\n <DisplayTransition\n key={itemId}\n isShown={!isExiting}\n onRest={(transition) => {\n if (transition === 'exit') {\n handleExitComplete(item);\n }\n }}\n >\n {({ isShown, ref }) => (\n <OverlayItemWrapper\n ref={createRefCallback(itemId, ref)}\n mods={{ isShown, isMeasured: settledIds.has(itemId) }}\n style={getItemStyle(item, visibleIndex, visibleItems.length)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {item.kind === 'toast' ? (\n <ToastItem\n {...item.data.itemProps}\n title={item.data.title}\n description={item.data.description}\n theme={item.data.theme}\n icon={item.data.icon}\n isLoading={item.data.isLoading}\n actions={item.data.actions}\n />\n ) : (\n <NotificationItem\n notification={item.data}\n onDismiss={handleNotificationDismiss}\n onRestore={onNotificationRestore}\n />\n )}\n </OverlayItemWrapper>\n )}\n </DisplayTransition>\n );\n })}\n </OverlayContainerElement>\n </Portal>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"OverlayContainer.js","names":["tasty","FocusEvent","Key","RefObject","useCallback","useEffect","useMemo","useRef","useState","useEvent","useLayoutEffect","useViewportSize","DisplayTransition","Portal","ToastItem","NotificationItem","InternalToast","DismissReason","InternalNotification","COLLAPSE_VISIBLE_HEIGHT","CONTAINER_OFFSET","ITEM_GAP","DEFAULT_ITEM_HEIGHT","OverlayContainerElement","styles","position","top","left","transform","zIndex","padding","height","pointerEvents","OverlayItemWrapper","width","transition","isMeasured","opacity","isShown","OverlayItem","kind","data","getItemId","item","internalId","isItemExiting","isExiting","getItemCreatedAt","createdAt","ItemPositionsResult","heights","Record","settledIds","Set","positions","Map","lastPositionsRef","ReturnType","itemRefs","HTMLDivElement","createRefCallback","itemId","displayRef","el","HTMLElement","useItemPositions","visibleItems","$","_c","t0","Symbol","for","setHeights","t1","t2","t3","setSettledIds","rafRef","t4","newHeights","hasChanges","current","forEach","id","offsetHeight","id_0","Object","keys","has","t5","heightKeys","newIds","filter","id_1","hasStaleIds","size","some","id_2","length","cancelAnimationFrame","prev","id_3","requestAnimationFrame","prev_0","next","id_4","add","id_5","t6","t7","el_0","set","delete","posMap","currentTop","id_6","height_0","t8","t9","pos","id_7","t10","CollapseStateResult","isCollapsed","handleMouseEnter","handleMouseLeave","handleFocus","handleBlur","e","containerRef","useCollapseState","canCollapse","allItems","onPauseChange","setIsCollapsed","boundsRef","refs","minX","Infinity","minY","maxX","maxY","rect","getBoundingClientRect","Math","min","max","right","bottom","DOMRect","x","y","toJSON","_temp","updateBounds","handleMouseMove","bounds","isInBounds","clientX","clientY","window","addEventListener","removeEventListener","e_0","contains","relatedTarget","Node","OverlayContainerProps","toasts","notifications","onToastExitComplete","onNotificationExitComplete","onNotificationDismiss","reason","onNotificationRestore","paused","OverlayContainer","items","map","_temp2","_temp3","sort","_temp4","_temp5","_temp6","hasNotifications","_temp7","hasActionableToasts","handleNotificationDismiss","item_0","handleExitComplete","T0","T1","t11","bb0","getItemStyle","item_1","index","total","baseTop","get","isNewest","collapsedTop","const","visibleIndexMap","_temp8","item_3","visibleIndex","t12","ref","itemProps","title","description","theme","icon","isLoading","actions","t13","item_2","index_0","t_0","t","n_0","n","a","b"],"sources":["../../../../src/components/overlays/Notifications/OverlayContainer.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport {\n FocusEvent,\n Key,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { useViewportSize } from '../../../utils/react/useViewportSize';\nimport { DisplayTransition } from '../../helpers/DisplayTransition/DisplayTransition';\nimport { Portal } from '../../portal';\nimport { ToastItem } from '../Toast/ToastItem';\n\nimport { NotificationItem } from './NotificationItem';\n\nimport type { InternalToast } from '../Toast/types';\nimport type { DismissReason, InternalNotification } from './types';\n\n// ─── Constants ───────────────────────────────────────────────────────\n\nconst COLLAPSE_VISIBLE_HEIGHT = 10;\nconst CONTAINER_OFFSET = 16;\nconst ITEM_GAP = 8;\nconst DEFAULT_ITEM_HEIGHT = 56;\n\n// ─── Styled Elements ─────────────────────────────────────────────────\n\nconst OverlayContainerElement = tasty({\n styles: {\n position: 'fixed',\n top: '2x',\n left: '50%',\n transform: 'translateX(-50%)',\n zIndex: 100,\n padding: '1x',\n height: '0',\n pointerEvents: 'none',\n },\n});\n\nconst OverlayItemWrapper = tasty({\n styles: {\n position: 'absolute',\n top: '0',\n left: '50%',\n transform: {\n '': 'translateX(-50%) translateY(-50%)',\n 'isMeasured & isShown': 'translateX(-50%) translateY(0)',\n },\n // Sized to its content: the container has no width of its own. Capped,\n // never floored, so a long toast wraps inside the viewport. The cap\n // matches NotificationCard's own width.\n width: 'initial max-content min((100vw - 4x), 50x)',\n pointerEvents: 'auto',\n transition: {\n '': 'opacity $transition ease-in, transform $transition ease-in',\n isMeasured:\n 'top $transition ease-in, opacity $transition ease-in, transform $transition ease-in',\n },\n opacity: {\n '': 0,\n isShown: 1,\n },\n },\n});\n\n// ─── Unified Item Type ───────────────────────────────────────────────\n\ntype OverlayItem =\n | { kind: 'toast'; data: InternalToast }\n | { kind: 'notification'; data: InternalNotification };\n\nfunction getItemId(item: OverlayItem): string {\n return item.data.internalId;\n}\n\nfunction isItemExiting(item: OverlayItem): boolean {\n return item.data.isExiting === true;\n}\n\nfunction getItemCreatedAt(item: OverlayItem): number {\n return item.data.createdAt;\n}\n\n// ─── useItemPositions Hook ───────────────────────────────────────────\n\ninterface ItemPositionsResult {\n heights: Record<string, number>;\n /** Set of item IDs that have been measured AND painted at their correct position. */\n settledIds: Set<string>;\n positions: Map<string, number>;\n lastPositionsRef: ReturnType<typeof useRef<Map<string, number>>>;\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>;\n createRefCallback: (\n itemId: string,\n displayRef: (el: HTMLElement | null) => void,\n ) => (el: HTMLDivElement | null) => void;\n}\n\n/**\n * Manages height measurement, position calculation, and ref tracking\n * for overlay items. Extracted from OverlayContainer for readability.\n */\nfunction useItemPositions(visibleItems: OverlayItem[]): ItemPositionsResult {\n const [heights, setHeights] = useState<Record<string, number>>({});\n const itemRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n const lastPositionsRef = useRef<Map<string, number>>(new Map());\n\n // Items that have been measured AND painted at their correct position.\n // Lags one frame behind `heights` so the browser paints the item at\n // its final `top` before the CSS `top` transition is enabled.\n const [settledIds, setSettledIds] = useState<Set<string>>(new Set());\n const rafRef = useRef<number | null>(null);\n\n // Measure heights using layout effect to avoid visible layout shifts.\n // Runs every render but bails early if nothing changed.\n useLayoutEffect(() => {\n const newHeights: Record<string, number> = {};\n let hasChanges = false;\n\n itemRefs.current.forEach((el, id) => {\n const height = el.offsetHeight || DEFAULT_ITEM_HEIGHT;\n newHeights[id] = height;\n\n if (heights[id] !== height) {\n hasChanges = true;\n }\n });\n\n for (const id of Object.keys(heights)) {\n if (!itemRefs.current.has(id)) {\n hasChanges = true;\n }\n }\n\n if (hasChanges) {\n setHeights(newHeights);\n }\n });\n\n // A wrapped toast changes height with the viewport, not only on a render.\n // Re-rendering on a viewport resize lets the measurement above restack the\n // items. A height change from content that re-renders on its own, outside\n // this container, still waits for the container's next render.\n useViewportSize();\n\n // After heights change, schedule settledIds update for the next frame.\n // This ensures the item is painted at its correct position (with no top\n // transition) before we enable the transition.\n useEffect(() => {\n const heightKeys = Object.keys(heights);\n const newIds = heightKeys.filter((id) => !settledIds.has(id));\n const hasStaleIds =\n settledIds.size > 0 && [...settledIds].some((id) => !(id in heights));\n\n if (newIds.length === 0 && !hasStaleIds) return;\n\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n }\n\n // For pruning-only updates (no new items), apply synchronously since\n // there's no need to wait for a paint frame.\n if (newIds.length === 0 && hasStaleIds) {\n setSettledIds((prev) => new Set(heightKeys.filter((id) => prev.has(id))));\n return;\n }\n\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n setSettledIds((prev) => {\n const next = new Set<string>();\n\n // Only keep IDs that still exist in heights (prune removed items)\n for (const id of heightKeys) {\n if (prev.has(id)) {\n next.add(id);\n }\n }\n\n for (const id of newIds) {\n next.add(id);\n }\n\n return next;\n });\n });\n\n return () => {\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n }, [heights]);\n\n const createRefCallback =\n (itemId: string, displayRef: (el: HTMLElement | null) => void) =>\n (el: HTMLDivElement | null) => {\n displayRef(el);\n\n if (el) {\n itemRefs.current.set(itemId, el);\n } else {\n itemRefs.current.delete(itemId);\n }\n };\n\n const positions = useMemo(() => {\n const posMap = new Map<string, number>();\n let currentTop = 0;\n\n for (const item of visibleItems) {\n const id = getItemId(item);\n posMap.set(id, currentTop);\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n currentTop += height + ITEM_GAP;\n }\n\n return posMap;\n }, [visibleItems, heights]);\n\n useEffect(() => {\n positions.forEach((pos, id) => {\n lastPositionsRef.current.set(id, pos);\n });\n }, [positions]);\n\n return {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n };\n}\n\n// ─── useCollapseState Hook ───────────────────────────────────────────\n\ninterface CollapseStateResult {\n isCollapsed: boolean;\n handleMouseEnter: () => void;\n handleMouseLeave: () => void;\n handleFocus: () => void;\n handleBlur: (e: FocusEvent) => void;\n containerRef: RefObject<HTMLDivElement | null>;\n}\n\n/**\n * Manages collapse/expand behavior and pause state for the overlay container.\n * Extracted from OverlayContainer for readability.\n */\nfunction useCollapseState(\n canCollapse: boolean,\n allItems: OverlayItem[],\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>,\n onPauseChange: (paused: boolean) => void,\n): CollapseStateResult {\n const [isCollapsed, setIsCollapsed] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const boundsRef = useRef<DOMRect | null>(null);\n\n const updateBounds = () => {\n const refs = itemRefs.current;\n\n if (!refs || refs.size === 0) {\n boundsRef.current = null;\n return;\n }\n\n let minX = Infinity,\n minY = Infinity,\n maxX = -Infinity,\n maxY = -Infinity;\n\n refs.forEach((el) => {\n const rect = el.getBoundingClientRect();\n minX = Math.min(minX, rect.left);\n minY = Math.min(minY, rect.top);\n maxX = Math.max(maxX, rect.right);\n maxY = Math.max(maxY, rect.bottom);\n });\n\n if (typeof DOMRect !== 'undefined') {\n boundsRef.current = new DOMRect(minX, minY, maxX - minX, maxY - minY);\n } else {\n boundsRef.current = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n top: minY,\n right: maxX,\n bottom: maxY,\n left: minX,\n toJSON: () => ({}),\n } as DOMRect;\n }\n };\n\n // Track mouse for collapse — expand when mouse leaves bounds\n useEffect(() => {\n if (!isCollapsed) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n const bounds = boundsRef.current;\n\n if (!bounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n return;\n }\n\n const padding = 20;\n const isInBounds =\n e.clientX >= bounds.left - padding &&\n e.clientX <= bounds.right + padding &&\n e.clientY >= bounds.top - padding &&\n e.clientY <= bounds.bottom + padding;\n\n if (!isInBounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n }\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n return () => window.removeEventListener('mousemove', handleMouseMove);\n }, [isCollapsed, onPauseChange]);\n\n // Update bounds when items change\n useEffect(() => {\n updateBounds();\n }, [allItems, updateBounds]);\n\n const handleMouseEnter = () => {\n updateBounds();\n onPauseChange(true);\n\n if (canCollapse) {\n setIsCollapsed(true);\n }\n };\n\n const handleMouseLeave = () => {\n if (!isCollapsed) {\n onPauseChange(false);\n }\n };\n\n const handleFocus = () => {\n onPauseChange(true);\n };\n\n const handleBlur = (e: FocusEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.relatedTarget as Node)\n ) {\n onPauseChange(false);\n }\n };\n\n return {\n isCollapsed,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n };\n}\n\n// ─── Overlay Container ───────────────────────────────────────────────\n//\n// INTENTIONAL: Position calculations are done manually (absolute positioning + JS\n// height tracking) rather than relying on CSS flexbox/grid layout. This is\n// deliberate — the container mixes enter/exit animations, collapse behavior, and\n// heterogeneous item sizes (toasts vs notifications) which require per-item\n// position control. CSS-only solutions (e.g., flex column with gap) break when\n// items exit asynchronously or when collapse transforms need to be computed per-item.\n\nexport interface OverlayContainerProps {\n toasts: InternalToast[];\n notifications: InternalNotification[];\n onToastExitComplete: (internalId: string) => void;\n onNotificationExitComplete: (internalId: string) => void;\n onNotificationDismiss: (id: Key, reason: DismissReason) => void;\n onNotificationRestore: (id: Key) => void;\n onPauseChange: (paused: boolean) => void;\n}\n\nexport function OverlayContainer({\n toasts,\n notifications,\n onToastExitComplete,\n onNotificationExitComplete,\n onNotificationDismiss,\n onNotificationRestore,\n onPauseChange,\n}: OverlayContainerProps) {\n // Merge toasts and notifications into a single ordered list\n const allItems: OverlayItem[] = useMemo(() => {\n const items: OverlayItem[] = [\n ...toasts.map((t): OverlayItem => ({ kind: 'toast', data: t })),\n ...notifications.map(\n (n): OverlayItem => ({ kind: 'notification', data: n }),\n ),\n ];\n\n // Sort by createdAt ascending (oldest first = bottom of stack, newest last = top)\n items.sort((a, b) => getItemCreatedAt(a) - getItemCreatedAt(b));\n\n return items;\n }, [toasts, notifications]);\n\n const visibleItems = useMemo(\n () => allItems.filter((item) => !isItemExiting(item)),\n [allItems],\n );\n const hasNotifications = notifications.some((n) => !n.isExiting);\n const hasActionableToasts = toasts.some((t) => !t.isExiting && t.actions);\n const canCollapse = !hasNotifications && !hasActionableToasts;\n\n const {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n } = useItemPositions(visibleItems);\n\n const {\n isCollapsed,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n } = useCollapseState(canCollapse, allItems, itemRefs, onPauseChange);\n\n // ─── Callbacks ─────────────────────────────────────────────────────\n\n // When the user dismisses a notification they were hovering, the element\n // is removed from the DOM so mouseLeave never fires. Explicitly unpause\n // so remaining notifications' timers resume.\n const handleNotificationDismiss = useEvent(\n (id: Key, reason: DismissReason) => {\n onNotificationDismiss(id, reason);\n onPauseChange(false);\n },\n );\n\n const handleExitComplete = useEvent((item: OverlayItem) => {\n const id = getItemId(item);\n lastPositionsRef.current?.delete(id);\n\n if (item.kind === 'toast') {\n onToastExitComplete(item.data.internalId);\n } else {\n onNotificationExitComplete(item.data.internalId);\n }\n });\n\n // useCallback (not useEvent) because this is called during render.\n // useEvent defers the ref update to useLayoutEffect, so during render\n // it would still read the previous closure's positions/heights.\n const getItemStyle = (item: OverlayItem, index: number, total: number) => {\n const id = getItemId(item);\n const baseTop = positions.get(id) ?? lastPositionsRef.current?.get(id) ?? 0;\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n\n if (!isCollapsed || !canCollapse) {\n return { top: `${baseTop}px` };\n }\n\n const isNewest = index === total - 1;\n const collapsedTop = COLLAPSE_VISIBLE_HEIGHT - CONTAINER_OFFSET - height;\n\n return {\n top: `${collapsedTop}px`,\n zIndex: index,\n opacity: isNewest ? 1 : 0,\n pointerEvents: 'none' as const,\n };\n };\n\n // Build a visibleIndex lookup map to avoid O(n²) findIndex inside render loop\n const visibleIndexMap = new Map<string, number>(\n visibleItems.map((item, index) => [getItemId(item), index]),\n );\n\n if (allItems.length === 0) return null;\n\n return (\n <Portal>\n <OverlayContainerElement\n ref={containerRef}\n // Portaled outside any open Dialog, so React Aria would count a press\n // on a toast as a press outside it: the Dialog closed and the action\n // never ran. A top layer is never \"outside\", stays reachable by focus\n // from a Dialog's contained scope and visible to screen readers, as\n // React Aria's own toast region does.\n data-react-aria-top-layer=\"\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {allItems.map((item) => {\n const itemId = getItemId(item);\n const visibleIndex = visibleIndexMap.get(itemId) ?? 0;\n const isExiting = isItemExiting(item);\n\n return (\n <DisplayTransition\n key={itemId}\n isShown={!isExiting}\n onRest={(transition) => {\n if (transition === 'exit') {\n handleExitComplete(item);\n }\n }}\n >\n {({ isShown, ref }) => (\n <OverlayItemWrapper\n ref={createRefCallback(itemId, ref)}\n mods={{ isShown, isMeasured: settledIds.has(itemId) }}\n style={getItemStyle(item, visibleIndex, visibleItems.length)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {item.kind === 'toast' ? (\n <ToastItem\n {...item.data.itemProps}\n title={item.data.title}\n description={item.data.description}\n theme={item.data.theme}\n icon={item.data.icon}\n isLoading={item.data.isLoading}\n actions={item.data.actions}\n />\n ) : (\n <NotificationItem\n notification={item.data}\n onDismiss={handleNotificationDismiss}\n onRestore={onNotificationRestore}\n />\n )}\n </OverlayItemWrapper>\n )}\n </DisplayTransition>\n );\n })}\n </OverlayContainerElement>\n </Portal>\n );\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { NotificationContext, PersistentNotificationsContext, ToastContext, useNotificationContext, useToastContext } from "./NotificationContext.js";
3
3
  import { OverlayContainer } from "./OverlayContainer.js";
4
4
  import { useNotificationState } from "./use-notification-state.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { _Text } from "../../content/Text.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  //#region src/components/overlays/Notifications/dismissed-storage.ts
3
3
  const STORAGE_KEY = "cube-ui-dismissed-notifications";
4
4
  const TTL_MS = 864e5;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  //#region src/components/overlays/Notifications/format-relative-time.ts
3
3
  /**
4
4
  * Lightweight relative time formatter.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { useToastContext } from "./NotificationContext.js";
3
3
  import { NotificationAction } from "./NotificationAction.js";
4
4
  import { NotificationCard } from "./NotificationCard.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useRef, useState } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useWarn } from "../../../_internal/hooks/use-warn.js";
4
4
  import { useNotificationContext } from "./NotificationContext.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useEffect, useRef } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { usePersistentNotificationsContext } from "./NotificationContext.js";
3
3
  import { c } from "react-compiler-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { cleanupAndGetValidIds, saveDismissedId } from "./dismissed-storage.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useRef, useState } from "react";
4
4
 
@@ -51,7 +51,7 @@ function useToastState(timersRef) {
51
51
  idCounter.current += 1;
52
52
  const internalId_0 = `toast-${idCounter.current}-${Date.now()}`;
53
53
  const dedupeKey = generateToastDedupeKey(data);
54
- const duration = isProgress ? null : data.duration ?? DEFAULT_TOAST_DURATION;
54
+ const duration = isProgress ? null : data.duration === void 0 ? DEFAULT_TOAST_DURATION : data.duration;
55
55
  const newToast = {
56
56
  ...data,
57
57
  internalId: internalId_0,
@@ -1 +1 @@
1
- {"version":3,"file":"use-toast-state.js","names":["Key","useRef","useState","useEvent","InternalToast","ToastData","OverlayTimers","DEFAULT_TOAST_DURATION","MAX_TOASTS","generateToastDedupeKey","data","id","String","JSON","stringify","description","theme","title","matchesToastId","item","internalId","findToast","list","find","t","ToastState","toasts","toastsRef","ReturnType","addToast","isProgress","removeToast","updateToast","Partial","finalizeToastRemoval","useToastState","timersRef","setToasts","current","idCounter","toast","clearToastTimer","prev","map","isExiting","filter","Date","now","dedupeKey","duration","newToast","createdAt","existingToast","wasEvicted","evictedIds","newToasts","activeToasts","progressToasts","temporalToasts","length","oldestTemporal","shift","push","idx","findIndex","splice","evictedId","startToastTimer"],"sources":["../../../../src/components/overlays/Notifications/use-toast-state.ts"],"sourcesContent":["import { Key, useRef, useState } from 'react';\n\nimport { useEvent } from '../../../_internal';\n\nimport type { InternalToast, ToastData } from '../Toast/types';\nimport type { OverlayTimers } from './use-overlay-timers';\n\n// ─── Constants ───────────────────────────────────────────────────────\n\nconst DEFAULT_TOAST_DURATION = 5000;\nconst MAX_TOASTS = 3;\n\n// ─── Dedupe Key ──────────────────────────────────────────────────────\n\n/**\n * Generate a deduplication key for a toast.\n * Uses JSON.stringify with alphabetically ordered keys to prevent false\n * collisions when title/description contains separator characters.\n */\nfunction generateToastDedupeKey(data: ToastData): string {\n if (data.id != null) return String(data.id);\n\n return JSON.stringify({\n description: typeof data.description === 'string' ? data.description : '',\n theme: data.theme ?? 'default',\n title: typeof data.title === 'string' ? data.title : '',\n });\n}\n\n// ─── Helpers ─────────────────────────────────────────────────────────\n\nfunction matchesToastId(item: InternalToast, id: Key): boolean {\n return item.id === id || item.internalId === String(id);\n}\n\nfunction findToast(list: InternalToast[], id: Key): InternalToast | undefined {\n return list.find((t) => matchesToastId(t, id));\n}\n\n// ─── Types ───────────────────────────────────────────────────────────\n\nexport interface ToastState {\n toasts: InternalToast[];\n toastsRef: ReturnType<typeof useRef<InternalToast[]>>;\n addToast: (data: ToastData, isProgress?: boolean) => Key;\n removeToast: (id: Key) => void;\n updateToast: (id: Key, data: Partial<ToastData>) => void;\n finalizeToastRemoval: (internalId: string) => void;\n}\n\n// ─── Hook ────────────────────────────────────────────────────────────\n\n/**\n * @param timersRef - Ref to the shared OverlayTimers instance. Accessed only\n * inside callbacks (never during render), so it is guaranteed to be populated.\n */\nexport function useToastState(\n timersRef: ReturnType<typeof useRef<OverlayTimers>>,\n): ToastState {\n const [toasts, setToasts] = useState<InternalToast[]>([]);\n const toastsRef = useRef(toasts);\n toastsRef.current = toasts;\n\n const idCounter = useRef(0);\n\n const removeToast = useEvent((id: Key) => {\n // Perform side effects outside the updater (StrictMode-safe).\n const toast = findToast(toastsRef.current, id);\n\n if (toast) {\n timersRef.current?.clearToastTimer(toast.internalId);\n }\n\n setToasts((prev) =>\n prev.map((t) => (matchesToastId(t, id) ? { ...t, isExiting: true } : t)),\n );\n });\n\n const finalizeToastRemoval = useEvent((internalId: string) => {\n setToasts((prev) => prev.filter((t) => t.internalId !== internalId));\n });\n\n const addToast = useEvent((data: ToastData, isProgress = false): Key => {\n idCounter.current += 1;\n const internalId = `toast-${idCounter.current}-${Date.now()}`;\n const dedupeKey = generateToastDedupeKey(data);\n const duration = isProgress\n ? null\n : data.duration ?? DEFAULT_TOAST_DURATION;\n\n const newToast: InternalToast = {\n ...data,\n internalId,\n isProgress,\n dedupeKey,\n createdAt: Date.now(),\n };\n\n // Perform dedupe side effects outside the updater (StrictMode-safe).\n const existingToast = toastsRef.current.find(\n (t) => t.dedupeKey === dedupeKey && !t.isExiting,\n );\n\n if (existingToast) {\n timersRef.current?.clearToastTimer(existingToast.internalId);\n }\n\n // Single setState call: mark duplicate as exiting, append new toast,\n // and evict oldest temporal toasts if we exceed MAX_TOASTS.\n // Track evicted IDs so we can clear timers outside the updater (StrictMode-safe).\n let wasEvicted = false;\n const evictedIds: string[] = [];\n\n setToasts((prev) => {\n let newToasts = prev;\n\n // Mark existing toast with same dedupe key as exiting\n if (existingToast) {\n newToasts = newToasts.map((t) =>\n t.internalId === existingToast.internalId\n ? { ...t, isExiting: true }\n : t,\n );\n }\n\n // Append the new toast\n newToasts = [...newToasts, newToast];\n\n // Evict oldest temporal toasts if over the cap\n const activeToasts = newToasts.filter((t) => !t.isExiting);\n const progressToasts = activeToasts.filter((t) => t.isProgress);\n const temporalToasts = activeToasts.filter((t) => !t.isProgress);\n\n while (activeToasts.length > MAX_TOASTS) {\n if (temporalToasts.length > 1 || progressToasts.length < MAX_TOASTS) {\n const oldestTemporal = temporalToasts.shift();\n\n if (oldestTemporal) {\n evictedIds.push(oldestTemporal.internalId);\n newToasts = newToasts.map((t) =>\n t.internalId === oldestTemporal.internalId\n ? { ...t, isExiting: true }\n : t,\n );\n const idx = activeToasts.findIndex(\n (t) => t.internalId === oldestTemporal.internalId,\n );\n\n if (idx !== -1) activeToasts.splice(idx, 1);\n\n // Check if the newly added toast was evicted\n if (oldestTemporal.internalId === internalId) {\n wasEvicted = true;\n }\n } else {\n break;\n }\n } else {\n break;\n }\n }\n\n return newToasts;\n });\n\n // Clear timers for evicted toasts outside the updater (StrictMode-safe)\n for (const evictedId of evictedIds) {\n timersRef.current?.clearToastTimer(evictedId);\n }\n\n // Start timer only if the toast wasn't immediately evicted\n if (!wasEvicted && duration != null && duration > 0) {\n timersRef.current?.startToastTimer(\n internalId,\n data.id ?? internalId,\n duration,\n );\n }\n\n return data.id ?? internalId;\n });\n\n const updateToast = useEvent((id: Key, data: Partial<ToastData>) => {\n setToasts((prev) =>\n prev.map((t) => (matchesToastId(t, id) ? { ...t, ...data } : t)),\n );\n });\n\n return {\n toasts,\n toastsRef,\n addToast,\n removeToast,\n updateToast,\n finalizeToastRemoval,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-toast-state.js","names":["Key","useRef","useState","useEvent","InternalToast","ToastData","OverlayTimers","DEFAULT_TOAST_DURATION","MAX_TOASTS","generateToastDedupeKey","data","id","String","JSON","stringify","description","theme","title","matchesToastId","item","internalId","findToast","list","find","t","ToastState","toasts","toastsRef","ReturnType","addToast","isProgress","removeToast","updateToast","Partial","finalizeToastRemoval","useToastState","timersRef","setToasts","current","idCounter","toast","clearToastTimer","prev","map","isExiting","filter","Date","now","dedupeKey","duration","undefined","newToast","createdAt","existingToast","wasEvicted","evictedIds","newToasts","activeToasts","progressToasts","temporalToasts","length","oldestTemporal","shift","push","idx","findIndex","splice","evictedId","startToastTimer"],"sources":["../../../../src/components/overlays/Notifications/use-toast-state.ts"],"sourcesContent":["import { Key, useRef, useState } from 'react';\n\nimport { useEvent } from '../../../_internal';\n\nimport type { InternalToast, ToastData } from '../Toast/types';\nimport type { OverlayTimers } from './use-overlay-timers';\n\n// ─── Constants ───────────────────────────────────────────────────────\n\nconst DEFAULT_TOAST_DURATION = 5000;\nconst MAX_TOASTS = 3;\n\n// ─── Dedupe Key ──────────────────────────────────────────────────────\n\n/**\n * Generate a deduplication key for a toast.\n * Uses JSON.stringify with alphabetically ordered keys to prevent false\n * collisions when title/description contains separator characters.\n */\nfunction generateToastDedupeKey(data: ToastData): string {\n if (data.id != null) return String(data.id);\n\n return JSON.stringify({\n description: typeof data.description === 'string' ? data.description : '',\n theme: data.theme ?? 'default',\n title: typeof data.title === 'string' ? data.title : '',\n });\n}\n\n// ─── Helpers ─────────────────────────────────────────────────────────\n\nfunction matchesToastId(item: InternalToast, id: Key): boolean {\n return item.id === id || item.internalId === String(id);\n}\n\nfunction findToast(list: InternalToast[], id: Key): InternalToast | undefined {\n return list.find((t) => matchesToastId(t, id));\n}\n\n// ─── Types ───────────────────────────────────────────────────────────\n\nexport interface ToastState {\n toasts: InternalToast[];\n toastsRef: ReturnType<typeof useRef<InternalToast[]>>;\n addToast: (data: ToastData, isProgress?: boolean) => Key;\n removeToast: (id: Key) => void;\n updateToast: (id: Key, data: Partial<ToastData>) => void;\n finalizeToastRemoval: (internalId: string) => void;\n}\n\n// ─── Hook ────────────────────────────────────────────────────────────\n\n/**\n * @param timersRef - Ref to the shared OverlayTimers instance. Accessed only\n * inside callbacks (never during render), so it is guaranteed to be populated.\n */\nexport function useToastState(\n timersRef: ReturnType<typeof useRef<OverlayTimers>>,\n): ToastState {\n const [toasts, setToasts] = useState<InternalToast[]>([]);\n const toastsRef = useRef(toasts);\n toastsRef.current = toasts;\n\n const idCounter = useRef(0);\n\n const removeToast = useEvent((id: Key) => {\n // Perform side effects outside the updater (StrictMode-safe).\n const toast = findToast(toastsRef.current, id);\n\n if (toast) {\n timersRef.current?.clearToastTimer(toast.internalId);\n }\n\n setToasts((prev) =>\n prev.map((t) => (matchesToastId(t, id) ? { ...t, isExiting: true } : t)),\n );\n });\n\n const finalizeToastRemoval = useEvent((internalId: string) => {\n setToasts((prev) => prev.filter((t) => t.internalId !== internalId));\n });\n\n const addToast = useEvent((data: ToastData, isProgress = false): Key => {\n idCounter.current += 1;\n const internalId = `toast-${idCounter.current}-${Date.now()}`;\n const dedupeKey = generateToastDedupeKey(data);\n // Only a missing duration takes the default: `null` keeps the toast.\n const duration = isProgress\n ? null\n : data.duration === undefined\n ? DEFAULT_TOAST_DURATION\n : data.duration;\n\n const newToast: InternalToast = {\n ...data,\n internalId,\n isProgress,\n dedupeKey,\n createdAt: Date.now(),\n };\n\n // Perform dedupe side effects outside the updater (StrictMode-safe).\n const existingToast = toastsRef.current.find(\n (t) => t.dedupeKey === dedupeKey && !t.isExiting,\n );\n\n if (existingToast) {\n timersRef.current?.clearToastTimer(existingToast.internalId);\n }\n\n // Single setState call: mark duplicate as exiting, append new toast,\n // and evict oldest temporal toasts if we exceed MAX_TOASTS.\n // Track evicted IDs so we can clear timers outside the updater (StrictMode-safe).\n let wasEvicted = false;\n const evictedIds: string[] = [];\n\n setToasts((prev) => {\n let newToasts = prev;\n\n // Mark existing toast with same dedupe key as exiting\n if (existingToast) {\n newToasts = newToasts.map((t) =>\n t.internalId === existingToast.internalId\n ? { ...t, isExiting: true }\n : t,\n );\n }\n\n // Append the new toast\n newToasts = [...newToasts, newToast];\n\n // Evict oldest temporal toasts if over the cap\n const activeToasts = newToasts.filter((t) => !t.isExiting);\n const progressToasts = activeToasts.filter((t) => t.isProgress);\n const temporalToasts = activeToasts.filter((t) => !t.isProgress);\n\n while (activeToasts.length > MAX_TOASTS) {\n if (temporalToasts.length > 1 || progressToasts.length < MAX_TOASTS) {\n const oldestTemporal = temporalToasts.shift();\n\n if (oldestTemporal) {\n evictedIds.push(oldestTemporal.internalId);\n newToasts = newToasts.map((t) =>\n t.internalId === oldestTemporal.internalId\n ? { ...t, isExiting: true }\n : t,\n );\n const idx = activeToasts.findIndex(\n (t) => t.internalId === oldestTemporal.internalId,\n );\n\n if (idx !== -1) activeToasts.splice(idx, 1);\n\n // Check if the newly added toast was evicted\n if (oldestTemporal.internalId === internalId) {\n wasEvicted = true;\n }\n } else {\n break;\n }\n } else {\n break;\n }\n }\n\n return newToasts;\n });\n\n // Clear timers for evicted toasts outside the updater (StrictMode-safe)\n for (const evictedId of evictedIds) {\n timersRef.current?.clearToastTimer(evictedId);\n }\n\n // Start timer only if the toast wasn't immediately evicted\n if (!wasEvicted && duration != null && duration > 0) {\n timersRef.current?.startToastTimer(\n internalId,\n data.id ?? internalId,\n duration,\n );\n }\n\n return data.id ?? internalId;\n });\n\n const updateToast = useEvent((id: Key, data: Partial<ToastData>) => {\n setToasts((prev) =>\n prev.map((t) => (matchesToastId(t, id) ? { ...t, ...data } : t)),\n );\n });\n\n return {\n toasts,\n toastsRef,\n addToast,\n removeToast,\n updateToast,\n finalizeToastRemoval,\n };\n}\n"],"mappings":";;;;;AASA,MAAMO,yBAAyB;AAC/B,MAAMC,aAAa;;;;;;AASnB,SAASC,uBAAuBC,MAAyB;AACvD,KAAIA,KAAKC,MAAM,KAAM,QAAOC,OAAOF,KAAKC,GAAG;AAE3C,QAAOE,KAAKC,UAAU;EACpBC,aAAa,OAAOL,KAAKK,gBAAgB,WAAWL,KAAKK,cAAc;EACvEC,OAAON,KAAKM,SAAS;EACrBC,OAAO,OAAOP,KAAKO,UAAU,WAAWP,KAAKO,QAAQ;EACtD,CAAC;;AAKJ,SAASC,eAAeC,MAAqBR,IAAkB;AAC7D,QAAOQ,KAAKR,OAAOA,MAAMQ,KAAKC,eAAeR,OAAOD,GAAG;;AAGzD,SAASU,UAAUC,MAAuBX,IAAoC;AAC5E,QAAOW,KAAKC,MAAMC,MAAMN,eAAeM,GAAGb,GAAG,CAAC;;;;;;AAoBhD,SAAgBwB,cACdC,WACY;CACZ,MAAM,CAACV,QAAQW,aAAanC,SAA0B,EAAE,CAAC;CACzD,MAAMyB,YAAY1B,OAAOyB,OAAO;AAChCC,WAAUW,UAAUZ;CAEpB,MAAMa,YAAYtC,OAAO,EAAE;CAE3B,MAAM8B,cAAc5B,UAAUQ,OAAY;EAExC,MAAM6B,QAAQnB,UAAUM,UAAUW,SAAS3B,GAAG;AAE9C,MAAI6B,MACFJ,WAAUE,SAASG,gBAAgBD,MAAMpB,WAAW;AAGtDiB,aAAWK,SACTA,KAAKC,KAAKnB,MAAON,eAAeM,GAAGb,GAAG,GAAG;GAAE,GAAGa;GAAGoB,WAAW;GAAM,GAAGpB,EACvE,CAAC;GACD;CAEF,MAAMU,uBAAuB/B,UAAUiB,eAAuB;AAC5DiB,aAAWK,WAASA,OAAKG,QAAQrB,QAAMA,IAAEJ,eAAeA,WAAW,CAAC;GACpE;AA+GF,QAAO;EACLM;EACAC;EACAE,UAhHe1B,UAAUO,MAAiBoB,aAAa,UAAe;AACtES,aAAUD,WAAW;GACrB,MAAMlB,eAAa,SAASmB,UAAUD,QAAO,GAAIQ,KAAKC,KAAK;GAC3D,MAAMC,YAAYvC,uBAAuBC,KAAK;GAE9C,MAAMuC,WAAWnB,aACb,OACApB,KAAKuC,aAAaC,SAChB3C,yBACAG,KAAKuC;GAEX,MAAME,WAA0B;IAC9B,GAAGzC;IACHU,YAAAA;IACAU;IACAkB;IACAI,WAAWN,KAAKC,KAAI;IACrB;GAGD,MAAMM,gBAAgB1B,UAAUW,QAAQf,MACrCC,QAAMA,IAAEwB,cAAcA,aAAa,CAACxB,IAAEoB,UACxC;AAED,OAAIS,cACFjB,WAAUE,SAASG,gBAAgBY,cAAcjC,WAAW;GAM9D,IAAIkC,aAAa;GACjB,MAAMC,aAAuB,EAAE;AAE/BlB,cAAWK,WAAS;IAClB,IAAIc,YAAYd;AAGhB,QAAIW,cACFG,aAAYA,UAAUb,KAAKnB,QACzBA,IAAEJ,eAAeiC,cAAcjC,aAC3B;KAAE,GAAGI;KAAGoB,WAAW;KAAM,GACzBpB,IACL;AAIHgC,gBAAY,CAAC,GAAGA,WAAWL,SAAS;IAGpC,MAAMM,eAAeD,UAAUX,QAAQrB,QAAM,CAACA,IAAEoB,UAAU;IAC1D,MAAMc,iBAAiBD,aAAaZ,QAAQrB,QAAMA,IAAEM,WAAW;IAC/D,MAAM6B,iBAAiBF,aAAaZ,QAAQrB,QAAM,CAACA,IAAEM,WAAW;AAEhE,WAAO2B,aAAaG,SAASpD,WAC3B,KAAImD,eAAeC,SAAS,KAAKF,eAAeE,SAASpD,YAAY;KACnE,MAAMqD,iBAAiBF,eAAeG,OAAO;AAE7C,SAAID,gBAAgB;AAClBN,iBAAWQ,KAAKF,eAAezC,WAAW;AAC1CoC,kBAAYA,UAAUb,KAAKnB,QACzBA,IAAEJ,eAAeyC,eAAezC,aAC5B;OAAE,GAAGI;OAAGoB,WAAW;OAAM,GACzBpB,IACL;MACD,MAAMwC,MAAMP,aAAaQ,WACtBzC,QAAMA,IAAEJ,eAAeyC,eAAezC,WACxC;AAED,UAAI4C,QAAQ,GAAIP,cAAaS,OAAOF,KAAK,EAAE;AAG3C,UAAIH,eAAezC,eAAeA,aAChCkC,cAAa;WAGf;UAGF;AAIJ,WAAOE;KACP;AAGF,QAAK,MAAMW,aAAaZ,WACtBnB,WAAUE,SAASG,gBAAgB0B,UAAU;AAI/C,OAAI,CAACb,cAAcL,YAAY,QAAQA,WAAW,EAChDb,WAAUE,SAAS8B,gBACjBhD,cACAV,KAAKC,MAAMS,cACX6B,SACD;AAGH,UAAOvC,KAAKC,MAAMS;IAClB;EAYAW;EACAC,aAXkB7B,UAAUQ,MAASD,WAA6B;AAClE2B,cAAWK,WACTA,OAAKC,KAAKnB,QAAON,eAAeM,KAAGb,KAAG,GAAG;IAAE,GAAGa;IAAG,GAAGd;IAAM,GAAGc,IAC/D,CAAC;IACD;EAQAU;EACD"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { _Item } from "../../content/Item/Item.js";
3
3
  import { getThemeIcon } from "./useToast.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -14,7 +14,14 @@ const StyledItem = tasty(_Item, { styles: {
14
14
  "": "none",
15
15
  "has-actions": "auto"
16
16
  },
17
- Description: { preset: "t4" }
17
+ Label: {
18
+ whiteSpace: "normal",
19
+ overflowWrap: "anywhere"
20
+ },
21
+ Description: {
22
+ preset: "t4",
23
+ overflowWrap: "anywhere"
24
+ }
18
25
  } });
19
26
  const ToastItem = forwardRef(function ToastItem(props, ref) {
20
27
  const $ = c(22);
@@ -1 +1 @@
1
- {"version":3,"file":"ToastItem.js","names":["tasty","forwardRef","ReactNode","CubeItemProps","Item","getThemeIcon","ToastType","ToastItemProps","Partial","Omit","title","description","theme","isLoading","icon","StyledItem","styles","shadow","transition","pointerEvents","Description","preset","ToastItem","HTMLElement","props","ref","$","_c","children","itemProps","providedIcon","qa","t0","primaryContent","secondaryContent","undefined","t1","t2"],"sources":["../../../../src/components/overlays/Toast/ToastItem.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { forwardRef, ReactNode } from 'react';\n\nimport { CubeItemProps, Item } from '../../content/Item/Item';\n\nimport { getThemeIcon } from './useToast';\n\nimport type { ToastType } from './types';\n\nexport interface ToastItemProps\n extends Partial<Omit<CubeItemProps, 'type' | 'icon'>> {\n /** Primary content (→ Item children). Also supports description-only for migration. */\n title?: ReactNode;\n /** Secondary content (or primary if no title/children) */\n description?: ReactNode;\n /** Visual theme */\n theme?: ToastType;\n /** Whether the toast is in loading state */\n isLoading?: boolean;\n /** Icon to display (resolved ReactNode, not a dynamic icon function) */\n icon?: ReactNode;\n}\n\nconst StyledItem = tasty(Item, {\n styles: {\n shadow: '$shadow',\n transition: 'theme, inset',\n pointerEvents: {\n '': 'none',\n 'has-actions': 'auto',\n },\n\n Description: {\n preset: 't4',\n },\n },\n});\n\nexport const ToastItem = forwardRef<HTMLElement, ToastItemProps>(\n function ToastItem(props, ref) {\n const {\n title,\n description,\n theme,\n isLoading,\n icon: providedIcon,\n children,\n qa,\n ...itemProps\n } = props;\n\n const icon = getThemeIcon(theme, providedIcon, isLoading);\n\n // If only description provided (no title/children), use description as primary content\n const primaryContent = children ?? title ?? description;\n const secondaryContent = children || title ? description : undefined;\n\n return (\n <StyledItem\n ref={ref}\n qa={qa ?? 'Toast'}\n type=\"card\"\n theme={theme}\n icon={icon}\n isLoading={isLoading}\n isDisabled={false}\n description={secondaryContent}\n {...itemProps}\n >\n {primaryContent}\n </StyledItem>\n );\n },\n);\n"],"mappings":";;;;;;;;;AAuBA,MAAMe,aAAaf,MAAMI,OAAM,EAC7BY,QAAQ;CACNC,QAAQ;CACRC,YAAY;CACZC,eAAe;EACb,IAAI;EACJ,eAAe;EAChB;CAEDC,aAAa,EACXC,QAAQ,MACV;CACF,EACD,CAAC;AAEF,MAAaC,YAAYrB,WACvB,SAAAqB,UAAAE,OAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAA,IAAAC;CAAA,IAAAjB;CAAA,IAAAE;CAAA,IAAAgB;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAnB;CAAA,IAAAF;AAAA,KAAAgB,EAAA,OAAAF,OAAA;AACE,GAAA,CAAAd,OAAAC,aAAAC,OAAAC,WAAAC,MAAAgB,cAAAF,UAAAG,OAAAF,aASIL;AAAME,IAAA,KAAAF;AAAAE,IAAA,KAAAE;AAAAF,IAAA,KAAAf;AAAAe,IAAA,KAAAb;AAAAa,IAAA,KAAAG;AAAAH,IAAA,KAAAI;AAAAJ,IAAA,KAAAK;AAAAL,IAAA,KAAAd;AAAAc,IAAA,KAAAhB;QAAA;AAAAkB,aAAAF,EAAA;AAAAf,gBAAAe,EAAA;AAAAb,cAAAa,EAAA;AAAAG,cAAAH,EAAA;AAAAI,iBAAAJ,EAAA;AAAAK,OAAAL,EAAA;AAAAd,UAAAc,EAAA;AAAAhB,UAAAgB,EAAA;;CAAA,IAAAM;AAAA,KAAAN,EAAA,OAAAb,aAAAa,EAAA,QAAAI,gBAAAJ,EAAA,QAAAd,OAAA;AAEGoB,OAAA3B,aAAaO,OAAOkB,cAAcjB,UAAU;AAAAa,IAAA,KAAAb;AAAAa,IAAA,MAAAI;AAAAJ,IAAA,MAAAd;AAAAc,IAAA,MAAAM;OAAAA,MAAAN,EAAA;CAAzD,MAAAZ,OAAakB;CAGb,MAAAC,iBAAuBL,YAAAlB,SAAAC;CACvB,MAAAuB,mBAAyBN,YAAAlB,QAAAC,cAAAwB;CAKjB,MAAAC,KAAAL,MAAA;CAAa,IAAAM;AAAA,KAAAX,EAAA,QAAAZ,QAAAY,EAAA,QAAAb,aAAAa,EAAA,QAAAG,aAAAH,EAAA,QAAAO,kBAAAP,EAAA,QAAAD,OAAAC,EAAA,QAAAQ,oBAAAR,EAAA,QAAAU,MAAAV,EAAA,QAAAd,OAAA;AAFnByB,OAAA,oBAAC;GACMZ;GACD,IAAAW;GACC,MAAA;GACExB;GACDE;GACKD;GACC,YAAA;GACCqB,aAAAA;GAAgB,GACzBL;aAEHI;IACU;AAAAP,IAAA,MAAAZ;AAAAY,IAAA,MAAAb;AAAAa,IAAA,MAAAG;AAAAH,IAAA,MAAAO;AAAAP,IAAA,MAAAD;AAAAC,IAAA,MAAAQ;AAAAR,IAAA,MAAAU;AAAAV,IAAA,MAAAd;AAAAc,IAAA,MAAAW;OAAAA,MAAAX,EAAA;AAAA,QAZbW;EAeL"}
1
+ {"version":3,"file":"ToastItem.js","names":["tasty","forwardRef","ReactNode","CubeItemProps","Item","getThemeIcon","ToastType","ToastItemProps","Partial","Omit","title","description","theme","isLoading","icon","StyledItem","styles","shadow","transition","pointerEvents","Label","whiteSpace","overflowWrap","Description","preset","ToastItem","HTMLElement","props","ref","$","_c","children","itemProps","providedIcon","qa","t0","primaryContent","secondaryContent","undefined","t1","t2"],"sources":["../../../../src/components/overlays/Toast/ToastItem.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { forwardRef, ReactNode } from 'react';\n\nimport { CubeItemProps, Item } from '../../content/Item/Item';\n\nimport { getThemeIcon } from './useToast';\n\nimport type { ToastType } from './types';\n\nexport interface ToastItemProps\n extends Partial<Omit<CubeItemProps, 'type' | 'icon'>> {\n /** Primary content (→ Item children). Also supports description-only for migration. */\n title?: ReactNode;\n /** Secondary content (or primary if no title/children) */\n description?: ReactNode;\n /** Visual theme */\n theme?: ToastType;\n /** Whether the toast is in loading state */\n isLoading?: boolean;\n /** Icon to display (resolved ReactNode, not a dynamic icon function) */\n icon?: ReactNode;\n}\n\nconst StyledItem = tasty(Item, {\n styles: {\n shadow: '$shadow',\n transition: 'theme, inset',\n pointerEvents: {\n '': 'none',\n 'has-actions': 'auto',\n },\n\n // A long message wraps at the wrapper's cap instead of running past it,\n // and a word wider than the cap, such as a URL, breaks too.\n Label: {\n whiteSpace: 'normal',\n overflowWrap: 'anywhere',\n },\n\n Description: {\n preset: 't4',\n overflowWrap: 'anywhere',\n },\n },\n});\n\nexport const ToastItem = forwardRef<HTMLElement, ToastItemProps>(\n function ToastItem(props, ref) {\n const {\n title,\n description,\n theme,\n isLoading,\n icon: providedIcon,\n children,\n qa,\n ...itemProps\n } = props;\n\n const icon = getThemeIcon(theme, providedIcon, isLoading);\n\n // If only description provided (no title/children), use description as primary content\n const primaryContent = children ?? title ?? description;\n const secondaryContent = children || title ? description : undefined;\n\n return (\n <StyledItem\n ref={ref}\n qa={qa ?? 'Toast'}\n type=\"card\"\n theme={theme}\n icon={icon}\n isLoading={isLoading}\n isDisabled={false}\n description={secondaryContent}\n {...itemProps}\n >\n {primaryContent}\n </StyledItem>\n );\n },\n);\n"],"mappings":";;;;;;;;;AAuBA,MAAMe,aAAaf,MAAMI,OAAM,EAC7BY,QAAQ;CACNC,QAAQ;CACRC,YAAY;CACZC,eAAe;EACb,IAAI;EACJ,eAAe;EAChB;CAIDC,OAAO;EACLC,YAAY;EACZC,cAAc;EACf;CAEDC,aAAa;EACXC,QAAQ;EACRF,cAAc;EAChB;CACF,EACD,CAAC;AAEF,MAAaG,YAAYxB,WACvB,SAAAwB,UAAAE,OAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAA,IAAAC;CAAA,IAAApB;CAAA,IAAAE;CAAA,IAAAmB;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAtB;CAAA,IAAAF;AAAA,KAAAmB,EAAA,OAAAF,OAAA;AACE,GAAA,CAAAjB,OAAAC,aAAAC,OAAAC,WAAAC,MAAAmB,cAAAF,UAAAG,OAAAF,aASIL;AAAME,IAAA,KAAAF;AAAAE,IAAA,KAAAE;AAAAF,IAAA,KAAAlB;AAAAkB,IAAA,KAAAhB;AAAAgB,IAAA,KAAAG;AAAAH,IAAA,KAAAI;AAAAJ,IAAA,KAAAK;AAAAL,IAAA,KAAAjB;AAAAiB,IAAA,KAAAnB;QAAA;AAAAqB,aAAAF,EAAA;AAAAlB,gBAAAkB,EAAA;AAAAhB,cAAAgB,EAAA;AAAAG,cAAAH,EAAA;AAAAI,iBAAAJ,EAAA;AAAAK,OAAAL,EAAA;AAAAjB,UAAAiB,EAAA;AAAAnB,UAAAmB,EAAA;;CAAA,IAAAM;AAAA,KAAAN,EAAA,OAAAhB,aAAAgB,EAAA,QAAAI,gBAAAJ,EAAA,QAAAjB,OAAA;AAEGuB,OAAA9B,aAAaO,OAAOqB,cAAcpB,UAAU;AAAAgB,IAAA,KAAAhB;AAAAgB,IAAA,MAAAI;AAAAJ,IAAA,MAAAjB;AAAAiB,IAAA,MAAAM;OAAAA,MAAAN,EAAA;CAAzD,MAAAf,OAAaqB;CAGb,MAAAC,iBAAuBL,YAAArB,SAAAC;CACvB,MAAA0B,mBAAyBN,YAAArB,QAAAC,cAAA2B;CAKjB,MAAAC,KAAAL,MAAA;CAAa,IAAAM;AAAA,KAAAX,EAAA,QAAAf,QAAAe,EAAA,QAAAhB,aAAAgB,EAAA,QAAAG,aAAAH,EAAA,QAAAO,kBAAAP,EAAA,QAAAD,OAAAC,EAAA,QAAAQ,oBAAAR,EAAA,QAAAU,MAAAV,EAAA,QAAAjB,OAAA;AAFnB4B,OAAA,oBAAC;GACMZ;GACD,IAAAW;GACC,MAAA;GACE3B;GACDE;GACKD;GACC,YAAA;GACCwB,aAAAA;GAAgB,GACzBL;aAEHI;IACU;AAAAP,IAAA,MAAAf;AAAAe,IAAA,MAAAhB;AAAAgB,IAAA,MAAAG;AAAAH,IAAA,MAAAO;AAAAP,IAAA,MAAAD;AAAAC,IAAA,MAAAQ;AAAAR,IAAA,MAAAU;AAAAV,IAAA,MAAAjB;AAAAiB,IAAA,MAAAW;OAAAA,MAAAX,EAAA;AAAA,QAZbW;EAeL"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { useToastContext } from "../Notifications/NotificationContext.js";
3
3
  import { useProgressToast } from "./useProgressToast.js";
4
4
  import { getThemeIcon, useToast } from "./useToast.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { CheckIcon } from "../../../icons/CheckIcon.js";
3
3
  import { InfoCircleIcon } from "../../../icons/InfoCircleIcon.js";
4
4
  import { useToastContext } from "../Notifications/NotificationContext.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
4
4
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { _Tooltip } from "./Tooltip.js";
3
3
  import { TooltipTrigger } from "./TooltipTrigger.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { isDevEnv } from "../../../utils/is-dev-env.js";
4
4
  import { TooltipContext } from "./context.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import React from "react";
3
3
 
4
4
  //#region src/components/overlays/Tooltip/context.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
 
4
4
  //#region src/components/overlays/Tooltip/split-trigger-props.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { usePortal } from "./usePortal.js";
3
3
  import { c } from "react-compiler-runtime";
4
4
  import { TastyBatchProvider } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { c } from "react-compiler-runtime";
3
3
  import { createContext, useContext } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { usePortalContext } from "./PortalProvider.js";
3
3
  import { useEffect, useRef, useState } from "react";
4
4
  import invariant from "tiny-invariant";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { useEvent } from "../../_internal/hooks/use-event.js";
3
3
  import { useCallback, useEffect, useMemo, useRef } from "react";
4
4
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { WarningIcon } from "../../icons/WarningIcon.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { CheckIcon } from "../../icons/CheckIcon.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
3
3
  import { Block } from "../../Block.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { c } from "react-compiler-runtime";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { memo } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { Cube } from "./Cube.js";
3
3
  import { SpinsContainer } from "./SpinsContainer.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { Block } from "../../Block.js";
3
3
  import { InternalSpinner } from "./InternalSpinner.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  import { c } from "react-compiler-runtime";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  //#region src/data/item-themes.ts
3
3
  const VALIDATION_STYLES = { border: {
4
4
  invalid: "#danger-accent-text",
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  //#region src/data/themes.ts
3
3
  var themes_default = {
4
4
  special: {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.5 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.6 | Cube Dev Team */
2
2
  //#region src/eslint-plugin/defaults.generated.ts
3
3
  const DEFAULTS = {
4
4
  components: {
@@ -219,6 +219,10 @@ const DEFAULTS = {
219
219
  kind: "default",
220
220
  value: "top"
221
221
  },
222
+ isDisabled: {
223
+ kind: "default",
224
+ value: false
225
+ },
222
226
  isLoading: {
223
227
  kind: "default",
224
228
  value: false