@cube-dev/ui-kit 0.113.0 → 0.114.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (689) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/es/_internal/hooks/index.js +1 -1
  3. package/es/_internal/hooks/use-chained-callback.js +1 -1
  4. package/es/_internal/hooks/use-debounced-value.js +1 -1
  5. package/es/_internal/hooks/use-deprecation-warning.js +1 -1
  6. package/es/_internal/hooks/use-effect-once.js +1 -1
  7. package/es/_internal/hooks/use-event.js +1 -1
  8. package/es/_internal/hooks/use-is-first-render.js +1 -1
  9. package/es/_internal/hooks/use-sync-ref.js +1 -1
  10. package/es/_internal/hooks/use-timer/index.js +1 -1
  11. package/es/_internal/hooks/use-timer/timer.js +1 -1
  12. package/es/_internal/hooks/use-timer/use-timer.js +1 -1
  13. package/es/_internal/hooks/use-update-effect.js +1 -1
  14. package/es/_internal/hooks/use-warn.js +1 -1
  15. package/es/_internal/index.js +1 -1
  16. package/es/components/Block.js +1 -1
  17. package/es/components/CollectionItem.js +1 -1
  18. package/es/components/GlobalStyles.js +1 -1
  19. package/es/components/GridProvider.js +1 -1
  20. package/es/components/HiddenInput.js +1 -1
  21. package/es/components/OpenTrasition.js +1 -1
  22. package/es/components/Root.js +3 -4
  23. package/es/components/actions/Action/Action.js +1 -1
  24. package/es/components/actions/Banner/Banner.js +1 -1
  25. package/es/components/actions/Banner/index.js +1 -1
  26. package/es/components/actions/Button/Button.js +1 -1
  27. package/es/components/actions/Button/index.js +1 -1
  28. package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  29. package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
  30. package/es/components/actions/CommandMenu/index.js +1 -1
  31. package/es/components/actions/CommandMenu/styled.js +1 -1
  32. package/es/components/actions/ItemAction/ItemAction.js +5 -1
  33. package/es/components/actions/ItemAction/index.js +1 -1
  34. package/es/components/actions/ItemActionContext.js +1 -1
  35. package/es/components/actions/ItemButton/ItemButton.js +1 -1
  36. package/es/components/actions/ItemButton/index.js +1 -1
  37. package/es/components/actions/Link/Link.js +1 -1
  38. package/es/components/actions/Menu/Menu.js +1 -1
  39. package/es/components/actions/Menu/MenuItem.js +1 -1
  40. package/es/components/actions/Menu/MenuSection.js +1 -1
  41. package/es/components/actions/Menu/MenuTrigger.js +1 -1
  42. package/es/components/actions/Menu/SubMenuTrigger.js +1 -1
  43. package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  44. package/es/components/actions/Menu/context.js +1 -1
  45. package/es/components/actions/Menu/index.js +1 -1
  46. package/es/components/actions/Menu/styled.js +1 -1
  47. package/es/components/actions/index.js +1 -1
  48. package/es/components/actions/use-action.js +1 -1
  49. package/es/components/actions/use-anchored-menu.js +1 -1
  50. package/es/components/actions/use-context-menu.js +1 -1
  51. package/es/components/content/ActiveZone/ActiveZone.js +1 -1
  52. package/es/components/content/Alert/Alert.js +1 -1
  53. package/es/components/content/Alert/index.js +1 -1
  54. package/es/components/content/Alert/types.js +1 -1
  55. package/es/components/content/Alert/use-alert.js +1 -1
  56. package/es/components/content/Avatar/Avatar.js +1 -1
  57. package/es/components/content/Badge/Badge.js +1 -1
  58. package/es/components/content/Card/Card.js +1 -1
  59. package/es/components/content/Content.js +1 -1
  60. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  61. package/es/components/content/CopyPasteBlock/index.js +1 -1
  62. package/es/components/content/CopySnippet/CopySnippet.js +1 -1
  63. package/es/components/content/CopySnippet/index.js +1 -1
  64. package/es/components/content/Disclosure/Disclosure.js +1 -1
  65. package/es/components/content/Disclosure/index.js +1 -1
  66. package/es/components/content/Divider.js +1 -1
  67. package/es/components/content/Footer.js +1 -1
  68. package/es/components/content/Header.js +1 -1
  69. package/es/components/content/HotKeys/HotKeys.js +1 -1
  70. package/es/components/content/HotKeys/index.js +1 -1
  71. package/es/components/content/Item/Item.js +1 -1
  72. package/es/components/content/Item/index.js +1 -1
  73. package/es/components/content/ItemBadge/ItemBadge.js +1 -1
  74. package/es/components/content/ItemBadge/index.js +1 -1
  75. package/es/components/content/Layout/GridLayout.js +1 -1
  76. package/es/components/content/Layout/Layout.js +1 -1
  77. package/es/components/content/Layout/LayoutBlock.js +1 -1
  78. package/es/components/content/Layout/LayoutCenter.js +4 -3
  79. package/es/components/content/Layout/LayoutContainer.js +3 -3
  80. package/es/components/content/Layout/LayoutContent.js +1 -1
  81. package/es/components/content/Layout/LayoutContext.js +1 -1
  82. package/es/components/content/Layout/LayoutFlex.js +1 -1
  83. package/es/components/content/Layout/LayoutFooter.js +1 -1
  84. package/es/components/content/Layout/LayoutGrid.js +1 -1
  85. package/es/components/content/Layout/LayoutHeader.js +1 -1
  86. package/es/components/content/Layout/LayoutPane.js +1 -1
  87. package/es/components/content/Layout/LayoutPanel.js +1 -1
  88. package/es/components/content/Layout/LayoutPanelHeader.js +1 -1
  89. package/es/components/content/Layout/LayoutToolbar.js +1 -1
  90. package/es/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  91. package/es/components/content/Layout/index.js +1 -1
  92. package/es/components/content/Layout/utils.js +1 -1
  93. package/es/components/content/List/SectionHeading.js +1 -1
  94. package/es/components/content/List/index.js +1 -1
  95. package/es/components/content/Paragraph.js +1 -1
  96. package/es/components/content/Placeholder/Placeholder.js +1 -1
  97. package/es/components/content/PrismCode/PrismCode.js +1 -1
  98. package/es/components/content/PrismCode/prismSetup.js +1 -1
  99. package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  100. package/es/components/content/Result/Result.js +1 -1
  101. package/es/components/content/Skeleton/Skeleton.js +1 -1
  102. package/es/components/content/Tag/Tag.js +1 -1
  103. package/es/components/content/Text.js +1 -1
  104. package/es/components/content/TextItem/TextItem.js +1 -1
  105. package/es/components/content/TextItem/index.js +1 -1
  106. package/es/components/content/Title.js +1 -1
  107. package/es/components/content/highlightText.js +1 -1
  108. package/es/components/content/use-auto-tooltip.js +1 -1
  109. package/es/components/fields/Checkbox/Checkbox.js +1 -1
  110. package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
  111. package/es/components/fields/Checkbox/context.js +1 -1
  112. package/es/components/fields/Checkbox/index.js +1 -1
  113. package/es/components/fields/ComboBox/ComboBox.js +1 -1
  114. package/es/components/fields/ComboBox/index.js +1 -1
  115. package/es/components/fields/DatePicker/DateInput.js +1 -1
  116. package/es/components/fields/DatePicker/DateInputBase.js +1 -1
  117. package/es/components/fields/DatePicker/DatePicker.js +1 -1
  118. package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
  119. package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
  120. package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
  121. package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
  122. package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
  123. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  124. package/es/components/fields/DatePicker/TimeInput.js +1 -1
  125. package/es/components/fields/DatePicker/index.js +1 -1
  126. package/es/components/fields/DatePicker/intl.js +1 -1
  127. package/es/components/fields/DatePicker/parseDate.js +1 -1
  128. package/es/components/fields/DatePicker/props.js +1 -1
  129. package/es/components/fields/DatePicker/types.js +1 -1
  130. package/es/components/fields/DatePicker/utils.js +1 -1
  131. package/es/components/fields/FileInput/FileInput.js +1 -1
  132. package/es/components/fields/FilterListBox/FilterListBox.js +1 -1
  133. package/es/components/fields/FilterListBox/index.js +1 -1
  134. package/es/components/fields/FilterPicker/FilterPicker.js +1 -1
  135. package/es/components/fields/FilterPicker/index.js +1 -1
  136. package/es/components/fields/Input/Input.js +1 -1
  137. package/es/components/fields/Input/index.js +1 -1
  138. package/es/components/fields/ListBox/ListBox.js +1 -1
  139. package/es/components/fields/ListBox/index.js +1 -1
  140. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  141. package/es/components/fields/NumberInput/StepButton.js +1 -1
  142. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  143. package/es/components/fields/Picker/Picker.js +1 -1
  144. package/es/components/fields/Picker/index.js +1 -1
  145. package/es/components/fields/RadioGroup/Radio.js +1 -1
  146. package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
  147. package/es/components/fields/RadioGroup/context.js +1 -1
  148. package/es/components/fields/RadioGroup/index.js +1 -1
  149. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  150. package/es/components/fields/SearchInput/index.js +1 -1
  151. package/es/components/fields/Select/Select.js +1 -1
  152. package/es/components/fields/Select/index.js +1 -1
  153. package/es/components/fields/Slider/Gradation.js +1 -1
  154. package/es/components/fields/Slider/Header.js +1 -1
  155. package/es/components/fields/Slider/HueSlider.js +1 -1
  156. package/es/components/fields/Slider/RangeSlider.js +1 -1
  157. package/es/components/fields/Slider/Slider.js +1 -1
  158. package/es/components/fields/Slider/SliderBase.js +1 -1
  159. package/es/components/fields/Slider/SliderInput.js +1 -1
  160. package/es/components/fields/Slider/SliderThumb.js +1 -1
  161. package/es/components/fields/Slider/SliderTrack.js +1 -1
  162. package/es/components/fields/Slider/elements.js +1 -1
  163. package/es/components/fields/Slider/index.js +1 -1
  164. package/es/components/fields/Slider/types.js +1 -1
  165. package/es/components/fields/Switch/Switch.js +1 -1
  166. package/es/components/fields/Switch/index.js +1 -1
  167. package/es/components/fields/TextArea/TextArea.js +1 -1
  168. package/es/components/fields/TextArea/index.js +1 -1
  169. package/es/components/fields/TextInput/TextInput.js +1 -1
  170. package/es/components/fields/TextInput/TextInputBase.js +1 -1
  171. package/es/components/fields/TextInput/index.js +1 -1
  172. package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  173. package/es/components/fields/TextInputMapper/index.js +1 -1
  174. package/es/components/fields/index.js +1 -1
  175. package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
  176. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  177. package/es/components/form/FieldWrapper/index.js +1 -1
  178. package/es/components/form/FieldWrapper/types.js +1 -1
  179. package/es/components/form/Form/Field.js +1 -1
  180. package/es/components/form/Form/Form.js +1 -1
  181. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  182. package/es/components/form/Form/ResetButton/index.js +1 -1
  183. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  184. package/es/components/form/Form/SubmitButton/index.js +1 -1
  185. package/es/components/form/Form/SubmitError.js +1 -1
  186. package/es/components/form/Form/index.js +1 -1
  187. package/es/components/form/Form/types.js +1 -1
  188. package/es/components/form/Form/use-field/index.js +1 -1
  189. package/es/components/form/Form/use-field/types.js +1 -1
  190. package/es/components/form/Form/use-field/use-field-props.js +1 -1
  191. package/es/components/form/Form/use-field/use-field.js +1 -1
  192. package/es/components/form/Form/use-form.js +1 -1
  193. package/es/components/form/Form/validation.js +1 -1
  194. package/es/components/form/Label.js +1 -1
  195. package/es/components/form/index.js +1 -1
  196. package/es/components/form/wrapper.js +1 -1
  197. package/es/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  198. package/es/components/helpers/DisplayTransition/index.js +1 -1
  199. package/es/components/helpers/IconSwitch/IconSwitch.js +1 -1
  200. package/es/components/helpers/index.js +1 -1
  201. package/es/components/layout/Flex.js +1 -1
  202. package/es/components/layout/Flow.js +1 -1
  203. package/es/components/layout/Grid.js +1 -1
  204. package/es/components/layout/Panel.js +1 -1
  205. package/es/components/layout/Prefix.js +1 -1
  206. package/es/components/layout/ResizablePanel.js +1 -1
  207. package/es/components/layout/Space.js +1 -1
  208. package/es/components/layout/Suffix.js +1 -1
  209. package/es/components/navigation/Tabs/DraggableTabList.js +1 -1
  210. package/es/components/navigation/Tabs/EditableTitle.js +1 -1
  211. package/es/components/navigation/Tabs/TabButton.js +1 -1
  212. package/es/components/navigation/Tabs/TabDropIndicator.js +28 -2
  213. package/es/components/navigation/Tabs/TabPanel.js +1 -1
  214. package/es/components/navigation/Tabs/TabPicker.js +1 -1
  215. package/es/components/navigation/Tabs/Tabs.js +1 -1
  216. package/es/components/navigation/Tabs/TabsAction.js +1 -1
  217. package/es/components/navigation/Tabs/TabsContext.js +1 -1
  218. package/es/components/navigation/Tabs/index.js +1 -1
  219. package/es/components/navigation/Tabs/styled.js +1 -1
  220. package/es/components/navigation/Tabs/types.js +1 -1
  221. package/es/components/navigation/Tabs/use-tab-editing.js +1 -1
  222. package/es/components/navigation/Tabs/use-tab-indicator.js +1 -1
  223. package/es/components/navigation/index.js +1 -1
  224. package/es/components/organisms/FileTabs/FileTabs.js +1 -1
  225. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  226. package/es/components/other/Calendar/Calendar.js +1 -1
  227. package/es/components/other/Calendar/CalendarCell.js +1 -1
  228. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  229. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  230. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  231. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  232. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  233. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  234. package/es/components/overlays/AlertDialog/index.js +1 -1
  235. package/es/components/overlays/AlertDialog/types.js +1 -1
  236. package/es/components/overlays/Dialog/Dialog.js +1 -1
  237. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  238. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  239. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  240. package/es/components/overlays/Dialog/context.js +1 -1
  241. package/es/components/overlays/Dialog/index.js +1 -1
  242. package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
  243. package/es/components/overlays/Modal/Modal.js +1 -1
  244. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  245. package/es/components/overlays/Modal/Overlay.js +1 -1
  246. package/es/components/overlays/Modal/Popover.js +1 -1
  247. package/es/components/overlays/Modal/Tray.js +1 -1
  248. package/es/components/overlays/Modal/Underlay.js +1 -1
  249. package/es/components/overlays/Modal/index.js +1 -1
  250. package/es/components/overlays/Modal/types.js +1 -1
  251. package/es/components/overlays/Notifications/Notification.js +89 -0
  252. package/es/components/overlays/Notifications/NotificationAction.js +82 -0
  253. package/es/components/overlays/Notifications/NotificationCard.js +87 -0
  254. package/es/components/overlays/Notifications/NotificationContext.js +44 -0
  255. package/es/components/overlays/Notifications/NotificationItem.js +63 -0
  256. package/es/components/overlays/Notifications/OverlayContainer.js +346 -0
  257. package/es/components/overlays/Notifications/OverlayProvider.js +69 -0
  258. package/es/components/overlays/Notifications/PersistentNotificationsList.js +120 -0
  259. package/es/components/overlays/Notifications/format-relative-time.js +55 -0
  260. package/es/components/overlays/Notifications/index.js +51 -0
  261. package/es/components/overlays/{NewNotifications/NotificationsList → Notifications}/types.js +1 -1
  262. package/es/components/overlays/Notifications/use-notification-state.js +239 -0
  263. package/es/components/overlays/Notifications/use-notifications.js +175 -0
  264. package/es/components/overlays/Notifications/use-overlay-timers.js +141 -0
  265. package/es/components/overlays/Notifications/use-persistent-notifications.js +63 -0
  266. package/es/components/overlays/Notifications/use-persistent-state.js +85 -0
  267. package/es/components/overlays/Notifications/use-toast-state.js +143 -0
  268. package/es/components/overlays/OverlayWrapper.js +1 -1
  269. package/es/components/overlays/Toast/ToastItem.js +6 -3
  270. package/es/components/overlays/Toast/ToastProvider.js +6 -352
  271. package/es/components/overlays/Toast/index.js +3 -8
  272. package/es/components/overlays/Toast/types.js +1 -1
  273. package/es/components/overlays/Toast/useProgressToast.js +2 -5
  274. package/es/components/overlays/Toast/useToast.js +1 -7
  275. package/es/components/overlays/Tooltip/Tooltip.js +1 -1
  276. package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
  277. package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  278. package/es/components/overlays/Tooltip/context.js +1 -1
  279. package/es/components/overlays/Tooltip/index.js +1 -1
  280. package/es/components/portal/Portal.js +1 -1
  281. package/es/components/portal/PortalProvider.js +1 -1
  282. package/es/components/portal/index.js +1 -1
  283. package/es/components/portal/types.js +1 -1
  284. package/es/components/portal/usePortal.js +1 -1
  285. package/es/components/shared/InvalidIcon.js +1 -1
  286. package/es/components/shared/ValidIcon.js +1 -1
  287. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  288. package/es/components/status/LoadingAnimation/index.js +1 -1
  289. package/es/components/status/Spin/Cube.js +1 -1
  290. package/es/components/status/Spin/InternalSpinner.js +1 -1
  291. package/es/components/status/Spin/Spin.js +1 -1
  292. package/es/components/status/Spin/SpinsContainer.js +1 -1
  293. package/es/components/status/Spin/index.js +1 -1
  294. package/es/components/status/Spin/types.js +1 -1
  295. package/es/components/status/index.js +1 -1
  296. package/es/data/item-themes.js +1 -1
  297. package/es/data/themes.js +1 -1
  298. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  299. package/es/icons/AdjustmentsIcon.js +1 -1
  300. package/es/icons/AiIcon.js +1 -1
  301. package/es/icons/AreaChartIcon.js +1 -1
  302. package/es/icons/BackwardIcon.js +1 -1
  303. package/es/icons/BarChartIcon.js +1 -1
  304. package/es/icons/BellFilledIcon.js +1 -1
  305. package/es/icons/BellIcon.js +1 -1
  306. package/es/icons/BooleanIcon.js +1 -1
  307. package/es/icons/CalendarEditIcon.js +1 -1
  308. package/es/icons/CalendarIcon.js +1 -1
  309. package/es/icons/CaretDownIcon.js +1 -1
  310. package/es/icons/CaretUpIcon.js +1 -1
  311. package/es/icons/ChartAreaStackedIcon.js +1 -1
  312. package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
  313. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  314. package/es/icons/ChartBarGroupedIcon.js +1 -1
  315. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  316. package/es/icons/ChartBarLineIcon.js +1 -1
  317. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  318. package/es/icons/ChartBarStackedIcon.js +1 -1
  319. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  320. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  321. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  322. package/es/icons/ChartBoxPlotIcon.js +1 -1
  323. package/es/icons/ChartBubbleIcon.js +1 -1
  324. package/es/icons/ChartDonut2Icon.js +1 -1
  325. package/es/icons/ChartFunnelIcon.js +1 -1
  326. package/es/icons/ChartHeatmapIcon.js +1 -1
  327. package/es/icons/ChartKPIIcon.js +1 -1
  328. package/es/icons/ChartPie2Icon.js +1 -1
  329. package/es/icons/ChartScatterIcon.js +1 -1
  330. package/es/icons/CheckCircleFilledIcon.js +1 -1
  331. package/es/icons/CheckCircleIcon.js +1 -1
  332. package/es/icons/CheckIcon.js +1 -1
  333. package/es/icons/CircleFilledIcon.js +1 -1
  334. package/es/icons/ClearIcon.js +1 -1
  335. package/es/icons/CloseCircleFilledIcon.js +1 -1
  336. package/es/icons/CloseCircleIcon.js +1 -1
  337. package/es/icons/CloseIcon.js +1 -1
  338. package/es/icons/CodeIcon.js +1 -1
  339. package/es/icons/ColumnTotalIcon.js +1 -1
  340. package/es/icons/CopyIcon.js +1 -1
  341. package/es/icons/CountIcon.js +1 -1
  342. package/es/icons/CubeIcon.js +1 -1
  343. package/es/icons/CubePauseIcon.js +1 -1
  344. package/es/icons/CubePlayIcon.js +1 -1
  345. package/es/icons/CurrencyDollarIcon.js +1 -1
  346. package/es/icons/DangerIcon.js +1 -1
  347. package/es/icons/DashboardIcon.js +1 -1
  348. package/es/icons/DatabaseIcon.js +1 -1
  349. package/es/icons/DecimalDecreaseIcon.js +1 -1
  350. package/es/icons/DecimalIncreaseIcon.js +1 -1
  351. package/es/icons/DirectionIcon.js +1 -1
  352. package/es/icons/DonutIcon.js +1 -1
  353. package/es/icons/DownIcon.js +1 -1
  354. package/es/icons/EditIcon.js +1 -1
  355. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  356. package/es/icons/ExclamationCircleIcon.js +1 -1
  357. package/es/icons/ExclamationIcon.js +1 -1
  358. package/es/icons/EyeIcon.js +1 -1
  359. package/es/icons/EyeInvisibleIcon.js +1 -1
  360. package/es/icons/FilterIcon.js +1 -1
  361. package/es/icons/FolderFilledIcon.js +1 -1
  362. package/es/icons/FolderIcon.js +1 -1
  363. package/es/icons/FolderOpenFilledIcon.js +1 -1
  364. package/es/icons/FolderOpenIcon.js +1 -1
  365. package/es/icons/ForwardIcon.js +1 -1
  366. package/es/icons/HierarchyIcon.js +1 -1
  367. package/es/icons/HierarchyOpenIcon.js +1 -1
  368. package/es/icons/Icon.js +1 -1
  369. package/es/icons/InfoCircleIcon.js +1 -1
  370. package/es/icons/InfoIcon.js +1 -1
  371. package/es/icons/KeyIcon.js +1 -1
  372. package/es/icons/LeftIcon.js +1 -1
  373. package/es/icons/LineChartIcon.js +1 -1
  374. package/es/icons/LoadingIcon.js +1 -1
  375. package/es/icons/LockFilledIcon.js +1 -1
  376. package/es/icons/LockIcon.js +1 -1
  377. package/es/icons/MoreIcon.js +1 -1
  378. package/es/icons/NotAllowedIcon.js +1 -1
  379. package/es/icons/Number123Icon.js +1 -1
  380. package/es/icons/NumberIcon.js +1 -1
  381. package/es/icons/PauseCircleFilledIcon.js +1 -1
  382. package/es/icons/PauseCircleIcon.js +1 -1
  383. package/es/icons/PauseIcon.js +1 -1
  384. package/es/icons/PercentageIcon.js +1 -1
  385. package/es/icons/PieChartIcon.js +1 -1
  386. package/es/icons/PlayCircleIcon.js +1 -1
  387. package/es/icons/PlayIcon.js +1 -1
  388. package/es/icons/PlusIcon.js +1 -1
  389. package/es/icons/ProgressBarIcon.js +1 -1
  390. package/es/icons/ReloadIcon.js +1 -1
  391. package/es/icons/ReportIcon.js +1 -1
  392. package/es/icons/ReturnIcon.js +1 -1
  393. package/es/icons/RightIcon.js +1 -1
  394. package/es/icons/RowTotalsIcon.js +1 -1
  395. package/es/icons/SchemeIcon.js +1 -1
  396. package/es/icons/SearchIcon.js +1 -1
  397. package/es/icons/SemanticQueryIcon.js +1 -1
  398. package/es/icons/SettingsIcon.js +1 -1
  399. package/es/icons/ShieldFilledIcon.js +1 -1
  400. package/es/icons/ShieldIcon.js +1 -1
  401. package/es/icons/SlashIcon.js +1 -1
  402. package/es/icons/SparklesIcon.js +1 -1
  403. package/es/icons/SqlIcon.js +1 -1
  404. package/es/icons/StatsIcon.js +1 -1
  405. package/es/icons/StopIcon.js +1 -1
  406. package/es/icons/StringIcon.js +1 -1
  407. package/es/icons/SubtotalsIcon.js +1 -1
  408. package/es/icons/SwitchIcon.js +1 -1
  409. package/es/icons/TableIcon.js +1 -1
  410. package/es/icons/ThumbsDownIcon.js +1 -1
  411. package/es/icons/ThumbsUpIcon.js +1 -1
  412. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  413. package/es/icons/ThunderboltFilledIcon.js +1 -1
  414. package/es/icons/ThunderboltIcon.js +1 -1
  415. package/es/icons/TimeIcon.js +1 -1
  416. package/es/icons/TrashIcon.js +1 -1
  417. package/es/icons/UnlockIcon.js +1 -1
  418. package/es/icons/UpIcon.js +1 -1
  419. package/es/icons/UserGroupIcon.js +1 -1
  420. package/es/icons/UserIcon.js +1 -1
  421. package/es/icons/UserLockIcon.js +1 -1
  422. package/es/icons/ViewIcon.js +1 -1
  423. package/es/icons/WarningFilledIcon.js +1 -1
  424. package/es/icons/WarningIcon.js +1 -1
  425. package/es/icons/index.js +1 -1
  426. package/es/icons/wrap-icon.js +1 -1
  427. package/es/index.js +2 -4
  428. package/es/provider.js +1 -1
  429. package/es/providers/TrackingProvider.js +1 -1
  430. package/es/providers/navigation.types.js +1 -1
  431. package/es/providers/navigationAdapter.default.js +1 -1
  432. package/es/shared/form.js +1 -1
  433. package/es/shared/index.js +1 -1
  434. package/es/stories/Form.legacy-stories.js +1 -1
  435. package/es/stories/FormFieldArgs.js +1 -1
  436. package/es/stories/SimpleLayout.stories.js +1 -1
  437. package/es/stories/Tasty.stories.js +1 -1
  438. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  439. package/es/stories/components/DialogFormApp.js +1 -1
  440. package/es/stories/components/StyledButton.js +1 -1
  441. package/es/stories/lists/baseProps.js +1 -1
  442. package/es/stories/playground/PlaygroundEditor.js +1 -1
  443. package/es/stories/playground/PlaygroundLayout.js +1 -1
  444. package/es/stories/playground/PlaygroundOutput.js +1 -1
  445. package/es/stories/playground/PlaygroundPreview.js +1 -1
  446. package/es/stories/playground/components/Button.js +1 -1
  447. package/es/stories/playground/components/Card.js +1 -1
  448. package/es/stories/playground/components/ScrollProgress.js +1 -1
  449. package/es/stories/playground/examples.js +1 -1
  450. package/es/tasty/chunks/cacheKey.js +1 -1
  451. package/es/tasty/chunks/definitions.js +1 -1
  452. package/es/tasty/chunks/index.js +1 -1
  453. package/es/tasty/chunks/renderChunk.js +1 -1
  454. package/es/tasty/config.js +1 -1
  455. package/es/tasty/debug.js +1 -1
  456. package/es/tasty/hooks/index.js +1 -1
  457. package/es/tasty/hooks/useGlobalStyles.js +1 -1
  458. package/es/tasty/hooks/useKeyframes.js +1 -1
  459. package/es/tasty/hooks/useProperty.js +1 -1
  460. package/es/tasty/hooks/useRawCSS.js +1 -1
  461. package/es/tasty/hooks/useStyles.js +1 -1
  462. package/es/tasty/index.js +1 -6
  463. package/es/tasty/injector/index.js +1 -1
  464. package/es/tasty/injector/injector.js +1 -1
  465. package/es/tasty/injector/sheet-manager.js +1 -1
  466. package/es/tasty/injector/types.js +1 -1
  467. package/es/tasty/keyframes/index.js +1 -1
  468. package/es/tasty/parser/classify.js +1 -1
  469. package/es/tasty/parser/const.js +1 -1
  470. package/es/tasty/parser/lru.js +1 -1
  471. package/es/tasty/parser/parser.js +1 -1
  472. package/es/tasty/parser/tokenizer.js +1 -1
  473. package/es/tasty/parser/types.js +1 -1
  474. package/es/tasty/pipeline/conditions.js +1 -1
  475. package/es/tasty/pipeline/exclusive.js +1 -1
  476. package/es/tasty/pipeline/index.js +1 -1
  477. package/es/tasty/pipeline/materialize.js +1 -1
  478. package/es/tasty/pipeline/parseStateKey.js +1 -1
  479. package/es/tasty/pipeline/simplify.js +1 -1
  480. package/es/tasty/plugins/index.js +1 -1
  481. package/es/tasty/plugins/okhsl-plugin.js +1 -1
  482. package/es/tasty/plugins/types.js +1 -1
  483. package/es/tasty/properties/index.js +1 -1
  484. package/es/tasty/states/index.js +1 -1
  485. package/es/tasty/static/index.js +1 -1
  486. package/es/tasty/static/tastyStatic.js +1 -1
  487. package/es/tasty/static/types.js +1 -1
  488. package/es/tasty/styles/align.js +1 -1
  489. package/es/tasty/styles/border.js +1 -1
  490. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  491. package/es/tasty/styles/color.js +1 -1
  492. package/es/tasty/styles/createStyle.js +1 -1
  493. package/es/tasty/styles/dimension.js +1 -1
  494. package/es/tasty/styles/display.js +1 -1
  495. package/es/tasty/styles/fade.js +1 -1
  496. package/es/tasty/styles/fill.js +1 -1
  497. package/es/tasty/styles/flow.js +1 -1
  498. package/es/tasty/styles/gap.js +1 -1
  499. package/es/tasty/styles/height.js +1 -1
  500. package/es/tasty/styles/index.js +1 -1
  501. package/es/tasty/styles/inset.js +1 -1
  502. package/es/tasty/styles/justify.js +1 -1
  503. package/es/tasty/styles/list.js +1 -1
  504. package/es/tasty/styles/margin.js +1 -1
  505. package/es/tasty/styles/outline.js +1 -1
  506. package/es/tasty/styles/padding.js +1 -1
  507. package/es/tasty/styles/place.js +1 -1
  508. package/es/tasty/styles/predefined.js +1 -1
  509. package/es/tasty/styles/preset.js +1 -1
  510. package/es/tasty/styles/radius.js +1 -1
  511. package/es/tasty/styles/reset.js +1 -1
  512. package/es/tasty/styles/scrollbar.js +1 -1
  513. package/es/tasty/styles/shadow.js +1 -1
  514. package/es/tasty/styles/styledScrollbar.js +1 -1
  515. package/es/tasty/styles/transition.js +1 -1
  516. package/es/tasty/styles/types.js +1 -1
  517. package/es/tasty/styles/width.js +1 -1
  518. package/es/tasty/tasty.js +1 -1
  519. package/es/tasty/types.js +1 -1
  520. package/es/tasty/utils/cache-wrapper.js +1 -1
  521. package/es/tasty/utils/case-converter.js +1 -1
  522. package/es/tasty/utils/colors.js +1 -1
  523. package/es/tasty/utils/dotize.js +1 -1
  524. package/es/tasty/utils/filter-base-props.js +1 -1
  525. package/es/tasty/utils/get-display-name.js +1 -1
  526. package/es/tasty/utils/hsl-to-rgb.js +1 -1
  527. package/es/tasty/utils/is-dev-env.js +1 -1
  528. package/es/tasty/utils/merge-styles.js +1 -1
  529. package/es/tasty/utils/mod-attrs.js +1 -1
  530. package/es/tasty/utils/okhsl-to-rgb.js +1 -1
  531. package/es/tasty/utils/process-tokens.js +1 -1
  532. package/es/tasty/utils/resolve-recipes.js +1 -1
  533. package/es/tasty/utils/rgb-to-okhsl.js +1 -1
  534. package/es/tasty/utils/string.js +1 -1
  535. package/es/tasty/utils/styles.js +9 -2
  536. package/es/tasty/utils/typography.js +1 -1
  537. package/es/tasty/utils/warnings.js +1 -1
  538. package/es/tasty/zero/babel.js +1 -1
  539. package/es/tasty/zero/css-writer.js +1 -1
  540. package/es/tasty/zero/extractor.js +1 -1
  541. package/es/tasty/zero/index.js +1 -1
  542. package/es/tasty/zero/next.js +1 -1
  543. package/es/tokens/base.js +1 -1
  544. package/es/tokens/colors.js +1 -1
  545. package/es/tokens/index.js +1 -1
  546. package/es/tokens/layout.js +1 -1
  547. package/es/tokens/shadows.js +1 -1
  548. package/es/tokens/sizes.js +1 -1
  549. package/es/tokens/spacing.js +1 -1
  550. package/es/tokens/typography.js +1 -1
  551. package/es/utils/ResizeSensor.js +1 -1
  552. package/es/utils/index.js +1 -1
  553. package/es/utils/modules.js +1 -1
  554. package/es/utils/promise.js +1 -1
  555. package/es/utils/raf.js +1 -1
  556. package/es/utils/random.js +1 -1
  557. package/es/utils/range.js +1 -1
  558. package/es/utils/react/RenderCache.js +1 -1
  559. package/es/utils/react/Slots.js +1 -1
  560. package/es/utils/react/chain.js +1 -1
  561. package/es/utils/react/forwardRefWithGenerics.js +1 -1
  562. package/es/utils/react/index.js +1 -1
  563. package/es/utils/react/interactions.js +1 -1
  564. package/es/utils/react/isTextOnly.js +1 -1
  565. package/es/utils/react/mapProps.js +1 -1
  566. package/es/utils/react/mergeProps.js +1 -1
  567. package/es/utils/react/nullableValue.js +1 -1
  568. package/es/utils/react/resolveIcon.js +1 -1
  569. package/es/utils/react/sharedStore.js +1 -1
  570. package/es/utils/react/useCombinedRefs.js +1 -1
  571. package/es/utils/react/useControlledFocusVisible.js +1 -1
  572. package/es/utils/react/useEventBus.js +1 -1
  573. package/es/utils/react/useId.js +1 -1
  574. package/es/utils/react/useIsDarwin.js +1 -1
  575. package/es/utils/react/useKeySymbols.js +1 -1
  576. package/es/utils/react/useLayoutEffect.js +1 -1
  577. package/es/utils/react/useLocalStorage.js +1 -1
  578. package/es/utils/react/useMergeStyles.js +1 -1
  579. package/es/utils/react/useQaProps.js +1 -1
  580. package/es/utils/react/useViewportSize.js +1 -1
  581. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  582. package/es/utils/tree.js +1 -1
  583. package/es/utils/warnings.js +1 -1
  584. package/es/version.js +2 -2
  585. package/package.json +1 -1
  586. package/types/components/HiddenInput.d.ts +56 -56
  587. package/types/components/actions/Button/Button.d.ts +64 -64
  588. package/types/components/actions/CommandMenu/styled.d.ts +280 -280
  589. package/types/components/actions/Menu/styled.d.ts +423 -423
  590. package/types/components/content/List/SectionHeading.d.ts +47 -47
  591. package/types/components/content/Text.d.ts +112 -112
  592. package/types/components/fields/DatePicker/DatePickerElement.d.ts +47 -47
  593. package/types/components/fields/Select/Select.d.ts +56 -56
  594. package/types/components/fields/Slider/elements.d.ts +338 -338
  595. package/types/components/navigation/Tabs/styled.d.ts +446 -446
  596. package/types/components/overlays/Notifications/Notification.d.ts +32 -0
  597. package/types/components/overlays/Notifications/NotificationAction.d.ts +27 -0
  598. package/types/components/overlays/Notifications/NotificationCard.d.ts +37 -0
  599. package/types/components/overlays/Notifications/NotificationContext.d.ts +16 -0
  600. package/types/components/overlays/Notifications/NotificationItem.d.ts +7 -0
  601. package/types/components/overlays/Notifications/OverlayContainer.d.ts +12 -0
  602. package/types/components/overlays/Notifications/OverlayProvider.d.ts +3 -0
  603. package/types/components/overlays/Notifications/PersistentNotificationsList.d.ts +19 -0
  604. package/types/components/overlays/Notifications/format-relative-time.d.ts +14 -0
  605. package/types/components/overlays/Notifications/index.d.ts +40 -0
  606. package/types/components/overlays/Notifications/types.d.ts +154 -0
  607. package/types/components/overlays/Notifications/use-notification-state.d.ts +23 -0
  608. package/types/components/overlays/Notifications/use-notifications.d.ts +36 -0
  609. package/types/components/overlays/Notifications/use-overlay-timers.d.ts +26 -0
  610. package/types/components/overlays/Notifications/use-persistent-notifications.d.ts +48 -0
  611. package/types/components/overlays/Notifications/use-persistent-state.d.ts +23 -0
  612. package/types/components/overlays/Notifications/use-toast-state.d.ts +16 -0
  613. package/types/components/overlays/Toast/ToastItem.d.ts +3 -1
  614. package/types/components/overlays/Toast/ToastProvider.d.ts +5 -8
  615. package/types/components/overlays/Toast/index.d.ts +1 -1
  616. package/types/components/overlays/Toast/types.d.ts +3 -1
  617. package/types/index.d.ts +1 -3
  618. package/types/tasty/tasty.d.ts +56 -56
  619. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +0 -54
  620. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +0 -95
  621. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +0 -56
  622. package/es/components/overlays/NewNotifications/Bar/index.js +0 -10
  623. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +0 -19
  624. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +0 -38
  625. package/es/components/overlays/NewNotifications/Dialog/index.js +0 -10
  626. package/es/components/overlays/NewNotifications/Notification.js +0 -41
  627. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +0 -41
  628. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +0 -25
  629. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +0 -36
  630. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +0 -60
  631. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +0 -31
  632. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +0 -69
  633. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +0 -25
  634. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +0 -86
  635. package/es/components/overlays/NewNotifications/NotificationView/index.js +0 -11
  636. package/es/components/overlays/NewNotifications/NotificationView/types.js +0 -10
  637. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +0 -11
  638. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +0 -21
  639. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +0 -11
  640. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +0 -91
  641. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +0 -45
  642. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +0 -29
  643. package/es/components/overlays/NewNotifications/NotificationsList/index.js +0 -10
  644. package/es/components/overlays/NewNotifications/hooks/index.js +0 -14
  645. package/es/components/overlays/NewNotifications/hooks/types.js +0 -10
  646. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +0 -15
  647. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +0 -17
  648. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +0 -29
  649. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +0 -17
  650. package/es/components/overlays/NewNotifications/index.js +0 -15
  651. package/es/components/overlays/NewNotifications/types.js +0 -10
  652. package/es/components/overlays/Notification/Notification.js +0 -80
  653. package/es/services/notification.js +0 -71
  654. package/types/components/overlays/NewNotifications/Bar/FloatingNotification.d.ts +0 -15
  655. package/types/components/overlays/NewNotifications/Bar/NotificationsBar.d.ts +0 -21
  656. package/types/components/overlays/NewNotifications/Bar/TransitionComponent.d.ts +0 -4
  657. package/types/components/overlays/NewNotifications/Bar/index.d.ts +0 -1
  658. package/types/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.d.ts +0 -9
  659. package/types/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.d.ts +0 -11
  660. package/types/components/overlays/NewNotifications/Dialog/index.d.ts +0 -1
  661. package/types/components/overlays/NewNotifications/Notification.d.ts +0 -18
  662. package/types/components/overlays/NewNotifications/NotificationView/NotificationAction.d.ts +0 -13
  663. package/types/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.d.ts +0 -4
  664. package/types/components/overlays/NewNotifications/NotificationView/NotificationDescription.d.ts +0 -9
  665. package/types/components/overlays/NewNotifications/NotificationView/NotificationFooter.d.ts +0 -13
  666. package/types/components/overlays/NewNotifications/NotificationView/NotificationHeader.d.ts +0 -9
  667. package/types/components/overlays/NewNotifications/NotificationView/NotificationIcon.d.ts +0 -9
  668. package/types/components/overlays/NewNotifications/NotificationView/NotificationProvider.d.ts +0 -10
  669. package/types/components/overlays/NewNotifications/NotificationView/NotificationView.d.ts +0 -10
  670. package/types/components/overlays/NewNotifications/NotificationView/index.d.ts +0 -2
  671. package/types/components/overlays/NewNotifications/NotificationView/types.d.ts +0 -16
  672. package/types/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.d.ts +0 -5
  673. package/types/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.d.ts +0 -4
  674. package/types/components/overlays/NewNotifications/NotificationsContext/index.d.ts +0 -2
  675. package/types/components/overlays/NewNotifications/NotificationsContext/use-notifications.d.ts +0 -8
  676. package/types/components/overlays/NewNotifications/NotificationsList/NotificationsList.d.ts +0 -21
  677. package/types/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.d.ts +0 -5
  678. package/types/components/overlays/NewNotifications/NotificationsList/index.d.ts +0 -2
  679. package/types/components/overlays/NewNotifications/NotificationsList/types.d.ts +0 -22
  680. package/types/components/overlays/NewNotifications/hooks/index.d.ts +0 -5
  681. package/types/components/overlays/NewNotifications/hooks/types.d.ts +0 -10
  682. package/types/components/overlays/NewNotifications/hooks/use-notification-list-item.d.ts +0 -9
  683. package/types/components/overlays/NewNotifications/hooks/use-notifications-api.d.ts +0 -1
  684. package/types/components/overlays/NewNotifications/hooks/use-notifications-list.d.ts +0 -12
  685. package/types/components/overlays/NewNotifications/hooks/use-notifications-observer.d.ts +0 -2
  686. package/types/components/overlays/NewNotifications/index.d.ts +0 -8
  687. package/types/components/overlays/NewNotifications/types.d.ts +0 -76
  688. package/types/components/overlays/Notification/Notification.d.ts +0 -6
  689. package/types/services/notification.d.ts +0 -28
@@ -0,0 +1,346 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.114.0
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ import { useCallback, useEffect, useMemo, useRef, useState, } from 'react';
10
+ import { useEvent } from '../../../_internal/index.js';
11
+ import { tasty } from '../../../tasty/index.js';
12
+ import { useLayoutEffect } from '../../../utils/react/useLayoutEffect.js';
13
+ import { DisplayTransition } from '../../helpers/DisplayTransition/DisplayTransition.js';
14
+ import { Portal } from '../../portal/index.js';
15
+ import { ToastItem } from '../Toast/ToastItem.js';
16
+ import { NotificationItem } from './NotificationItem.js';
17
+ // ─── Constants ───────────────────────────────────────────────────────
18
+ const COLLAPSE_VISIBLE_HEIGHT = 10;
19
+ const CONTAINER_OFFSET = 16;
20
+ const ITEM_GAP = 8;
21
+ const DEFAULT_ITEM_HEIGHT = 56;
22
+ // ─── Styled Elements ─────────────────────────────────────────────────
23
+ const OverlayContainerElement = tasty({
24
+ styles: {
25
+ position: 'fixed',
26
+ top: '2x',
27
+ left: '50%',
28
+ transform: 'translateX(-50%)',
29
+ zIndex: 10000,
30
+ padding: '1x',
31
+ height: '0',
32
+ pointerEvents: 'none',
33
+ },
34
+ });
35
+ const OverlayItemWrapper = tasty({
36
+ styles: {
37
+ position: 'absolute',
38
+ top: '0',
39
+ left: '50%',
40
+ transform: {
41
+ '': 'translateX(-50%) translateY(-50%)',
42
+ 'isMeasured & isShown': 'translateX(-50%) translateY(0)',
43
+ },
44
+ width: 'max-content 50x',
45
+ pointerEvents: 'auto',
46
+ transition: {
47
+ '': 'opacity $transition ease-in, transform $transition ease-in',
48
+ isMeasured: 'top $transition ease-in, opacity $transition ease-in, transform $transition ease-in',
49
+ },
50
+ opacity: {
51
+ '': 0,
52
+ isShown: 1,
53
+ },
54
+ },
55
+ });
56
+ function getItemId(item) {
57
+ return item.data.internalId;
58
+ }
59
+ function isItemExiting(item) {
60
+ return item.data.isExiting === true;
61
+ }
62
+ function getItemCreatedAt(item) {
63
+ return item.data.createdAt;
64
+ }
65
+ /**
66
+ * Manages height measurement, position calculation, and ref tracking
67
+ * for overlay items. Extracted from OverlayContainer for readability.
68
+ */
69
+ function useItemPositions(visibleItems) {
70
+ const [heights, setHeights] = useState({});
71
+ const itemRefs = useRef(new Map());
72
+ const lastPositionsRef = useRef(new Map());
73
+ // Items that have been measured AND painted at their correct position.
74
+ // Lags one frame behind `heights` so the browser paints the item at
75
+ // its final `top` before the CSS `top` transition is enabled.
76
+ const [settledIds, setSettledIds] = useState(new Set());
77
+ const rafRef = useRef(null);
78
+ // Measure heights using layout effect to avoid visible layout shifts.
79
+ // Runs every render but bails early if nothing changed.
80
+ useLayoutEffect(() => {
81
+ const newHeights = {};
82
+ let hasChanges = false;
83
+ itemRefs.current.forEach((el, id) => {
84
+ const height = el.offsetHeight || DEFAULT_ITEM_HEIGHT;
85
+ newHeights[id] = height;
86
+ if (heights[id] !== height) {
87
+ hasChanges = true;
88
+ }
89
+ });
90
+ for (const id of Object.keys(heights)) {
91
+ if (!itemRefs.current.has(id)) {
92
+ hasChanges = true;
93
+ }
94
+ }
95
+ if (hasChanges) {
96
+ setHeights(newHeights);
97
+ }
98
+ });
99
+ // After heights change, schedule settledIds update for the next frame.
100
+ // This ensures the item is painted at its correct position (with no top
101
+ // transition) before we enable the transition.
102
+ useEffect(() => {
103
+ const heightKeys = Object.keys(heights);
104
+ const newIds = heightKeys.filter((id) => !settledIds.has(id));
105
+ const hasStaleIds = settledIds.size > 0 && [...settledIds].some((id) => !(id in heights));
106
+ if (newIds.length === 0 && !hasStaleIds)
107
+ return;
108
+ if (rafRef.current != null) {
109
+ cancelAnimationFrame(rafRef.current);
110
+ }
111
+ // For pruning-only updates (no new items), apply synchronously since
112
+ // there's no need to wait for a paint frame.
113
+ if (newIds.length === 0 && hasStaleIds) {
114
+ setSettledIds((prev) => new Set(heightKeys.filter((id) => prev.has(id))));
115
+ return;
116
+ }
117
+ rafRef.current = requestAnimationFrame(() => {
118
+ rafRef.current = null;
119
+ setSettledIds((prev) => {
120
+ const next = new Set();
121
+ // Only keep IDs that still exist in heights (prune removed items)
122
+ for (const id of heightKeys) {
123
+ if (prev.has(id)) {
124
+ next.add(id);
125
+ }
126
+ }
127
+ for (const id of newIds) {
128
+ next.add(id);
129
+ }
130
+ return next;
131
+ });
132
+ });
133
+ return () => {
134
+ if (rafRef.current != null) {
135
+ cancelAnimationFrame(rafRef.current);
136
+ rafRef.current = null;
137
+ }
138
+ };
139
+ }, [heights]);
140
+ const createRefCallback = useCallback((itemId, displayRef) => (el) => {
141
+ displayRef(el);
142
+ if (el) {
143
+ itemRefs.current.set(itemId, el);
144
+ }
145
+ else {
146
+ itemRefs.current.delete(itemId);
147
+ }
148
+ }, []);
149
+ const positions = useMemo(() => {
150
+ const posMap = new Map();
151
+ let currentTop = 0;
152
+ for (const item of visibleItems) {
153
+ const id = getItemId(item);
154
+ posMap.set(id, currentTop);
155
+ const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;
156
+ currentTop += height + ITEM_GAP;
157
+ }
158
+ return posMap;
159
+ }, [visibleItems, heights]);
160
+ useEffect(() => {
161
+ positions.forEach((pos, id) => {
162
+ lastPositionsRef.current.set(id, pos);
163
+ });
164
+ }, [positions]);
165
+ return {
166
+ heights,
167
+ settledIds,
168
+ positions,
169
+ lastPositionsRef,
170
+ itemRefs,
171
+ createRefCallback,
172
+ };
173
+ }
174
+ /**
175
+ * Manages collapse/expand behavior and pause state for the overlay container.
176
+ * Extracted from OverlayContainer for readability.
177
+ */
178
+ function useCollapseState(canCollapse, allItems, itemRefs, onPauseChange) {
179
+ const [isCollapsed, setIsCollapsed] = useState(false);
180
+ const containerRef = useRef(null);
181
+ const boundsRef = useRef(null);
182
+ const updateBounds = useCallback(() => {
183
+ const refs = itemRefs.current;
184
+ if (!refs || refs.size === 0) {
185
+ boundsRef.current = null;
186
+ return;
187
+ }
188
+ let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
189
+ refs.forEach((el) => {
190
+ const rect = el.getBoundingClientRect();
191
+ minX = Math.min(minX, rect.left);
192
+ minY = Math.min(minY, rect.top);
193
+ maxX = Math.max(maxX, rect.right);
194
+ maxY = Math.max(maxY, rect.bottom);
195
+ });
196
+ if (typeof DOMRect !== 'undefined') {
197
+ boundsRef.current = new DOMRect(minX, minY, maxX - minX, maxY - minY);
198
+ }
199
+ else {
200
+ boundsRef.current = {
201
+ x: minX,
202
+ y: minY,
203
+ width: maxX - minX,
204
+ height: maxY - minY,
205
+ top: minY,
206
+ right: maxX,
207
+ bottom: maxY,
208
+ left: minX,
209
+ toJSON: () => ({}),
210
+ };
211
+ }
212
+ }, [itemRefs]);
213
+ // Track mouse for collapse — expand when mouse leaves bounds
214
+ useEffect(() => {
215
+ if (!isCollapsed)
216
+ return;
217
+ const handleMouseMove = (e) => {
218
+ const bounds = boundsRef.current;
219
+ if (!bounds) {
220
+ setIsCollapsed(false);
221
+ onPauseChange(false);
222
+ return;
223
+ }
224
+ const padding = 20;
225
+ const isInBounds = e.clientX >= bounds.left - padding &&
226
+ e.clientX <= bounds.right + padding &&
227
+ e.clientY >= bounds.top - padding &&
228
+ e.clientY <= bounds.bottom + padding;
229
+ if (!isInBounds) {
230
+ setIsCollapsed(false);
231
+ onPauseChange(false);
232
+ }
233
+ };
234
+ window.addEventListener('mousemove', handleMouseMove);
235
+ return () => window.removeEventListener('mousemove', handleMouseMove);
236
+ }, [isCollapsed, onPauseChange]);
237
+ // Update bounds when items change
238
+ useEffect(() => {
239
+ updateBounds();
240
+ }, [allItems, updateBounds]);
241
+ const handleMouseEnter = useCallback(() => {
242
+ updateBounds();
243
+ onPauseChange(true);
244
+ if (canCollapse) {
245
+ setIsCollapsed(true);
246
+ }
247
+ }, [updateBounds, canCollapse, onPauseChange]);
248
+ const handleMouseLeave = useCallback(() => {
249
+ if (!isCollapsed) {
250
+ onPauseChange(false);
251
+ }
252
+ }, [isCollapsed, onPauseChange]);
253
+ const handleFocus = useCallback(() => {
254
+ onPauseChange(true);
255
+ }, [onPauseChange]);
256
+ const handleBlur = useCallback((e) => {
257
+ if (containerRef.current &&
258
+ !containerRef.current.contains(e.relatedTarget)) {
259
+ onPauseChange(false);
260
+ }
261
+ }, [onPauseChange]);
262
+ return {
263
+ isCollapsed,
264
+ handleMouseEnter,
265
+ handleMouseLeave,
266
+ handleFocus,
267
+ handleBlur,
268
+ containerRef,
269
+ };
270
+ }
271
+ export function OverlayContainer({ toasts, notifications, onToastExitComplete, onNotificationExitComplete, onNotificationDismiss, onPauseChange, }) {
272
+ // Merge toasts and notifications into a single ordered list
273
+ const allItems = useMemo(() => {
274
+ const items = [
275
+ ...toasts.map((t) => ({ kind: 'toast', data: t })),
276
+ ...notifications.map((n) => ({ kind: 'notification', data: n })),
277
+ ];
278
+ // Sort by createdAt ascending (oldest first = bottom of stack, newest last = top)
279
+ items.sort((a, b) => getItemCreatedAt(a) - getItemCreatedAt(b));
280
+ return items;
281
+ }, [toasts, notifications]);
282
+ const visibleItems = useMemo(() => allItems.filter((item) => !isItemExiting(item)), [allItems]);
283
+ const hasNotifications = notifications.some((n) => !n.isExiting);
284
+ const canCollapse = !hasNotifications;
285
+ const { heights, settledIds, positions, lastPositionsRef, itemRefs, createRefCallback, } = useItemPositions(visibleItems);
286
+ const { isCollapsed, handleMouseEnter, handleMouseLeave, handleFocus, handleBlur, containerRef, } = useCollapseState(canCollapse, allItems, itemRefs, onPauseChange);
287
+ // ─── Callbacks ─────────────────────────────────────────────────────
288
+ // When the user dismisses a notification they were hovering, the element
289
+ // is removed from the DOM so mouseLeave never fires. Explicitly unpause
290
+ // so remaining notifications' timers resume.
291
+ const handleNotificationDismiss = useEvent((id, reason) => {
292
+ onNotificationDismiss(id, reason);
293
+ onPauseChange(false);
294
+ });
295
+ const handleExitComplete = useEvent((item) => {
296
+ const id = getItemId(item);
297
+ lastPositionsRef.current?.delete(id);
298
+ if (item.kind === 'toast') {
299
+ onToastExitComplete(item.data.internalId);
300
+ }
301
+ else {
302
+ onNotificationExitComplete(item.data.internalId);
303
+ }
304
+ });
305
+ // useCallback (not useEvent) because this is called during render.
306
+ // useEvent defers the ref update to useLayoutEffect, so during render
307
+ // it would still read the previous closure's positions/heights.
308
+ const getItemStyle = useCallback((item, index, total) => {
309
+ const id = getItemId(item);
310
+ const baseTop = positions.get(id) ?? lastPositionsRef.current?.get(id) ?? 0;
311
+ const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;
312
+ if (!isCollapsed || !canCollapse) {
313
+ return { top: `${baseTop}px` };
314
+ }
315
+ const isNewest = index === total - 1;
316
+ const collapsedTop = COLLAPSE_VISIBLE_HEIGHT - CONTAINER_OFFSET - height;
317
+ return {
318
+ top: `${collapsedTop}px`,
319
+ zIndex: index,
320
+ opacity: isNewest ? 1 : 0,
321
+ pointerEvents: 'none',
322
+ };
323
+ }, [isCollapsed, canCollapse, positions, heights, lastPositionsRef]);
324
+ // Build a visibleIndex lookup map to avoid O(n²) findIndex inside render loop
325
+ const visibleIndexMap = useMemo(() => {
326
+ const map = new Map();
327
+ visibleItems.forEach((item, index) => {
328
+ map.set(getItemId(item), index);
329
+ });
330
+ return map;
331
+ }, [visibleItems]);
332
+ if (allItems.length === 0)
333
+ return null;
334
+ return (_jsx(Portal, { children: _jsx(OverlayContainerElement, { ref: containerRef, onFocus: handleFocus, onBlur: handleBlur, children: allItems.map((item) => {
335
+ const itemId = getItemId(item);
336
+ const visibleIndex = visibleIndexMap.get(itemId) ?? 0;
337
+ const isExiting = isItemExiting(item);
338
+ return (_jsx(DisplayTransition, { animateOnMount: true, isShown: !isExiting, onRest: (transition) => {
339
+ if (transition === 'exit') {
340
+ handleExitComplete(item);
341
+ }
342
+ }, children: ({ isShown, ref }) => (_jsx(OverlayItemWrapper, { ref: createRefCallback(itemId, ref), mods: { isShown, isMeasured: settledIds.has(itemId) }, style: getItemStyle(item, visibleIndex, visibleItems.length), onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: item.kind === 'toast' ? (_jsx(ToastItem, { ...item.data.itemProps, title: item.data.title, description: item.data.description, theme: item.data.theme, icon: item.data.icon, isLoading: item.data.isLoading })) : (_jsx(NotificationItem, { notification: item.data, onDismiss: handleNotificationDismiss })) })) }, itemId));
343
+ }) }) }));
344
+ }
345
+
346
+
@@ -0,0 +1,69 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.114.0
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ import { useMemo, useRef } from 'react';
10
+ import { NotificationContext, PersistentNotificationsContext, ToastContext, } from './NotificationContext.js';
11
+ import { OverlayContainer } from './OverlayContainer.js';
12
+ import { useNotificationState } from './use-notification-state.js';
13
+ import { useOverlayTimers } from './use-overlay-timers.js';
14
+ import { usePersistentState } from './use-persistent-state.js';
15
+ import { useToastState } from './use-toast-state.js';
16
+ // ─── Re-export context hooks for consumers ───────────────────────────
17
+ export { useToastContext, useNotificationContext } from './NotificationContext.js';
18
+ // ─── Constants ───────────────────────────────────────────────────────
19
+ const DEFAULT_MAX_PERSISTENT = 200;
20
+ // ─── OverlayProvider ─────────────────────────────────────────────────
21
+ export function OverlayProvider({ children, maxPersistentNotifications = DEFAULT_MAX_PERSISTENT, }) {
22
+ // Shared ref that breaks the circular dependency between state hooks and timers.
23
+ // State hooks need timer methods (start/clear), timer hooks need remove methods.
24
+ // All consumers access the ref only inside useEvent/callbacks (never during
25
+ // render), so it is guaranteed to be populated before first use.
26
+ const timersRef = useRef(null);
27
+ // 1. Persistent state (no dependencies on other hooks)
28
+ const persistent = usePersistentState(maxPersistentNotifications);
29
+ // 2. Toast state — accesses timers through the shared ref
30
+ const toast = useToastState(timersRef);
31
+ // 3. Notification state — accesses timers through the shared ref
32
+ const notification = useNotificationState(timersRef, persistent);
33
+ // 4. Create timers and populate the ref
34
+ const timers = useOverlayTimers({
35
+ toastsRef: toast.toastsRef,
36
+ notificationsRef: notification.notificationsRef,
37
+ removeToast: toast.removeToast,
38
+ removeNotification: notification.removeNotification,
39
+ });
40
+ timersRef.current = timers;
41
+ // ─── Context Values ───────────────────────────────────────────────
42
+ // Only include actually-changing values in deps. All useEvent-based
43
+ // callbacks are referentially stable and omitted.
44
+ const toastContextValue = useMemo(() => ({
45
+ addToast: toast.addToast,
46
+ removeToast: toast.removeToast,
47
+ updateToast: toast.updateToast,
48
+ toasts: toast.toasts,
49
+ }), [toast.toasts]);
50
+ const notificationContextValue = useMemo(() => ({
51
+ addNotification: notification.addNotification,
52
+ removeNotification: notification.removeNotification,
53
+ updateNotification: notification.updateNotification,
54
+ notifications: notification.notifications,
55
+ addPersistentItem: persistent.addPersistentItem,
56
+ removePersistentItem: persistent.removePersistentItem,
57
+ removePersistentItemsByOwner: persistent.removePersistentItemsByOwner,
58
+ removeByOwner: notification.removeByOwner,
59
+ }), [notification.notifications]);
60
+ const persistentContextValue = useMemo(() => ({
61
+ persistentItems: persistent.persistentItems,
62
+ removePersistentItem: persistent.removePersistentItem,
63
+ clearPersistentItems: persistent.clearPersistentItems,
64
+ markAllAsRead: persistent.markAllAsRead,
65
+ }), [persistent.persistentItems]);
66
+ return (_jsx(ToastContext.Provider, { value: toastContextValue, children: _jsx(NotificationContext.Provider, { value: notificationContextValue, children: _jsxs(PersistentNotificationsContext.Provider, { value: persistentContextValue, children: [children, _jsx(OverlayContainer, { toasts: toast.toasts, notifications: notification.notifications, onToastExitComplete: toast.finalizeToastRemoval, onNotificationExitComplete: notification.finalizeNotificationRemoval, onNotificationDismiss: notification.removeNotification, onPauseChange: timers.handlePauseChange })] }) }) }));
67
+ }
68
+
69
+
@@ -0,0 +1,120 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.114.0
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ import { Fragment, useContext, useEffect, useRef, useState } from 'react';
10
+ import { useEvent } from '../../../_internal/index.js';
11
+ import { tasty } from '../../../tasty/index.js';
12
+ import { Divider } from '../../content/Divider.js';
13
+ import { Text } from '../../content/Text.js';
14
+ import { formatRelativeTime } from './format-relative-time.js';
15
+ import { NotificationActionInterceptorContext } from './NotificationAction.js';
16
+ import { NotificationCard } from './NotificationCard.js';
17
+ import { usePersistentNotifications } from './use-persistent-notifications.js';
18
+ // ─── Constants ───────────────────────────────────────────────────────
19
+ const MARK_READ_DELAY = 2000;
20
+ /** Interval (ms) at which relative timestamps refresh while the list is mounted. */
21
+ const TIMESTAMP_REFRESH_INTERVAL = 10_000;
22
+ // ─── Styled Components ──────────────────────────────────────────────
23
+ const ListContainer = tasty({
24
+ qa: 'PersistentNotificationsList',
25
+ role: 'log',
26
+ 'aria-label': 'Notifications',
27
+ styles: {
28
+ display: 'flex',
29
+ flow: 'column',
30
+ },
31
+ });
32
+ const EmptyStateContainer = tasty({
33
+ styles: {
34
+ display: 'flex',
35
+ placeItems: 'center',
36
+ placeContent: 'center',
37
+ padding: '4x',
38
+ color: '#dark.5',
39
+ preset: 't3',
40
+ },
41
+ });
42
+ // ─── PersistentNotificationsList Component ───────────────────────────
43
+ /**
44
+ * Standardized rendering for archived/persistent notifications.
45
+ * Always reads items from the notification context.
46
+ * Composable with app-specific shells (popover, dialog, page section).
47
+ *
48
+ * Marks all items as read after being visible for 2 seconds.
49
+ * Relative timestamps refresh every 10 seconds while the list is mounted.
50
+ *
51
+ * Items are always dismissible. Dismissing an item removes it from the
52
+ * persistent list and marks its ID as "fully dismissed" — subsequent triggers
53
+ * with the same ID will be completely ignored (no overlay, no re-archival).
54
+ *
55
+ * @example
56
+ * ```tsx
57
+ * <PersistentNotificationsList emptyState="No notifications" />
58
+ * ```
59
+ */
60
+ export function PersistentNotificationsList({ onDismissItem, onAction, emptyState, }) {
61
+ const { items, remove, markAllAsRead } = usePersistentNotifications();
62
+ // Default dismiss handler removes the item from the persistent list (which
63
+ // also marks the id as "fully dismissed" so it won't reappear).
64
+ // If a consumer provides `onDismissItem`, it is called *after* the built-in removal.
65
+ const handleDismiss = useEvent((item) => {
66
+ remove(item.id);
67
+ onDismissItem?.(item);
68
+ });
69
+ const markReadTimerRef = useRef(null);
70
+ // Tick counter that increments every TIMESTAMP_REFRESH_INTERVAL to force
71
+ // re-render so relative timestamps (e.g. "5 min ago") stay up to date.
72
+ const [, setTick] = useState(0);
73
+ useEffect(() => {
74
+ if (items.length === 0)
75
+ return;
76
+ const interval = setInterval(() => {
77
+ setTick((t) => t + 1);
78
+ }, TIMESTAMP_REFRESH_INTERVAL);
79
+ return () => clearInterval(interval);
80
+ }, [items.length]);
81
+ // Mark all persistent notifications as read after a 2s delay.
82
+ // Re-starts the timer whenever items change (e.g. new unread items arrive
83
+ // while the list is already visible).
84
+ useEffect(() => {
85
+ const hasUnread = items.some((i) => !i.isRead);
86
+ if (!hasUnread)
87
+ return;
88
+ markReadTimerRef.current = setTimeout(() => {
89
+ markAllAsRead();
90
+ }, MARK_READ_DELAY);
91
+ return () => {
92
+ if (markReadTimerRef.current) {
93
+ clearTimeout(markReadTimerRef.current);
94
+ markReadTimerRef.current = null;
95
+ }
96
+ };
97
+ }, [markAllAsRead, items]);
98
+ if (items.length === 0) {
99
+ return (_jsx(ListContainer, { children: _jsx(EmptyStateContainer, { children: emptyState ?? 'No notifications' }) }));
100
+ }
101
+ return (_jsx(NotificationActionInterceptorContext.Provider, { value: onAction ?? null, children: _jsx(ListContainer, { children: items.map((item, index) => (_jsxs(Fragment, { children: [index > 0 && _jsx(Divider, {}), _jsx(PersistentNotificationListItem, { item: item, onDismiss: handleDismiss })] }, String(item.id)))) }) }));
102
+ }
103
+ function PersistentNotificationListItem({ item, onDismiss, }) {
104
+ const suffix = (_jsx(Text, { opacity: 0.5, preset: "c2", children: formatRelativeTime(item.createdAt) }));
105
+ // useEvent keeps the callback stable across re-renders regardless of
106
+ // item reference changes (avoids unnecessary NotificationCard re-renders).
107
+ const handleDismiss = useEvent((_id, _reason) => {
108
+ onDismiss?.(item);
109
+ });
110
+ const parentInterceptor = useContext(NotificationActionInterceptorContext);
111
+ // Chains with the list-level interceptor (e.g. closing the parent popover).
112
+ // Dismissal itself is handled by NotificationAction via the dismiss context
113
+ // to avoid double-firing onDismiss.
114
+ const handleItemAction = useEvent(() => {
115
+ parentInterceptor?.();
116
+ });
117
+ return (_jsx(NotificationActionInterceptorContext.Provider, { value: handleItemAction, children: _jsx(NotificationCard, { qa: "PersistentNotificationItem", theme: item.theme, title: item.title, description: item.description, icon: item.icon, actions: item.actions, isDismissible: !!onDismiss, elevated: false, notificationId: item.id, suffix: suffix, onDismiss: onDismiss ? handleDismiss : undefined }) }));
118
+ }
119
+
120
+
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.114.0
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ /**
9
+ * Lightweight relative time formatter.
10
+ * No external dependencies.
11
+ *
12
+ * Output format:
13
+ * - `just now` (< 1 minute)
14
+ * - `N min ago` (1–59 minutes)
15
+ * - `N h ago` (1–23 hours)
16
+ * - `N d ago` (1–6 days)
17
+ * - `N w ago` (1–4 weeks)
18
+ * - `N mo ago` (1–11 months)
19
+ * - `N y ago` (1+ years)
20
+ */
21
+ export function formatRelativeTime(timestamp) {
22
+ const now = Date.now();
23
+ const diffMs = now - timestamp;
24
+ if (diffMs < 0) {
25
+ return 'just now';
26
+ }
27
+ const diffSeconds = Math.floor(diffMs / 1000);
28
+ const diffMinutes = Math.floor(diffSeconds / 60);
29
+ const diffHours = Math.floor(diffMinutes / 60);
30
+ const diffDays = Math.floor(diffHours / 24);
31
+ if (diffMinutes < 1) {
32
+ return 'just now';
33
+ }
34
+ if (diffHours < 1) {
35
+ return `${diffMinutes} min ago`;
36
+ }
37
+ if (diffDays < 1) {
38
+ return `${diffHours} h ago`;
39
+ }
40
+ if (diffDays < 7) {
41
+ return `${diffDays} d ago`;
42
+ }
43
+ const diffWeeks = Math.floor(diffDays / 7);
44
+ if (diffDays < 30) {
45
+ return `${diffWeeks} w ago`;
46
+ }
47
+ const diffMonths = Math.floor(diffDays / 30);
48
+ if (diffDays < 365) {
49
+ return `${diffMonths} mo ago`;
50
+ }
51
+ const diffYears = Math.floor(diffDays / 365);
52
+ return `${diffYears} y ago`;
53
+ }
54
+
55
+
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.114.0
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ // ─── Components ──────────────────────────────────────────────────────
9
+ import { Notification as NotificationBase } from './Notification.js';
10
+ import { NotificationAction } from './NotificationAction.js';
11
+ export { NotificationAction } from './NotificationAction.js';
12
+ export { NotificationCard } from './NotificationCard.js';
13
+ export { NotificationItem } from './NotificationItem.js';
14
+ export { PersistentNotificationsList } from './PersistentNotificationsList.js';
15
+ // ─── Provider ────────────────────────────────────────────────────────
16
+ export { OverlayProvider } from './OverlayProvider.js';
17
+ // useToastContext is re-exported for Toast module backward compatibility
18
+ export { useToastContext } from './NotificationContext.js';
19
+ // ─── Hooks ───────────────────────────────────────────────────────────
20
+ export { useNotifications } from './use-notifications.js';
21
+ export { usePersistentNotifications, useNotificationsCount, } from './use-persistent-notifications.js';
22
+ // ─── Utilities ───────────────────────────────────────────────────────
23
+ export { formatRelativeTime } from './format-relative-time.js';
24
+ // ─── Compound Notification Component ─────────────────────────────────
25
+ /**
26
+ * Declarative Notification component with compound API.
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * // Declarative usage
31
+ * <Notification
32
+ * id="release:new-version"
33
+ * theme="warning"
34
+ * title="New release available"
35
+ * description="2.0.0 can be installed now."
36
+ * actions={
37
+ * <>
38
+ * <Notification.Action>Later</Notification.Action>
39
+ * <Notification.Action onPress={() => openUpgradeDialog()}>
40
+ * Upgrade
41
+ * </Notification.Action>
42
+ * </>
43
+ * }
44
+ * />
45
+ * ```
46
+ */
47
+ export const Notification = Object.assign(NotificationBase, {
48
+ Action: NotificationAction,
49
+ });
50
+
51
+
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.113.0
4
+ * @cube-dev/ui-kit v0.114.0
5
5
  * Released under the MIT license.
6
6
  */
7
7