@cube-dev/ui-kit 0.138.6 → 0.139.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 (471) hide show
  1. package/dist/CHANGELOG.md +45 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.d.ts +2 -2
  20. package/dist/components/actions/Button/Button.js +11 -17
  21. package/dist/components/actions/Button/Button.js.map +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.d.ts +2 -2
  28. package/dist/components/actions/ItemAction/ItemAction.js +8 -22
  29. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  30. package/dist/components/actions/ItemActionContext.js +2 -2
  31. package/dist/components/actions/ItemActionContext.js.map +1 -1
  32. package/dist/components/actions/ItemButton/ItemButton.js +3 -3
  33. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  34. package/dist/components/actions/Link/Link.js +1 -1
  35. package/dist/components/actions/Menu/Menu.js +1 -1
  36. package/dist/components/actions/Menu/MenuItem.js +1 -1
  37. package/dist/components/actions/Menu/MenuSection.js +1 -1
  38. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  39. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  40. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  41. package/dist/components/actions/Menu/context.js +1 -1
  42. package/dist/components/actions/Menu/styled.js +3 -3
  43. package/dist/components/actions/Menu/styled.js.map +1 -1
  44. package/dist/components/actions/index.js +1 -1
  45. package/dist/components/actions/use-action.js +1 -1
  46. package/dist/components/actions/use-anchored-menu.js +1 -1
  47. package/dist/components/actions/use-context-menu.js +1 -1
  48. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  49. package/dist/components/content/Alert/Alert.js +1 -1
  50. package/dist/components/content/Alert/use-alert.js +1 -1
  51. package/dist/components/content/Avatar/Avatar.js +1 -1
  52. package/dist/components/content/Badge/Badge.js +1 -1
  53. package/dist/components/content/Card/Card.js +1 -1
  54. package/dist/components/content/Content.js +1 -1
  55. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  56. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  57. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  58. package/dist/components/content/Divider.js +1 -1
  59. package/dist/components/content/Footer.js +1 -1
  60. package/dist/components/content/Header.js +1 -1
  61. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  62. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  63. package/dist/components/content/Item/Item.d.ts +3 -3
  64. package/dist/components/content/Item/Item.js +19 -25
  65. package/dist/components/content/Item/Item.js.map +1 -1
  66. package/dist/components/content/ItemBadge/ItemBadge.d.ts +2 -2
  67. package/dist/components/content/ItemBadge/ItemBadge.js +12 -18
  68. package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
  69. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  70. package/dist/components/content/Layout/GridLayout.js +1 -1
  71. package/dist/components/content/Layout/Layout.js +1 -1
  72. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  73. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  74. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  75. package/dist/components/content/Layout/LayoutContent.js +1 -1
  76. package/dist/components/content/Layout/LayoutContext.js +1 -1
  77. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  78. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  79. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  80. package/dist/components/content/Layout/LayoutHeader.js +2 -2
  81. package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
  82. package/dist/components/content/Layout/LayoutPane.js +1 -1
  83. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  84. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  85. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  86. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  87. package/dist/components/content/Layout/index.js +1 -1
  88. package/dist/components/content/Layout/utils.js +1 -1
  89. package/dist/components/content/Paragraph.js +1 -1
  90. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  91. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  92. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  93. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  94. package/dist/components/content/Result/Result.js +1 -1
  95. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  96. package/dist/components/content/Tag/Tag.js +1 -1
  97. package/dist/components/content/Text.d.ts +7 -7
  98. package/dist/components/content/Text.js +1 -1
  99. package/dist/components/content/TextItem/TextItem.js +1 -1
  100. package/dist/components/content/Title.js +1 -1
  101. package/dist/components/content/Tree/Tree.js +1 -1
  102. package/dist/components/content/Tree/TreeNode.js +1 -1
  103. package/dist/components/content/Tree/styled.js +1 -1
  104. package/dist/components/content/Tree/tree-index.js +1 -1
  105. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  106. package/dist/components/content/Tree/use-load-data.js +1 -1
  107. package/dist/components/content/highlightText.js +1 -1
  108. package/dist/components/content/use-auto-tooltip.js +1 -1
  109. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  110. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  111. package/dist/components/fields/Checkbox/context.js +1 -1
  112. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  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.js +1 -1
  133. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  134. package/dist/components/fields/NumberInput/StepButton.js +3 -3
  135. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  136. package/dist/components/fields/PasswordInput/PasswordInput.js +2 -2
  137. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  138. package/dist/components/fields/Picker/Picker.js +1 -1
  139. package/dist/components/fields/RadioGroup/Radio.d.ts +1 -1
  140. package/dist/components/fields/RadioGroup/Radio.js +40 -12
  141. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  142. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +1 -1
  143. package/dist/components/fields/RadioGroup/RadioGroup.js +15 -5
  144. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  145. package/dist/components/fields/RadioGroup/context.js +1 -1
  146. package/dist/components/fields/SearchInput/SearchInput.js +2 -2
  147. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  148. package/dist/components/fields/Select/Select.d.ts +1 -1
  149. package/dist/components/fields/Select/Select.js +1 -1
  150. package/dist/components/fields/Select/Select.js.map +1 -1
  151. package/dist/components/fields/Slider/Gradation.js +1 -1
  152. package/dist/components/fields/Slider/HueSlider.js +1 -1
  153. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  154. package/dist/components/fields/Slider/Slider.js +1 -1
  155. package/dist/components/fields/Slider/SliderBase.js +1 -1
  156. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  157. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  158. package/dist/components/fields/Slider/elements.js +1 -1
  159. package/dist/components/fields/Slider/index.js +1 -1
  160. package/dist/components/fields/Switch/Switch.js +1 -1
  161. package/dist/components/fields/TextArea/TextArea.js +1 -1
  162. package/dist/components/fields/TextInput/TextInput.js +1 -1
  163. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  164. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  165. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  166. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  167. package/dist/components/form/Form/Field.js +1 -1
  168. package/dist/components/form/Form/Form.js +1 -1
  169. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  170. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  171. package/dist/components/form/Form/SubmitError.js +1 -1
  172. package/dist/components/form/Form/index.js +1 -1
  173. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  174. package/dist/components/form/Form/use-field/use-field.js +1 -1
  175. package/dist/components/form/Form/use-form.js +1 -1
  176. package/dist/components/form/Form/validation.js +1 -1
  177. package/dist/components/form/Label.js +1 -1
  178. package/dist/components/form/wrapper.js +1 -1
  179. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  180. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  181. package/dist/components/layout/Flex.js +1 -1
  182. package/dist/components/layout/Flow.js +1 -1
  183. package/dist/components/layout/Grid.js +1 -1
  184. package/dist/components/layout/Panel.js +1 -1
  185. package/dist/components/layout/Prefix.js +1 -1
  186. package/dist/components/layout/ResizablePanel.js +1 -1
  187. package/dist/components/layout/Space.js +1 -1
  188. package/dist/components/layout/Suffix.js +1 -1
  189. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  190. package/dist/components/navigation/Tabs/TabButton.js +2 -2
  191. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  192. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  193. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  194. package/dist/components/navigation/Tabs/TabPicker.js +2 -2
  195. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  196. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  197. package/dist/components/navigation/Tabs/TabsAction.js +5 -5
  198. package/dist/components/navigation/Tabs/TabsAction.js.map +1 -1
  199. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  200. package/dist/components/navigation/Tabs/styled.js +2 -1
  201. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  202. package/dist/components/navigation/Tabs/types.js +1 -1
  203. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  204. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  205. package/dist/components/organisms/FileTabs/FileTabs.js +2 -2
  206. package/dist/components/organisms/FileTabs/FileTabs.js.map +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 +2 -2
  217. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  218. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  219. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  220. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  221. package/dist/components/overlays/Dialog/context.js +1 -1
  222. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  223. package/dist/components/overlays/Modal/Modal.js +1 -1
  224. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  225. package/dist/components/overlays/Modal/Overlay.js +1 -1
  226. package/dist/components/overlays/Modal/Popover.js +1 -1
  227. package/dist/components/overlays/Modal/Tray.js +1 -1
  228. package/dist/components/overlays/Modal/Underlay.js +1 -1
  229. package/dist/components/overlays/Notifications/Notification.js +1 -1
  230. package/dist/components/overlays/Notifications/NotificationAction.d.ts +1 -1
  231. package/dist/components/overlays/Notifications/NotificationAction.js +4 -3
  232. package/dist/components/overlays/Notifications/NotificationAction.js.map +1 -1
  233. package/dist/components/overlays/Notifications/NotificationCard.js +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 +3 -2
  251. package/dist/components/overlays/Toast/useProgressToast.js.map +1 -1
  252. package/dist/components/overlays/Toast/useToast.js +1 -1
  253. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  254. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  255. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  256. package/dist/components/overlays/Tooltip/context.js +1 -1
  257. package/dist/components/portal/Portal.js +1 -1
  258. package/dist/components/portal/PortalProvider.js +1 -1
  259. package/dist/components/portal/usePortal.js +1 -1
  260. package/dist/components/shared/DraggableCollection.js +1 -1
  261. package/dist/components/shared/InvalidIcon.js +1 -1
  262. package/dist/components/shared/ValidIcon.js +1 -1
  263. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  264. package/dist/components/status/Spin/Cube.js +1 -1
  265. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  266. package/dist/components/status/Spin/Spin.js +1 -1
  267. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  268. package/dist/data/item-themes.d.ts +1 -1
  269. package/dist/data/item-themes.js +377 -467
  270. package/dist/data/item-themes.js.map +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.js +1 -1
  402. package/dist/provider.js +1 -1
  403. package/dist/providers/TrackingProvider.js +1 -1
  404. package/dist/providers/navigationAdapter.default.js +1 -1
  405. package/dist/tokens/base.js +1 -1
  406. package/dist/tokens/colors.js +1 -1
  407. package/dist/tokens/index.js +1 -1
  408. package/dist/tokens/layout.js +1 -1
  409. package/dist/tokens/palette.js +52 -22
  410. package/dist/tokens/palette.js.map +1 -1
  411. package/dist/tokens/shadows.js +1 -1
  412. package/dist/tokens/sizes.js +1 -1
  413. package/dist/tokens/spacing.js +1 -1
  414. package/dist/tokens/typography.js +1 -1
  415. package/dist/utils/ResizeSensor.js +1 -1
  416. package/dist/utils/is-dev-env.js +1 -1
  417. package/dist/utils/modules.js +1 -1
  418. package/dist/utils/promise.js +1 -1
  419. package/dist/utils/raf.js +1 -1
  420. package/dist/utils/random.js +1 -1
  421. package/dist/utils/range.js +1 -1
  422. package/dist/utils/react/RenderCache.js +1 -1
  423. package/dist/utils/react/Slots.js +1 -1
  424. package/dist/utils/react/chain.js +1 -1
  425. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  426. package/dist/utils/react/index.js +1 -1
  427. package/dist/utils/react/interactions.js +1 -1
  428. package/dist/utils/react/isTextOnly.js +1 -1
  429. package/dist/utils/react/mapProps.js +1 -1
  430. package/dist/utils/react/mergeProps.js +1 -1
  431. package/dist/utils/react/nullableValue.js +1 -1
  432. package/dist/utils/react/resolveIcon.js +1 -1
  433. package/dist/utils/react/sharedStore.js +1 -1
  434. package/dist/utils/react/useCombinedRefs.js +1 -1
  435. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  436. package/dist/utils/react/useEventBus.js +1 -1
  437. package/dist/utils/react/useId.js +1 -1
  438. package/dist/utils/react/useIsDarwin.js +1 -1
  439. package/dist/utils/react/useKeySymbols.js +1 -1
  440. package/dist/utils/react/useLayoutEffect.js +1 -1
  441. package/dist/utils/react/useLocalStorage.js +1 -1
  442. package/dist/utils/react/useMergeStyles.js +1 -1
  443. package/dist/utils/react/usePopoverSync.js +1 -1
  444. package/dist/utils/react/useQaProps.js +1 -1
  445. package/dist/utils/react/useViewportSize.js +1 -1
  446. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  447. package/dist/utils/selection.js +1 -1
  448. package/dist/utils/styles.js +1 -1
  449. package/dist/utils/tree.js +1 -1
  450. package/dist/utils/warnings.js +1 -1
  451. package/dist/version.js +2 -2
  452. package/docs/ComplexLayout.md +2 -2
  453. package/docs/components/CollectionItem.md +1 -1
  454. package/docs/components/actions/Banner.md +1 -1
  455. package/docs/components/actions/Button.md +3 -5
  456. package/docs/components/actions/ButtonGroup.md +1 -1
  457. package/docs/components/actions/ButtonSplit.md +1 -2
  458. package/docs/components/actions/ItemAction.md +5 -5
  459. package/docs/components/actions/ItemButton.md +4 -6
  460. package/docs/components/content/Item.md +9 -10
  461. package/docs/components/content/ItemBadge.md +4 -4
  462. package/docs/components/content/ItemCard.md +1 -1
  463. package/docs/components/content/Layout.md +2 -2
  464. package/docs/components/content/Tag.md +1 -1
  465. package/docs/components/fields/FilterListBox.md +1 -1
  466. package/docs/components/fields/FilterPicker.md +3 -5
  467. package/docs/components/fields/ListBox.md +1 -1
  468. package/docs/components/fields/Picker.md +3 -5
  469. package/docs/components/fields/RadioGroup.md +7 -9
  470. package/docs/components/fields/Select.md +2 -4
  471. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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";
@@ -108,7 +108,7 @@ const TabElement = tasty(Action, { styles: {
108
108
  } });
109
109
  const CloseButton = tasty(Button, {
110
110
  element: "CloseButton",
111
- type: "neutral",
111
+ type: "clear",
112
112
  icon: /* @__PURE__ */ jsx(CloseIcon, {}),
113
113
  label: "Close Tab",
114
114
  styles: {
@@ -1 +1 @@
1
- {"version":3,"file":"FileTabs.js","names":[],"sources":["../../../../src/components/organisms/FileTabs/FileTabs.tsx"],"sourcesContent":["import { Styles, tasty } from '@tenphi/tasty';\nimport {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { CloseIcon } from '../../../icons';\nimport { useLayoutEffect } from '../../../utils/react';\nimport { Action, Button, CubeActionProps } from '../../actions';\nimport { Block } from '../../Block';\nimport { CubeFlexProps, Flex } from '../../layout/Flex';\nimport { Space } from '../../layout/Space';\n\ninterface TabData {\n id: string | number;\n title?: string;\n isDirty?: boolean;\n}\n\ninterface FileTabContextValue {\n addTab: (tab: TabData) => void;\n setTab: (id: string | number) => void;\n removeTab: (tab: TabData) => void;\n currentTab?: string | number;\n setDirtyTab: (id: string | number, isDirty: boolean) => void;\n}\n\nconst FileTabsContext = createContext<FileTabContextValue>({\n addTab() {},\n removeTab() {},\n setTab() {},\n setDirtyTab() {},\n});\n\nconst TabsPanelElement = tasty(Space, {\n qa: 'TabsPanel',\n styles: {\n position: 'relative',\n overflow: 'auto hidden',\n top: '1bw',\n gap: '.5x',\n flexShrink: 0,\n whiteSpace: 'nowrap',\n scrollbar: 'styled',\n padding: '1ow 1ow 0 1ow',\n fade: {\n '': false,\n 'left-fade': '3x left',\n 'right-fade': '3x right',\n 'right-fade & left-fade': '3x left right',\n },\n transition: 'fade',\n '--scrollbar-radius': '1ow',\n '--scrollbar-width': '.75x',\n '--scrollbar-outline-width': '1px',\n },\n});\n\nconst TabsContainerElement = tasty(Flex, {\n qa: 'TabsContainer',\n styles: {\n flow: 'column',\n height: 'max 100%',\n width: 'max 100%',\n position: 'relative',\n },\n});\n\nconst DirtyBadge = tasty({\n element: 'DirtyBadge',\n styles: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '1x',\n height: '1x',\n fill: '#dark.30',\n radius: 'round',\n },\n});\n\nconst TabElement = tasty(Action, {\n styles: {\n radius: '1r 1r 0 0',\n padding: '1x 1.5x',\n border: {\n '': 'left top right #clear',\n disabled: 'left top right #border',\n },\n fill: {\n '': '#dark.04',\n hovered: '#dark.08',\n 'disabled, disabled & hover': '#surface',\n },\n color: {\n '': '#dark-02',\n 'disabled, hovered, hovered & disabled': '#dark',\n },\n cursor: {\n '': '$pointer',\n disabled: 'default',\n },\n fontWeight: 500,\n opacity: 1,\n preset: 'default',\n transform: {\n '': 'translate(0, 0)',\n disabled: 'translate(0, 1bw)',\n },\n transition: 'theme 0.2s',\n margin: '1bw bottom',\n\n DirtyBadge: {\n opacity: {\n '': 1,\n 'dirty & :hover': 0,\n },\n pointerEvents: {\n '': 'auto',\n 'dirty & :hover': 'none',\n },\n },\n\n CloseButton: {\n opacity: {\n '': 0,\n '!dirty | :hover': 1,\n },\n },\n },\n});\n\nconst CloseButton = tasty(Button, {\n element: 'CloseButton',\n type: 'neutral',\n icon: <CloseIcon />,\n label: 'Close Tab',\n styles: {\n width: '3x',\n height: '3x',\n padding: 0,\n },\n});\n\n/**\n * @deprecated consider using <Tabs /> instead\n */\nexport interface FileTabProps extends Omit<CubeActionProps, 'id'> {\n isDirty?: boolean;\n isDisabled?: boolean;\n children?: ReactNode;\n isClosable?: boolean;\n onClose?: () => void;\n}\n\nfunction Tab({\n isDirty,\n isDisabled,\n children,\n isClosable,\n onClose,\n ...props\n}: FileTabProps) {\n return (\n <TabElement\n mods={{\n dirty: isDirty,\n }}\n isDisabled={isDisabled}\n {...props}\n >\n <Space gap=\".75x\">\n <Block>{children}</Block>\n {(isClosable || isDirty) && (\n <Flex placeItems=\"center\" style={{ position: 'relative' }}>\n {isClosable ? <CloseButton onPress={onClose} /> : <div></div>}\n {isDirty ? <DirtyBadge /> : null}\n </Flex>\n )}\n </Space>\n </TabElement>\n );\n}\n\nexport interface CubeFileTabsProps extends CubeFlexProps {\n /** The initial active key in the tabs (uncontrolled). */\n defaultActiveKey?: string;\n /** The currently active key in the tabs (controlled). */\n activeKey?: string | number;\n /** Handler that is called when the tab is clicked. */\n onTabClick?: (string) => void;\n /** Handler that is called when the tab is closed. */\n onTabClose?: (string) => void;\n /** Styles for each tab pane */\n paneStyles?: Styles;\n /** Whether the tabs are closable */\n isClosable?: boolean;\n children?: ReactNode;\n}\n\nexport function FileTabs({\n defaultActiveKey,\n activeKey: activeKeyProp,\n onTabClick,\n onTabClose,\n paneStyles,\n isClosable = true,\n children,\n ...props\n}: CubeFileTabsProps) {\n const tabsRef = useRef<HTMLButtonElement>(null);\n const [tabs, setTabs] = useState<TabData[]>([]);\n const [activeKey, setActiveKey] = useState<string | number | undefined>(\n activeKeyProp || defaultActiveKey,\n );\n\n const [leftFade, setLeftFade] = useState(false);\n const [rightFade, setRightFade] = useState(false);\n\n function updateScroll() {\n const el = tabsRef && tabsRef.current;\n\n if (!el) return;\n\n setLeftFade(!!el.scrollLeft);\n setRightFade(\n el.scrollWidth !== el.offsetWidth &&\n !!(el.scrollWidth - el.offsetWidth - el.scrollLeft),\n );\n }\n\n useLayoutEffect(updateScroll, [tabs]);\n\n function scrollCurrentIntoView() {\n const el = tabsRef && tabsRef.current;\n\n if (!el) return;\n\n const current = el.querySelector('button[disabled]');\n\n if (!current) return;\n\n current.scrollIntoView({ behavior: 'smooth', inline: 'end', block: 'end' });\n }\n\n useEffect(() => {\n function update() {\n updateScroll();\n }\n\n if (tabsRef && tabsRef.current) {\n tabsRef.current.addEventListener('scroll', update);\n tabsRef.current.addEventListener('mousewheel', update);\n window.addEventListener('resize', update);\n }\n\n return () => {\n if (tabsRef && tabsRef.current) {\n tabsRef.current.removeEventListener('scroll', update);\n tabsRef.current.removeEventListener('mousewheel', update);\n }\n\n window.removeEventListener('resize', update);\n };\n }, [tabsRef]);\n\n useEffect(scrollCurrentIntoView, [activeKey]);\n\n useEffect(() => {\n setActiveKey(activeKeyProp);\n }, [activeKeyProp]);\n\n function getTab(tabs: TabData[], key: string | number): TabData | undefined {\n return tabs.find((tab) => tab.id === key);\n }\n\n function setTab(key: string | number) {\n if (getTab(tabs, key)) {\n setActiveKey(key);\n }\n }\n\n function addTab(tab: TabData) {\n setTabs((tabs) => {\n if (!getTab(tabs, tab.id)) {\n return [...tabs, tab];\n }\n\n return tabs;\n });\n }\n\n function setDirtyTab(id: string | number, isDirty: boolean) {\n setTabs((tabs) => {\n const tab = getTab(tabs, id);\n\n if (tab) {\n tab.isDirty = isDirty;\n\n return [...tabs];\n }\n\n return tabs;\n });\n }\n\n function handleClose(tab) {\n if (getTab(tabs, tab.id)) {\n onTabClose && onTabClose(tab.id);\n }\n }\n\n function removeTab(tab) {\n setTabs((tabs) => {\n const _tabs = tabs.filter((_tab) => _tab.id !== tab.id);\n\n setActiveKey((prevActiveKey) => {\n if (prevActiveKey === tab.id) {\n return _tabs[0] && _tabs[0].id;\n }\n\n return prevActiveKey;\n });\n\n return _tabs;\n });\n }\n\n function onPress(tab) {\n setTab(tab.id);\n onTabClick && onTabClick(tab.id);\n }\n\n return (\n <TabsContainerElement {...props}>\n <FileTabsContext.Provider\n value={{\n addTab,\n setTab,\n removeTab,\n setDirtyTab,\n currentTab: activeKey,\n }}\n >\n <TabsPanelElement\n ref={tabsRef}\n data-left-fade={leftFade || null}\n data-right-fade={rightFade || null}\n >\n {tabs.map((tab) => {\n return (\n <Tab\n key={tab.id}\n isClosable={isClosable}\n isDisabled={tab.id === activeKey || false}\n isDirty={tab.isDirty}\n onPress={() => onPress(tab)}\n onClose={() => isClosable && handleClose(tab)}\n >\n {tab.title}\n </Tab>\n );\n })}\n </TabsPanelElement>\n <Flex flexGrow={1} border=\"top\" {...(paneStyles || {})}>\n {children}\n </Flex>\n </FileTabsContext.Provider>\n </TabsContainerElement>\n );\n}\n\nexport interface CubeFileTabProps extends FileTabProps {\n id: string | number;\n title: string;\n}\n\nFileTabs.TabPane = function FileTabPane(allProps: CubeFileTabProps) {\n let { id, title, isDirty, children, ...props } = allProps;\n const { addTab, removeTab, currentTab, setDirtyTab } =\n useContext(FileTabsContext);\n\n useEffect(() => {\n const tabData = {\n id,\n title,\n isDirty,\n };\n\n addTab(tabData);\n\n return () => {\n removeTab(tabData);\n };\n }, [id, title]);\n\n useEffect(() => {\n setDirtyTab(id, isDirty || false);\n }, [isDirty]);\n\n const isCurrent = id === currentTab;\n\n return (\n <Block\n style={{ display: isCurrent ? 'block' : 'none', maxWidth: '100%' }}\n flexGrow={1}\n {...props}\n >\n {children}\n </Block>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AA+BA,MAAM,kBAAkB,cAAmC;CACzD,SAAS;CACT,YAAY;CACZ,SAAS;CACT,cAAc;CACf,CAAC;AAEF,MAAM,mBAAmB,MAAM,OAAO;CACpC,IAAI;CACJ,QAAQ;EACN,UAAU;EACV,UAAU;EACV,KAAK;EACL,KAAK;EACL,YAAY;EACZ,YAAY;EACZ,WAAW;EACX,SAAS;EACT,MAAM;GACJ,IAAI;GACJ,aAAa;GACb,cAAc;GACd,0BAA0B;GAC3B;EACD,YAAY;EACZ,sBAAsB;EACtB,qBAAqB;EACrB,6BAA6B;EAC9B;CACF,CAAC;AAEF,MAAM,uBAAuB,MAAM,MAAM;CACvC,IAAI;CACJ,QAAQ;EACN,MAAM;EACN,QAAQ;EACR,OAAO;EACP,UAAU;EACX;CACF,CAAC;AAEF,MAAM,aAAa,MAAM;CACvB,SAAS;CACT,QAAQ;EACN,UAAU;EACV,KAAK;EACL,MAAM;EACN,WAAW;EACX,OAAO;EACP,QAAQ;EACR,MAAM;EACN,QAAQ;EACT;CACF,CAAC;AAEF,MAAM,aAAa,MAAM,QAAQ,EAC/B,QAAQ;CACN,QAAQ;CACR,SAAS;CACT,QAAQ;EACN,IAAI;EACJ,UAAU;EACX;CACD,MAAM;EACJ,IAAI;EACJ,SAAS;EACT,8BAA8B;EAC/B;CACD,OAAO;EACL,IAAI;EACJ,yCAAyC;EAC1C;CACD,QAAQ;EACN,IAAI;EACJ,UAAU;EACX;CACD,YAAY;CACZ,SAAS;CACT,QAAQ;CACR,WAAW;EACT,IAAI;EACJ,UAAU;EACX;CACD,YAAY;CACZ,QAAQ;CAER,YAAY;EACV,SAAS;GACP,IAAI;GACJ,kBAAkB;GACnB;EACD,eAAe;GACb,IAAI;GACJ,kBAAkB;GACnB;EACF;CAED,aAAa,EACX,SAAS;EACP,IAAI;EACJ,mBAAmB;EACpB,EACF;CACF,EACF,CAAC;AAEF,MAAM,cAAc,MAAM,QAAQ;CAChC,SAAS;CACT,MAAM;CACN,MAAM,oBAAC,cAAY;CACnB,OAAO;CACP,QAAQ;EACN,OAAO;EACP,QAAQ;EACR,SAAS;EACV;CACF,CAAC;AAaF,SAAS,IAAI,EACX,SACA,YACA,UACA,YACA,SACA,GAAG,SACY;AACf,QACE,oBAAC;EACC,MAAM,EACJ,OAAO,SACR;EACW;EACZ,GAAI;YAEJ,qBAAC;GAAM,KAAI;cACT,oBAAC,SAAO,WAAiB,GACvB,cAAc,YACd,qBAAC;IAAK,YAAW;IAAS,OAAO,EAAE,UAAU,YAAY;eACtD,aAAa,oBAAC,eAAY,SAAS,UAAW,GAAG,oBAAC,UAAU,EAC5D,UAAU,oBAAC,eAAa,GAAG;KACvB;IAEH;GACG;;AAoBjB,SAAgB,SAAS,EACvB,kBACA,WAAW,eACX,YACA,YACA,YACA,aAAa,MACb,UACA,GAAG,SACiB;CACpB,MAAM,UAAU,OAA0B,KAAK;CAC/C,MAAM,CAAC,MAAM,WAAW,SAAoB,EAAE,CAAC;CAC/C,MAAM,CAAC,WAAW,gBAAgB,SAChC,iBAAiB,iBAClB;CAED,MAAM,CAAC,UAAU,eAAe,SAAS,MAAM;CAC/C,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;CAEjD,SAAS,eAAe;EACtB,MAAM,KAAK,WAAW,QAAQ;AAE9B,MAAI,CAAC,GAAI;AAET,cAAY,CAAC,CAAC,GAAG,WAAW;AAC5B,eACE,GAAG,gBAAgB,GAAG,eACpB,CAAC,EAAE,GAAG,cAAc,GAAG,cAAc,GAAG,YAC3C;;AAGH,mBAAgB,cAAc,CAAC,KAAK,CAAC;CAErC,SAAS,wBAAwB;EAC/B,MAAM,KAAK,WAAW,QAAQ;AAE9B,MAAI,CAAC,GAAI;EAET,MAAM,UAAU,GAAG,cAAc,mBAAmB;AAEpD,MAAI,CAAC,QAAS;AAEd,UAAQ,eAAe;GAAE,UAAU;GAAU,QAAQ;GAAO,OAAO;GAAO,CAAC;;AAG7E,iBAAgB;EACd,SAAS,SAAS;AAChB,iBAAc;;AAGhB,MAAI,WAAW,QAAQ,SAAS;AAC9B,WAAQ,QAAQ,iBAAiB,UAAU,OAAO;AAClD,WAAQ,QAAQ,iBAAiB,cAAc,OAAO;AACtD,UAAO,iBAAiB,UAAU,OAAO;;AAG3C,eAAa;AACX,OAAI,WAAW,QAAQ,SAAS;AAC9B,YAAQ,QAAQ,oBAAoB,UAAU,OAAO;AACrD,YAAQ,QAAQ,oBAAoB,cAAc,OAAO;;AAG3D,UAAO,oBAAoB,UAAU,OAAO;;IAE7C,CAAC,QAAQ,CAAC;AAEb,WAAU,uBAAuB,CAAC,UAAU,CAAC;AAE7C,iBAAgB;AACd,eAAa,cAAc;IAC1B,CAAC,cAAc,CAAC;CAEnB,SAAS,OAAO,MAAiB,KAA2C;AAC1E,SAAO,KAAK,MAAM,QAAQ,IAAI,OAAO,IAAI;;CAG3C,SAAS,OAAO,KAAsB;AACpC,MAAI,OAAO,MAAM,IAAI,CACnB,cAAa,IAAI;;CAIrB,SAAS,OAAO,KAAc;AAC5B,WAAS,SAAS;AAChB,OAAI,CAAC,OAAO,MAAM,IAAI,GAAG,CACvB,QAAO,CAAC,GAAG,MAAM,IAAI;AAGvB,UAAO;IACP;;CAGJ,SAAS,YAAY,IAAqB,SAAkB;AAC1D,WAAS,SAAS;GAChB,MAAM,MAAM,OAAO,MAAM,GAAG;AAE5B,OAAI,KAAK;AACP,QAAI,UAAU;AAEd,WAAO,CAAC,GAAG,KAAK;;AAGlB,UAAO;IACP;;CAGJ,SAAS,YAAY,KAAK;AACxB,MAAI,OAAO,MAAM,IAAI,GAAG,CACtB,eAAc,WAAW,IAAI,GAAG;;CAIpC,SAAS,UAAU,KAAK;AACtB,WAAS,SAAS;GAChB,MAAM,QAAQ,KAAK,QAAQ,SAAS,KAAK,OAAO,IAAI,GAAG;AAEvD,iBAAc,kBAAkB;AAC9B,QAAI,kBAAkB,IAAI,GACxB,QAAO,MAAM,MAAM,MAAM,GAAG;AAG9B,WAAO;KACP;AAEF,UAAO;IACP;;CAGJ,SAAS,QAAQ,KAAK;AACpB,SAAO,IAAI,GAAG;AACd,gBAAc,WAAW,IAAI,GAAG;;AAGlC,QACE,oBAAC;EAAqB,GAAI;YACxB,qBAAC,gBAAgB;GACf,OAAO;IACL;IACA;IACA;IACA;IACA,YAAY;IACb;cAED,oBAAC;IACC,KAAK;IACL,kBAAgB,YAAY;IAC5B,mBAAiB,aAAa;cAE7B,KAAK,KAAK,QAAQ;AACjB,YACE,oBAAC;MAEa;MACZ,YAAY,IAAI,OAAO,aAAa;MACpC,SAAS,IAAI;MACb,eAAe,QAAQ,IAAI;MAC3B,eAAe,cAAc,YAAY,IAAI;gBAE5C,IAAI;QAPA,IAAI,GAQL;MAER;KACe,EACnB,oBAAC;IAAK,UAAU;IAAG,QAAO;IAAM,GAAK,cAAc,EAAE;IAClD;KACI;IACkB;GACN;;AAS3B,SAAS,UAAU,SAAS,YAAY,UAA4B;CAClE,IAAI,EAAE,IAAI,OAAO,SAAS,UAAU,GAAG,UAAU;CACjD,MAAM,EAAE,QAAQ,WAAW,YAAY,gBACrC,WAAW,gBAAgB;AAE7B,iBAAgB;EACd,MAAM,UAAU;GACd;GACA;GACA;GACD;AAED,SAAO,QAAQ;AAEf,eAAa;AACX,aAAU,QAAQ;;IAEnB,CAAC,IAAI,MAAM,CAAC;AAEf,iBAAgB;AACd,cAAY,IAAI,WAAW,MAAM;IAChC,CAAC,QAAQ,CAAC;AAIb,QACE,oBAAC;EACC,OAAO;GAAE,SAJK,OAAO,aAIS,UAAU;GAAQ,UAAU;GAAQ;EAClE,UAAU;EACV,GAAI;EAEH;GACK"}
1
+ {"version":3,"file":"FileTabs.js","names":[],"sources":["../../../../src/components/organisms/FileTabs/FileTabs.tsx"],"sourcesContent":["import { Styles, tasty } from '@tenphi/tasty';\nimport {\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { CloseIcon } from '../../../icons';\nimport { useLayoutEffect } from '../../../utils/react';\nimport { Action, Button, CubeActionProps } from '../../actions';\nimport { Block } from '../../Block';\nimport { CubeFlexProps, Flex } from '../../layout/Flex';\nimport { Space } from '../../layout/Space';\n\ninterface TabData {\n id: string | number;\n title?: string;\n isDirty?: boolean;\n}\n\ninterface FileTabContextValue {\n addTab: (tab: TabData) => void;\n setTab: (id: string | number) => void;\n removeTab: (tab: TabData) => void;\n currentTab?: string | number;\n setDirtyTab: (id: string | number, isDirty: boolean) => void;\n}\n\nconst FileTabsContext = createContext<FileTabContextValue>({\n addTab() {},\n removeTab() {},\n setTab() {},\n setDirtyTab() {},\n});\n\nconst TabsPanelElement = tasty(Space, {\n qa: 'TabsPanel',\n styles: {\n position: 'relative',\n overflow: 'auto hidden',\n top: '1bw',\n gap: '.5x',\n flexShrink: 0,\n whiteSpace: 'nowrap',\n scrollbar: 'styled',\n padding: '1ow 1ow 0 1ow',\n fade: {\n '': false,\n 'left-fade': '3x left',\n 'right-fade': '3x right',\n 'right-fade & left-fade': '3x left right',\n },\n transition: 'fade',\n '--scrollbar-radius': '1ow',\n '--scrollbar-width': '.75x',\n '--scrollbar-outline-width': '1px',\n },\n});\n\nconst TabsContainerElement = tasty(Flex, {\n qa: 'TabsContainer',\n styles: {\n flow: 'column',\n height: 'max 100%',\n width: 'max 100%',\n position: 'relative',\n },\n});\n\nconst DirtyBadge = tasty({\n element: 'DirtyBadge',\n styles: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n width: '1x',\n height: '1x',\n fill: '#dark.30',\n radius: 'round',\n },\n});\n\nconst TabElement = tasty(Action, {\n styles: {\n radius: '1r 1r 0 0',\n padding: '1x 1.5x',\n border: {\n '': 'left top right #clear',\n disabled: 'left top right #border',\n },\n fill: {\n '': '#dark.04',\n hovered: '#dark.08',\n 'disabled, disabled & hover': '#surface',\n },\n color: {\n '': '#dark-02',\n 'disabled, hovered, hovered & disabled': '#dark',\n },\n cursor: {\n '': '$pointer',\n disabled: 'default',\n },\n fontWeight: 500,\n opacity: 1,\n preset: 'default',\n transform: {\n '': 'translate(0, 0)',\n disabled: 'translate(0, 1bw)',\n },\n transition: 'theme 0.2s',\n margin: '1bw bottom',\n\n DirtyBadge: {\n opacity: {\n '': 1,\n 'dirty & :hover': 0,\n },\n pointerEvents: {\n '': 'auto',\n 'dirty & :hover': 'none',\n },\n },\n\n CloseButton: {\n opacity: {\n '': 0,\n '!dirty | :hover': 1,\n },\n },\n },\n});\n\nconst CloseButton = tasty(Button, {\n element: 'CloseButton',\n type: 'clear',\n icon: <CloseIcon />,\n label: 'Close Tab',\n styles: {\n width: '3x',\n height: '3x',\n padding: 0,\n },\n});\n\n/**\n * @deprecated consider using <Tabs /> instead\n */\nexport interface FileTabProps extends Omit<CubeActionProps, 'id'> {\n isDirty?: boolean;\n isDisabled?: boolean;\n children?: ReactNode;\n isClosable?: boolean;\n onClose?: () => void;\n}\n\nfunction Tab({\n isDirty,\n isDisabled,\n children,\n isClosable,\n onClose,\n ...props\n}: FileTabProps) {\n return (\n <TabElement\n mods={{\n dirty: isDirty,\n }}\n isDisabled={isDisabled}\n {...props}\n >\n <Space gap=\".75x\">\n <Block>{children}</Block>\n {(isClosable || isDirty) && (\n <Flex placeItems=\"center\" style={{ position: 'relative' }}>\n {isClosable ? <CloseButton onPress={onClose} /> : <div></div>}\n {isDirty ? <DirtyBadge /> : null}\n </Flex>\n )}\n </Space>\n </TabElement>\n );\n}\n\nexport interface CubeFileTabsProps extends CubeFlexProps {\n /** The initial active key in the tabs (uncontrolled). */\n defaultActiveKey?: string;\n /** The currently active key in the tabs (controlled). */\n activeKey?: string | number;\n /** Handler that is called when the tab is clicked. */\n onTabClick?: (string) => void;\n /** Handler that is called when the tab is closed. */\n onTabClose?: (string) => void;\n /** Styles for each tab pane */\n paneStyles?: Styles;\n /** Whether the tabs are closable */\n isClosable?: boolean;\n children?: ReactNode;\n}\n\nexport function FileTabs({\n defaultActiveKey,\n activeKey: activeKeyProp,\n onTabClick,\n onTabClose,\n paneStyles,\n isClosable = true,\n children,\n ...props\n}: CubeFileTabsProps) {\n const tabsRef = useRef<HTMLButtonElement>(null);\n const [tabs, setTabs] = useState<TabData[]>([]);\n const [activeKey, setActiveKey] = useState<string | number | undefined>(\n activeKeyProp || defaultActiveKey,\n );\n\n const [leftFade, setLeftFade] = useState(false);\n const [rightFade, setRightFade] = useState(false);\n\n function updateScroll() {\n const el = tabsRef && tabsRef.current;\n\n if (!el) return;\n\n setLeftFade(!!el.scrollLeft);\n setRightFade(\n el.scrollWidth !== el.offsetWidth &&\n !!(el.scrollWidth - el.offsetWidth - el.scrollLeft),\n );\n }\n\n useLayoutEffect(updateScroll, [tabs]);\n\n function scrollCurrentIntoView() {\n const el = tabsRef && tabsRef.current;\n\n if (!el) return;\n\n const current = el.querySelector('button[disabled]');\n\n if (!current) return;\n\n current.scrollIntoView({ behavior: 'smooth', inline: 'end', block: 'end' });\n }\n\n useEffect(() => {\n function update() {\n updateScroll();\n }\n\n if (tabsRef && tabsRef.current) {\n tabsRef.current.addEventListener('scroll', update);\n tabsRef.current.addEventListener('mousewheel', update);\n window.addEventListener('resize', update);\n }\n\n return () => {\n if (tabsRef && tabsRef.current) {\n tabsRef.current.removeEventListener('scroll', update);\n tabsRef.current.removeEventListener('mousewheel', update);\n }\n\n window.removeEventListener('resize', update);\n };\n }, [tabsRef]);\n\n useEffect(scrollCurrentIntoView, [activeKey]);\n\n useEffect(() => {\n setActiveKey(activeKeyProp);\n }, [activeKeyProp]);\n\n function getTab(tabs: TabData[], key: string | number): TabData | undefined {\n return tabs.find((tab) => tab.id === key);\n }\n\n function setTab(key: string | number) {\n if (getTab(tabs, key)) {\n setActiveKey(key);\n }\n }\n\n function addTab(tab: TabData) {\n setTabs((tabs) => {\n if (!getTab(tabs, tab.id)) {\n return [...tabs, tab];\n }\n\n return tabs;\n });\n }\n\n function setDirtyTab(id: string | number, isDirty: boolean) {\n setTabs((tabs) => {\n const tab = getTab(tabs, id);\n\n if (tab) {\n tab.isDirty = isDirty;\n\n return [...tabs];\n }\n\n return tabs;\n });\n }\n\n function handleClose(tab) {\n if (getTab(tabs, tab.id)) {\n onTabClose && onTabClose(tab.id);\n }\n }\n\n function removeTab(tab) {\n setTabs((tabs) => {\n const _tabs = tabs.filter((_tab) => _tab.id !== tab.id);\n\n setActiveKey((prevActiveKey) => {\n if (prevActiveKey === tab.id) {\n return _tabs[0] && _tabs[0].id;\n }\n\n return prevActiveKey;\n });\n\n return _tabs;\n });\n }\n\n function onPress(tab) {\n setTab(tab.id);\n onTabClick && onTabClick(tab.id);\n }\n\n return (\n <TabsContainerElement {...props}>\n <FileTabsContext.Provider\n value={{\n addTab,\n setTab,\n removeTab,\n setDirtyTab,\n currentTab: activeKey,\n }}\n >\n <TabsPanelElement\n ref={tabsRef}\n data-left-fade={leftFade || null}\n data-right-fade={rightFade || null}\n >\n {tabs.map((tab) => {\n return (\n <Tab\n key={tab.id}\n isClosable={isClosable}\n isDisabled={tab.id === activeKey || false}\n isDirty={tab.isDirty}\n onPress={() => onPress(tab)}\n onClose={() => isClosable && handleClose(tab)}\n >\n {tab.title}\n </Tab>\n );\n })}\n </TabsPanelElement>\n <Flex flexGrow={1} border=\"top\" {...(paneStyles || {})}>\n {children}\n </Flex>\n </FileTabsContext.Provider>\n </TabsContainerElement>\n );\n}\n\nexport interface CubeFileTabProps extends FileTabProps {\n id: string | number;\n title: string;\n}\n\nFileTabs.TabPane = function FileTabPane(allProps: CubeFileTabProps) {\n let { id, title, isDirty, children, ...props } = allProps;\n const { addTab, removeTab, currentTab, setDirtyTab } =\n useContext(FileTabsContext);\n\n useEffect(() => {\n const tabData = {\n id,\n title,\n isDirty,\n };\n\n addTab(tabData);\n\n return () => {\n removeTab(tabData);\n };\n }, [id, title]);\n\n useEffect(() => {\n setDirtyTab(id, isDirty || false);\n }, [isDirty]);\n\n const isCurrent = id === currentTab;\n\n return (\n <Block\n style={{ display: isCurrent ? 'block' : 'none', maxWidth: '100%' }}\n flexGrow={1}\n {...props}\n >\n {children}\n </Block>\n );\n};\n"],"mappings":";;;;;;;;;;;;;AA+BA,MAAM,kBAAkB,cAAmC;CACzD,SAAS;CACT,YAAY;CACZ,SAAS;CACT,cAAc;CACf,CAAC;AAEF,MAAM,mBAAmB,MAAM,OAAO;CACpC,IAAI;CACJ,QAAQ;EACN,UAAU;EACV,UAAU;EACV,KAAK;EACL,KAAK;EACL,YAAY;EACZ,YAAY;EACZ,WAAW;EACX,SAAS;EACT,MAAM;GACJ,IAAI;GACJ,aAAa;GACb,cAAc;GACd,0BAA0B;GAC3B;EACD,YAAY;EACZ,sBAAsB;EACtB,qBAAqB;EACrB,6BAA6B;EAC9B;CACF,CAAC;AAEF,MAAM,uBAAuB,MAAM,MAAM;CACvC,IAAI;CACJ,QAAQ;EACN,MAAM;EACN,QAAQ;EACR,OAAO;EACP,UAAU;EACX;CACF,CAAC;AAEF,MAAM,aAAa,MAAM;CACvB,SAAS;CACT,QAAQ;EACN,UAAU;EACV,KAAK;EACL,MAAM;EACN,WAAW;EACX,OAAO;EACP,QAAQ;EACR,MAAM;EACN,QAAQ;EACT;CACF,CAAC;AAEF,MAAM,aAAa,MAAM,QAAQ,EAC/B,QAAQ;CACN,QAAQ;CACR,SAAS;CACT,QAAQ;EACN,IAAI;EACJ,UAAU;EACX;CACD,MAAM;EACJ,IAAI;EACJ,SAAS;EACT,8BAA8B;EAC/B;CACD,OAAO;EACL,IAAI;EACJ,yCAAyC;EAC1C;CACD,QAAQ;EACN,IAAI;EACJ,UAAU;EACX;CACD,YAAY;CACZ,SAAS;CACT,QAAQ;CACR,WAAW;EACT,IAAI;EACJ,UAAU;EACX;CACD,YAAY;CACZ,QAAQ;CAER,YAAY;EACV,SAAS;GACP,IAAI;GACJ,kBAAkB;GACnB;EACD,eAAe;GACb,IAAI;GACJ,kBAAkB;GACnB;EACF;CAED,aAAa,EACX,SAAS;EACP,IAAI;EACJ,mBAAmB;EACpB,EACF;CACF,EACF,CAAC;AAEF,MAAM,cAAc,MAAM,QAAQ;CAChC,SAAS;CACT,MAAM;CACN,MAAM,oBAAC,cAAY;CACnB,OAAO;CACP,QAAQ;EACN,OAAO;EACP,QAAQ;EACR,SAAS;EACV;CACF,CAAC;AAaF,SAAS,IAAI,EACX,SACA,YACA,UACA,YACA,SACA,GAAG,SACY;AACf,QACE,oBAAC;EACC,MAAM,EACJ,OAAO,SACR;EACW;EACZ,GAAI;YAEJ,qBAAC;GAAM,KAAI;cACT,oBAAC,SAAO,WAAiB,GACvB,cAAc,YACd,qBAAC;IAAK,YAAW;IAAS,OAAO,EAAE,UAAU,YAAY;eACtD,aAAa,oBAAC,eAAY,SAAS,UAAW,GAAG,oBAAC,UAAU,EAC5D,UAAU,oBAAC,eAAa,GAAG;KACvB;IAEH;GACG;;AAoBjB,SAAgB,SAAS,EACvB,kBACA,WAAW,eACX,YACA,YACA,YACA,aAAa,MACb,UACA,GAAG,SACiB;CACpB,MAAM,UAAU,OAA0B,KAAK;CAC/C,MAAM,CAAC,MAAM,WAAW,SAAoB,EAAE,CAAC;CAC/C,MAAM,CAAC,WAAW,gBAAgB,SAChC,iBAAiB,iBAClB;CAED,MAAM,CAAC,UAAU,eAAe,SAAS,MAAM;CAC/C,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;CAEjD,SAAS,eAAe;EACtB,MAAM,KAAK,WAAW,QAAQ;AAE9B,MAAI,CAAC,GAAI;AAET,cAAY,CAAC,CAAC,GAAG,WAAW;AAC5B,eACE,GAAG,gBAAgB,GAAG,eACpB,CAAC,EAAE,GAAG,cAAc,GAAG,cAAc,GAAG,YAC3C;;AAGH,mBAAgB,cAAc,CAAC,KAAK,CAAC;CAErC,SAAS,wBAAwB;EAC/B,MAAM,KAAK,WAAW,QAAQ;AAE9B,MAAI,CAAC,GAAI;EAET,MAAM,UAAU,GAAG,cAAc,mBAAmB;AAEpD,MAAI,CAAC,QAAS;AAEd,UAAQ,eAAe;GAAE,UAAU;GAAU,QAAQ;GAAO,OAAO;GAAO,CAAC;;AAG7E,iBAAgB;EACd,SAAS,SAAS;AAChB,iBAAc;;AAGhB,MAAI,WAAW,QAAQ,SAAS;AAC9B,WAAQ,QAAQ,iBAAiB,UAAU,OAAO;AAClD,WAAQ,QAAQ,iBAAiB,cAAc,OAAO;AACtD,UAAO,iBAAiB,UAAU,OAAO;;AAG3C,eAAa;AACX,OAAI,WAAW,QAAQ,SAAS;AAC9B,YAAQ,QAAQ,oBAAoB,UAAU,OAAO;AACrD,YAAQ,QAAQ,oBAAoB,cAAc,OAAO;;AAG3D,UAAO,oBAAoB,UAAU,OAAO;;IAE7C,CAAC,QAAQ,CAAC;AAEb,WAAU,uBAAuB,CAAC,UAAU,CAAC;AAE7C,iBAAgB;AACd,eAAa,cAAc;IAC1B,CAAC,cAAc,CAAC;CAEnB,SAAS,OAAO,MAAiB,KAA2C;AAC1E,SAAO,KAAK,MAAM,QAAQ,IAAI,OAAO,IAAI;;CAG3C,SAAS,OAAO,KAAsB;AACpC,MAAI,OAAO,MAAM,IAAI,CACnB,cAAa,IAAI;;CAIrB,SAAS,OAAO,KAAc;AAC5B,WAAS,SAAS;AAChB,OAAI,CAAC,OAAO,MAAM,IAAI,GAAG,CACvB,QAAO,CAAC,GAAG,MAAM,IAAI;AAGvB,UAAO;IACP;;CAGJ,SAAS,YAAY,IAAqB,SAAkB;AAC1D,WAAS,SAAS;GAChB,MAAM,MAAM,OAAO,MAAM,GAAG;AAE5B,OAAI,KAAK;AACP,QAAI,UAAU;AAEd,WAAO,CAAC,GAAG,KAAK;;AAGlB,UAAO;IACP;;CAGJ,SAAS,YAAY,KAAK;AACxB,MAAI,OAAO,MAAM,IAAI,GAAG,CACtB,eAAc,WAAW,IAAI,GAAG;;CAIpC,SAAS,UAAU,KAAK;AACtB,WAAS,SAAS;GAChB,MAAM,QAAQ,KAAK,QAAQ,SAAS,KAAK,OAAO,IAAI,GAAG;AAEvD,iBAAc,kBAAkB;AAC9B,QAAI,kBAAkB,IAAI,GACxB,QAAO,MAAM,MAAM,MAAM,GAAG;AAG9B,WAAO;KACP;AAEF,UAAO;IACP;;CAGJ,SAAS,QAAQ,KAAK;AACpB,SAAO,IAAI,GAAG;AACd,gBAAc,WAAW,IAAI,GAAG;;AAGlC,QACE,oBAAC;EAAqB,GAAI;YACxB,qBAAC,gBAAgB;GACf,OAAO;IACL;IACA;IACA;IACA;IACA,YAAY;IACb;cAED,oBAAC;IACC,KAAK;IACL,kBAAgB,YAAY;IAC5B,mBAAiB,aAAa;cAE7B,KAAK,KAAK,QAAQ;AACjB,YACE,oBAAC;MAEa;MACZ,YAAY,IAAI,OAAO,aAAa;MACpC,SAAS,IAAI;MACb,eAAe,QAAQ,IAAI;MAC3B,eAAe,cAAc,YAAY,IAAI;gBAE5C,IAAI;QAPA,IAAI,GAQL;MAER;KACe,EACnB,oBAAC;IAAK,UAAU;IAAG,QAAO;IAAM,GAAK,cAAc,EAAE;IAClD;KACI;IACkB;GACN;;AAS3B,SAAS,UAAU,SAAS,YAAY,UAA4B;CAClE,IAAI,EAAE,IAAI,OAAO,SAAS,UAAU,GAAG,UAAU;CACjD,MAAM,EAAE,QAAQ,WAAW,YAAY,gBACrC,WAAW,gBAAgB;AAE7B,iBAAgB;EACd,MAAM,UAAU;GACd;GACA;GACA;GACD;AAED,SAAO,QAAQ;AAEf,eAAa;AACX,aAAU,QAAQ;;IAEnB,CAAC,IAAI,MAAM,CAAC;AAEf,iBAAgB;AACd,cAAY,IAAI,WAAW,MAAM;IAChC,CAAC,QAAQ,CAAC;AAIb,QACE,oBAAC;EACC,OAAO;GAAE,SAJK,OAAO,aAIS,UAAU;GAAQ,UAAU;GAAQ;EAClE,UAAU;EACV,GAAI;EAEH;GACK"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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";
@@ -87,7 +87,7 @@ const DialogElement = tasty({
87
87
  });
88
88
  const CloseButton = tasty(_ItemButton, {
89
89
  qa: "ModalCloseButton",
90
- type: "neutral",
90
+ type: "clear",
91
91
  styles: {
92
92
  position: "absolute",
93
93
  top: "1x",
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","names":["ItemButton","mergeProps"],"sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import { createFocusManager } from '@react-aria/focus';\nimport { useDOMRef } from '@react-spectrum/utils';\nimport { DOMRef } from '@react-types/shared';\nimport {\n BASE_STYLES,\n BaseProps,\n BaseStyleProps,\n BLOCK_STYLES,\n BlockStyleProps,\n DIMENSION_STYLES,\n DimensionStyleProps,\n FLOW_STYLES,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef, ReactElement, useEffect, useMemo } from 'react';\nimport {\n AriaDialogProps,\n DismissButton,\n FocusScope,\n useDialog,\n useMessageFormatter,\n} from 'react-aria';\n\nimport { CloseIcon } from '../../../icons';\nimport { mergeProps, SlotProvider } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { ItemButton } from '../../actions';\nimport { useOpenTransitionContext } from '../Modal/OpenTransitionContext';\n\nimport { useDialogContext } from './context';\n\nconst STYLES_LIST = [\n ...BASE_STYLES,\n ...DIMENSION_STYLES,\n ...BLOCK_STYLES,\n ...FLOW_STYLES,\n];\n\nconst DialogElement = tasty({\n as: 'section',\n styles: {\n display: 'flex',\n flow: 'column',\n fill: '#surface',\n pointerEvents: 'auto',\n outline: 0,\n position: {\n '': 'relative',\n 'type=panel': 'absolute',\n },\n width: {\n '': '$min-dialog-size $dialog-size (100dvw - 8x)',\n 'type=fullscreen': '(100dvw - 8x) (100dvw - 8x)',\n 'type=fullscreenTakeover': '100dvw 100dvw',\n 'type=panel': 'auto',\n },\n height: {\n '': 'auto (100dvh - 8x)',\n 'type=fullscreen': '(100dvh - 8x) (100dvh - 8x)',\n 'type=fullscreenTakeover | type=panel': '100dvh 100dvh',\n 'type=popover': 'initial initial (50dvh - 5x)',\n },\n gap: 0,\n border: {\n '': false,\n 'type=popover': true,\n },\n radius: {\n '': '1cr',\n 'type=tray': '1cr top',\n 'type=fullscreenTakeover': '0r',\n },\n shadow: {\n '': '$dialog-shadow',\n 'type=popover | type=panel': '$shadow',\n },\n top: {\n '': false,\n 'type=modal': '((50vh - 50%) / -3)',\n 'type=panel': 'auto',\n },\n '$dialog-title-padding-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-content-padding-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-padding-h': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-footer-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-content-gap': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n },\n});\n\nconst CloseButton = tasty(ItemButton, {\n qa: 'ModalCloseButton',\n type: 'neutral',\n styles: {\n position: 'absolute',\n top: '1x',\n right: '1x',\n },\n});\n\nconst sizeMap = {\n S: 'small',\n M: 'medium',\n L: 'large',\n};\nconst sizePxMap = {\n small: 360,\n medium: 479,\n large: 798,\n};\n\nconst intlMessages = {\n 'en-US': {\n dismiss: 'Dismiss',\n alert: 'Alert',\n },\n};\n\nexport interface CubeDialogProps\n extends Omit<BaseProps, 'role'>,\n AriaDialogProps,\n BaseStyleProps,\n BlockStyleProps,\n DimensionStyleProps {\n /** The size of the dialog */\n size?: 'S' | 'M' | 'L' | 'small' | 'medium' | 'large';\n /** Whether the dialog is dismissable */\n isDismissable?: boolean;\n /** Trigger when the dialog is dismissed */\n onDismiss?: (arg?: any) => void;\n /** That you can replace the close icon with */\n closeIcon?: ReactElement;\n closeButtonStyles?: Styles;\n role?: 'dialog' | 'alertdialog';\n}\n\n/**\n * Dialogs are windows containing contextual information, tasks, or workflows that appear over the user interface.\n * Depending on the kind of Dialog, further interactions may be blocked until the Dialog is acknowledged.\n */\nexport const Dialog = forwardRef(function Dialog(\n props: CubeDialogProps,\n ref: DOMRef<HTMLDivElement>,\n) {\n const transitionContext = useOpenTransitionContext();\n\n const isEntered = transitionContext?.transitionState === 'entered';\n\n const context = useDialogContext();\n\n const content = useMemo(() => {\n return <DialogContent key=\"content\" {...props} ref={ref} />;\n }, [props, ref]);\n\n const shouldContainFocus =\n isEntered && !!context.isOpen && context.type !== 'panel';\n\n return (\n // This component traps the focus inside the dialog and restores it on close.\n <FocusScope restoreFocus contain={shouldContainFocus}>\n {content}\n </FocusScope>\n );\n});\n\nconst DialogContent = forwardRef(function DialogContent(\n props: CubeDialogProps,\n ref: DOMRef<HTMLDivElement>,\n) {\n let { type = 'modal', ...contextProps } = useDialogContext();\n\n let {\n qa,\n children,\n size = 'M',\n isDismissable = contextProps.isDismissable,\n onDismiss = contextProps.onClose,\n closeIcon,\n closeButtonStyles,\n style,\n ...otherProps\n } = props;\n\n size = sizeMap[size.toUpperCase()] || size;\n\n const styles: Styles = extractStyles(otherProps, STYLES_LIST);\n\n let formatMessage = useMessageFormatter(intlMessages);\n\n let domRef = useDOMRef(ref);\n let { dialogProps, titleProps } = useDialog(\n mergeProps(contextProps, props),\n domRef,\n );\n\n // If rendered in a popover or tray there won't be a visible dismiss button,\n // so we render a hidden one for screen readers.\n let dismissButton;\n if (type === 'popover' || type === 'tray') {\n dismissButton = <DismissButton onDismiss={onDismiss} />;\n }\n\n // Focus the first focusable element in the dialog when it opens.\n //\n // We also re-run the priority focus logic when the dialog <section>\n // itself is the active element. This recovers from a race that occurs\n // when a popover-based component (FilterPicker, Picker, Select, …) opens\n // inside another contained Dialog: React's native `autoFocus` on the\n // inner control fires during the mutation phase, before the popover's\n // FocusScope registers in react-aria's focus-scope tree, so the outer\n // FocusScope yanks focus back. useDialog then defaults focus to the\n // dialog <section>; without re-promoting it here, the priority element\n // (e.g. the search input) is never focused.\n useEffect(() => {\n if (contextProps.isOpen) {\n setTimeout(() => {\n if (!domRef.current) return;\n\n const activeElement = document.activeElement;\n const isFocusOutsideDialog = !domRef.current.contains(activeElement);\n const isFocusOnDialogShell = activeElement === domRef.current;\n\n // Priority 1: autofocus input or primary button\n const priorityElement = domRef.current.querySelector(\n 'input[data-autofocus], button[type=\"submit\"], button[data-type=\"primary\"]',\n ) as HTMLElement | null;\n\n if (priorityElement && (isFocusOutsideDialog || isFocusOnDialogShell)) {\n priorityElement.focus();\n return;\n }\n\n if (isFocusOutsideDialog) {\n // Fallback: focus first tabbable element, or dialog itself\n const focusManager = createFocusManager(domRef);\n\n if (!focusManager.focusFirst({ tabbable: true })) {\n domRef.current.focus();\n }\n }\n });\n }\n }, [contextProps.isOpen]);\n\n // let hasHeader = useHasChild('[data-id=\"Header\"]', domRef);\n // let hasFooter = useHasChild('[data-id=\"Footer\"]', domRef);\n\n let slots = {\n title: {\n level: 2,\n preset: 'h4',\n ...titleProps,\n },\n content: {\n styles: {\n flexGrow: 1,\n padding: '$dialog-content-padding-v $dialog-padding-h',\n gap: '$dialog-content-gap',\n height: {\n '': 'max (100% - (2 * $dialog-content-padding-v))',\n ':last-child': 'max (100% - $dialog-content-padding-v)',\n },\n },\n },\n header: {\n ellipsis: true,\n styles: {\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center stretch',\n placeContent: 'space-between',\n padding: `$dialog-title-padding-v ${\n isDismissable ? '($dialog-padding-h + 4x)' : '$dialog-padding-h'\n } $dialog-title-padding-v $dialog-padding-h`,\n border: 'bottom',\n },\n },\n footer: {\n styles: {\n display: 'flex',\n gap: '1x',\n flow: 'row-reverse',\n placeItems: 'baseline stretch',\n placeContent: 'space-between',\n padding: '$dialog-footer-v $dialog-padding-h',\n },\n },\n buttonGroup: {\n styles: {\n flow: 'row-reverse',\n },\n },\n };\n\n return (\n <DialogElement\n ref={domRef}\n data-id=\"Dialog\"\n data-qa={qa || 'Dialog'}\n styles={styles}\n as=\"section\"\n {...dialogProps}\n mods={{ dismissable: isDismissable }}\n style={{\n '--dialog-size': `${sizePxMap[size] || sizePxMap.small}px`,\n ...style,\n }}\n data-type={type}\n data-size={size}\n >\n {dismissButton}\n\n <SlotProvider slots={slots}>\n {isDismissable && (\n <CloseButton\n icon={closeIcon || <CloseIcon size={20} />}\n label={formatMessage('dismiss')}\n onPress={() => onDismiss && onDismiss()}\n />\n )}\n {children}\n </SlotProvider>\n </DialogElement>\n );\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"Dialog.js","names":["ItemButton","mergeProps"],"sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import { createFocusManager } from '@react-aria/focus';\nimport { useDOMRef } from '@react-spectrum/utils';\nimport { DOMRef } from '@react-types/shared';\nimport {\n BASE_STYLES,\n BaseProps,\n BaseStyleProps,\n BLOCK_STYLES,\n BlockStyleProps,\n DIMENSION_STYLES,\n DimensionStyleProps,\n FLOW_STYLES,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef, ReactElement, useEffect, useMemo } from 'react';\nimport {\n AriaDialogProps,\n DismissButton,\n FocusScope,\n useDialog,\n useMessageFormatter,\n} from 'react-aria';\n\nimport { CloseIcon } from '../../../icons';\nimport { mergeProps, SlotProvider } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { ItemButton } from '../../actions';\nimport { useOpenTransitionContext } from '../Modal/OpenTransitionContext';\n\nimport { useDialogContext } from './context';\n\nconst STYLES_LIST = [\n ...BASE_STYLES,\n ...DIMENSION_STYLES,\n ...BLOCK_STYLES,\n ...FLOW_STYLES,\n];\n\nconst DialogElement = tasty({\n as: 'section',\n styles: {\n display: 'flex',\n flow: 'column',\n fill: '#surface',\n pointerEvents: 'auto',\n outline: 0,\n position: {\n '': 'relative',\n 'type=panel': 'absolute',\n },\n width: {\n '': '$min-dialog-size $dialog-size (100dvw - 8x)',\n 'type=fullscreen': '(100dvw - 8x) (100dvw - 8x)',\n 'type=fullscreenTakeover': '100dvw 100dvw',\n 'type=panel': 'auto',\n },\n height: {\n '': 'auto (100dvh - 8x)',\n 'type=fullscreen': '(100dvh - 8x) (100dvh - 8x)',\n 'type=fullscreenTakeover | type=panel': '100dvh 100dvh',\n 'type=popover': 'initial initial (50dvh - 5x)',\n },\n gap: 0,\n border: {\n '': false,\n 'type=popover': true,\n },\n radius: {\n '': '1cr',\n 'type=tray': '1cr top',\n 'type=fullscreenTakeover': '0r',\n },\n shadow: {\n '': '$dialog-shadow',\n 'type=popover | type=panel': '$shadow',\n },\n top: {\n '': false,\n 'type=modal': '((50vh - 50%) / -3)',\n 'type=panel': 'auto',\n },\n '$dialog-title-padding-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-content-padding-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-padding-h': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-footer-v': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n '$dialog-content-gap': {\n '': '1.5x',\n 'type=popover': '1x',\n },\n },\n});\n\nconst CloseButton = tasty(ItemButton, {\n qa: 'ModalCloseButton',\n type: 'clear',\n styles: {\n position: 'absolute',\n top: '1x',\n right: '1x',\n },\n});\n\nconst sizeMap = {\n S: 'small',\n M: 'medium',\n L: 'large',\n};\nconst sizePxMap = {\n small: 360,\n medium: 479,\n large: 798,\n};\n\nconst intlMessages = {\n 'en-US': {\n dismiss: 'Dismiss',\n alert: 'Alert',\n },\n};\n\nexport interface CubeDialogProps\n extends Omit<BaseProps, 'role'>,\n AriaDialogProps,\n BaseStyleProps,\n BlockStyleProps,\n DimensionStyleProps {\n /** The size of the dialog */\n size?: 'S' | 'M' | 'L' | 'small' | 'medium' | 'large';\n /** Whether the dialog is dismissable */\n isDismissable?: boolean;\n /** Trigger when the dialog is dismissed */\n onDismiss?: (arg?: any) => void;\n /** That you can replace the close icon with */\n closeIcon?: ReactElement;\n closeButtonStyles?: Styles;\n role?: 'dialog' | 'alertdialog';\n}\n\n/**\n * Dialogs are windows containing contextual information, tasks, or workflows that appear over the user interface.\n * Depending on the kind of Dialog, further interactions may be blocked until the Dialog is acknowledged.\n */\nexport const Dialog = forwardRef(function Dialog(\n props: CubeDialogProps,\n ref: DOMRef<HTMLDivElement>,\n) {\n const transitionContext = useOpenTransitionContext();\n\n const isEntered = transitionContext?.transitionState === 'entered';\n\n const context = useDialogContext();\n\n const content = useMemo(() => {\n return <DialogContent key=\"content\" {...props} ref={ref} />;\n }, [props, ref]);\n\n const shouldContainFocus =\n isEntered && !!context.isOpen && context.type !== 'panel';\n\n return (\n // This component traps the focus inside the dialog and restores it on close.\n <FocusScope restoreFocus contain={shouldContainFocus}>\n {content}\n </FocusScope>\n );\n});\n\nconst DialogContent = forwardRef(function DialogContent(\n props: CubeDialogProps,\n ref: DOMRef<HTMLDivElement>,\n) {\n let { type = 'modal', ...contextProps } = useDialogContext();\n\n let {\n qa,\n children,\n size = 'M',\n isDismissable = contextProps.isDismissable,\n onDismiss = contextProps.onClose,\n closeIcon,\n closeButtonStyles,\n style,\n ...otherProps\n } = props;\n\n size = sizeMap[size.toUpperCase()] || size;\n\n const styles: Styles = extractStyles(otherProps, STYLES_LIST);\n\n let formatMessage = useMessageFormatter(intlMessages);\n\n let domRef = useDOMRef(ref);\n let { dialogProps, titleProps } = useDialog(\n mergeProps(contextProps, props),\n domRef,\n );\n\n // If rendered in a popover or tray there won't be a visible dismiss button,\n // so we render a hidden one for screen readers.\n let dismissButton;\n if (type === 'popover' || type === 'tray') {\n dismissButton = <DismissButton onDismiss={onDismiss} />;\n }\n\n // Focus the first focusable element in the dialog when it opens.\n //\n // We also re-run the priority focus logic when the dialog <section>\n // itself is the active element. This recovers from a race that occurs\n // when a popover-based component (FilterPicker, Picker, Select, …) opens\n // inside another contained Dialog: React's native `autoFocus` on the\n // inner control fires during the mutation phase, before the popover's\n // FocusScope registers in react-aria's focus-scope tree, so the outer\n // FocusScope yanks focus back. useDialog then defaults focus to the\n // dialog <section>; without re-promoting it here, the priority element\n // (e.g. the search input) is never focused.\n useEffect(() => {\n if (contextProps.isOpen) {\n setTimeout(() => {\n if (!domRef.current) return;\n\n const activeElement = document.activeElement;\n const isFocusOutsideDialog = !domRef.current.contains(activeElement);\n const isFocusOnDialogShell = activeElement === domRef.current;\n\n // Priority 1: autofocus input or primary button\n const priorityElement = domRef.current.querySelector(\n 'input[data-autofocus], button[type=\"submit\"], button[data-type=\"primary\"]',\n ) as HTMLElement | null;\n\n if (priorityElement && (isFocusOutsideDialog || isFocusOnDialogShell)) {\n priorityElement.focus();\n return;\n }\n\n if (isFocusOutsideDialog) {\n // Fallback: focus first tabbable element, or dialog itself\n const focusManager = createFocusManager(domRef);\n\n if (!focusManager.focusFirst({ tabbable: true })) {\n domRef.current.focus();\n }\n }\n });\n }\n }, [contextProps.isOpen]);\n\n // let hasHeader = useHasChild('[data-id=\"Header\"]', domRef);\n // let hasFooter = useHasChild('[data-id=\"Footer\"]', domRef);\n\n let slots = {\n title: {\n level: 2,\n preset: 'h4',\n ...titleProps,\n },\n content: {\n styles: {\n flexGrow: 1,\n padding: '$dialog-content-padding-v $dialog-padding-h',\n gap: '$dialog-content-gap',\n height: {\n '': 'max (100% - (2 * $dialog-content-padding-v))',\n ':last-child': 'max (100% - $dialog-content-padding-v)',\n },\n },\n },\n header: {\n ellipsis: true,\n styles: {\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center stretch',\n placeContent: 'space-between',\n padding: `$dialog-title-padding-v ${\n isDismissable ? '($dialog-padding-h + 4x)' : '$dialog-padding-h'\n } $dialog-title-padding-v $dialog-padding-h`,\n border: 'bottom',\n },\n },\n footer: {\n styles: {\n display: 'flex',\n gap: '1x',\n flow: 'row-reverse',\n placeItems: 'baseline stretch',\n placeContent: 'space-between',\n padding: '$dialog-footer-v $dialog-padding-h',\n },\n },\n buttonGroup: {\n styles: {\n flow: 'row-reverse',\n },\n },\n };\n\n return (\n <DialogElement\n ref={domRef}\n data-id=\"Dialog\"\n data-qa={qa || 'Dialog'}\n styles={styles}\n as=\"section\"\n {...dialogProps}\n mods={{ dismissable: isDismissable }}\n style={{\n '--dialog-size': `${sizePxMap[size] || sizePxMap.small}px`,\n ...style,\n }}\n data-type={type}\n data-size={size}\n >\n {dismissButton}\n\n <SlotProvider slots={slots}>\n {isDismissable && (\n <CloseButton\n icon={closeIcon || <CloseIcon size={20} />}\n label={formatMessage('dismiss')}\n onPress={() => onDismiss && onDismiss()}\n />\n )}\n {children}\n </SlotProvider>\n </DialogElement>\n );\n});\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.0 | Cube Dev Team */
2
2
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
3
3
  import { _Modal } from "../Modal/Modal.js";
4
4
  import { _Tray } from "../Modal/Tray.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.0 | Cube Dev Team */
2
2
  import { useNotificationContext } from "./NotificationContext.js";
3
3
  import { useEffect, useRef } from "react";
4
4
 
@@ -12,7 +12,7 @@ import * as react_jsx_runtime0 from "react/jsx-runtime";
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
14
  * "Dismiss" button is auto-suppressed via context detection.
15
- * - Type (primary/secondary/etc.) is set automatically via ItemActionProvider context.
15
+ * - Type (primary/outline/clear/etc.) is set automatically via ItemActionProvider context.
16
16
  */
17
17
  declare function NotificationAction({
18
18
  children,
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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";
@@ -37,7 +37,7 @@ const DismissActionDetectedContext = createContext(null);
37
37
  * - An action with no `onPress` and `closeOnPress: true` acts as a dismiss-only action.
38
38
  * - `isDismiss` — marks this action as the dismiss button; when present, the default
39
39
  * "Dismiss" button is auto-suppressed via context detection.
40
- * - Type (primary/secondary/etc.) is set automatically via ItemActionProvider context.
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);
@@ -45,7 +45,8 @@ function NotificationAction({ children, onPress, closeOnPress = true, isDisabled
45
45
  if (isDismiss && dismissDetectedRef) dismissDetectedRef.current = true;
46
46
  const actionInterceptor = useContext(NotificationActionInterceptorContext);
47
47
  return /* @__PURE__ */ jsx(ItemAction, {
48
- type: "secondary",
48
+ isSelected: true,
49
+ type: "outline",
49
50
  isDisabled,
50
51
  onPress: useEvent(async () => {
51
52
  actionInterceptor?.();
@@ -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/secondary/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 type=\"secondary\" isDisabled={isDisabled} onPress={handlePress}>\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;EAAW,MAAK;EAAwB;EAAY,SAvBnC,SAAS,YAAY;AACvC,wBAAqB;AAErB,OAAI,gBAAgB,kBAQlB,aAAY,QAAQ,YAAY,UAAU,SAAS;AAKrD,OAFe,MAAM,WAAW,KAEjB,UAAU,gBAAgB,mBAEvC,aAAY,SAAS;IAEvB;EAIG;GACU"}
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,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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.138.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.139.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";
@@ -103,7 +103,8 @@ function useProgressToast(options) {
103
103
  const descriptionChanged = currentDescription !== prevDescriptionRef.current;
104
104
  const dataChanged = themeChanged || titleChanged || descriptionChanged;
105
105
  const hideAction = isDismissable && currentIsLoading ? /* @__PURE__ */ jsx(ItemAction, {
106
- type: "secondary",
106
+ isSelected: true,
107
+ type: "outline",
107
108
  onPress: handleHide,
108
109
  children: "Hide"
109
110
  }) : null;