@cube-dev/ui-kit 0.142.10 → 0.143.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 (451) hide show
  1. package/README.md +1 -1
  2. package/dist/CHANGELOG.md +18 -0
  3. package/dist/README.md +1 -1
  4. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  5. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  6. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  7. package/dist/_internal/hooks/use-event.js +1 -1
  8. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  9. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  10. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  11. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  12. package/dist/_internal/hooks/use-warn.js +1 -1
  13. package/dist/components/Block.js +1 -1
  14. package/dist/components/CollectionItem.js +1 -1
  15. package/dist/components/GlobalStyles.js +1 -1
  16. package/dist/components/GridProvider.js +1 -1
  17. package/dist/components/HiddenInput.js +1 -1
  18. package/dist/components/Root.js +1 -1
  19. package/dist/components/actions/Action/Action.js +1 -1
  20. package/dist/components/actions/Banner/Banner.js +1 -1
  21. package/dist/components/actions/Button/Button.js +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  24. package/dist/components/actions/ButtonSplit/context.js +1 -1
  25. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  26. package/dist/components/actions/CommandMenu/styled.js +1 -1
  27. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  28. package/dist/components/actions/ItemActionContext.js +1 -1
  29. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  30. package/dist/components/actions/Link/Link.js +1 -1
  31. package/dist/components/actions/Menu/Menu.js +1 -1
  32. package/dist/components/actions/Menu/MenuItem.js +1 -1
  33. package/dist/components/actions/Menu/MenuSection.js +1 -1
  34. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  36. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  37. package/dist/components/actions/Menu/context.js +1 -1
  38. package/dist/components/actions/Menu/styled.js +1 -1
  39. package/dist/components/actions/index.js +1 -1
  40. package/dist/components/actions/use-action.js +1 -1
  41. package/dist/components/actions/use-anchored-menu.js +1 -1
  42. package/dist/components/actions/use-context-menu.js +1 -1
  43. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  44. package/dist/components/content/Alert/Alert.js +1 -1
  45. package/dist/components/content/Alert/use-alert.js +1 -1
  46. package/dist/components/content/Avatar/Avatar.js +1 -1
  47. package/dist/components/content/Badge/Badge.js +1 -1
  48. package/dist/components/content/Card/Card.js +1 -1
  49. package/dist/components/content/Content.js +1 -1
  50. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  51. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  52. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  53. package/dist/components/content/Divider.js +1 -1
  54. package/dist/components/content/Footer.js +1 -1
  55. package/dist/components/content/Header.js +1 -1
  56. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  57. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  58. package/dist/components/content/Item/Item.js +11 -2
  59. package/dist/components/content/Item/Item.js.map +1 -1
  60. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  61. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  62. package/dist/components/content/Layout/GridLayout.js +1 -1
  63. package/dist/components/content/Layout/Layout.js +1 -1
  64. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  65. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  66. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  67. package/dist/components/content/Layout/LayoutContent.js +1 -1
  68. package/dist/components/content/Layout/LayoutContext.js +1 -1
  69. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  70. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  71. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  72. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutPane.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  75. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  76. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  77. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  78. package/dist/components/content/Layout/index.js +1 -1
  79. package/dist/components/content/Layout/utils.js +1 -1
  80. package/dist/components/content/Paragraph.js +1 -1
  81. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  82. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  83. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  84. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  85. package/dist/components/content/Result/Result.js +1 -1
  86. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  87. package/dist/components/content/Tag/Tag.js +1 -1
  88. package/dist/components/content/Text.d.ts +7 -7
  89. package/dist/components/content/Text.js +1 -1
  90. package/dist/components/content/TextItem/TextItem.js +1 -1
  91. package/dist/components/content/Title.js +1 -1
  92. package/dist/components/content/Tree/Tree.js +1 -1
  93. package/dist/components/content/Tree/TreeNode.js +1 -1
  94. package/dist/components/content/Tree/styled.js +1 -1
  95. package/dist/components/content/Tree/tree-index.js +1 -1
  96. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  97. package/dist/components/content/Tree/use-load-data.js +1 -1
  98. package/dist/components/content/highlightText.js +1 -1
  99. package/dist/components/content/use-auto-tooltip.js +1 -1
  100. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  101. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  102. package/dist/components/fields/Checkbox/context.js +1 -1
  103. package/dist/components/fields/ComboBox/ComboBox.js +17 -213
  104. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  105. package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +99 -0
  106. package/dist/components/fields/CommandTextArea/CommandTextArea.js +402 -0
  107. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -0
  108. package/dist/components/fields/CommandTextArea/caretPosition.js +89 -0
  109. package/dist/components/fields/CommandTextArea/caretPosition.js.map +1 -0
  110. package/dist/components/fields/CommandTextArea/index.d.ts +2 -0
  111. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +68 -0
  112. package/dist/components/fields/CommandTextArea/useCaretAnchor.js.map +1 -0
  113. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  114. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  115. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  116. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  117. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  118. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  119. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  120. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  121. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  122. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  123. package/dist/components/fields/DatePicker/intl.js +1 -1
  124. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  125. package/dist/components/fields/DatePicker/props.js +1 -1
  126. package/dist/components/fields/DatePicker/utils.js +1 -1
  127. package/dist/components/fields/FileInput/FileInput.js +1 -1
  128. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  129. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  130. package/dist/components/fields/Input/Input.js +1 -1
  131. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  132. package/dist/components/fields/ListBox/ListBox.d.ts +5 -0
  133. package/dist/components/fields/ListBox/ListBox.js +10 -4
  134. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  135. package/dist/components/fields/ListBoxPopover/ListBoxPopover.d.ts +5 -0
  136. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +164 -0
  137. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -0
  138. package/dist/components/fields/ListBoxPopover/index.d.ts +4 -0
  139. package/dist/components/fields/ListBoxPopover/listNavigation.d.ts +24 -0
  140. package/dist/components/fields/ListBoxPopover/listNavigation.js +102 -0
  141. package/dist/components/fields/ListBoxPopover/listNavigation.js.map +1 -0
  142. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +2 -0
  143. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +53 -0
  144. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -0
  145. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  146. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  147. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  148. package/dist/components/fields/Picker/Picker.js +1 -1
  149. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  150. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  151. package/dist/components/fields/RadioGroup/context.js +1 -1
  152. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  153. package/dist/components/fields/Select/Select.js +1 -1
  154. package/dist/components/fields/Slider/Gradation.js +1 -1
  155. package/dist/components/fields/Slider/HueSlider.js +1 -1
  156. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  157. package/dist/components/fields/Slider/Slider.js +1 -1
  158. package/dist/components/fields/Slider/SliderBase.js +1 -1
  159. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  160. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  161. package/dist/components/fields/Slider/elements.js +1 -1
  162. package/dist/components/fields/Slider/index.js +1 -1
  163. package/dist/components/fields/Switch/Switch.js +1 -1
  164. package/dist/components/fields/TextArea/TextArea.js +1 -1
  165. package/dist/components/fields/TextInput/TextInput.js +1 -1
  166. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  167. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  168. package/dist/components/fields/index.d.ts +2 -0
  169. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  170. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  171. package/dist/components/form/Form/Field.js +1 -1
  172. package/dist/components/form/Form/Form.js +1 -1
  173. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  174. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  175. package/dist/components/form/Form/SubmitError.js +1 -1
  176. package/dist/components/form/Form/index.js +1 -1
  177. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  178. package/dist/components/form/Form/use-field/use-field.js +1 -1
  179. package/dist/components/form/Form/use-form.js +1 -1
  180. package/dist/components/form/Form/validation.js +1 -1
  181. package/dist/components/form/Label.js +1 -1
  182. package/dist/components/form/wrapper.js +1 -1
  183. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  184. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  185. package/dist/components/layout/Flex.js +1 -1
  186. package/dist/components/layout/Flow.js +1 -1
  187. package/dist/components/layout/Grid.js +1 -1
  188. package/dist/components/layout/Panel.js +1 -1
  189. package/dist/components/layout/Prefix.js +1 -1
  190. package/dist/components/layout/ResizablePanel.js +1 -1
  191. package/dist/components/layout/Space.js +1 -1
  192. package/dist/components/layout/Suffix.js +1 -1
  193. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  194. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  195. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  196. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  197. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  198. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  199. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  200. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  201. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  202. package/dist/components/navigation/Tabs/styled.js +1 -1
  203. package/dist/components/navigation/Tabs/types.js +1 -1
  204. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  205. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  206. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  207. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  208. package/dist/components/other/Calendar/Calendar.js +1 -1
  209. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  210. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  211. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  212. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  213. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  214. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  215. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  216. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  217. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  218. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  219. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  220. package/dist/components/overlays/Dialog/context.js +1 -1
  221. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  222. package/dist/components/overlays/Modal/Modal.js +1 -1
  223. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  224. package/dist/components/overlays/Modal/Overlay.js +1 -1
  225. package/dist/components/overlays/Modal/Popover.js +1 -1
  226. package/dist/components/overlays/Modal/Tray.js +1 -1
  227. package/dist/components/overlays/Modal/Underlay.js +1 -1
  228. package/dist/components/overlays/Notifications/Notification.js +1 -1
  229. package/dist/components/overlays/Notifications/NotificationAction.d.ts +2 -1
  230. package/dist/components/overlays/Notifications/NotificationAction.js +4 -6
  231. package/dist/components/overlays/Notifications/NotificationAction.js.map +1 -1
  232. package/dist/components/overlays/Notifications/NotificationCard.js +34 -20
  233. package/dist/components/overlays/Notifications/NotificationCard.js.map +1 -1
  234. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  235. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  236. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  237. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  238. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  239. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  240. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  241. package/dist/components/overlays/Notifications/index.js +1 -1
  242. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  243. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  244. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  245. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  246. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  247. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  248. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  249. package/dist/components/overlays/Toast/index.js +1 -1
  250. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  251. package/dist/components/overlays/Toast/useToast.js +1 -1
  252. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  253. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  254. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  255. package/dist/components/overlays/Tooltip/context.js +1 -1
  256. package/dist/components/portal/Portal.js +1 -1
  257. package/dist/components/portal/PortalProvider.js +1 -1
  258. package/dist/components/portal/usePortal.js +1 -1
  259. package/dist/components/shared/DraggableCollection.js +1 -1
  260. package/dist/components/shared/InvalidIcon.js +1 -1
  261. package/dist/components/shared/ValidIcon.js +1 -1
  262. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  263. package/dist/components/status/Spin/Cube.js +1 -1
  264. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  265. package/dist/components/status/Spin/Spin.js +1 -1
  266. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  267. package/dist/data/item-themes.js +1 -1
  268. package/dist/data/themes.js +1 -1
  269. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  270. package/dist/icons/AdjustmentsIcon.js +1 -1
  271. package/dist/icons/AiIcon.js +1 -1
  272. package/dist/icons/AreaChartIcon.js +1 -1
  273. package/dist/icons/BackwardIcon.js +1 -1
  274. package/dist/icons/BarChartIcon.js +1 -1
  275. package/dist/icons/BellFilledIcon.js +1 -1
  276. package/dist/icons/BellIcon.js +1 -1
  277. package/dist/icons/BooleanIcon.js +1 -1
  278. package/dist/icons/CalendarEditIcon.js +1 -1
  279. package/dist/icons/CalendarIcon.js +1 -1
  280. package/dist/icons/CaretDownIcon.js +1 -1
  281. package/dist/icons/CaretUpIcon.js +1 -1
  282. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  283. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  284. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  285. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  286. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  287. package/dist/icons/ChartBarLineIcon.js +1 -1
  288. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  289. package/dist/icons/ChartBarStackedIcon.js +1 -1
  290. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  291. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  292. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  293. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  294. package/dist/icons/ChartBubbleIcon.js +1 -1
  295. package/dist/icons/ChartDonut2Icon.js +1 -1
  296. package/dist/icons/ChartFunnelIcon.js +1 -1
  297. package/dist/icons/ChartHeatmapIcon.js +1 -1
  298. package/dist/icons/ChartKPIIcon.js +1 -1
  299. package/dist/icons/ChartPie2Icon.js +1 -1
  300. package/dist/icons/ChartScatterIcon.js +1 -1
  301. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  302. package/dist/icons/CheckCircleIcon.js +1 -1
  303. package/dist/icons/CheckIcon.js +1 -1
  304. package/dist/icons/CircleFilledIcon.js +1 -1
  305. package/dist/icons/ClearIcon.js +1 -1
  306. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  307. package/dist/icons/CloseCircleIcon.js +1 -1
  308. package/dist/icons/CloseIcon.js +1 -1
  309. package/dist/icons/CodeIcon.js +1 -1
  310. package/dist/icons/ColumnTotalIcon.js +1 -1
  311. package/dist/icons/CopyIcon.js +1 -1
  312. package/dist/icons/CountIcon.js +1 -1
  313. package/dist/icons/CubeIcon.js +1 -1
  314. package/dist/icons/CubePauseIcon.js +1 -1
  315. package/dist/icons/CubePlayIcon.js +1 -1
  316. package/dist/icons/CurrencyDollarIcon.js +1 -1
  317. package/dist/icons/DangerIcon.js +1 -1
  318. package/dist/icons/DashboardIcon.js +1 -1
  319. package/dist/icons/DatabaseIcon.js +1 -1
  320. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  321. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  322. package/dist/icons/DirectionIcon.js +1 -1
  323. package/dist/icons/DonutIcon.js +1 -1
  324. package/dist/icons/DownIcon.js +1 -1
  325. package/dist/icons/EditIcon.js +1 -1
  326. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  327. package/dist/icons/ExclamationCircleIcon.js +1 -1
  328. package/dist/icons/ExclamationIcon.js +1 -1
  329. package/dist/icons/EyeIcon.js +1 -1
  330. package/dist/icons/EyeInvisibleIcon.js +1 -1
  331. package/dist/icons/FilterIcon.js +1 -1
  332. package/dist/icons/FolderFilledIcon.js +1 -1
  333. package/dist/icons/FolderIcon.js +1 -1
  334. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  335. package/dist/icons/FolderOpenIcon.js +1 -1
  336. package/dist/icons/ForwardIcon.js +1 -1
  337. package/dist/icons/GripVerticalIcon.js +1 -1
  338. package/dist/icons/HierarchyIcon.js +1 -1
  339. package/dist/icons/HierarchyOpenIcon.js +1 -1
  340. package/dist/icons/Icon.js +1 -1
  341. package/dist/icons/InfoCircleIcon.js +1 -1
  342. package/dist/icons/InfoIcon.js +1 -1
  343. package/dist/icons/KeyIcon.js +1 -1
  344. package/dist/icons/LeftIcon.js +1 -1
  345. package/dist/icons/LineChartIcon.js +1 -1
  346. package/dist/icons/LoadingIcon.js +1 -1
  347. package/dist/icons/LockFilledIcon.js +1 -1
  348. package/dist/icons/LockIcon.js +1 -1
  349. package/dist/icons/MoreIcon.js +1 -1
  350. package/dist/icons/NotAllowedIcon.js +1 -1
  351. package/dist/icons/Number123Icon.js +1 -1
  352. package/dist/icons/NumberIcon.js +1 -1
  353. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  354. package/dist/icons/PauseCircleIcon.js +1 -1
  355. package/dist/icons/PauseIcon.js +1 -1
  356. package/dist/icons/PercentageIcon.js +1 -1
  357. package/dist/icons/PieChartIcon.js +1 -1
  358. package/dist/icons/PlayCircleIcon.js +1 -1
  359. package/dist/icons/PlayIcon.js +1 -1
  360. package/dist/icons/PlusIcon.js +1 -1
  361. package/dist/icons/ProgressBarIcon.js +1 -1
  362. package/dist/icons/ReloadIcon.js +1 -1
  363. package/dist/icons/ReportIcon.js +1 -1
  364. package/dist/icons/ReturnIcon.js +1 -1
  365. package/dist/icons/RightIcon.js +1 -1
  366. package/dist/icons/RowTotalsIcon.js +1 -1
  367. package/dist/icons/SchemeIcon.js +1 -1
  368. package/dist/icons/SearchIcon.js +1 -1
  369. package/dist/icons/SemanticQueryIcon.js +1 -1
  370. package/dist/icons/SettingsIcon.js +1 -1
  371. package/dist/icons/ShieldFilledIcon.js +1 -1
  372. package/dist/icons/ShieldIcon.js +1 -1
  373. package/dist/icons/SlashIcon.js +1 -1
  374. package/dist/icons/SparklesIcon.js +1 -1
  375. package/dist/icons/SqlIcon.js +1 -1
  376. package/dist/icons/StatsIcon.js +1 -1
  377. package/dist/icons/StopIcon.js +1 -1
  378. package/dist/icons/StringIcon.js +1 -1
  379. package/dist/icons/SubtotalsIcon.js +1 -1
  380. package/dist/icons/SwitchIcon.js +1 -1
  381. package/dist/icons/TableIcon.js +1 -1
  382. package/dist/icons/ThumbsDownIcon.js +1 -1
  383. package/dist/icons/ThumbsUpIcon.js +1 -1
  384. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  385. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  386. package/dist/icons/ThunderboltIcon.js +1 -1
  387. package/dist/icons/TimeIcon.js +1 -1
  388. package/dist/icons/TrashIcon.js +1 -1
  389. package/dist/icons/UnlockIcon.js +1 -1
  390. package/dist/icons/UpIcon.js +1 -1
  391. package/dist/icons/UserGroupIcon.js +1 -1
  392. package/dist/icons/UserIcon.js +1 -1
  393. package/dist/icons/UserLockIcon.js +1 -1
  394. package/dist/icons/ViewIcon.js +1 -1
  395. package/dist/icons/WarningFilledIcon.js +1 -1
  396. package/dist/icons/WarningIcon.js +1 -1
  397. package/dist/icons/wrap-icon.js +1 -1
  398. package/dist/index.d.ts +2 -1
  399. package/dist/index.js +3 -2
  400. package/dist/index.js.map +1 -1
  401. package/dist/provider.js +1 -1
  402. package/dist/providers/TrackingProvider.js +1 -1
  403. package/dist/providers/navigationAdapter.default.js +1 -1
  404. package/dist/tokens/base.js +1 -1
  405. package/dist/tokens/colors.js +1 -1
  406. package/dist/tokens/index.js +1 -1
  407. package/dist/tokens/layout.js +1 -1
  408. package/dist/tokens/palette.js +1 -1
  409. package/dist/tokens/shadows.js +1 -1
  410. package/dist/tokens/sizes.js +1 -1
  411. package/dist/tokens/spacing.js +1 -1
  412. package/dist/tokens/typography.js +1 -1
  413. package/dist/utils/ResizeSensor.js +1 -1
  414. package/dist/utils/is-dev-env.js +1 -1
  415. package/dist/utils/modules.js +1 -1
  416. package/dist/utils/promise.js +1 -1
  417. package/dist/utils/raf.js +1 -1
  418. package/dist/utils/random.js +1 -1
  419. package/dist/utils/range.js +1 -1
  420. package/dist/utils/react/RenderCache.js +1 -1
  421. package/dist/utils/react/Slots.js +1 -1
  422. package/dist/utils/react/chain.js +1 -1
  423. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  424. package/dist/utils/react/index.js +1 -1
  425. package/dist/utils/react/interactions.js +1 -1
  426. package/dist/utils/react/isTextOnly.js +1 -1
  427. package/dist/utils/react/mapProps.js +1 -1
  428. package/dist/utils/react/mergeProps.js +1 -1
  429. package/dist/utils/react/nullableValue.js +1 -1
  430. package/dist/utils/react/resolveIcon.js +1 -1
  431. package/dist/utils/react/sharedStore.js +1 -1
  432. package/dist/utils/react/useCombinedRefs.js +1 -1
  433. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  434. package/dist/utils/react/useEventBus.js +1 -1
  435. package/dist/utils/react/useId.js +1 -1
  436. package/dist/utils/react/useIsDarwin.js +1 -1
  437. package/dist/utils/react/useKeySymbols.js +1 -1
  438. package/dist/utils/react/useLayoutEffect.js +1 -1
  439. package/dist/utils/react/useLocalStorage.js +1 -1
  440. package/dist/utils/react/useMergeStyles.js +1 -1
  441. package/dist/utils/react/usePopoverSync.js +1 -1
  442. package/dist/utils/react/useQaProps.js +1 -1
  443. package/dist/utils/react/useViewportSize.js +1 -1
  444. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  445. package/dist/utils/selection.js +1 -1
  446. package/dist/utils/styles.js +1 -1
  447. package/dist/utils/tree.js +1 -1
  448. package/dist/utils/warnings.js +1 -1
  449. package/dist/version.js +2 -2
  450. package/docs/components/fields/CommandTextArea.md +153 -0
  451. package/package.json +6 -19
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  //#region src/components/navigation/Tabs/popover-placement.ts
3
3
  /**
4
4
  * Maps the parent Tabs `placement` to the popover placement for menus and
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _Item } from "../../content/Item/Item.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  //#region src/components/navigation/Tabs/types.ts
3
3
  /**
4
4
  * Size mapping for radio type tabs.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useCallback, useState } from "react";
3
3
 
4
4
  //#region src/components/navigation/Tabs/use-tab-editing.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { chainRaf } from "../../../utils/raf.js";
3
3
  import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
3
3
  import { Block } from "../../Block.js";
4
4
  import { Space } from "../../layout/Space.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _Text } from "../../content/Text.js";
3
3
  import { _Title } from "../../content/Title.js";
4
4
  import { Card } from "../../content/Card/Card.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _Title } from "../../content/Title.js";
3
3
  import { useProviderProps } from "../../../provider.js";
4
4
  import { Space } from "../../layout/Space.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { tasty } from "@tenphi/tasty";
3
3
  import { useRef } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { CalendarCell } from "./CalendarCell.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _Title } from "../../content/Title.js";
3
3
  import { useProviderProps } from "../../../provider.js";
4
4
  import { Space } from "../../layout/Space.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { Button } from "../../actions/index.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { chain } from "../../../utils/react/chain.js";
3
3
  import { Paragraph } from "../../content/Paragraph.js";
4
4
  import { _Title } from "../../content/Title.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { AlertDialogZone } from "./AlertDialogZone.js";
3
3
  import { createContext, useContext, useMemo, useRef, useState } from "react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { Portal } from "../../portal/Portal.js";
3
3
  import { DialogContainer } from "../Dialog/DialogContainer.js";
4
4
  import { _AlertDialog } from "./AlertDialog.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { SlotProvider } from "../../../utils/react/Slots.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _Modal } from "../Modal/Modal.js";
3
3
  import { DialogContext } from "./context.js";
4
4
  import { Children, isValidElement, useRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _Title } from "../../content/Title.js";
3
3
  import { ButtonGroup } from "../../actions/ButtonGroup/ButtonGroup.js";
4
4
  import { Button } from "../../actions/index.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { usePopoverSync } from "../../../utils/react/usePopoverSync.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
  import invariant from "tiny-invariant";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { DialogContainer } from "./DialogContainer.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { _Overlay } from "./Overlay.js";
4
4
  import { _Underlay } from "./Underlay.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/overlays/Modal/OpenTransitionContext.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransition.js";
3
3
  import { Provider, useProviderProps } from "../../../provider.js";
4
4
  import { OpenTransitionContext } from "./OpenTransitionContext.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { _Overlay } from "./Overlay.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { _Overlay } from "./Overlay.js";
4
4
  import { _Underlay } from "./Underlay.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { tasty } from "@tenphi/tasty";
3
3
  import { forwardRef } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useNotificationContext } from "./NotificationContext.js";
3
3
  import { useEffect, useRef } from "react";
4
4
 
@@ -11,7 +11,8 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
11
11
  * - `closeOnPress` (default: true) — auto-dismisses the notification after `onPress`.
12
12
  * - An action with no `onPress` and `closeOnPress: true` acts as a dismiss-only action.
13
13
  * - `isDismiss` — marks this action as the dismiss button; when present, the default
14
- * "Dismiss" button is auto-suppressed via context detection.
14
+ * "Dismiss" button is auto-suppressed (detected statically from the actions tree
15
+ * by NotificationCard).
15
16
  * - Type (primary/outline/clear/etc.) is set automatically via ItemActionProvider context.
16
17
  */
17
18
  declare function NotificationAction({
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
4
4
  import { createContext, useContext, useMemo } from "react";
@@ -28,7 +28,6 @@ function NotificationDismissProvider({ notificationId, onDismiss, onRestore, chi
28
28
  children
29
29
  });
30
30
  }
31
- const DismissActionDetectedContext = createContext(null);
32
31
  /**
33
32
  * Action button for use inside Notification components.
34
33
  * Wraps ItemAction with auto-dismiss behavior.
@@ -36,13 +35,12 @@ const DismissActionDetectedContext = createContext(null);
36
35
  * - `closeOnPress` (default: true) — auto-dismisses the notification after `onPress`.
37
36
  * - An action with no `onPress` and `closeOnPress: true` acts as a dismiss-only action.
38
37
  * - `isDismiss` — marks this action as the dismiss button; when present, the default
39
- * "Dismiss" button is auto-suppressed via context detection.
38
+ * "Dismiss" button is auto-suppressed (detected statically from the actions tree
39
+ * by NotificationCard).
40
40
  * - Type (primary/outline/clear/etc.) is set automatically via ItemActionProvider context.
41
41
  */
42
42
  function NotificationAction({ children, onPress, closeOnPress = true, isDisabled, isDismiss }) {
43
43
  const dismissCtx = useContext(NotificationDismissContext);
44
- const dismissDetectedRef = useContext(DismissActionDetectedContext);
45
- if (isDismiss && dismissDetectedRef) dismissDetectedRef.current = true;
46
44
  const actionInterceptor = useContext(NotificationActionInterceptorContext);
47
45
  return /* @__PURE__ */ jsx(ItemAction, {
48
46
  isSelected: true,
@@ -58,5 +56,5 @@ function NotificationAction({ children, onPress, closeOnPress = true, isDisabled
58
56
  }
59
57
 
60
58
  //#endregion
61
- export { DismissActionDetectedContext, NotificationAction, NotificationActionInterceptorContext, NotificationDismissProvider };
59
+ export { NotificationAction, NotificationActionInterceptorContext, NotificationDismissProvider };
62
60
  //# sourceMappingURL=NotificationAction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationAction.js","names":[],"sources":["../../../../src/components/overlays/Notifications/NotificationAction.tsx"],"sourcesContent":["import {\n createContext,\n Key,\n ReactNode,\n useContext,\n useMemo,\n useRef,\n} from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport { ItemAction } from '../../actions/ItemAction/ItemAction';\n\nimport type { NotificationActionProps } from './types';\n\n// ─── Notification Action Interceptor Context ─────────────────────────\n\n/**\n * Optional callback invoked BEFORE any action's onPress handler.\n * Provided by PersistentNotificationsList so the parent (e.g. popover)\n * can close itself when an action is triggered.\n */\nconst NotificationActionInterceptorContext = createContext<(() => void) | null>(\n null,\n);\n\nexport { NotificationActionInterceptorContext };\n\n// ─── Notification Dismiss Context ────────────────────────────────────\n\ninterface NotificationDismissContextValue {\n dismiss: (reason: 'action' | 'close') => void;\n restore: () => void;\n}\n\nconst NotificationDismissContext =\n createContext<NotificationDismissContextValue | null>(null);\n\nexport interface NotificationDismissProviderProps {\n notificationId: Key;\n onDismiss: (id: Key, reason: 'action' | 'close') => void;\n onRestore?: (id: Key) => void;\n children: ReactNode;\n}\n\nexport function NotificationDismissProvider({\n notificationId,\n onDismiss,\n onRestore,\n children,\n}: NotificationDismissProviderProps) {\n const dismiss = useEvent((reason: 'action' | 'close') => {\n onDismiss(notificationId, reason);\n });\n\n const restore = useEvent(() => {\n onRestore?.(notificationId);\n });\n\n const value = useMemo(() => ({ dismiss, restore }), [dismiss, restore]);\n\n return (\n <NotificationDismissContext.Provider value={value}>\n {children}\n </NotificationDismissContext.Provider>\n );\n}\n\n// ─── Dismiss Action Detection Context ────────────────────────────────\n//\n// Allows NotificationCard to detect whether any child NotificationAction\n// has `isDismiss` set, without requiring a separate `hasDismissAction` prop.\n//\n// Mechanism:\n// - DismissActionDetector provides a ref via context and resets it each render.\n// - NotificationAction writes to the ref during render when isDismiss is true.\n// - DefaultDismissGuard reads the ref to decide whether to show the default button.\n//\n// This relies on React's left-to-right sibling render order: {actions}\n// children render before <DefaultDismissGuard />, so the ref is populated\n// before it's read. The ref is reset at the provider level each render,\n// making it safe under StrictMode double-rendering.\n\nexport const DismissActionDetectedContext = createContext<ReturnType<\n typeof useRef<boolean>\n> | null>(null);\n\n// ─── NotificationAction Component ────────────────────────────────────\n\n/**\n * Action button for use inside Notification components.\n * Wraps ItemAction with auto-dismiss behavior.\n *\n * - `closeOnPress` (default: true) — auto-dismisses the notification after `onPress`.\n * - An action with no `onPress` and `closeOnPress: true` acts as a dismiss-only action.\n * - `isDismiss` — marks this action as the dismiss button; when present, the default\n * \"Dismiss\" button is auto-suppressed via context detection.\n * - Type (primary/outline/clear/etc.) is set automatically via ItemActionProvider context.\n */\nexport function NotificationAction({\n children,\n onPress,\n closeOnPress = true,\n isDisabled,\n isDismiss,\n}: NotificationActionProps) {\n const dismissCtx = useContext(NotificationDismissContext);\n const dismissDetectedRef = useContext(DismissActionDetectedContext);\n\n // Register isDismiss during render (synchronous, before DefaultDismissGuard renders).\n // Safe under StrictMode: the ref is reset at the DismissActionDetector level each render.\n if (isDismiss && dismissDetectedRef) {\n dismissDetectedRef.current = true;\n }\n\n const actionInterceptor = useContext(NotificationActionInterceptorContext);\n\n const handlePress = useEvent(async () => {\n actionInterceptor?.();\n\n if (closeOnPress || actionInterceptor) {\n // Dismiss immediately so the notification hides before the async action\n // completes (e.g. opening a confirmation dialog).\n // isDismiss actions use 'close' reason — the notification moves to the\n // persistent list. Regular actions use 'action' reason — the notification\n // is fully dismissed and won't reappear.\n // When an actionInterceptor is present (persistent list), always dismiss\n // regardless of closeOnPress — all actions remove the item permanently.\n dismissCtx?.dismiss(isDismiss ? 'close' : 'action');\n }\n\n const result = await onPress?.();\n\n if (result === false && (closeOnPress || actionInterceptor)) {\n // The async action signalled cancellation — restore the notification.\n dismissCtx?.restore();\n }\n });\n\n return (\n <ItemAction\n isSelected\n type=\"outline\"\n isDisabled={isDisabled}\n onPress={handlePress}\n >\n {children}\n </ItemAction>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAqBA,MAAM,uCAAuC,cAC3C,KACD;AAWD,MAAM,6BACJ,cAAsD,KAAK;AAS7D,SAAgB,4BAA4B,EAC1C,gBACA,WACA,WACA,YACmC;CACnC,MAAM,UAAU,UAAU,WAA+B;AACvD,YAAU,gBAAgB,OAAO;GACjC;CAEF,MAAM,UAAU,eAAe;AAC7B,cAAY,eAAe;GAC3B;CAEF,MAAM,QAAQ,eAAe;EAAE;EAAS;EAAS,GAAG,CAAC,SAAS,QAAQ,CAAC;AAEvE,QACE,oBAAC,2BAA2B;EAAgB;EACzC;GACmC;;AAmB1C,MAAa,+BAA+B,cAElC,KAAK;;;;;;;;;;;AAcf,SAAgB,mBAAmB,EACjC,UACA,SACA,eAAe,MACf,YACA,aAC0B;CAC1B,MAAM,aAAa,WAAW,2BAA2B;CACzD,MAAM,qBAAqB,WAAW,6BAA6B;AAInE,KAAI,aAAa,mBACf,oBAAmB,UAAU;CAG/B,MAAM,oBAAoB,WAAW,qCAAqC;AAwB1E,QACE,oBAAC;EACC;EACA,MAAK;EACO;EACZ,SA3BgB,SAAS,YAAY;AACvC,wBAAqB;AAErB,OAAI,gBAAgB,kBAQlB,aAAY,QAAQ,YAAY,UAAU,SAAS;AAKrD,OAFe,MAAM,WAAW,KAEjB,UAAU,gBAAgB,mBAEvC,aAAY,SAAS;IAEvB;EASG;GACU"}
1
+ {"version":3,"file":"NotificationAction.js","names":[],"sources":["../../../../src/components/overlays/Notifications/NotificationAction.tsx"],"sourcesContent":["import { createContext, Key, ReactNode, useContext, useMemo } from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport { ItemAction } from '../../actions/ItemAction/ItemAction';\n\nimport type { NotificationActionProps } from './types';\n\n// ─── Notification Action Interceptor Context ─────────────────────────\n\n/**\n * Optional callback invoked BEFORE any action's onPress handler.\n * Provided by PersistentNotificationsList so the parent (e.g. popover)\n * can close itself when an action is triggered.\n */\nconst NotificationActionInterceptorContext = createContext<(() => void) | null>(\n null,\n);\n\nexport { NotificationActionInterceptorContext };\n\n// ─── Notification Dismiss Context ────────────────────────────────────\n\ninterface NotificationDismissContextValue {\n dismiss: (reason: 'action' | 'close') => void;\n restore: () => void;\n}\n\nconst NotificationDismissContext =\n createContext<NotificationDismissContextValue | null>(null);\n\nexport interface NotificationDismissProviderProps {\n notificationId: Key;\n onDismiss: (id: Key, reason: 'action' | 'close') => void;\n onRestore?: (id: Key) => void;\n children: ReactNode;\n}\n\nexport function NotificationDismissProvider({\n notificationId,\n onDismiss,\n onRestore,\n children,\n}: NotificationDismissProviderProps) {\n const dismiss = useEvent((reason: 'action' | 'close') => {\n onDismiss(notificationId, reason);\n });\n\n const restore = useEvent(() => {\n onRestore?.(notificationId);\n });\n\n const value = useMemo(() => ({ dismiss, restore }), [dismiss, restore]);\n\n return (\n <NotificationDismissContext.Provider value={value}>\n {children}\n </NotificationDismissContext.Provider>\n );\n}\n\n// ─── NotificationAction Component ────────────────────────────────────\n\n/**\n * Action button for use inside Notification components.\n * Wraps ItemAction with auto-dismiss behavior.\n *\n * - `closeOnPress` (default: true) — auto-dismisses the notification after `onPress`.\n * - An action with no `onPress` and `closeOnPress: true` acts as a dismiss-only action.\n * - `isDismiss` — marks this action as the dismiss button; when present, the default\n * \"Dismiss\" button is auto-suppressed (detected statically from the actions tree\n * by NotificationCard).\n * - Type (primary/outline/clear/etc.) is set automatically via ItemActionProvider context.\n */\nexport function NotificationAction({\n children,\n onPress,\n closeOnPress = true,\n isDisabled,\n isDismiss,\n}: NotificationActionProps) {\n const dismissCtx = useContext(NotificationDismissContext);\n const actionInterceptor = useContext(NotificationActionInterceptorContext);\n\n const handlePress = useEvent(async () => {\n actionInterceptor?.();\n\n if (closeOnPress || actionInterceptor) {\n // Dismiss immediately so the notification hides before the async action\n // completes (e.g. opening a confirmation dialog).\n // isDismiss actions use 'close' reason — the notification moves to the\n // persistent list. Regular actions use 'action' reason — the notification\n // is fully dismissed and won't reappear.\n // When an actionInterceptor is present (persistent list), always dismiss\n // regardless of closeOnPress — all actions remove the item permanently.\n dismissCtx?.dismiss(isDismiss ? 'close' : 'action');\n }\n\n const result = await onPress?.();\n\n if (result === false && (closeOnPress || actionInterceptor)) {\n // The async action signalled cancellation — restore the notification.\n dismissCtx?.restore();\n }\n });\n\n return (\n <ItemAction\n isSelected\n type=\"outline\"\n isDisabled={isDisabled}\n onPress={handlePress}\n >\n {children}\n </ItemAction>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAcA,MAAM,uCAAuC,cAC3C,KACD;AAWD,MAAM,6BACJ,cAAsD,KAAK;AAS7D,SAAgB,4BAA4B,EAC1C,gBACA,WACA,WACA,YACmC;CACnC,MAAM,UAAU,UAAU,WAA+B;AACvD,YAAU,gBAAgB,OAAO;GACjC;CAEF,MAAM,UAAU,eAAe;AAC7B,cAAY,eAAe;GAC3B;CAEF,MAAM,QAAQ,eAAe;EAAE;EAAS;EAAS,GAAG,CAAC,SAAS,QAAQ,CAAC;AAEvE,QACE,oBAAC,2BAA2B;EAAgB;EACzC;GACmC;;;;;;;;;;;;;AAiB1C,SAAgB,mBAAmB,EACjC,UACA,SACA,eAAe,MACf,YACA,aAC0B;CAC1B,MAAM,aAAa,WAAW,2BAA2B;CACzD,MAAM,oBAAoB,WAAW,qCAAqC;AAwB1E,QACE,oBAAC;EACC;EACA,MAAK;EACO;EACZ,SA3BgB,SAAS,YAAY;AACvC,wBAAqB;AAErB,OAAI,gBAAgB,kBAQlB,aAAY,QAAQ,YAAY,UAAU,SAAS;AAKrD,OAFe,MAAM,WAAW,KAEjB,UAAU,gBAAgB,mBAEvC,aAAY,SAAS;IAEvB;EASG;GACU"}
@@ -1,13 +1,13 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { Block } from "../../Block.js";
3
3
  import { ItemActionProvider } from "../../actions/ItemActionContext.js";
4
4
  import { Space } from "../../layout/Space.js";
5
5
  import { _Item } from "../../content/Item/Item.js";
6
6
  import { getThemeIcon } from "../Toast/useToast.js";
7
7
  import { Flex } from "../../layout/Flex.js";
8
- import { DismissActionDetectedContext, NotificationAction, NotificationDismissProvider } from "./NotificationAction.js";
8
+ import { NotificationAction, NotificationDismissProvider } from "./NotificationAction.js";
9
9
  import { tasty } from "@tenphi/tasty";
10
- import { useContext, useRef } from "react";
10
+ import { isValidElement } from "react";
11
11
  import { jsx, jsxs } from "react/jsx-runtime";
12
12
 
13
13
  //#region src/components/overlays/Notifications/NotificationCard.tsx
@@ -28,24 +28,38 @@ const StyledItem = tasty(_Item, { styles: {
28
28
  Description: { preset: "t4" }
29
29
  } });
30
30
  /**
31
- * Provides a ref via context that NotificationAction children write to
32
- * during render when `isDismiss` is set. The ref is reset each render.
31
+ * Deterministically checks whether any `NotificationAction` with `isDismiss`
32
+ * is present in the `actions` ReactNode tree.
33
+ *
34
+ * Walks the static element tree (arrays, fragments, host elements, and
35
+ * composite wrappers via their `children` prop) instead of relying on
36
+ * render-phase ref mutation, so suppression does not depend on sibling render
37
+ * order or concurrent rendering timing.
33
38
  */
34
- function DismissActionDetector({ children }) {
35
- const ref = useRef(false);
36
- ref.current = false;
37
- return /* @__PURE__ */ jsx(DismissActionDetectedContext.Provider, {
38
- value: ref,
39
- children
40
- });
39
+ function hasDismissAction(node) {
40
+ let found = false;
41
+ const visit = (n) => {
42
+ if (found || n == null || typeof n === "boolean" || typeof n === "string") return;
43
+ if (Array.isArray(n)) {
44
+ for (const child of n) visit(child);
45
+ return;
46
+ }
47
+ if (isValidElement(n)) {
48
+ if (n.type === NotificationAction && n.props.isDismiss) {
49
+ found = true;
50
+ return;
51
+ }
52
+ visit(n.props.children);
53
+ }
54
+ };
55
+ visit(node);
56
+ return found;
41
57
  }
42
58
  /**
43
- * Renders the default "Dismiss" button only if no sibling NotificationAction
44
- * has `isDismiss` set. Reads from DismissActionDetectedContext ref which is
45
- * populated by actions that rendered before this component (left-to-right order).
59
+ * Renders the default "Dismiss" button. Suppression is decided by the caller
60
+ * via `hasDismissAction(actions)` this component always renders the button.
46
61
  */
47
62
  function AutoDismissButton() {
48
- if (useContext(DismissActionDetectedContext)?.current) return null;
49
63
  return /* @__PURE__ */ jsx(NotificationAction, {
50
64
  isDismiss: true,
51
65
  children: "Dismiss"
@@ -60,13 +74,13 @@ function AutoDismissButton() {
60
74
  * auto-appended "Dismiss" button.
61
75
  */
62
76
  function ActionsSection({ actions, theme, showAutoDismiss, hasDismissContext, notificationId, onDismiss, onRestore }) {
77
+ const hasDismiss = hasDismissAction(actions);
63
78
  const actionsContent = /* @__PURE__ */ jsxs(Space, {
64
79
  placeSelf: "end",
65
80
  placeContent: "end",
66
81
  flexGrow: 1,
67
- children: [actions, showAutoDismiss && /* @__PURE__ */ jsx(AutoDismissButton, {})]
82
+ children: [actions, showAutoDismiss && !hasDismiss && /* @__PURE__ */ jsx(AutoDismissButton, {})]
68
83
  });
69
- const wrappedContent = showAutoDismiss ? /* @__PURE__ */ jsx(DismissActionDetector, { children: actionsContent }) : actionsContent;
70
84
  return /* @__PURE__ */ jsx(ItemActionProvider, {
71
85
  type: "card",
72
86
  theme,
@@ -74,8 +88,8 @@ function ActionsSection({ actions, theme, showAutoDismiss, hasDismissContext, no
74
88
  notificationId,
75
89
  onDismiss,
76
90
  onRestore,
77
- children: wrappedContent
78
- }) : wrappedContent
91
+ children: actionsContent
92
+ }) : actionsContent
79
93
  });
80
94
  }
81
95
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"NotificationCard.js","names":["Item"],"sources":["../../../../src/components/overlays/Notifications/NotificationCard.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { Key, ReactNode, useContext, useRef } from 'react';\n\nimport { ItemActionProvider } from '../../actions/ItemActionContext';\nimport { Block } from '../../Block';\nimport { Item } from '../../content/Item/Item';\nimport { Flex } from '../../layout/Flex';\nimport { Space } from '../../layout/Space';\nimport { getThemeIcon } from '../Toast/useToast';\n\nimport {\n DismissActionDetectedContext,\n NotificationAction,\n NotificationDismissProvider,\n} from './NotificationAction';\n\nimport type { DismissReason, NotificationType } from './types';\n\n// ─── Styled Components ──────────────────────────────────────────────\n\nconst StyledItem = tasty(Item, {\n styles: {\n width: {\n '': 'max min((100vw - 4x), 50x)',\n flat: '100%',\n },\n shadow: {\n '': '$shadow',\n flat: false,\n },\n radius: {\n '': '1cr',\n flat: '0',\n },\n transition: 'theme, inset',\n\n Description: {\n preset: 't4',\n },\n },\n});\n\n// ─── Dismiss Action Detection ────────────────────────────────────────\n\n/**\n * Provides a ref via context that NotificationAction children write to\n * during render when `isDismiss` is set. The ref is reset each render.\n */\nfunction DismissActionDetector({ children }: { children: ReactNode }) {\n const ref = useRef(false);\n\n // Reset each render so detection is fresh\n ref.current = false;\n\n return (\n <DismissActionDetectedContext.Provider value={ref}>\n {children}\n </DismissActionDetectedContext.Provider>\n );\n}\n\n/**\n * Renders the default \"Dismiss\" button only if no sibling NotificationAction\n * has `isDismiss` set. Reads from DismissActionDetectedContext ref which is\n * populated by actions that rendered before this component (left-to-right order).\n */\nfunction AutoDismissButton() {\n const dismissDetectedRef = useContext(DismissActionDetectedContext);\n\n if (dismissDetectedRef?.current) return null;\n\n return <NotificationAction isDismiss>Dismiss</NotificationAction>;\n}\n\n// ─── ActionsSection ─────────────────────────────────────────────────\n\ninterface ActionsSectionProps {\n actions?: ReactNode;\n theme?: NotificationType;\n /**\n * Whether to show the auto-appended \"Dismiss\" button.\n * Controlled by `isDismissable` on the notification.\n *\n * When false, no default \"Dismiss\" button is rendered, but actions with\n * `closeOnPress` (default `true`) can still close the notification via\n * the dismiss context.\n */\n showAutoDismiss: boolean;\n /** Whether the dismiss context is available (notificationId + onDismiss present) */\n hasDismissContext: boolean;\n notificationId?: Key;\n onDismiss?: (id: Key, reason: DismissReason) => void;\n onRestore?: (id: Key) => void;\n}\n\n/**\n * Extracted sub-component for the actions area of a notification card.\n *\n * The dismiss provider is always rendered when `hasDismissContext` is true,\n * so any action with `closeOnPress` can close the notification — regardless\n * of `isDismissable`. The `showAutoDismiss` flag only controls the\n * auto-appended \"Dismiss\" button.\n */\nfunction ActionsSection({\n actions,\n theme,\n showAutoDismiss,\n hasDismissContext,\n notificationId,\n onDismiss,\n onRestore,\n}: ActionsSectionProps) {\n const actionsContent = (\n <Space placeSelf=\"end\" placeContent=\"end\" flexGrow={1}>\n {actions}\n {showAutoDismiss && <AutoDismissButton />}\n </Space>\n );\n\n const wrappedContent = showAutoDismiss ? (\n <DismissActionDetector>{actionsContent}</DismissActionDetector>\n ) : (\n actionsContent\n );\n\n return (\n <ItemActionProvider type=\"card\" theme={theme}>\n {hasDismissContext ? (\n <NotificationDismissProvider\n notificationId={notificationId!}\n onDismiss={onDismiss!}\n onRestore={onRestore}\n >\n {wrappedContent}\n </NotificationDismissProvider>\n ) : (\n wrappedContent\n )}\n </ItemActionProvider>\n );\n}\n\n// ─── NotificationCard ────────────────────────────────────────────────\n\nexport interface NotificationCardProps {\n qa?: string;\n /** Notification theme */\n theme?: NotificationType;\n /** Primary text */\n title?: ReactNode;\n /** Secondary text */\n description?: ReactNode;\n /** Custom icon override (theme default used if omitted) */\n icon?: ReactNode;\n /** Action buttons rendered below description */\n actions?: ReactNode;\n /**\n * Whether the notification shows the default dismiss UI (auto-appended\n * \"Dismiss\" button and Escape key). Default: true.\n *\n * When false, no default \"Dismiss\" button is rendered and Escape does\n * nothing, but actions with `closeOnPress` (default) can still close\n * the notification.\n */\n isDismissable?: boolean;\n /** When false the card drops its shadow (e.g. inside a list). Default: true. */\n elevated?: boolean;\n /** Notification id */\n notificationId?: Key;\n /** Called when the notification is dismissed */\n onDismiss?: (id: Key, reason: DismissReason) => void;\n /** Called when a dismissed notification should be restored (async action returned false) */\n onRestore?: (id: Key) => void;\n /** Suffix content (e.g. timestamp) */\n suffix?: ReactNode;\n}\n\n/**\n * Shared presentational card used by both overlay NotificationItem\n * and PersistentNotificationListItem.\n */\nexport function NotificationCard({\n qa = 'Notification',\n theme,\n title,\n description,\n icon: providedIcon,\n actions,\n isDismissable = true,\n elevated = true,\n notificationId,\n onDismiss,\n onRestore,\n suffix,\n}: NotificationCardProps) {\n const icon = getThemeIcon(theme, providedIcon);\n\n const hasDismissContext = notificationId != null && onDismiss != null;\n const showAutoDismiss = isDismissable && hasDismissContext;\n const hasActions = !!(actions || showAutoDismiss);\n\n const descriptionContent: ReactNode =\n description || hasActions ? (\n <Flex flow=\"row wrap\" gap=\"0.5x 1x\" placeItems=\"center stretch\">\n {description && <Block>{description}</Block>}\n {hasActions && (\n <ActionsSection\n actions={actions}\n theme={theme}\n showAutoDismiss={showAutoDismiss}\n hasDismissContext={hasDismissContext}\n notificationId={notificationId}\n onDismiss={onDismiss}\n onRestore={onRestore}\n />\n )}\n </Flex>\n ) : undefined;\n\n return (\n <StyledItem\n qa={qa}\n type=\"card\"\n theme={theme}\n icon={icon}\n description={descriptionContent}\n suffix={suffix}\n mods={{ flat: !elevated }}\n styles={!elevated ? { border: '0' } : undefined}\n >\n {title}\n </StyledItem>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAoBA,MAAM,aAAa,MAAMA,OAAM,EAC7B,QAAQ;CACN,OAAO;EACL,IAAI;EACJ,MAAM;EACP;CACD,QAAQ;EACN,IAAI;EACJ,MAAM;EACP;CACD,QAAQ;EACN,IAAI;EACJ,MAAM;EACP;CACD,YAAY;CAEZ,aAAa,EACX,QAAQ,MACT;CACF,EACF,CAAC;;;;;AAQF,SAAS,sBAAsB,EAAE,YAAqC;CACpE,MAAM,MAAM,OAAO,MAAM;AAGzB,KAAI,UAAU;AAEd,QACE,oBAAC,6BAA6B;EAAS,OAAO;EAC3C;GACqC;;;;;;;AAS5C,SAAS,oBAAoB;AAG3B,KAF2B,WAAW,6BAA6B,EAE3C,QAAS,QAAO;AAExC,QAAO,oBAAC;EAAmB;YAAU;GAA4B;;;;;;;;;;AAgCnE,SAAS,eAAe,EACtB,SACA,OACA,iBACA,mBACA,gBACA,WACA,aACsB;CACtB,MAAM,iBACJ,qBAAC;EAAM,WAAU;EAAM,cAAa;EAAM,UAAU;aACjD,SACA,mBAAmB,oBAAC,sBAAoB;GACnC;CAGV,MAAM,iBAAiB,kBACrB,oBAAC,mCAAuB,iBAAuC,GAE/D;AAGF,QACE,oBAAC;EAAmB,MAAK;EAAc;YACpC,oBACC,oBAAC;GACiB;GACL;GACA;aAEV;IAC2B,GAE9B;GAEiB;;;;;;AA2CzB,SAAgB,iBAAiB,EAC/B,KAAK,gBACL,OACA,OACA,aACA,MAAM,cACN,SACA,gBAAgB,MAChB,WAAW,MACX,gBACA,WACA,WACA,UACwB;CACxB,MAAM,OAAO,aAAa,OAAO,aAAa;CAE9C,MAAM,oBAAoB,kBAAkB,QAAQ,aAAa;CACjE,MAAM,kBAAkB,iBAAiB;CACzC,MAAM,aAAa,CAAC,EAAE,WAAW;AAoBjC,QACE,oBAAC;EACK;EACJ,MAAK;EACE;EACD;EACN,aAvBF,eAAe,aACb,qBAAC;GAAK,MAAK;GAAW,KAAI;GAAU,YAAW;cAC5C,eAAe,oBAAC,mBAAO,cAAoB,EAC3C,cACC,oBAAC;IACU;IACF;IACU;IACE;IACH;IACL;IACA;KACX;IAEC,GACL;EASM;EACR,MAAM,EAAE,MAAM,CAAC,UAAU;EACzB,QAAQ,CAAC,WAAW,EAAE,QAAQ,KAAK,GAAG;YAErC;GACU"}
1
+ {"version":3,"file":"NotificationCard.js","names":["Item"],"sources":["../../../../src/components/overlays/Notifications/NotificationCard.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { isValidElement, Key, ReactNode } from 'react';\n\nimport { ItemActionProvider } from '../../actions/ItemActionContext';\nimport { Block } from '../../Block';\nimport { Item } from '../../content/Item/Item';\nimport { Flex } from '../../layout/Flex';\nimport { Space } from '../../layout/Space';\nimport { getThemeIcon } from '../Toast/useToast';\n\nimport {\n NotificationAction,\n NotificationDismissProvider,\n} from './NotificationAction';\n\nimport type { DismissReason, NotificationType } from './types';\n\n// ─── Styled Components ──────────────────────────────────────────────\n\nconst StyledItem = tasty(Item, {\n styles: {\n width: {\n '': 'max min((100vw - 4x), 50x)',\n flat: '100%',\n },\n shadow: {\n '': '$shadow',\n flat: false,\n },\n radius: {\n '': '1cr',\n flat: '0',\n },\n transition: 'theme, inset',\n\n Description: {\n preset: 't4',\n },\n },\n});\n\n// ─── Dismiss Action Detection ────────────────────────────────────────\n\n/**\n * Deterministically checks whether any `NotificationAction` with `isDismiss`\n * is present in the `actions` ReactNode tree.\n *\n * Walks the static element tree (arrays, fragments, host elements, and\n * composite wrappers via their `children` prop) instead of relying on\n * render-phase ref mutation, so suppression does not depend on sibling render\n * order or concurrent rendering timing.\n */\nfunction hasDismissAction(node: ReactNode): boolean {\n let found = false;\n\n const visit = (n: ReactNode) => {\n if (found || n == null || typeof n === 'boolean' || typeof n === 'string') {\n return;\n }\n\n if (Array.isArray(n)) {\n for (const child of n) visit(child);\n return;\n }\n\n if (isValidElement(n)) {\n if (n.type === NotificationAction && (n.props as any).isDismiss) {\n found = true;\n return;\n }\n\n // Recurse into any wrapper's children (fragments, host elements like\n // `div`, and composite wrappers like `Flex` that receive the actions as\n // children). Note: a component that creates the NotificationAction\n // internally rather than receiving it via children cannot be detected\n // statically.\n visit((n.props as any).children);\n }\n };\n\n visit(node);\n return found;\n}\n\n/**\n * Renders the default \"Dismiss\" button. Suppression is decided by the caller\n * via `hasDismissAction(actions)` this component always renders the button.\n */\nfunction AutoDismissButton() {\n return <NotificationAction isDismiss>Dismiss</NotificationAction>;\n}\n\n// ─── ActionsSection ─────────────────────────────────────────────────\n\ninterface ActionsSectionProps {\n actions?: ReactNode;\n theme?: NotificationType;\n /**\n * Whether to show the auto-appended \"Dismiss\" button.\n * Controlled by `isDismissable` on the notification.\n *\n * When false, no default \"Dismiss\" button is rendered, but actions with\n * `closeOnPress` (default `true`) can still close the notification via\n * the dismiss context.\n */\n showAutoDismiss: boolean;\n /** Whether the dismiss context is available (notificationId + onDismiss present) */\n hasDismissContext: boolean;\n notificationId?: Key;\n onDismiss?: (id: Key, reason: DismissReason) => void;\n onRestore?: (id: Key) => void;\n}\n\n/**\n * Extracted sub-component for the actions area of a notification card.\n *\n * The dismiss provider is always rendered when `hasDismissContext` is true,\n * so any action with `closeOnPress` can close the notification — regardless\n * of `isDismissable`. The `showAutoDismiss` flag only controls the\n * auto-appended \"Dismiss\" button.\n */\nfunction ActionsSection({\n actions,\n theme,\n showAutoDismiss,\n hasDismissContext,\n notificationId,\n onDismiss,\n onRestore,\n}: ActionsSectionProps) {\n // Suppress the auto-appended \"Dismiss\" when any provided action is already\n // marked `isDismiss`. Determined statically from the element tree so it does\n // not depend on render order or concurrent rendering timing.\n const hasDismiss = hasDismissAction(actions);\n const showDefaultDismiss = showAutoDismiss && !hasDismiss;\n\n const actionsContent = (\n <Space placeSelf=\"end\" placeContent=\"end\" flexGrow={1}>\n {actions}\n {showDefaultDismiss && <AutoDismissButton />}\n </Space>\n );\n\n return (\n <ItemActionProvider type=\"card\" theme={theme}>\n {hasDismissContext ? (\n <NotificationDismissProvider\n notificationId={notificationId!}\n onDismiss={onDismiss!}\n onRestore={onRestore}\n >\n {actionsContent}\n </NotificationDismissProvider>\n ) : (\n actionsContent\n )}\n </ItemActionProvider>\n );\n}\n\n// ─── NotificationCard ────────────────────────────────────────────────\n\nexport interface NotificationCardProps {\n qa?: string;\n /** Notification theme */\n theme?: NotificationType;\n /** Primary text */\n title?: ReactNode;\n /** Secondary text */\n description?: ReactNode;\n /** Custom icon override (theme default used if omitted) */\n icon?: ReactNode;\n /** Action buttons rendered below description */\n actions?: ReactNode;\n /**\n * Whether the notification shows the default dismiss UI (auto-appended\n * \"Dismiss\" button and Escape key). Default: true.\n *\n * When false, no default \"Dismiss\" button is rendered and Escape does\n * nothing, but actions with `closeOnPress` (default) can still close\n * the notification.\n */\n isDismissable?: boolean;\n /** When false the card drops its shadow (e.g. inside a list). Default: true. */\n elevated?: boolean;\n /** Notification id */\n notificationId?: Key;\n /** Called when the notification is dismissed */\n onDismiss?: (id: Key, reason: DismissReason) => void;\n /** Called when a dismissed notification should be restored (async action returned false) */\n onRestore?: (id: Key) => void;\n /** Suffix content (e.g. timestamp) */\n suffix?: ReactNode;\n}\n\n/**\n * Shared presentational card used by both overlay NotificationItem\n * and PersistentNotificationListItem.\n */\nexport function NotificationCard({\n qa = 'Notification',\n theme,\n title,\n description,\n icon: providedIcon,\n actions,\n isDismissable = true,\n elevated = true,\n notificationId,\n onDismiss,\n onRestore,\n suffix,\n}: NotificationCardProps) {\n const icon = getThemeIcon(theme, providedIcon);\n\n const hasDismissContext = notificationId != null && onDismiss != null;\n const showAutoDismiss = isDismissable && hasDismissContext;\n const hasActions = !!(actions || showAutoDismiss);\n\n const descriptionContent: ReactNode =\n description || hasActions ? (\n <Flex flow=\"row wrap\" gap=\"0.5x 1x\" placeItems=\"center stretch\">\n {description && <Block>{description}</Block>}\n {hasActions && (\n <ActionsSection\n actions={actions}\n theme={theme}\n showAutoDismiss={showAutoDismiss}\n hasDismissContext={hasDismissContext}\n notificationId={notificationId}\n onDismiss={onDismiss}\n onRestore={onRestore}\n />\n )}\n </Flex>\n ) : undefined;\n\n return (\n <StyledItem\n qa={qa}\n type=\"card\"\n theme={theme}\n icon={icon}\n description={descriptionContent}\n suffix={suffix}\n mods={{ flat: !elevated }}\n styles={!elevated ? { border: '0' } : undefined}\n >\n {title}\n </StyledItem>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAmBA,MAAM,aAAa,MAAMA,OAAM,EAC7B,QAAQ;CACN,OAAO;EACL,IAAI;EACJ,MAAM;EACP;CACD,QAAQ;EACN,IAAI;EACJ,MAAM;EACP;CACD,QAAQ;EACN,IAAI;EACJ,MAAM;EACP;CACD,YAAY;CAEZ,aAAa,EACX,QAAQ,MACT;CACF,EACF,CAAC;;;;;;;;;;AAaF,SAAS,iBAAiB,MAA0B;CAClD,IAAI,QAAQ;CAEZ,MAAM,SAAS,MAAiB;AAC9B,MAAI,SAAS,KAAK,QAAQ,OAAO,MAAM,aAAa,OAAO,MAAM,SAC/D;AAGF,MAAI,MAAM,QAAQ,EAAE,EAAE;AACpB,QAAK,MAAM,SAAS,EAAG,OAAM,MAAM;AACnC;;AAGF,MAAI,eAAe,EAAE,EAAE;AACrB,OAAI,EAAE,SAAS,sBAAuB,EAAE,MAAc,WAAW;AAC/D,YAAQ;AACR;;AAQF,SAAO,EAAE,MAAc,SAAS;;;AAIpC,OAAM,KAAK;AACX,QAAO;;;;;;AAOT,SAAS,oBAAoB;AAC3B,QAAO,oBAAC;EAAmB;YAAU;GAA4B;;;;;;;;;;AAgCnE,SAAS,eAAe,EACtB,SACA,OACA,iBACA,mBACA,gBACA,WACA,aACsB;CAItB,MAAM,aAAa,iBAAiB,QAAQ;CAG5C,MAAM,iBACJ,qBAAC;EAAM,WAAU;EAAM,cAAa;EAAM,UAAU;aACjD,SAJsB,mBAAmB,CAAC,cAKpB,oBAAC,sBAAoB;GACtC;AAGV,QACE,oBAAC;EAAmB,MAAK;EAAc;YACpC,oBACC,oBAAC;GACiB;GACL;GACA;aAEV;IAC2B,GAE9B;GAEiB;;;;;;AA2CzB,SAAgB,iBAAiB,EAC/B,KAAK,gBACL,OACA,OACA,aACA,MAAM,cACN,SACA,gBAAgB,MAChB,WAAW,MACX,gBACA,WACA,WACA,UACwB;CACxB,MAAM,OAAO,aAAa,OAAO,aAAa;CAE9C,MAAM,oBAAoB,kBAAkB,QAAQ,aAAa;CACjE,MAAM,kBAAkB,iBAAiB;CACzC,MAAM,aAAa,CAAC,EAAE,WAAW;AAoBjC,QACE,oBAAC;EACK;EACJ,MAAK;EACE;EACD;EACN,aAvBF,eAAe,aACb,qBAAC;GAAK,MAAK;GAAW,KAAI;GAAU,YAAW;cAC5C,eAAe,oBAAC,mBAAO,cAAoB,EAC3C,cACC,oBAAC;IACU;IACF;IACU;IACE;IACH;IACL;IACA;KACX;IAEC,GACL;EASM;EACR,MAAM,EAAE,MAAM,CAAC,UAAU;EACzB,QAAQ,CAAC,WAAW,EAAE,QAAQ,KAAK,GAAG;YAErC;GACU"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/overlays/Notifications/NotificationContext.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { NotificationCard } from "./NotificationCard.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransition.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { NotificationContext, PersistentNotificationsContext, ToastContext, useNotificationContext, useToastContext } from "./NotificationContext.js";
3
3
  import { OverlayContainer } from "./OverlayContainer.js";
4
4
  import { useNotificationState } from "./use-notification-state.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { _Text } from "../../content/Text.js";
4
4
  import { NotificationActionInterceptorContext } from "./NotificationAction.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  //#region src/components/overlays/Notifications/dismissed-storage.ts
3
3
  const STORAGE_KEY = "cube-ui-dismissed-notifications";
4
4
  const TTL_MS = 864e5;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  //#region src/components/overlays/Notifications/format-relative-time.ts
3
3
  /**
4
4
  * Lightweight relative time formatter.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useToastContext } from "./NotificationContext.js";
3
3
  import { NotificationAction } from "./NotificationAction.js";
4
4
  import { NotificationCard } from "./NotificationCard.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useRef, useState } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useWarn } from "../../../_internal/hooks/use-warn.js";
4
4
  import { useNotificationContext } from "./NotificationContext.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useEffect, useRef } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { usePersistentNotificationsContext } from "./NotificationContext.js";
3
3
  import { useMemo } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { cleanupAndGetValidIds, saveDismissedId } from "./dismissed-storage.js";
4
4
  import { useRef, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useRef, useState } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _Item } from "../../content/Item/Item.js";
3
3
  import { getThemeIcon } from "./useToast.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useToastContext } from "../Notifications/NotificationContext.js";
3
3
  import { useProgressToast } from "./useProgressToast.js";
4
4
  import { getThemeIcon, useToast } from "./useToast.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
4
4
  import { useToastContext } from "../Notifications/NotificationContext.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { CheckIcon } from "../../../icons/CheckIcon.js";
3
3
  import { DangerIcon } from "../../../icons/DangerIcon.js";
4
4
  import { InfoCircleIcon } from "../../../icons/InfoCircleIcon.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
4
4
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.10 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _Tooltip } from "./Tooltip.js";
3
3
  import { TooltipTrigger } from "./TooltipTrigger.js";
4
4
  import { isValidElement, useEffect, useState } from "react";