@cube-dev/ui-kit 0.0.0-canary-c210a8c → 0.0.0-canary-60981ef

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 (462) hide show
  1. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  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/ItemButton/ItemButton.js +1 -1
  27. package/dist/components/actions/Link/Link.js +1 -1
  28. package/dist/components/actions/Menu/Menu.js +1 -1
  29. package/dist/components/actions/Menu/MenuItem.js +1 -1
  30. package/dist/components/actions/Menu/MenuSection.js +1 -1
  31. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  32. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  34. package/dist/components/actions/Menu/context.js +1 -1
  35. package/dist/components/actions/Menu/styled.js +1 -1
  36. package/dist/components/actions/index.js +1 -1
  37. package/dist/components/actions/use-action.js +1 -1
  38. package/dist/components/actions/use-anchored-menu.js +1 -1
  39. package/dist/components/actions/use-context-menu.js +1 -1
  40. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  41. package/dist/components/content/Alert/Alert.js +1 -1
  42. package/dist/components/content/Alert/use-alert.js +1 -1
  43. package/dist/components/content/Avatar/Avatar.js +1 -1
  44. package/dist/components/content/Badge/Badge.js +1 -1
  45. package/dist/components/content/Card/Card.js +1 -1
  46. package/dist/components/content/Content.js +1 -1
  47. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  48. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  49. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  50. package/dist/components/content/Divider.js +1 -1
  51. package/dist/components/content/Footer.js +1 -1
  52. package/dist/components/content/Header.js +1 -1
  53. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  54. package/dist/components/content/Item/Item.js +1 -1
  55. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  56. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  57. package/dist/components/content/Layout/GridLayout.js +1 -1
  58. package/dist/components/content/Layout/Layout.js +1 -1
  59. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  60. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  61. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  62. package/dist/components/content/Layout/LayoutContent.js +1 -1
  63. package/dist/components/content/Layout/LayoutContext.js +1 -1
  64. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  65. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  66. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  67. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  68. package/dist/components/content/Layout/LayoutPane.js +1 -1
  69. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  70. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  71. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  72. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  73. package/dist/components/content/Layout/index.js +1 -1
  74. package/dist/components/content/Layout/utils.js +1 -1
  75. package/dist/components/content/Paragraph.js +1 -1
  76. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  77. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  78. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  79. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  80. package/dist/components/content/Result/Result.js +1 -1
  81. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  82. package/dist/components/content/Tag/Tag.js +1 -1
  83. package/dist/components/content/Text.js +1 -1
  84. package/dist/components/content/TextItem/TextItem.js +1 -1
  85. package/dist/components/content/Title.js +1 -1
  86. package/dist/components/content/highlightText.js +1 -1
  87. package/dist/components/content/use-auto-tooltip.js +1 -1
  88. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  89. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  90. package/dist/components/fields/Checkbox/context.js +1 -1
  91. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  92. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  93. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  94. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  95. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  96. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  97. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  98. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  99. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  100. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  101. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  102. package/dist/components/fields/DatePicker/intl.js +1 -1
  103. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  104. package/dist/components/fields/DatePicker/props.js +1 -1
  105. package/dist/components/fields/DatePicker/utils.js +1 -1
  106. package/dist/components/fields/FileInput/FileInput.js +1 -1
  107. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  108. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  109. package/dist/components/fields/Input/Input.js +1 -1
  110. package/dist/components/fields/ListBox/ListBox.js +1 -1
  111. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  112. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  113. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  114. package/dist/components/fields/Picker/Picker.js +1 -1
  115. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  116. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  117. package/dist/components/fields/RadioGroup/context.js +1 -1
  118. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  119. package/dist/components/fields/Select/Select.js +1 -1
  120. package/dist/components/fields/Slider/Gradation.js +1 -1
  121. package/dist/components/fields/Slider/HueSlider.js +1 -1
  122. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  123. package/dist/components/fields/Slider/Slider.js +1 -1
  124. package/dist/components/fields/Slider/SliderBase.js +1 -1
  125. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  126. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  127. package/dist/components/fields/Slider/elements.js +1 -1
  128. package/dist/components/fields/Slider/index.js +1 -1
  129. package/dist/components/fields/Switch/Switch.js +1 -1
  130. package/dist/components/fields/TextArea/TextArea.js +1 -1
  131. package/dist/components/fields/TextInput/TextInput.js +1 -1
  132. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  133. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  134. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  135. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  136. package/dist/components/form/Form/Field.js +1 -1
  137. package/dist/components/form/Form/Form.js +1 -1
  138. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  139. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  140. package/dist/components/form/Form/SubmitError.js +1 -1
  141. package/dist/components/form/Form/index.js +1 -1
  142. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  143. package/dist/components/form/Form/use-field/use-field.js +1 -1
  144. package/dist/components/form/Form/use-form.js +1 -1
  145. package/dist/components/form/Form/validation.js +1 -1
  146. package/dist/components/form/Label.js +1 -1
  147. package/dist/components/form/wrapper.js +1 -1
  148. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  149. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  150. package/dist/components/layout/Flex.js +1 -1
  151. package/dist/components/layout/Flow.js +1 -1
  152. package/dist/components/layout/Grid.js +1 -1
  153. package/dist/components/layout/Panel.js +1 -1
  154. package/dist/components/layout/Prefix.js +1 -1
  155. package/dist/components/layout/ResizablePanel.js +1 -1
  156. package/dist/components/layout/Space.js +1 -1
  157. package/dist/components/layout/Suffix.js +1 -1
  158. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  159. package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
  160. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  161. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  162. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  163. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  164. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  165. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  166. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  167. package/dist/components/navigation/Tabs/styled.js +1 -1
  168. package/dist/components/navigation/Tabs/types.js +1 -1
  169. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  170. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  171. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  172. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  173. package/dist/components/other/Calendar/Calendar.js +1 -1
  174. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  175. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  176. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  177. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  178. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  179. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  180. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  181. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  182. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  183. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  184. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  185. package/dist/components/overlays/Dialog/context.js +1 -1
  186. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  187. package/dist/components/overlays/Modal/Modal.js +1 -1
  188. package/dist/components/overlays/Modal/OpenTransition.js +1 -1
  189. package/dist/components/overlays/Modal/Overlay.js +1 -1
  190. package/dist/components/overlays/Modal/Popover.js +1 -1
  191. package/dist/components/overlays/Modal/Tray.js +1 -1
  192. package/dist/components/overlays/Modal/Underlay.js +1 -1
  193. package/dist/components/overlays/Notifications/Notification.js +1 -1
  194. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  195. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  196. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  197. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  198. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  199. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  200. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  201. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  202. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  203. package/dist/components/overlays/Notifications/index.js +1 -1
  204. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  205. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  206. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  207. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  208. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  209. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  210. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  211. package/dist/components/overlays/Toast/index.js +1 -1
  212. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  213. package/dist/components/overlays/Toast/useToast.js +1 -1
  214. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  215. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  216. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  217. package/dist/components/overlays/Tooltip/context.js +1 -1
  218. package/dist/components/portal/Portal.js +1 -1
  219. package/dist/components/portal/PortalProvider.js +1 -1
  220. package/dist/components/portal/usePortal.js +1 -1
  221. package/dist/components/shared/InvalidIcon.js +1 -1
  222. package/dist/components/shared/ValidIcon.js +1 -1
  223. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  224. package/dist/components/status/Spin/Cube.js +1 -1
  225. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  226. package/dist/components/status/Spin/Spin.js +1 -1
  227. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  228. package/dist/data/item-themes.js +1 -1
  229. package/dist/data/themes.js +1 -1
  230. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  231. package/dist/icons/AdjustmentsIcon.js +1 -1
  232. package/dist/icons/AiIcon.js +1 -1
  233. package/dist/icons/AreaChartIcon.js +1 -1
  234. package/dist/icons/BackwardIcon.js +1 -1
  235. package/dist/icons/BarChartIcon.js +1 -1
  236. package/dist/icons/BellFilledIcon.js +1 -1
  237. package/dist/icons/BellIcon.js +1 -1
  238. package/dist/icons/BooleanIcon.js +1 -1
  239. package/dist/icons/CalendarEditIcon.js +1 -1
  240. package/dist/icons/CalendarIcon.js +1 -1
  241. package/dist/icons/CaretDownIcon.js +1 -1
  242. package/dist/icons/CaretUpIcon.js +1 -1
  243. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  244. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  245. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  246. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  247. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  248. package/dist/icons/ChartBarLineIcon.js +1 -1
  249. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  250. package/dist/icons/ChartBarStackedIcon.js +1 -1
  251. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  252. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  253. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  254. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  255. package/dist/icons/ChartBubbleIcon.js +1 -1
  256. package/dist/icons/ChartDonut2Icon.js +1 -1
  257. package/dist/icons/ChartFunnelIcon.js +1 -1
  258. package/dist/icons/ChartHeatmapIcon.js +1 -1
  259. package/dist/icons/ChartKPIIcon.js +1 -1
  260. package/dist/icons/ChartPie2Icon.js +1 -1
  261. package/dist/icons/ChartScatterIcon.js +1 -1
  262. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  263. package/dist/icons/CheckCircleIcon.js +1 -1
  264. package/dist/icons/CheckIcon.js +1 -1
  265. package/dist/icons/CircleFilledIcon.js +1 -1
  266. package/dist/icons/ClearIcon.js +1 -1
  267. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  268. package/dist/icons/CloseCircleIcon.js +1 -1
  269. package/dist/icons/CloseIcon.js +1 -1
  270. package/dist/icons/CodeIcon.js +1 -1
  271. package/dist/icons/ColumnTotalIcon.js +1 -1
  272. package/dist/icons/CopyIcon.js +1 -1
  273. package/dist/icons/CountIcon.js +1 -1
  274. package/dist/icons/CubeIcon.js +1 -1
  275. package/dist/icons/CubePauseIcon.js +1 -1
  276. package/dist/icons/CubePlayIcon.js +1 -1
  277. package/dist/icons/CurrencyDollarIcon.js +1 -1
  278. package/dist/icons/DangerIcon.js +1 -1
  279. package/dist/icons/DashboardIcon.js +1 -1
  280. package/dist/icons/DatabaseIcon.js +1 -1
  281. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  282. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  283. package/dist/icons/DirectionIcon.js +1 -1
  284. package/dist/icons/DonutIcon.js +1 -1
  285. package/dist/icons/DownIcon.js +1 -1
  286. package/dist/icons/EditIcon.js +1 -1
  287. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  288. package/dist/icons/ExclamationCircleIcon.js +1 -1
  289. package/dist/icons/ExclamationIcon.js +1 -1
  290. package/dist/icons/EyeIcon.js +1 -1
  291. package/dist/icons/EyeInvisibleIcon.js +1 -1
  292. package/dist/icons/FilterIcon.js +1 -1
  293. package/dist/icons/FolderFilledIcon.js +1 -1
  294. package/dist/icons/FolderIcon.js +1 -1
  295. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  296. package/dist/icons/FolderOpenIcon.js +1 -1
  297. package/dist/icons/ForwardIcon.js +1 -1
  298. package/dist/icons/HierarchyIcon.js +1 -1
  299. package/dist/icons/HierarchyOpenIcon.js +1 -1
  300. package/dist/icons/Icon.js +1 -1
  301. package/dist/icons/InfoCircleIcon.js +1 -1
  302. package/dist/icons/InfoIcon.js +1 -1
  303. package/dist/icons/KeyIcon.js +1 -1
  304. package/dist/icons/LeftIcon.js +1 -1
  305. package/dist/icons/LineChartIcon.js +1 -1
  306. package/dist/icons/LoadingIcon.js +1 -1
  307. package/dist/icons/LockFilledIcon.js +1 -1
  308. package/dist/icons/LockIcon.js +1 -1
  309. package/dist/icons/MoreIcon.js +1 -1
  310. package/dist/icons/NotAllowedIcon.js +1 -1
  311. package/dist/icons/Number123Icon.js +1 -1
  312. package/dist/icons/NumberIcon.js +1 -1
  313. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  314. package/dist/icons/PauseCircleIcon.js +1 -1
  315. package/dist/icons/PauseIcon.js +1 -1
  316. package/dist/icons/PercentageIcon.js +1 -1
  317. package/dist/icons/PieChartIcon.js +1 -1
  318. package/dist/icons/PlayCircleIcon.js +1 -1
  319. package/dist/icons/PlayIcon.js +1 -1
  320. package/dist/icons/PlusIcon.js +1 -1
  321. package/dist/icons/ProgressBarIcon.js +1 -1
  322. package/dist/icons/ReloadIcon.js +1 -1
  323. package/dist/icons/ReportIcon.js +1 -1
  324. package/dist/icons/ReturnIcon.js +1 -1
  325. package/dist/icons/RightIcon.js +1 -1
  326. package/dist/icons/RowTotalsIcon.js +1 -1
  327. package/dist/icons/SchemeIcon.js +1 -1
  328. package/dist/icons/SearchIcon.js +1 -1
  329. package/dist/icons/SemanticQueryIcon.js +1 -1
  330. package/dist/icons/SettingsIcon.js +1 -1
  331. package/dist/icons/ShieldFilledIcon.js +1 -1
  332. package/dist/icons/ShieldIcon.js +1 -1
  333. package/dist/icons/SlashIcon.js +1 -1
  334. package/dist/icons/SparklesIcon.js +1 -1
  335. package/dist/icons/SqlIcon.js +1 -1
  336. package/dist/icons/StatsIcon.js +1 -1
  337. package/dist/icons/StopIcon.js +1 -1
  338. package/dist/icons/StringIcon.js +1 -1
  339. package/dist/icons/SubtotalsIcon.js +1 -1
  340. package/dist/icons/SwitchIcon.js +1 -1
  341. package/dist/icons/TableIcon.js +1 -1
  342. package/dist/icons/ThumbsDownIcon.js +1 -1
  343. package/dist/icons/ThumbsUpIcon.js +1 -1
  344. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  345. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  346. package/dist/icons/ThunderboltIcon.js +1 -1
  347. package/dist/icons/TimeIcon.js +1 -1
  348. package/dist/icons/TrashIcon.js +1 -1
  349. package/dist/icons/UnlockIcon.js +1 -1
  350. package/dist/icons/UpIcon.js +1 -1
  351. package/dist/icons/UserGroupIcon.js +1 -1
  352. package/dist/icons/UserIcon.js +1 -1
  353. package/dist/icons/UserLockIcon.js +1 -1
  354. package/dist/icons/ViewIcon.js +1 -1
  355. package/dist/icons/WarningFilledIcon.js +1 -1
  356. package/dist/icons/WarningIcon.js +1 -1
  357. package/dist/icons/wrap-icon.js +1 -1
  358. package/dist/index.js +1 -1
  359. package/dist/provider.js +1 -1
  360. package/dist/providers/TrackingProvider.js +1 -1
  361. package/dist/providers/navigationAdapter.default.js +1 -1
  362. package/dist/tokens/base.js +1 -1
  363. package/dist/tokens/colors.js +1 -1
  364. package/dist/tokens/index.js +1 -1
  365. package/dist/tokens/layout.js +1 -1
  366. package/dist/tokens/shadows.js +1 -1
  367. package/dist/tokens/sizes.js +1 -1
  368. package/dist/tokens/spacing.js +1 -1
  369. package/dist/utils/ResizeSensor.js +1 -1
  370. package/dist/utils/is-dev-env.js +1 -1
  371. package/dist/utils/modules.js +1 -1
  372. package/dist/utils/promise.js +1 -1
  373. package/dist/utils/raf.js +1 -1
  374. package/dist/utils/random.js +1 -1
  375. package/dist/utils/range.js +1 -1
  376. package/dist/utils/react/RenderCache.js +1 -1
  377. package/dist/utils/react/Slots.js +1 -1
  378. package/dist/utils/react/chain.js +1 -1
  379. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  380. package/dist/utils/react/index.js +1 -1
  381. package/dist/utils/react/interactions.js +1 -1
  382. package/dist/utils/react/isTextOnly.js +1 -1
  383. package/dist/utils/react/mapProps.js +1 -1
  384. package/dist/utils/react/mergeProps.js +1 -1
  385. package/dist/utils/react/nullableValue.js +1 -1
  386. package/dist/utils/react/resolveIcon.js +1 -1
  387. package/dist/utils/react/sharedStore.js +1 -1
  388. package/dist/utils/react/useCombinedRefs.js +1 -1
  389. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  390. package/dist/utils/react/useEventBus.js +1 -1
  391. package/dist/utils/react/useId.js +1 -1
  392. package/dist/utils/react/useIsDarwin.js +1 -1
  393. package/dist/utils/react/useKeySymbols.js +1 -1
  394. package/dist/utils/react/useLayoutEffect.js +1 -1
  395. package/dist/utils/react/useLocalStorage.js +1 -1
  396. package/dist/utils/react/useMergeStyles.js +1 -1
  397. package/dist/utils/react/useQaProps.js +1 -1
  398. package/dist/utils/react/useViewportSize.js +1 -1
  399. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  400. package/dist/utils/tree.js +1 -1
  401. package/dist/utils/warnings.js +1 -1
  402. package/dist/version.js +2 -2
  403. package/docs/ComplexLayout.md +469 -0
  404. package/docs/CreateComponent.md +410 -0
  405. package/docs/Introduction.md +122 -0
  406. package/docs/RenderCache.md +172 -0
  407. package/docs/Result.md +35 -0
  408. package/docs/SimpleLayout.md +26 -0
  409. package/docs/Typography.md +38 -0
  410. package/docs/components/CollectionItem.md +299 -0
  411. package/docs/components/actions/Banner.md +189 -0
  412. package/docs/components/actions/Button.md +183 -0
  413. package/docs/components/actions/ButtonSplit.md +189 -0
  414. package/docs/components/actions/CommandMenu.md +430 -0
  415. package/docs/components/actions/ItemButton.md +304 -0
  416. package/docs/components/actions/Link.md +325 -0
  417. package/docs/components/actions/Menu.md +509 -0
  418. package/docs/components/actions/use-anchored-menu.md +211 -0
  419. package/docs/components/actions/use-context-menu.md +220 -0
  420. package/docs/components/content/Badge.md +187 -0
  421. package/docs/components/content/Disclosure.md +177 -0
  422. package/docs/components/content/HotKeys.md +352 -0
  423. package/docs/components/content/Item.md +488 -0
  424. package/docs/components/content/ItemCard.md +125 -0
  425. package/docs/components/content/Layout.md +866 -0
  426. package/docs/components/content/Tag.md +156 -0
  427. package/docs/components/content/TextItem.md +211 -0
  428. package/docs/components/fields/Checkbox.md +180 -0
  429. package/docs/components/fields/ComboBox.md +617 -0
  430. package/docs/components/fields/DatePicker.md +231 -0
  431. package/docs/components/fields/FileInput.md +197 -0
  432. package/docs/components/fields/FilterListBox.md +703 -0
  433. package/docs/components/fields/FilterPicker.md +736 -0
  434. package/docs/components/fields/HueSlider.md +175 -0
  435. package/docs/components/fields/ListBox.md +691 -0
  436. package/docs/components/fields/NumberInput.md +184 -0
  437. package/docs/components/fields/PasswordInput.md +218 -0
  438. package/docs/components/fields/Picker.md +884 -0
  439. package/docs/components/fields/RadioGroup.md +314 -0
  440. package/docs/components/fields/SearchInput.md +227 -0
  441. package/docs/components/fields/Select.md +583 -0
  442. package/docs/components/fields/Slider.md +53 -0
  443. package/docs/components/fields/Switch.md +174 -0
  444. package/docs/components/fields/TextArea.md +61 -0
  445. package/docs/components/fields/TextInput.md +204 -0
  446. package/docs/components/fields/TextInputMapper.md +34 -0
  447. package/docs/components/form/Field.md +341 -0
  448. package/docs/components/form/Form.md +455 -0
  449. package/docs/components/form/FormInstance.md +319 -0
  450. package/docs/components/helpers/DisplayTransition.md +259 -0
  451. package/docs/components/helpers/IconSwitch.md +156 -0
  452. package/docs/components/navigation/Tabs.md +704 -0
  453. package/docs/components/overlays/Dialog.md +202 -0
  454. package/docs/components/overlays/DialogContainer.md +201 -0
  455. package/docs/components/overlays/DialogForm.md +290 -0
  456. package/docs/components/overlays/DialogTrigger.md +191 -0
  457. package/docs/components/overlays/Notifications.md +406 -0
  458. package/docs/components/overlays/Toast.md +285 -0
  459. package/docs/components/overlays/Tooltip.md +371 -0
  460. package/docs/components/overlays/UseDialogContainer.md +603 -0
  461. package/package.json +1 -1
  462. package/docs/.gitignore +0 -3
@@ -0,0 +1,191 @@
1
+ # DialogTrigger
2
+
3
+ DialogTrigger serves as a wrapper around a Dialog and its associated trigger, linking the Dialog's open state with the trigger's press state. Additionally, it allows you to customize the type and positioning of the Dialog.
4
+
5
+ ## When to Use
6
+
7
+ - When you need to open a Dialog in response to user interaction with a trigger element
8
+ - To display contextual information, forms, or workflows that require user attention
9
+ - When you want to control the positioning and behavior of overlay content
10
+ - For creating modal dialogs, popovers, trays, or fullscreen overlays
11
+
12
+ ## Component
13
+
14
+ ---
15
+
16
+ ### Properties
17
+
18
+ - **`children`** — The Dialog and its trigger element
19
+ - **`type`** `'modal' | 'popover' | 'tray' | 'fullscreen' | 'fullscreenTakeover' | 'panel'` (default: `modal`) — The type of Dialog that should be rendered
20
+ - **`mobileType`** `'modal' | 'tray' | 'fullscreen' | 'fullscreenTakeover' | 'panel' | 'popover'` — The type of Dialog that should be rendered when on a mobile device
21
+ - **`placement`** `'top' | 'bottom' | 'left' | 'right' | 'top start' | 'top end' | 'bottom start' | 'bottom end' | 'left top' | 'left bottom' | 'right top' | 'right bottom'` — The placement of the dialog relative to its trigger
22
+ - **`hideArrow`** `boolean` (default: `false`) — Whether a popover type Dialog's arrow should be hidden
23
+ - **`mobileViewport`** `number` (default: `700`) — The screen breakpoint for the mobile type
24
+ - **`isDismissable`** `boolean` (default: `true`) — Whether a modal type Dialog should be dismissable
25
+ - **`isKeyboardDismissDisabled`** `boolean` (default: `false`) — Whether pressing the escape key to close the dialog should be disabled
26
+ - **`isOpen`** `boolean` — Whether the dialog is open (controlled)
27
+ - **`defaultOpen`** `boolean` (default: `false`) — Whether the dialog is open by default (uncontrolled)
28
+ - **`offset`** `number` (default: `8`) — The additional offset applied along the main axis
29
+ - **`crossOffset`** `number` (default: `0`) — The additional offset applied along the cross axis
30
+ - **`containerPadding`** `number` (default: `12`) — The padding between the edge of the overlay and the boundary
31
+ - **`shouldFlip`** `boolean` (default: `true`) — Whether the overlay should flip positions when insufficient space
32
+ - **`onOpenChange`** `function` — Callback fired when the dialog open state changes
33
+ - **`onDismiss`** `function` — Callback fired when the dialog is dismissed
34
+ - **`targetRef`** — The ref of the element the Dialog should visually attach itself to
35
+ - **`styles`** — The style map for the overlay
36
+ - **`shouldCloseOnInteractOutside`** — Function to determine if overlay should close on outside interaction
37
+
38
+ ### Base Properties
39
+
40
+ Supports [Base properties](../../tasty/tasty.md)
41
+
42
+ ### Styling Properties
43
+
44
+ DialogTrigger has no styling capabilities.
45
+
46
+ ## Variants
47
+
48
+ ### Types
49
+
50
+ - `modal` - Full modal dialog with backdrop (default)
51
+ - `popover` - Positioned relative to trigger element
52
+ - `tray` - Slides up from bottom on mobile
53
+ - `fullscreen` - Takes up entire screen
54
+ - `fullscreenTakeover` - Fullscreen without padding
55
+ - `panel` - Side panel overlay
56
+
57
+ ### Mobile Types
58
+
59
+ - `modal` - Mobile modal dialog
60
+ - `tray` - Bottom tray on mobile
61
+ - `fullscreen` - Mobile fullscreen
62
+ - `fullscreenTakeover` - Mobile fullscreen takeover
63
+ - `panel` - Mobile side panel
64
+ - `popover` - Mobile popover (not recommended)
65
+
66
+ ## Examples
67
+
68
+ ### Basic Modal
69
+
70
+ ```jsx
71
+ <DialogTrigger>
72
+ <Button>Open Dialog</Button>
73
+ <Dialog>
74
+ <Header>
75
+ <Title>Dialog Title</Title>
76
+ </Header>
77
+ <Content>
78
+ <Paragraph>Dialog content goes here.</Paragraph>
79
+ </Content>
80
+ </Dialog>
81
+ </DialogTrigger>
82
+ ```
83
+
84
+ ### Popover Dialog
85
+
86
+ ```jsx
87
+ <DialogTrigger type="popover" placement="bottom">
88
+ <Button>Show Popover</Button>
89
+ <Dialog>
90
+ <Content>
91
+ <Paragraph>Popover content</Paragraph>
92
+ </Content>
93
+ </Dialog>
94
+ </DialogTrigger>
95
+ ```
96
+
97
+ ### With Close Function
98
+
99
+ ```jsx
100
+ <DialogTrigger>
101
+ <Button>Open Dialog</Button>
102
+ {(close) => (
103
+ <Dialog>
104
+ <Header>
105
+ <Title>Confirm Action</Title>
106
+ </Header>
107
+ <Content>
108
+ <Paragraph>Are you sure you want to continue?</Paragraph>
109
+ </Content>
110
+ <Footer>
111
+ <Button onPress={close}>Cancel</Button>
112
+ <Button type="primary" onPress={close}>Confirm</Button>
113
+ </Footer>
114
+ </Dialog>
115
+ )}
116
+ </DialogTrigger>
117
+ ```
118
+
119
+ ### Controlled State
120
+
121
+ ```jsx
122
+ function ControlledDialog() {
123
+ const [isOpen, setIsOpen] = useState(false);
124
+
125
+ return (
126
+ <DialogTrigger isOpen={isOpen} onOpenChange={setIsOpen}>
127
+ <Button>Open Dialog</Button>
128
+ <Dialog>
129
+ <Content>
130
+ <Paragraph>Controlled dialog content</Paragraph>
131
+ </Content>
132
+ </Dialog>
133
+ </DialogTrigger>
134
+ );
135
+ }
136
+ ```
137
+
138
+ ## Accessibility
139
+
140
+ ### Keyboard Navigation
141
+
142
+ - `Enter/Space` - Opens the dialog when trigger is focused
143
+ - `Escape` - Closes the dialog (unless disabled)
144
+ - `Tab` - Cycles through focusable elements within the dialog
145
+
146
+ ### Screen Reader Support
147
+
148
+ - Dialog announces as "dialog" to screen readers
149
+ - Focus is trapped within the dialog when open
150
+ - Focus returns to trigger element when dialog closes
151
+ - Proper ARIA attributes are applied automatically
152
+
153
+ ### ARIA Properties
154
+
155
+ - `aria-haspopup` - Automatically applied to trigger element
156
+ - `aria-expanded` - Indicates dialog open state
157
+ - `aria-labelledby` - Links dialog to its title
158
+ - `aria-describedby` - Links dialog to its description
159
+
160
+ ## Best Practices
161
+
162
+ 1. **Do**: Provide clear trigger labels
163
+ ```jsx
164
+ <DialogTrigger>
165
+ <Button>Edit Profile</Button>
166
+ <Dialog>...</Dialog>
167
+ </DialogTrigger>
168
+ ```
169
+
170
+ 2. **Don't**: Use vague trigger text
171
+ ```jsx
172
+ <DialogTrigger>
173
+ <Button>Click</Button>
174
+ <Dialog>...</Dialog>
175
+ </DialogTrigger>
176
+ ```
177
+
178
+ 3. **Focus Management**: Always ensure focus returns properly after dialog closes
179
+ 4. **Mobile Considerations**: Use appropriate mobile types for better UX
180
+ 5. **Dismissible**: Make modal dialogs dismissible unless absolutely necessary
181
+
182
+ ## Suggested Improvements
183
+
184
+ - Enhancement 1: Add animation duration customization options
185
+ - Enhancement 2: Support for multiple dialog instances
186
+ - Enhancement 3: Improved positioning algorithms for complex layouts
187
+
188
+ ## Related Components
189
+
190
+ - [Dialog](./Dialog.md) - The content component used within DialogTrigger
191
+ - [Button](../actions/Button.md) - Common trigger element
@@ -0,0 +1,406 @@
1
+ # Notification
2
+
3
+ Action-oriented overlay messages that support custom actions, a dismiss button, timer-based auto-dismiss, and persistent storage. Notifications share the same floating container with [Toast](./Toast.md) (top-center position) via the unified `OverlayProvider`.
4
+
5
+ ## When to Use
6
+
7
+ - When a message requires user action (e.g., "View logs", "Upgrade", "Accept")
8
+ - When you need persistent notifications that remain in a list after dismissal
9
+ - When server-sourced events need to be stored for later review
10
+ - For simple dismissible messages with no custom actions (only the auto-appended "Dismiss" button)
11
+ - **If no actions are needed and no persistence is required, use [Toast](./Toast.md) instead**
12
+
13
+ ## Component
14
+
15
+ ---
16
+
17
+ ### Base Properties
18
+
19
+ Supports [Base properties](../../tasty/tasty.md)
20
+
21
+ ### Styling Properties
22
+
23
+ #### styles
24
+
25
+ Customizes the root element of the notification.
26
+
27
+ **Sub-elements:**
28
+ - `Description` - The description text area below the title
29
+
30
+ ## Variants
31
+
32
+ ### Themes
33
+
34
+ - `success` - Positive outcome (CheckIcon)
35
+ - `danger` - Error or failure (ExclamationIcon)
36
+ - `warning` - Caution or attention needed (WarningIcon)
37
+ - `note` - Informational message (InfoIcon)
38
+ - No theme - Neutral styling with no icon
39
+
40
+ ## Examples
41
+
42
+ ### Imperative API
43
+
44
+ Use `useNotifications()` to show notifications programmatically. Each hook instance acts as an owner scope — on unmount, all attached visible notifications are dismissed.
45
+
46
+ ```jsx
47
+ import { useNotifications, Notification } from '@cube-dev/ui-kit';
48
+
49
+ const { notify, record, dismiss } = useNotifications();
50
+
51
+ const handle = notify({
52
+ id: 'deploy:123',
53
+ theme: 'success',
54
+ title: 'Deployment completed',
55
+ description: 'Version 1.4.2 is live.',
56
+ actions: (
57
+ <>
58
+ <Notification.Action onPress={() => openLogs()}>
59
+ View logs
60
+ </Notification.Action>
61
+ <Notification.Action onPress={() => openDeployment()}>
62
+ Open
63
+ </Notification.Action>
64
+ </>
65
+ ),
66
+ });
67
+
68
+ // Dismiss programmatically
69
+ handle.dismiss();
70
+ // or
71
+ dismiss('deploy:123');
72
+ ```
73
+
74
+ ### Declarative API
75
+
76
+ The `<Notification>` component shows a notification while mounted and removes it on unmount.
77
+
78
+ ```jsx
79
+ import { Notification } from '@cube-dev/ui-kit';
80
+
81
+ <Notification
82
+ id="release:new-version"
83
+ theme="warning"
84
+ title="New release available"
85
+ description="2.0.0 can be installed now."
86
+ actions={
87
+ <>
88
+ <Notification.Action onPress={() => upgrade()}>
89
+ Upgrade
90
+ </Notification.Action>
91
+ <Notification.Action isDismiss>Later</Notification.Action>
92
+ </>
93
+ }
94
+ />
95
+ ```
96
+
97
+ ### Notification.Action
98
+
99
+ Action buttons inside notifications. Every action auto-dismisses the notification by default (`closeOnPress: true`).
100
+
101
+ | Prop | Type | Default | Description |
102
+ |------|------|---------|-------------|
103
+ | `onPress` | `() => void \| false \| Promise<void \| false>` | — | Called when the action is pressed. Return `false` to cancel the auto-dismiss. |
104
+ | `closeOnPress` | `boolean` | `true` | Auto-dismiss the notification after press |
105
+ | `isDismiss` | `boolean` | `false` | Marks this action as the dismiss button (see below) |
106
+ | `isDisabled` | `boolean` | `false` | Disables the action |
107
+
108
+ #### Cancelling dismiss
109
+
110
+ When `closeOnPress` is `true` (the default), the notification is dismissed after `onPress` completes. To conditionally prevent this — for example, when the user cancels a confirmation dialog — return `false` from `onPress`:
111
+
112
+ ```jsx
113
+ <Notification.Action
114
+ onPress={async () => {
115
+ const confirmed = await showConfirmDialog();
116
+ if (!confirmed) {
117
+ return false; // keep the notification visible
118
+ }
119
+ await performAction();
120
+ }}
121
+ >
122
+ Resume
123
+ </Notification.Action>
124
+ ```
125
+
126
+ This works with both sync and async handlers. Returning `undefined` (the default `void` return) proceeds with dismiss as usual.
127
+
128
+ #### Dismiss behavior
129
+
130
+ By default, a "Dismiss" button is auto-appended to the right of the actions area (when `isDismissable` is `true`). To customize the dismiss label, add `isDismiss` to a `Notification.Action` — the default button is automatically suppressed via context detection (no extra prop needed).
131
+
132
+ When `actions` is omitted, only the default "Dismiss" button is shown.
133
+
134
+ Place the dismiss action **last** so it renders on the right (consistent with the auto-appended position):
135
+
136
+ ```jsx
137
+ // Custom dismiss label — "Later" appears on the right.
138
+ // isDismiss auto-suppresses the default "Dismiss" button.
139
+ notify({
140
+ actions: (
141
+ <>
142
+ <Notification.Action onPress={() => alert('View plans')}>
143
+ View plans
144
+ </Notification.Action>
145
+ <Notification.Action isDismiss>Later</Notification.Action>
146
+ </>
147
+ ),
148
+ });
149
+ ```
150
+
151
+ ```jsx
152
+ // No isDismiss action — default "Dismiss" button is auto-appended on the right
153
+ notify({
154
+ actions: (
155
+ <Notification.Action onPress={() => openLogs()}>
156
+ View logs
157
+ </Notification.Action>
158
+ ),
159
+ });
160
+ ```
161
+
162
+ ```jsx
163
+ // No actions at all — only the default "Dismiss" button is shown
164
+ notify({
165
+ theme: 'success',
166
+ title: 'Saved successfully',
167
+ });
168
+ ```
169
+
170
+ ### Update by ID
171
+
172
+ Calling `notify()` with the same `id` performs an in-place update (instant content swap). The auto-dismiss timer resets when `title` or `description` changes (string values only).
173
+
174
+ ```jsx
175
+ const { notify } = useNotifications();
176
+
177
+ // Initial notification
178
+ notify({
179
+ id: 'sync:workspace-42',
180
+ theme: 'warning',
181
+ title: 'Sync in progress',
182
+ persistent: true,
183
+ duration: null,
184
+ actions: (
185
+ <Notification.Action onPress={() => alert('Details')}>
186
+ Details
187
+ </Notification.Action>
188
+ ),
189
+ });
190
+
191
+ // Later: update same id — timer resets because title changed
192
+ notify({
193
+ id: 'sync:workspace-42',
194
+ theme: 'success',
195
+ title: 'Sync complete',
196
+ persistent: true,
197
+ actions: (
198
+ <Notification.Action onPress={() => alert('Open')}>
199
+ Open
200
+ </Notification.Action>
201
+ ),
202
+ });
203
+ ```
204
+
205
+ ### Persistent Notifications
206
+
207
+ Overlay notifications with `persistent: true` are stored in an in-memory list whenever they leave the overlay — whether by auto-dismiss timeout, user clicking an action, or the dismiss button. The only exception is programmatic cleanup (component unmount / `dismiss()` call), which removes the notification without archiving it.
208
+
209
+ Once a persistent notification has been archived, subsequent calls with the **same `id`** skip the overlay entirely and update the persistent list directly. This prevents the same notification from re-appearing as a popup after the user has already seen it. Removing the item from the persistent list (via `remove()`) permanently suppresses the notification — future calls with that `id` are completely ignored (no overlay, no persistent storage).
210
+
211
+ #### `record()` — Store Directly
212
+
213
+ Use `record()` to write notifications directly to the persistent list without rendering in the overlay. This is a shorthand for `notify({ mode: 'stored', ... })`.
214
+
215
+ The persistent list is **in-memory only** — it does not send data to a server. The intended flow is one-way: the server pushes events to the client, and the client uses `record()` to populate the list. Pass `createdAt` (epoch ms) to preserve the original server timestamp; if omitted it defaults to `Date.now()`.
216
+
217
+ ```jsx
218
+ const { notify, record } = useNotifications();
219
+ const { items, count, remove, clear } = usePersistentNotifications();
220
+
221
+ // Overlay notification that persists after timeout
222
+ notify({
223
+ id: 'deploy:1',
224
+ theme: 'success',
225
+ title: 'Deployment completed',
226
+ persistent: true,
227
+ actions: (
228
+ <Notification.Action onPress={() => alert('View')}>
229
+ View
230
+ </Notification.Action>
231
+ ),
232
+ });
233
+
234
+ // Stored notification (no overlay, goes directly to list)
235
+ record({
236
+ id: 'server:alert-1',
237
+ theme: 'warning',
238
+ title: 'Server alert',
239
+ createdAt: serverEvent.timestamp, // preserve original server timestamp
240
+ actions: (
241
+ <Notification.Action onPress={() => alert('Details')}>
242
+ View details
243
+ </Notification.Action>
244
+ ),
245
+ });
246
+ ```
247
+
248
+ ### PersistentNotificationsList
249
+
250
+ Renders archived notifications with relative timestamps. Automatically marks all items as read after being visible for 2 seconds.
251
+
252
+ Reads items directly from the notification context store.
253
+
254
+ ```jsx
255
+ import { PersistentNotificationsList, usePersistentNotifications } from '@cube-dev/ui-kit';
256
+
257
+ const { remove } = usePersistentNotifications();
258
+
259
+ <PersistentNotificationsList
260
+ onDismissItem={(item) => remove(item.id)}
261
+ emptyState="No notifications"
262
+ />
263
+ ```
264
+
265
+ ### Unread Count
266
+
267
+ Use `useNotificationsCount()` to track total and unread persistent notifications. Unread count resets when `PersistentNotificationsList` has been visible for 2 seconds.
268
+
269
+ ```jsx
270
+ import { useNotificationsCount } from '@cube-dev/ui-kit';
271
+
272
+ const { total, unread } = useNotificationsCount();
273
+
274
+ <Button>
275
+ Notifications {unread > 0 && `(${unread})`}
276
+ </Button>
277
+ ```
278
+
279
+ ### Stack Cap
280
+
281
+ Maximum 5 notifications are visible at once. When a new notification arrives and the cap is reached, the oldest notification is evicted (dismissed) to make room. This ensures the most recent notifications are always visible. Evicted persistent notifications are moved to the persistent list.
282
+
283
+ ## Duration Defaults
284
+
285
+ | Scenario | Default Duration |
286
+ |----------|-----------------|
287
+ | Non-persistent overlay | 3000ms |
288
+ | Persistent overlay | 5000ms |
289
+ | `duration: null` | No auto-dismiss |
290
+
291
+ All timers pause when any item in the container receives hover or focus, ensuring actionable notifications remain reliably clickable.
292
+
293
+ ## Toast Collapse Behavior
294
+
295
+ When only toasts are visible in the overlay container (no notifications), hovering over the toast stack collapses all toasts behind the newest one. Moving the mouse away from the collapsed area expands them back. This reduces visual clutter for transient messages while keeping the latest toast visible.
296
+
297
+ Collapse is disabled when notifications are present, since notifications require user interaction.
298
+
299
+ ## Accessibility
300
+
301
+ ### ARIA Roles and Live Regions
302
+
303
+ - `success`, `note` themes: `role="status"`, `aria-live="polite"`
304
+ - `danger`, `warning` themes: `role="alert"`, `aria-live="assertive"`
305
+ - All live regions use `aria-atomic="true"` for full content announcement on updates
306
+ - `aria-relevant="additions text"` announces new items and text changes
307
+ - `PersistentNotificationsList` uses `role="log"` and `aria-label="Notifications"`
308
+
309
+ ### Keyboard Navigation
310
+
311
+ - `Tab` - Moves focus to notification items (notifications are focusable)
312
+ - `Escape` - Dismisses the focused notification
313
+ - Action buttons are keyboard-focusable in tab order (left to right)
314
+
315
+ ### Screen Reader Support
316
+
317
+ - Notifications do not steal focus on arrival
318
+ - Screen reader announcement is handled by `aria-live` regions
319
+
320
+ ### Timer Behavior
321
+
322
+ - All timers pause when any item in the container receives hover or focus
323
+ - This ensures actionable notifications remain reliably clickable
324
+
325
+ ## Best Practices
326
+
327
+ 1. **Do**: Use notifications for action-oriented messages
328
+ ```jsx
329
+ notify({
330
+ theme: 'success',
331
+ title: 'Deployment completed',
332
+ actions: (
333
+ <Notification.Action onPress={() => viewLogs()}>
334
+ View logs
335
+ </Notification.Action>
336
+ ),
337
+ });
338
+ ```
339
+
340
+ 2. **Don't**: Use notifications for simple messages without actions — use Toast instead
341
+ ```jsx
342
+ // Use toast.success('Copied to clipboard') instead
343
+ ```
344
+
345
+ 3. **Do**: Provide explicit `id` for persistent and stored notifications
346
+ ```jsx
347
+ notify({ id: 'deploy:123', persistent: true, ... });
348
+ ```
349
+
350
+ 4. **Do**: Place the dismiss action last for consistent right-side positioning
351
+ ```jsx
352
+ notify({
353
+ actions: (
354
+ <>
355
+ <Notification.Action onPress={() => upgrade()}>Upgrade</Notification.Action>
356
+ <Notification.Action isDismiss>Later</Notification.Action>
357
+ </>
358
+ ),
359
+ });
360
+ ```
361
+
362
+ 5. **Do**: When using `isDismissable: false`, always provide actions — the user needs a way to interact
363
+ ```jsx
364
+ // isDismissable: false hides the default "Dismiss" button and Escape key,
365
+ // but actions with closeOnPress (default true) still close the notification.
366
+ notify({
367
+ isDismissable: false,
368
+ duration: null,
369
+ actions: (
370
+ <>
371
+ <Notification.Action onPress={() => accept()}>Accept</Notification.Action>
372
+ <Notification.Action onPress={() => decline()}>Decline</Notification.Action>
373
+ </>
374
+ ),
375
+ });
376
+ ```
377
+
378
+ 6. **Do**: Return `false` from `onPress` to keep the notification when the user cancels a confirmation flow
379
+ ```jsx
380
+ <Notification.Action
381
+ onPress={async () => {
382
+ const confirmed = await showConfirmDialog();
383
+ if (!confirmed) return false;
384
+ await performAction();
385
+ }}
386
+ >
387
+ Upgrade
388
+ </Notification.Action>
389
+ ```
390
+
391
+ 7. **Do**: Use `record()` for server-sourced events that don't need overlay display. Pass `createdAt` to preserve the original timestamp.
392
+ ```jsx
393
+ const { record } = useNotifications();
394
+ record({
395
+ id: 'alert:1',
396
+ theme: 'warning',
397
+ title: 'Server alert',
398
+ createdAt: serverEvent.timestamp,
399
+ });
400
+ ```
401
+
402
+ ## Related Components
403
+
404
+ - [Toast](./Toast.md) - Lightweight transient messages without actions
405
+ - [Item](../content/Item.md) - Base component used for notification rendering
406
+ - ItemAction - Base action component wrapped by Notification.Action