@cube-dev/ui-kit 0.142.9 → 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 (456) hide show
  1. package/README.md +1 -1
  2. package/dist/CHANGELOG.md +29 -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.js +1 -1
  89. package/dist/components/content/TextItem/TextItem.js +1 -1
  90. package/dist/components/content/Title.js +1 -1
  91. package/dist/components/content/Tree/Tree.js +1 -1
  92. package/dist/components/content/Tree/TreeNode.js +8 -2
  93. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  94. package/dist/components/content/Tree/styled.js +2 -1
  95. package/dist/components/content/Tree/styled.js.map +1 -1
  96. package/dist/components/content/Tree/tree-index.js +1 -1
  97. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  98. package/dist/components/content/Tree/use-load-data.js +1 -1
  99. package/dist/components/content/highlightText.js +1 -1
  100. package/dist/components/content/use-auto-tooltip.js +1 -1
  101. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  102. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  103. package/dist/components/fields/Checkbox/context.js +1 -1
  104. package/dist/components/fields/ComboBox/ComboBox.js +17 -213
  105. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  106. package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +99 -0
  107. package/dist/components/fields/CommandTextArea/CommandTextArea.js +402 -0
  108. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -0
  109. package/dist/components/fields/CommandTextArea/caretPosition.js +89 -0
  110. package/dist/components/fields/CommandTextArea/caretPosition.js.map +1 -0
  111. package/dist/components/fields/CommandTextArea/index.d.ts +2 -0
  112. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +68 -0
  113. package/dist/components/fields/CommandTextArea/useCaretAnchor.js.map +1 -0
  114. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  115. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  116. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  117. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  118. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  119. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  120. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  121. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  122. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  123. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  124. package/dist/components/fields/DatePicker/intl.js +1 -1
  125. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  126. package/dist/components/fields/DatePicker/props.js +1 -1
  127. package/dist/components/fields/DatePicker/utils.js +1 -1
  128. package/dist/components/fields/FileInput/FileInput.js +1 -1
  129. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  130. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  131. package/dist/components/fields/Input/Input.js +1 -1
  132. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  133. package/dist/components/fields/ListBox/ListBox.d.ts +5 -0
  134. package/dist/components/fields/ListBox/ListBox.js +10 -4
  135. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  136. package/dist/components/fields/ListBoxPopover/ListBoxPopover.d.ts +5 -0
  137. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +164 -0
  138. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -0
  139. package/dist/components/fields/ListBoxPopover/index.d.ts +4 -0
  140. package/dist/components/fields/ListBoxPopover/listNavigation.d.ts +24 -0
  141. package/dist/components/fields/ListBoxPopover/listNavigation.js +102 -0
  142. package/dist/components/fields/ListBoxPopover/listNavigation.js.map +1 -0
  143. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +2 -0
  144. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +53 -0
  145. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -0
  146. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  147. package/dist/components/fields/NumberInput/StepButton.js +8 -4
  148. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  149. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  150. package/dist/components/fields/Picker/Picker.js +1 -1
  151. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  152. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  153. package/dist/components/fields/RadioGroup/context.js +1 -1
  154. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  155. package/dist/components/fields/Select/Select.js +1 -1
  156. package/dist/components/fields/Slider/Gradation.js +1 -1
  157. package/dist/components/fields/Slider/HueSlider.js +1 -1
  158. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  159. package/dist/components/fields/Slider/Slider.js +1 -1
  160. package/dist/components/fields/Slider/SliderBase.js +1 -1
  161. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  162. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  163. package/dist/components/fields/Slider/elements.js +1 -1
  164. package/dist/components/fields/Slider/index.js +1 -1
  165. package/dist/components/fields/Switch/Switch.js +1 -1
  166. package/dist/components/fields/TextArea/TextArea.js +1 -1
  167. package/dist/components/fields/TextInput/TextInput.js +1 -1
  168. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  169. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  170. package/dist/components/fields/index.d.ts +2 -0
  171. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  172. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  173. package/dist/components/form/Form/Field.js +1 -1
  174. package/dist/components/form/Form/Form.js +1 -1
  175. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  176. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  177. package/dist/components/form/Form/SubmitError.js +1 -1
  178. package/dist/components/form/Form/index.js +1 -1
  179. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  180. package/dist/components/form/Form/use-field/use-field.js +1 -1
  181. package/dist/components/form/Form/use-form.js +1 -1
  182. package/dist/components/form/Form/validation.js +1 -1
  183. package/dist/components/form/Label.js +1 -1
  184. package/dist/components/form/wrapper.js +1 -1
  185. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  186. package/dist/components/helpers/IconSwitch/IconSwitch.js +2 -1
  187. package/dist/components/helpers/IconSwitch/IconSwitch.js.map +1 -1
  188. package/dist/components/layout/Flex.js +1 -1
  189. package/dist/components/layout/Flow.js +1 -1
  190. package/dist/components/layout/Grid.js +1 -1
  191. package/dist/components/layout/Panel.js +1 -1
  192. package/dist/components/layout/Prefix.js +1 -1
  193. package/dist/components/layout/ResizablePanel.js +1 -1
  194. package/dist/components/layout/Space.js +1 -1
  195. package/dist/components/layout/Suffix.js +1 -1
  196. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  197. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  198. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  199. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  200. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  201. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  202. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  203. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  204. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  205. package/dist/components/navigation/Tabs/styled.js +1 -1
  206. package/dist/components/navigation/Tabs/types.js +1 -1
  207. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  208. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  209. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  210. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  211. package/dist/components/other/Calendar/Calendar.js +1 -1
  212. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  213. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  214. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  215. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  216. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  217. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  218. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  219. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  220. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  221. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  222. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  223. package/dist/components/overlays/Dialog/context.js +1 -1
  224. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  225. package/dist/components/overlays/Modal/Modal.js +1 -1
  226. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  227. package/dist/components/overlays/Modal/Overlay.js +1 -1
  228. package/dist/components/overlays/Modal/Popover.js +1 -1
  229. package/dist/components/overlays/Modal/Tray.js +1 -1
  230. package/dist/components/overlays/Modal/Underlay.js +1 -1
  231. package/dist/components/overlays/Notifications/Notification.js +1 -1
  232. package/dist/components/overlays/Notifications/NotificationAction.d.ts +2 -1
  233. package/dist/components/overlays/Notifications/NotificationAction.js +4 -6
  234. package/dist/components/overlays/Notifications/NotificationAction.js.map +1 -1
  235. package/dist/components/overlays/Notifications/NotificationCard.js +34 -20
  236. package/dist/components/overlays/Notifications/NotificationCard.js.map +1 -1
  237. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  238. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  239. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  240. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  241. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  242. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  243. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  244. package/dist/components/overlays/Notifications/index.js +1 -1
  245. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  246. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  247. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  248. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  249. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  250. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  251. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  252. package/dist/components/overlays/Toast/index.js +1 -1
  253. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  254. package/dist/components/overlays/Toast/useToast.js +1 -1
  255. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  256. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  257. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  258. package/dist/components/overlays/Tooltip/context.js +1 -1
  259. package/dist/components/portal/Portal.js +1 -1
  260. package/dist/components/portal/PortalProvider.js +1 -1
  261. package/dist/components/portal/usePortal.js +1 -1
  262. package/dist/components/shared/DraggableCollection.js +1 -1
  263. package/dist/components/shared/InvalidIcon.js +1 -1
  264. package/dist/components/shared/ValidIcon.js +1 -1
  265. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  266. package/dist/components/status/Spin/Cube.js +1 -1
  267. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  268. package/dist/components/status/Spin/Spin.js +1 -1
  269. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  270. package/dist/data/item-themes.js +1 -1
  271. package/dist/data/themes.js +1 -1
  272. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  273. package/dist/icons/AdjustmentsIcon.js +1 -1
  274. package/dist/icons/AiIcon.js +1 -1
  275. package/dist/icons/AreaChartIcon.js +1 -1
  276. package/dist/icons/BackwardIcon.js +1 -1
  277. package/dist/icons/BarChartIcon.js +1 -1
  278. package/dist/icons/BellFilledIcon.js +1 -1
  279. package/dist/icons/BellIcon.js +1 -1
  280. package/dist/icons/BooleanIcon.js +1 -1
  281. package/dist/icons/CalendarEditIcon.js +1 -1
  282. package/dist/icons/CalendarIcon.js +1 -1
  283. package/dist/icons/CaretDownIcon.js +1 -1
  284. package/dist/icons/CaretUpIcon.js +1 -1
  285. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  286. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  287. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  288. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  289. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  290. package/dist/icons/ChartBarLineIcon.js +1 -1
  291. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  292. package/dist/icons/ChartBarStackedIcon.js +1 -1
  293. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  294. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  295. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  296. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  297. package/dist/icons/ChartBubbleIcon.js +1 -1
  298. package/dist/icons/ChartDonut2Icon.js +1 -1
  299. package/dist/icons/ChartFunnelIcon.js +1 -1
  300. package/dist/icons/ChartHeatmapIcon.js +1 -1
  301. package/dist/icons/ChartKPIIcon.js +1 -1
  302. package/dist/icons/ChartPie2Icon.js +1 -1
  303. package/dist/icons/ChartScatterIcon.js +1 -1
  304. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  305. package/dist/icons/CheckCircleIcon.js +1 -1
  306. package/dist/icons/CheckIcon.js +1 -1
  307. package/dist/icons/CircleFilledIcon.js +1 -1
  308. package/dist/icons/ClearIcon.js +1 -1
  309. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  310. package/dist/icons/CloseCircleIcon.js +1 -1
  311. package/dist/icons/CloseIcon.js +1 -1
  312. package/dist/icons/CodeIcon.js +1 -1
  313. package/dist/icons/ColumnTotalIcon.js +1 -1
  314. package/dist/icons/CopyIcon.js +1 -1
  315. package/dist/icons/CountIcon.js +1 -1
  316. package/dist/icons/CubeIcon.js +1 -1
  317. package/dist/icons/CubePauseIcon.js +1 -1
  318. package/dist/icons/CubePlayIcon.js +1 -1
  319. package/dist/icons/CurrencyDollarIcon.js +1 -1
  320. package/dist/icons/DangerIcon.js +1 -1
  321. package/dist/icons/DashboardIcon.js +1 -1
  322. package/dist/icons/DatabaseIcon.js +1 -1
  323. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  324. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  325. package/dist/icons/DirectionIcon.js +1 -1
  326. package/dist/icons/DonutIcon.js +1 -1
  327. package/dist/icons/DownIcon.js +1 -1
  328. package/dist/icons/EditIcon.js +1 -1
  329. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  330. package/dist/icons/ExclamationCircleIcon.js +1 -1
  331. package/dist/icons/ExclamationIcon.js +1 -1
  332. package/dist/icons/EyeIcon.js +1 -1
  333. package/dist/icons/EyeInvisibleIcon.js +1 -1
  334. package/dist/icons/FilterIcon.js +1 -1
  335. package/dist/icons/FolderFilledIcon.js +1 -1
  336. package/dist/icons/FolderIcon.js +1 -1
  337. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  338. package/dist/icons/FolderOpenIcon.js +1 -1
  339. package/dist/icons/ForwardIcon.js +1 -1
  340. package/dist/icons/GripVerticalIcon.js +1 -1
  341. package/dist/icons/HierarchyIcon.js +1 -1
  342. package/dist/icons/HierarchyOpenIcon.js +1 -1
  343. package/dist/icons/Icon.js +1 -1
  344. package/dist/icons/InfoCircleIcon.js +1 -1
  345. package/dist/icons/InfoIcon.js +1 -1
  346. package/dist/icons/KeyIcon.js +1 -1
  347. package/dist/icons/LeftIcon.js +1 -1
  348. package/dist/icons/LineChartIcon.js +1 -1
  349. package/dist/icons/LoadingIcon.js +1 -1
  350. package/dist/icons/LockFilledIcon.js +1 -1
  351. package/dist/icons/LockIcon.js +1 -1
  352. package/dist/icons/MoreIcon.js +1 -1
  353. package/dist/icons/NotAllowedIcon.js +1 -1
  354. package/dist/icons/Number123Icon.js +1 -1
  355. package/dist/icons/NumberIcon.js +1 -1
  356. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  357. package/dist/icons/PauseCircleIcon.js +1 -1
  358. package/dist/icons/PauseIcon.js +1 -1
  359. package/dist/icons/PercentageIcon.js +1 -1
  360. package/dist/icons/PieChartIcon.js +1 -1
  361. package/dist/icons/PlayCircleIcon.js +1 -1
  362. package/dist/icons/PlayIcon.js +1 -1
  363. package/dist/icons/PlusIcon.js +1 -1
  364. package/dist/icons/ProgressBarIcon.js +1 -1
  365. package/dist/icons/ReloadIcon.js +1 -1
  366. package/dist/icons/ReportIcon.js +1 -1
  367. package/dist/icons/ReturnIcon.js +1 -1
  368. package/dist/icons/RightIcon.js +1 -1
  369. package/dist/icons/RowTotalsIcon.js +1 -1
  370. package/dist/icons/SchemeIcon.js +1 -1
  371. package/dist/icons/SearchIcon.js +1 -1
  372. package/dist/icons/SemanticQueryIcon.js +1 -1
  373. package/dist/icons/SettingsIcon.js +1 -1
  374. package/dist/icons/ShieldFilledIcon.js +1 -1
  375. package/dist/icons/ShieldIcon.js +1 -1
  376. package/dist/icons/SlashIcon.js +1 -1
  377. package/dist/icons/SparklesIcon.js +1 -1
  378. package/dist/icons/SqlIcon.js +1 -1
  379. package/dist/icons/StatsIcon.js +1 -1
  380. package/dist/icons/StopIcon.js +1 -1
  381. package/dist/icons/StringIcon.js +1 -1
  382. package/dist/icons/SubtotalsIcon.js +1 -1
  383. package/dist/icons/SwitchIcon.js +1 -1
  384. package/dist/icons/TableIcon.js +1 -1
  385. package/dist/icons/ThumbsDownIcon.js +1 -1
  386. package/dist/icons/ThumbsUpIcon.js +1 -1
  387. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  388. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  389. package/dist/icons/ThunderboltIcon.js +1 -1
  390. package/dist/icons/TimeIcon.js +1 -1
  391. package/dist/icons/TrashIcon.js +1 -1
  392. package/dist/icons/UnlockIcon.js +1 -1
  393. package/dist/icons/UpIcon.js +1 -1
  394. package/dist/icons/UserGroupIcon.js +1 -1
  395. package/dist/icons/UserIcon.js +1 -1
  396. package/dist/icons/UserLockIcon.js +1 -1
  397. package/dist/icons/ViewIcon.js +1 -1
  398. package/dist/icons/WarningFilledIcon.js +1 -1
  399. package/dist/icons/WarningIcon.js +1 -1
  400. package/dist/icons/wrap-icon.js +1 -1
  401. package/dist/index.d.ts +2 -1
  402. package/dist/index.js +3 -2
  403. package/dist/index.js.map +1 -1
  404. package/dist/provider.js +1 -1
  405. package/dist/providers/TrackingProvider.js +1 -1
  406. package/dist/providers/navigationAdapter.default.js +1 -1
  407. package/dist/tokens/base.js +1 -1
  408. package/dist/tokens/colors.js +1 -1
  409. package/dist/tokens/index.js +1 -1
  410. package/dist/tokens/layout.js +1 -1
  411. package/dist/tokens/palette.js +1 -1
  412. package/dist/tokens/shadows.js +1 -1
  413. package/dist/tokens/sizes.js +1 -1
  414. package/dist/tokens/spacing.js +1 -1
  415. package/dist/tokens/typography.js +1 -1
  416. package/dist/utils/ResizeSensor.js +1 -1
  417. package/dist/utils/is-dev-env.js +1 -1
  418. package/dist/utils/modules.js +1 -1
  419. package/dist/utils/promise.js +1 -1
  420. package/dist/utils/raf.js +1 -1
  421. package/dist/utils/random.js +1 -1
  422. package/dist/utils/range.js +1 -1
  423. package/dist/utils/react/RenderCache.js +1 -1
  424. package/dist/utils/react/Slots.js +1 -1
  425. package/dist/utils/react/chain.js +1 -1
  426. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  427. package/dist/utils/react/index.js +1 -1
  428. package/dist/utils/react/interactions.js +1 -1
  429. package/dist/utils/react/isTextOnly.js +1 -1
  430. package/dist/utils/react/mapProps.js +1 -1
  431. package/dist/utils/react/mergeProps.js +1 -1
  432. package/dist/utils/react/nullableValue.js +1 -1
  433. package/dist/utils/react/resolveIcon.js +1 -1
  434. package/dist/utils/react/sharedStore.js +1 -1
  435. package/dist/utils/react/useCombinedRefs.js +1 -1
  436. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  437. package/dist/utils/react/useEventBus.js +1 -1
  438. package/dist/utils/react/useId.js +1 -1
  439. package/dist/utils/react/useIsDarwin.js +1 -1
  440. package/dist/utils/react/useKeySymbols.js +1 -1
  441. package/dist/utils/react/useLayoutEffect.js +1 -1
  442. package/dist/utils/react/useLocalStorage.js +1 -1
  443. package/dist/utils/react/useMergeStyles.js +1 -1
  444. package/dist/utils/react/usePopoverSync.js +1 -1
  445. package/dist/utils/react/useQaProps.js +1 -1
  446. package/dist/utils/react/useViewportSize.js +1 -1
  447. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  448. package/dist/utils/selection.js +1 -1
  449. package/dist/utils/styles.js +1 -1
  450. package/dist/utils/tree.js +1 -1
  451. package/dist/utils/warnings.js +1 -1
  452. package/dist/version.js +3 -3
  453. package/docs/components/fields/CommandTextArea.md +153 -0
  454. package/docs/tasty/dsl.md +110 -1
  455. package/docs/tasty/pipeline.md +40 -2
  456. package/package.json +7 -20
@@ -13,6 +13,8 @@ import { CubeTextAreaProps, _TextArea } from "./TextArea/TextArea.js";
13
13
  import { Input } from "./Input/Input.js";
14
14
  import "./Input/index.js";
15
15
  import "./TextArea/index.js";
16
+ import { ActiveToken, CommandTextAreaFilterFn, CommandTrigger, CubeCommandTextAreaProps, _CommandTextArea } from "./CommandTextArea/CommandTextArea.js";
17
+ import "./CommandTextArea/index.js";
16
18
  import { CubeCheckboxGroupProps, _CheckboxGroup } from "./Checkbox/CheckboxGroup.js";
17
19
  import { AriaCheckboxProps, CubeCheckboxProps, __Checkbox, useCheckbox } from "./Checkbox/Checkbox.js";
18
20
  import "./Checkbox/index.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { wrapNodeIfPlain } from "../../../utils/react/wrapNodeIfPlain.js";
4
4
  import { _Text } from "../../content/Text.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  //#region src/components/form/FieldWrapper/extract-field-wrapper-props.ts
3
3
  const createFieldWrapperPropsKeys = (arr) => new Set(arr);
4
4
  const fieldWrapperPropsKeys = createFieldWrapperPropsKeys([
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { warn } from "../../../utils/warnings.js";
4
4
  import { FieldWrapper } from "../FieldWrapper/FieldWrapper.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { Provider, useProviderProps } from "../../../provider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { useProviderProps } from "../../../../provider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useProviderProps } from "../../../../provider.js";
3
3
  import { Button } from "../../../actions/Button/Button.js";
4
4
  import { useFormProps } from "../Form.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { FormContext } from "./Form.js";
3
3
  import { Alert } from "../../content/Alert/Alert.js";
4
4
  import { forwardRef, isValidElement, useContext } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useForm } from "./use-form.js";
3
3
  import { FormContext, _Form, useFormProps } from "./Form.js";
4
4
  import { useField } from "./use-field/use-field.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { warn } from "../../../../utils/warnings.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { useIsFirstRender } from "../../../../_internal/hooks/use-is-first-render.js";
4
4
  import { delayValidationRule } from "../validation.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { applyRules } from "./validation.js";
3
3
  import { dotize } from "@tenphi/tasty";
4
4
  import { useRef, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { validate } from "email-validator";
3
3
  import validUrl from "valid-url";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { useProviderProps } from "../../provider.js";
4
4
  import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { FieldWrapper } from "./FieldWrapper/FieldWrapper.js";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useCallback, useLayoutEffect, useRef, useState } from "react";
3
3
 
4
4
  //#region src/components/helpers/DisplayTransition/DisplayTransition.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { DisplayTransition } from "../DisplayTransition/DisplayTransition.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { isValidElement, useCallback, useLayoutEffect, useRef, useState } from "react";
@@ -43,6 +43,7 @@ const IconSlotElement = tasty({ styles: {
43
43
  gridArea: "1 / 1",
44
44
  display: "grid",
45
45
  placeItems: "center",
46
+ placeSelf: "stretch",
46
47
  opacity: {
47
48
  "": 0,
48
49
  entered: 1
@@ -1 +1 @@
1
- {"version":3,"file":"IconSwitch.js","names":[],"sources":["../../../../src/components/helpers/IconSwitch/IconSwitch.tsx"],"sourcesContent":["import { BaseProps, tasty } from '@tenphi/tasty';\nimport {\n isValidElement,\n ReactNode,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { DisplayTransition } from '../DisplayTransition/DisplayTransition';\n\nexport interface CubeIconSwitchProps extends BaseProps {\n /** The icon to display */\n children: ReactNode;\n /** Override the default key derivation for detecting icon changes */\n contentKey?: string | number;\n /** When true, renders without wrapper element, expecting parent to provide grid context */\n noWrapper?: boolean;\n}\n\ninterface IconEntry {\n key: number;\n content: ReactNode;\n}\n\nfunction isNullishContent(node: ReactNode) {\n // React treats `null`, `undefined`, and `false` as \"render nothing\"\n return node == null || node === false;\n}\n\nconst typeIds = new WeakMap<object, number>();\nlet lastTypeId = 0;\n\nfunction getTypeId(type: object) {\n const existing = typeIds.get(type);\n if (existing != null) return existing;\n const next = (lastTypeId += 1);\n typeIds.set(type, next);\n return next;\n}\n\n/**\n * Best-effort key derivation for icon switching when `contentKey` is not provided.\n * The goal is to:\n * - Transition when icon component type changes\n * - Not transition when only props change for the same icon type (self-animating icons)\n * - Transition when toggling to/from nullish content\n */\nfunction deriveContentKey(children: ReactNode): string {\n if (isNullishContent(children)) return 'nullish';\n if (!isValidElement(children)) return `non-element:${typeof children}`;\n\n const { type, key } = children;\n const keyPart = key == null ? '' : `:${String(key)}`;\n\n if (typeof type === 'string') return `host:${type}${keyPart}`;\n if (typeof type === 'function') return `fn:${getTypeId(type)}${keyPart}`;\n if (typeof type === 'object' && type != null)\n return `obj:${getTypeId(type)}${keyPart}`;\n if (typeof type === 'symbol') return `sym:${String(type)}${keyPart}`;\n\n return `unknown${keyPart}`;\n}\n\nconst IconSwitchElement = tasty({\n styles: {\n display: 'grid',\n placeItems: 'center',\n },\n});\n\nconst IconSlotElement = tasty({\n styles: {\n gridArea: '1 / 1',\n display: 'grid',\n placeItems: 'center',\n opacity: {\n '': 0,\n entered: 1,\n },\n transition: {\n '': 'theme $transition ease-out',\n 'exit | entered': 'theme $transition ease-in',\n },\n },\n});\n\n/**\n * A component that cross-fades between icons when children change.\n * Useful for animated icon transitions in buttons, items, etc.\n *\n * When `contentKey` changes, a transition is triggered.\n * When only `children` changes (same `contentKey`), content is updated in-place\n * without transition, allowing self-animating icons (like DirectionIcon) to work.\n */\nexport function IconSwitch(props: CubeIconSwitchProps) {\n const { children, contentKey, noWrapper, ...rest } = props;\n\n const keyCounterRef = useRef(0);\n const effectiveKey = contentKey ?? deriveContentKey(children);\n const prevEffectiveKeyRef = useRef<string | number>(effectiveKey);\n const prevChildrenRef = useRef<ReactNode>(children);\n\n const [icons, setIcons] = useState<IconEntry[]>(() => [\n { key: keyCounterRef.current, content: children },\n ]);\n\n useLayoutEffect(() => {\n const prevKey = prevEffectiveKeyRef.current;\n const prevChildren = prevChildrenRef.current;\n\n const hasKeyChanged = effectiveKey !== prevKey;\n const hasNullishToggled =\n isNullishContent(children) !== isNullishContent(prevChildren);\n\n // Transition rules:\n // - If key changed -> transition (add new icon entry)\n // - If we toggled nullish <-> non-nullish -> transition (even if key did not change)\n // - Otherwise -> no state update (children reference changes are handled at render time)\n if (hasKeyChanged || hasNullishToggled) {\n keyCounterRef.current += 1;\n const newEntry: IconEntry = {\n key: keyCounterRef.current,\n content: children,\n };\n setIcons((prev) => [...prev, newEntry]);\n }\n\n prevEffectiveKeyRef.current = effectiveKey;\n prevChildrenRef.current = children;\n }, [children, effectiveKey]);\n\n const handleExitComplete = useCallback((exitedKey: number) => {\n setIcons((prev) => prev.filter((icon) => icon.key !== exitedKey));\n }, []);\n\n const latestKey = icons[icons.length - 1]?.key;\n\n // Detect if we're in an intermediate render (transition pending but effect hasn't added new entry yet).\n // In this state, we must use stored content to avoid flashing the new icon before the transition.\n const isKeyChangePending = effectiveKey !== prevEffectiveKeyRef.current;\n const isNullishChangePending =\n isNullishContent(children) !== isNullishContent(prevChildrenRef.current);\n const isTransitionPending = isKeyChangePending || isNullishChangePending;\n\n const content = icons.map((icon) => {\n const isActive = icon.key === latestKey;\n // Use current children for active icon ONLY when no transition is pending.\n // During intermediate renders (before effect adds new entry), use stored content.\n // For exiting icons, always use stored content to preserve appearance during fade-out.\n const displayContent =\n isActive && !isTransitionPending ? children : icon.content;\n\n return (\n <DisplayTransition\n key={icon.key}\n isShown={isActive}\n animateOnMount={icon.key !== 0}\n onRest={(transition) => {\n if (transition === 'exit') {\n handleExitComplete(icon.key);\n }\n }}\n >\n {({ isShown, phase, ref }) => (\n <IconSlotElement\n ref={ref}\n mods={{\n entered: isShown,\n phase,\n }}\n >\n {displayContent}\n </IconSlotElement>\n )}\n </DisplayTransition>\n );\n });\n\n if (noWrapper) {\n return <>{content}</>;\n }\n\n return <IconSwitchElement {...rest}>{content}</IconSwitchElement>;\n}\n\nexport type { CubeIconSwitchProps as IconSwitchProps };\n"],"mappings":"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"}
1
+ {"version":3,"file":"IconSwitch.js","names":[],"sources":["../../../../src/components/helpers/IconSwitch/IconSwitch.tsx"],"sourcesContent":["import { BaseProps, tasty } from '@tenphi/tasty';\nimport {\n isValidElement,\n ReactNode,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { DisplayTransition } from '../DisplayTransition/DisplayTransition';\n\nexport interface CubeIconSwitchProps extends BaseProps {\n /** The icon to display */\n children: ReactNode;\n /** Override the default key derivation for detecting icon changes */\n contentKey?: string | number;\n /** When true, renders without wrapper element, expecting parent to provide grid context */\n noWrapper?: boolean;\n}\n\ninterface IconEntry {\n key: number;\n content: ReactNode;\n}\n\nfunction isNullishContent(node: ReactNode) {\n // React treats `null`, `undefined`, and `false` as \"render nothing\"\n return node == null || node === false;\n}\n\nconst typeIds = new WeakMap<object, number>();\nlet lastTypeId = 0;\n\nfunction getTypeId(type: object) {\n const existing = typeIds.get(type);\n if (existing != null) return existing;\n const next = (lastTypeId += 1);\n typeIds.set(type, next);\n return next;\n}\n\n/**\n * Best-effort key derivation for icon switching when `contentKey` is not provided.\n * The goal is to:\n * - Transition when icon component type changes\n * - Not transition when only props change for the same icon type (self-animating icons)\n * - Transition when toggling to/from nullish content\n */\nfunction deriveContentKey(children: ReactNode): string {\n if (isNullishContent(children)) return 'nullish';\n if (!isValidElement(children)) return `non-element:${typeof children}`;\n\n const { type, key } = children;\n const keyPart = key == null ? '' : `:${String(key)}`;\n\n if (typeof type === 'string') return `host:${type}${keyPart}`;\n if (typeof type === 'function') return `fn:${getTypeId(type)}${keyPart}`;\n if (typeof type === 'object' && type != null)\n return `obj:${getTypeId(type)}${keyPart}`;\n if (typeof type === 'symbol') return `sym:${String(type)}${keyPart}`;\n\n return `unknown${keyPart}`;\n}\n\nconst IconSwitchElement = tasty({\n styles: {\n display: 'grid',\n placeItems: 'center',\n },\n});\n\nconst IconSlotElement = tasty({\n styles: {\n gridArea: '1 / 1',\n display: 'grid',\n placeItems: 'center',\n placeSelf: 'stretch',\n opacity: {\n '': 0,\n entered: 1,\n },\n transition: {\n '': 'theme $transition ease-out',\n 'exit | entered': 'theme $transition ease-in',\n },\n },\n});\n\n/**\n * A component that cross-fades between icons when children change.\n * Useful for animated icon transitions in buttons, items, etc.\n *\n * When `contentKey` changes, a transition is triggered.\n * When only `children` changes (same `contentKey`), content is updated in-place\n * without transition, allowing self-animating icons (like DirectionIcon) to work.\n */\nexport function IconSwitch(props: CubeIconSwitchProps) {\n const { children, contentKey, noWrapper, ...rest } = props;\n\n const keyCounterRef = useRef(0);\n const effectiveKey = contentKey ?? deriveContentKey(children);\n const prevEffectiveKeyRef = useRef<string | number>(effectiveKey);\n const prevChildrenRef = useRef<ReactNode>(children);\n\n const [icons, setIcons] = useState<IconEntry[]>(() => [\n { key: keyCounterRef.current, content: children },\n ]);\n\n useLayoutEffect(() => {\n const prevKey = prevEffectiveKeyRef.current;\n const prevChildren = prevChildrenRef.current;\n\n const hasKeyChanged = effectiveKey !== prevKey;\n const hasNullishToggled =\n isNullishContent(children) !== isNullishContent(prevChildren);\n\n // Transition rules:\n // - If key changed -> transition (add new icon entry)\n // - If we toggled nullish <-> non-nullish -> transition (even if key did not change)\n // - Otherwise -> no state update (children reference changes are handled at render time)\n if (hasKeyChanged || hasNullishToggled) {\n keyCounterRef.current += 1;\n const newEntry: IconEntry = {\n key: keyCounterRef.current,\n content: children,\n };\n setIcons((prev) => [...prev, newEntry]);\n }\n\n prevEffectiveKeyRef.current = effectiveKey;\n prevChildrenRef.current = children;\n }, [children, effectiveKey]);\n\n const handleExitComplete = useCallback((exitedKey: number) => {\n setIcons((prev) => prev.filter((icon) => icon.key !== exitedKey));\n }, []);\n\n const latestKey = icons[icons.length - 1]?.key;\n\n // Detect if we're in an intermediate render (transition pending but effect hasn't added new entry yet).\n // In this state, we must use stored content to avoid flashing the new icon before the transition.\n const isKeyChangePending = effectiveKey !== prevEffectiveKeyRef.current;\n const isNullishChangePending =\n isNullishContent(children) !== isNullishContent(prevChildrenRef.current);\n const isTransitionPending = isKeyChangePending || isNullishChangePending;\n\n const content = icons.map((icon) => {\n const isActive = icon.key === latestKey;\n // Use current children for active icon ONLY when no transition is pending.\n // During intermediate renders (before effect adds new entry), use stored content.\n // For exiting icons, always use stored content to preserve appearance during fade-out.\n const displayContent =\n isActive && !isTransitionPending ? children : icon.content;\n\n return (\n <DisplayTransition\n key={icon.key}\n isShown={isActive}\n animateOnMount={icon.key !== 0}\n onRest={(transition) => {\n if (transition === 'exit') {\n handleExitComplete(icon.key);\n }\n }}\n >\n {({ isShown, phase, ref }) => (\n <IconSlotElement\n ref={ref}\n mods={{\n entered: isShown,\n phase,\n }}\n >\n {displayContent}\n </IconSlotElement>\n )}\n </DisplayTransition>\n );\n });\n\n if (noWrapper) {\n return <>{content}</>;\n }\n\n return <IconSwitchElement {...rest}>{content}</IconSwitchElement>;\n}\n\nexport type { CubeIconSwitchProps as IconSwitchProps };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { BASE_STYLES, BLOCK_STYLES, COLOR_STYLES, DIMENSION_STYLES, OUTER_STYLES, tasty } from "@tenphi/tasty";
3
3
  import { forwardRef, useMemo } from "react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { useCombinedRefs } from "../../utils/react/useCombinedRefs.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { useCombinedRefs } from "../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { useCombinedRefs } from "../../utils/react/useCombinedRefs.js";
4
4
  import { CONTAINER_STYLES, filterBaseProps, parseStyle, tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { DraggableCollection } from "../../shared/DraggableCollection.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { ItemActionProvider } from "../../actions/ItemActionContext.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { DropIndicatorElement } from "./styled.js";
3
3
  import { useTabsContext } from "./TabsContext.js";
4
4
  import { useEffect, useRef, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { TabPanelElement } from "./styled.js";
3
3
  import { useEffect, useMemo, useRef } from "react";
4
4
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
3
3
  import { CloseIcon } from "../../../icons/CloseIcon.js";
4
4
  import { MoreIcon } from "../../../icons/MoreIcon.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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 { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _ItemButton } from "../../actions/ItemButton/ItemButton.js";
3
3
  import { useOptionalTabsContext } from "./TabsContext.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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.9 | 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"}