@cube-dev/ui-kit 0.0.0-canary-46112bd → 0.0.0-canary-904a0d4

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 (436) hide show
  1. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.js +1 -1
  19. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  20. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  21. package/dist/components/actions/ButtonSplit/context.js +1 -1
  22. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  23. package/dist/components/actions/CommandMenu/styled.js +1 -1
  24. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  25. package/dist/components/actions/ItemActionContext.js +1 -1
  26. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  27. package/dist/components/actions/Link/Link.js +1 -1
  28. package/dist/components/actions/Menu/Menu.js +1 -1
  29. package/dist/components/actions/Menu/MenuItem.js +1 -1
  30. package/dist/components/actions/Menu/MenuSection.js +1 -1
  31. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  32. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  34. package/dist/components/actions/Menu/context.js +1 -1
  35. package/dist/components/actions/Menu/styled.js +1 -1
  36. package/dist/components/actions/index.js +1 -1
  37. package/dist/components/actions/use-action.js +1 -1
  38. package/dist/components/actions/use-anchored-menu.js +1 -1
  39. package/dist/components/actions/use-context-menu.js +1 -1
  40. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  41. package/dist/components/content/Alert/Alert.js +1 -1
  42. package/dist/components/content/Alert/use-alert.js +1 -1
  43. package/dist/components/content/Avatar/Avatar.js +1 -1
  44. package/dist/components/content/Badge/Badge.js +1 -1
  45. package/dist/components/content/Card/Card.js +1 -1
  46. package/dist/components/content/Content.js +1 -1
  47. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  48. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  49. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  50. package/dist/components/content/Divider.js +1 -1
  51. package/dist/components/content/Footer.js +1 -1
  52. package/dist/components/content/Header.js +1 -1
  53. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  54. package/dist/components/content/Item/Item.js +1 -1
  55. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  56. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  57. package/dist/components/content/Layout/GridLayout.js +1 -1
  58. package/dist/components/content/Layout/Layout.js +1 -1
  59. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  60. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  61. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  62. package/dist/components/content/Layout/LayoutContent.js +1 -1
  63. package/dist/components/content/Layout/LayoutContext.js +1 -1
  64. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  65. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  66. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  67. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  68. package/dist/components/content/Layout/LayoutPane.js +1 -1
  69. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  70. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  71. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  72. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  73. package/dist/components/content/Layout/index.js +1 -1
  74. package/dist/components/content/Layout/utils.js +1 -1
  75. package/dist/components/content/Paragraph.js +1 -1
  76. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  77. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  78. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  79. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  80. package/dist/components/content/Result/Result.js +1 -1
  81. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  82. package/dist/components/content/Tag/Tag.js +1 -1
  83. package/dist/components/content/Text.d.ts +21 -21
  84. package/dist/components/content/Text.js +1 -1
  85. package/dist/components/content/TextItem/TextItem.js +1 -1
  86. package/dist/components/content/Title.js +1 -1
  87. package/dist/components/content/Tree/Tree.js +6 -49
  88. package/dist/components/content/Tree/Tree.js.map +1 -1
  89. package/dist/components/content/Tree/TreeNode.js +8 -33
  90. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  91. package/dist/components/content/Tree/styled.js +3 -3
  92. package/dist/components/content/Tree/styled.js.map +1 -1
  93. package/dist/components/content/Tree/tree-index.js +1 -1
  94. package/dist/components/content/Tree/types.d.ts +0 -29
  95. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  96. package/dist/components/content/Tree/use-load-data.js +1 -1
  97. package/dist/components/content/highlightText.js +1 -1
  98. package/dist/components/content/use-auto-tooltip.js +1 -1
  99. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  100. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  101. package/dist/components/fields/Checkbox/context.js +1 -1
  102. package/dist/components/fields/ComboBox/ComboBox.js +2 -8
  103. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  104. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  105. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  106. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  107. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  108. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  109. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  110. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  111. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  112. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  113. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  114. package/dist/components/fields/DatePicker/intl.js +1 -1
  115. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  116. package/dist/components/fields/DatePicker/props.js +1 -1
  117. package/dist/components/fields/DatePicker/utils.js +1 -1
  118. package/dist/components/fields/FileInput/FileInput.js +1 -1
  119. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  120. package/dist/components/fields/FilterPicker/FilterPicker.js +2 -11
  121. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  122. package/dist/components/fields/Input/Input.js +1 -1
  123. package/dist/components/fields/ListBox/ListBox.js +1 -1
  124. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  125. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  126. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  127. package/dist/components/fields/Picker/Picker.js +2 -11
  128. package/dist/components/fields/Picker/Picker.js.map +1 -1
  129. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  130. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  131. package/dist/components/fields/RadioGroup/context.js +1 -1
  132. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  133. package/dist/components/fields/Select/Select.d.ts +0 -2
  134. package/dist/components/fields/Select/Select.js +3 -11
  135. package/dist/components/fields/Select/Select.js.map +1 -1
  136. package/dist/components/fields/Slider/Gradation.js +1 -1
  137. package/dist/components/fields/Slider/HueSlider.js +1 -1
  138. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  139. package/dist/components/fields/Slider/Slider.js +1 -1
  140. package/dist/components/fields/Slider/SliderBase.js +1 -1
  141. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  142. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  143. package/dist/components/fields/Slider/elements.js +1 -1
  144. package/dist/components/fields/Slider/index.js +1 -1
  145. package/dist/components/fields/Switch/Switch.js +1 -1
  146. package/dist/components/fields/TextArea/TextArea.js +1 -1
  147. package/dist/components/fields/TextInput/TextInput.js +1 -1
  148. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  149. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  150. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  151. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  152. package/dist/components/form/Form/Field.js +1 -1
  153. package/dist/components/form/Form/Form.js +1 -1
  154. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  155. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  156. package/dist/components/form/Form/SubmitError.js +1 -1
  157. package/dist/components/form/Form/index.js +1 -1
  158. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  159. package/dist/components/form/Form/use-field/use-field.js +1 -1
  160. package/dist/components/form/Form/use-form.js +1 -1
  161. package/dist/components/form/Form/validation.js +1 -1
  162. package/dist/components/form/Label.js +1 -1
  163. package/dist/components/form/wrapper.js +1 -1
  164. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +5 -4
  165. package/dist/components/helpers/DisplayTransition/DisplayTransition.js.map +1 -1
  166. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  167. package/dist/components/layout/Flex.js +1 -1
  168. package/dist/components/layout/Flow.js +1 -1
  169. package/dist/components/layout/Grid.js +1 -1
  170. package/dist/components/layout/Panel.js +1 -1
  171. package/dist/components/layout/Prefix.js +1 -1
  172. package/dist/components/layout/ResizablePanel.js +1 -1
  173. package/dist/components/layout/Space.js +1 -1
  174. package/dist/components/layout/Suffix.js +1 -1
  175. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  176. package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
  177. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  178. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  179. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  180. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  181. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  182. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  183. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  184. package/dist/components/navigation/Tabs/styled.js +1 -1
  185. package/dist/components/navigation/Tabs/types.js +1 -1
  186. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  187. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  188. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  189. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  190. package/dist/components/other/Calendar/Calendar.js +1 -1
  191. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  192. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  193. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  194. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  195. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  196. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  197. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  198. package/dist/components/overlays/Dialog/Dialog.js +2 -2
  199. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  200. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  201. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  202. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -2
  203. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  204. package/dist/components/overlays/Dialog/context.js +1 -1
  205. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  206. package/dist/components/overlays/Modal/Modal.js +7 -7
  207. package/dist/components/overlays/Modal/Modal.js.map +1 -1
  208. package/dist/components/overlays/Modal/OpenTransitionContext.js +12 -0
  209. package/dist/components/overlays/Modal/OpenTransitionContext.js.map +1 -0
  210. package/dist/components/overlays/Modal/Overlay.js +48 -21
  211. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  212. package/dist/components/overlays/Modal/Popover.js +10 -14
  213. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  214. package/dist/components/overlays/Modal/Tray.js +7 -7
  215. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  216. package/dist/components/overlays/Modal/Underlay.js +1 -1
  217. package/dist/components/overlays/Modal/types.d.ts +1 -1
  218. package/dist/components/overlays/Notifications/Notification.js +1 -1
  219. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  220. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  221. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  222. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  223. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  224. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  225. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  226. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  227. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  228. package/dist/components/overlays/Notifications/index.js +1 -1
  229. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  230. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  231. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  232. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  233. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  234. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  235. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  236. package/dist/components/overlays/Toast/index.js +1 -1
  237. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  238. package/dist/components/overlays/Toast/useToast.js +1 -1
  239. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  240. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  241. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  242. package/dist/components/overlays/Tooltip/context.js +1 -1
  243. package/dist/components/portal/Portal.js +1 -1
  244. package/dist/components/portal/PortalProvider.js +1 -1
  245. package/dist/components/portal/usePortal.js +1 -1
  246. package/dist/components/shared/InvalidIcon.js +1 -1
  247. package/dist/components/shared/ValidIcon.js +1 -1
  248. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  249. package/dist/components/status/Spin/Cube.js +1 -1
  250. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  251. package/dist/components/status/Spin/Spin.js +1 -1
  252. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  253. package/dist/data/item-themes.js +1 -1
  254. package/dist/data/themes.js +1 -1
  255. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  256. package/dist/icons/AdjustmentsIcon.js +1 -1
  257. package/dist/icons/AiIcon.js +1 -1
  258. package/dist/icons/AreaChartIcon.js +1 -1
  259. package/dist/icons/BackwardIcon.js +1 -1
  260. package/dist/icons/BarChartIcon.js +1 -1
  261. package/dist/icons/BellFilledIcon.js +1 -1
  262. package/dist/icons/BellIcon.js +1 -1
  263. package/dist/icons/BooleanIcon.js +1 -1
  264. package/dist/icons/CalendarEditIcon.js +1 -1
  265. package/dist/icons/CalendarIcon.js +1 -1
  266. package/dist/icons/CaretDownIcon.js +1 -1
  267. package/dist/icons/CaretUpIcon.js +1 -1
  268. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  269. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  270. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  271. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  272. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  273. package/dist/icons/ChartBarLineIcon.js +1 -1
  274. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  275. package/dist/icons/ChartBarStackedIcon.js +1 -1
  276. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  277. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  278. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  279. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  280. package/dist/icons/ChartBubbleIcon.js +1 -1
  281. package/dist/icons/ChartDonut2Icon.js +1 -1
  282. package/dist/icons/ChartFunnelIcon.js +1 -1
  283. package/dist/icons/ChartHeatmapIcon.js +1 -1
  284. package/dist/icons/ChartKPIIcon.js +1 -1
  285. package/dist/icons/ChartPie2Icon.js +1 -1
  286. package/dist/icons/ChartScatterIcon.js +1 -1
  287. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  288. package/dist/icons/CheckCircleIcon.js +1 -1
  289. package/dist/icons/CheckIcon.js +1 -1
  290. package/dist/icons/CircleFilledIcon.js +1 -1
  291. package/dist/icons/ClearIcon.js +1 -1
  292. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  293. package/dist/icons/CloseCircleIcon.js +1 -1
  294. package/dist/icons/CloseIcon.js +1 -1
  295. package/dist/icons/CodeIcon.js +1 -1
  296. package/dist/icons/ColumnTotalIcon.js +1 -1
  297. package/dist/icons/CopyIcon.js +1 -1
  298. package/dist/icons/CountIcon.js +1 -1
  299. package/dist/icons/CubeIcon.js +1 -1
  300. package/dist/icons/CubePauseIcon.js +1 -1
  301. package/dist/icons/CubePlayIcon.js +1 -1
  302. package/dist/icons/CurrencyDollarIcon.js +1 -1
  303. package/dist/icons/DangerIcon.js +1 -1
  304. package/dist/icons/DashboardIcon.js +1 -1
  305. package/dist/icons/DatabaseIcon.js +1 -1
  306. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  307. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  308. package/dist/icons/DirectionIcon.js +1 -1
  309. package/dist/icons/DonutIcon.js +1 -1
  310. package/dist/icons/DownIcon.js +1 -1
  311. package/dist/icons/EditIcon.js +1 -1
  312. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  313. package/dist/icons/ExclamationCircleIcon.js +1 -1
  314. package/dist/icons/ExclamationIcon.js +1 -1
  315. package/dist/icons/EyeIcon.js +1 -1
  316. package/dist/icons/EyeInvisibleIcon.js +1 -1
  317. package/dist/icons/FilterIcon.js +1 -1
  318. package/dist/icons/FolderFilledIcon.js +1 -1
  319. package/dist/icons/FolderIcon.js +1 -1
  320. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  321. package/dist/icons/FolderOpenIcon.js +1 -1
  322. package/dist/icons/ForwardIcon.js +1 -1
  323. package/dist/icons/HierarchyIcon.js +1 -1
  324. package/dist/icons/HierarchyOpenIcon.js +1 -1
  325. package/dist/icons/Icon.js +1 -1
  326. package/dist/icons/InfoCircleIcon.js +1 -1
  327. package/dist/icons/InfoIcon.js +1 -1
  328. package/dist/icons/KeyIcon.js +1 -1
  329. package/dist/icons/LeftIcon.js +1 -1
  330. package/dist/icons/LineChartIcon.js +1 -1
  331. package/dist/icons/LoadingIcon.js +1 -1
  332. package/dist/icons/LockFilledIcon.js +1 -1
  333. package/dist/icons/LockIcon.js +1 -1
  334. package/dist/icons/MoreIcon.js +1 -1
  335. package/dist/icons/NotAllowedIcon.js +1 -1
  336. package/dist/icons/Number123Icon.js +1 -1
  337. package/dist/icons/NumberIcon.js +1 -1
  338. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  339. package/dist/icons/PauseCircleIcon.js +1 -1
  340. package/dist/icons/PauseIcon.js +1 -1
  341. package/dist/icons/PercentageIcon.js +1 -1
  342. package/dist/icons/PieChartIcon.js +1 -1
  343. package/dist/icons/PlayCircleIcon.js +1 -1
  344. package/dist/icons/PlayIcon.js +1 -1
  345. package/dist/icons/PlusIcon.js +1 -1
  346. package/dist/icons/ProgressBarIcon.js +1 -1
  347. package/dist/icons/ReloadIcon.js +1 -1
  348. package/dist/icons/ReportIcon.js +1 -1
  349. package/dist/icons/ReturnIcon.js +1 -1
  350. package/dist/icons/RightIcon.js +1 -1
  351. package/dist/icons/RowTotalsIcon.js +1 -1
  352. package/dist/icons/SchemeIcon.js +1 -1
  353. package/dist/icons/SearchIcon.js +1 -1
  354. package/dist/icons/SemanticQueryIcon.js +1 -1
  355. package/dist/icons/SettingsIcon.js +1 -1
  356. package/dist/icons/ShieldFilledIcon.js +1 -1
  357. package/dist/icons/ShieldIcon.js +1 -1
  358. package/dist/icons/SlashIcon.js +1 -1
  359. package/dist/icons/SparklesIcon.js +1 -1
  360. package/dist/icons/SqlIcon.js +1 -1
  361. package/dist/icons/StatsIcon.js +1 -1
  362. package/dist/icons/StopIcon.js +1 -1
  363. package/dist/icons/StringIcon.js +1 -1
  364. package/dist/icons/SubtotalsIcon.js +1 -1
  365. package/dist/icons/SwitchIcon.js +1 -1
  366. package/dist/icons/TableIcon.js +1 -1
  367. package/dist/icons/ThumbsDownIcon.js +1 -1
  368. package/dist/icons/ThumbsUpIcon.js +1 -1
  369. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  370. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  371. package/dist/icons/ThunderboltIcon.js +1 -1
  372. package/dist/icons/TimeIcon.js +1 -1
  373. package/dist/icons/TrashIcon.js +1 -1
  374. package/dist/icons/UnlockIcon.js +1 -1
  375. package/dist/icons/UpIcon.js +1 -1
  376. package/dist/icons/UserGroupIcon.js +1 -1
  377. package/dist/icons/UserIcon.js +1 -1
  378. package/dist/icons/UserLockIcon.js +1 -1
  379. package/dist/icons/ViewIcon.js +1 -1
  380. package/dist/icons/WarningFilledIcon.js +1 -1
  381. package/dist/icons/WarningIcon.js +1 -1
  382. package/dist/icons/wrap-icon.js +1 -1
  383. package/dist/index.d.ts +1 -1
  384. package/dist/index.js +2 -2
  385. package/dist/provider.js +1 -1
  386. package/dist/providers/TrackingProvider.js +1 -1
  387. package/dist/providers/navigationAdapter.default.js +1 -1
  388. package/dist/tokens/base.js +1 -1
  389. package/dist/tokens/colors.js +1 -1
  390. package/dist/tokens/index.d.ts +1 -1
  391. package/dist/tokens/index.js +1 -1
  392. package/dist/tokens/layout.js +1 -1
  393. package/dist/tokens/shadows.js +1 -1
  394. package/dist/tokens/sizes.js +1 -1
  395. package/dist/tokens/spacing.js +1 -1
  396. package/dist/tokens/typography.js +1 -1
  397. package/dist/utils/ResizeSensor.js +1 -1
  398. package/dist/utils/is-dev-env.js +1 -1
  399. package/dist/utils/modules.js +1 -1
  400. package/dist/utils/promise.js +1 -1
  401. package/dist/utils/raf.js +1 -1
  402. package/dist/utils/random.js +1 -1
  403. package/dist/utils/range.js +1 -1
  404. package/dist/utils/react/RenderCache.js +1 -1
  405. package/dist/utils/react/Slots.js +1 -1
  406. package/dist/utils/react/chain.js +1 -1
  407. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  408. package/dist/utils/react/index.js +1 -1
  409. package/dist/utils/react/interactions.js +1 -1
  410. package/dist/utils/react/isTextOnly.js +1 -1
  411. package/dist/utils/react/mapProps.js +1 -1
  412. package/dist/utils/react/mergeProps.js +1 -1
  413. package/dist/utils/react/nullableValue.js +1 -1
  414. package/dist/utils/react/resolveIcon.js +1 -1
  415. package/dist/utils/react/sharedStore.js +1 -1
  416. package/dist/utils/react/useCombinedRefs.js +1 -1
  417. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  418. package/dist/utils/react/useEventBus.js +1 -1
  419. package/dist/utils/react/useId.js +1 -1
  420. package/dist/utils/react/useIsDarwin.js +1 -1
  421. package/dist/utils/react/useKeySymbols.js +1 -1
  422. package/dist/utils/react/useLayoutEffect.d.ts +1 -1
  423. package/dist/utils/react/useLayoutEffect.js +1 -1
  424. package/dist/utils/react/useLocalStorage.js +1 -1
  425. package/dist/utils/react/useMergeStyles.js +1 -1
  426. package/dist/utils/react/useQaProps.js +1 -1
  427. package/dist/utils/react/useViewportSize.js +1 -1
  428. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  429. package/dist/utils/selection.js +1 -1
  430. package/dist/utils/styles.js +1 -1
  431. package/dist/utils/tree.js +1 -1
  432. package/dist/utils/warnings.js +1 -1
  433. package/dist/version.js +2 -2
  434. package/package.json +1 -3
  435. package/dist/components/overlays/Modal/OpenTransition.js +0 -39
  436. package/dist/components/overlays/Modal/OpenTransition.js.map +0 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | Cube Dev Team */
2
2
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
3
3
  import { CloseIcon } from "../../../icons/CloseIcon.js";
4
4
  import { MoreIcon } from "../../../icons/MoreIcon.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | Cube Dev Team */
2
2
  import { _ItemButton } from "../../actions/ItemButton/ItemButton.js";
3
3
  import { useOptionalTabsContext } from "./TabsContext.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | Cube Dev Team */
2
2
  import { _Item } from "../../content/Item/Item.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | Cube Dev Team */
2
2
  //#region src/components/navigation/Tabs/types.ts
3
3
  /**
4
4
  * Size mapping for radio type tabs.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | Cube Dev Team */
2
2
  import { chainRaf } from "../../../utils/raf.js";
3
3
  import { useCallback, useState } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
3
3
  import { Block } from "../../Block.js";
4
4
  import { Space } from "../../layout/Space.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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,9 +1,9 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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";
5
5
  import { CloseIcon } from "../../../icons/CloseIcon.js";
6
- import { useOpenTransitionContext } from "../Modal/OpenTransition.js";
6
+ import { useOpenTransitionContext } from "../Modal/OpenTransitionContext.js";
7
7
  import { _ItemButton } from "../../actions/ItemButton/ItemButton.js";
8
8
  import { useDialogContext } from "./context.js";
9
9
  import { BASE_STYLES, BLOCK_STYLES, DIMENSION_STYLES, FLOW_STYLES, tasty } from "@tenphi/tasty";
@@ -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, useRef } 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/OpenTransition';\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: '#white',\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 = isEntered && context.type !== 'panel';\n\n // Track the element that was focused before the dialog opened\n // This handles hideOnClose case where FocusScope doesn't unmount\n const previouslyFocusedRef = useRef<Element | null>(null);\n\n // Capture the focused element when dialog opens\n useEffect(() => {\n if (context.isOpen) {\n previouslyFocusedRef.current = document.activeElement;\n }\n }, [context.isOpen]);\n\n // Restore focus when dialog closes (for hideOnClose case where component stays mounted)\n useEffect(() => {\n if (!context.isOpen && previouslyFocusedRef.current) {\n const elementToFocus = previouslyFocusedRef.current as HTMLElement;\n\n // Use setTimeout to ensure this runs after the close transition\n setTimeout(() => {\n elementToFocus?.focus?.();\n });\n previouslyFocusedRef.current = null;\n }\n }, [context.isOpen]);\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 useEffect(() => {\n if (contextProps.isOpen) {\n setTimeout(() => {\n if (\n domRef.current &&\n !domRef.current.contains(document.activeElement)\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) {\n priorityElement.focus();\n } else {\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 }\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, useRef } 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: '#white',\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 = isEntered && context.type !== 'panel';\n\n // Track the element that was focused before the dialog opened\n // This handles hideOnClose case where FocusScope doesn't unmount\n const previouslyFocusedRef = useRef<Element | null>(null);\n\n // Capture the focused element when dialog opens\n useEffect(() => {\n if (context.isOpen) {\n previouslyFocusedRef.current = document.activeElement;\n }\n }, [context.isOpen]);\n\n // Restore focus when dialog closes (for hideOnClose case where component stays mounted)\n useEffect(() => {\n if (!context.isOpen && previouslyFocusedRef.current) {\n const elementToFocus = previouslyFocusedRef.current as HTMLElement;\n\n // Use setTimeout to ensure this runs after the close transition\n setTimeout(() => {\n elementToFocus?.focus?.();\n });\n previouslyFocusedRef.current = null;\n }\n }, [context.isOpen]);\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 useEffect(() => {\n if (contextProps.isOpen) {\n setTimeout(() => {\n if (\n domRef.current &&\n !domRef.current.contains(document.activeElement)\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) {\n priorityElement.focus();\n } else {\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 }\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.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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";
@@ -134,7 +134,6 @@ function PopoverTrigger(allProps) {
134
134
  arrowProps,
135
135
  isKeyboardDismissDisabled,
136
136
  hideArrow,
137
- updatePosition,
138
137
  shouldCloseOnInteractOutside,
139
138
  onClose,
140
139
  children: typeof content === "function" ? content(state.close) : content
@@ -1 +1 @@
1
- {"version":3,"file":"DialogTrigger.js","names":["Modal","Tray","Popover"],"sources":["../../../../src/components/overlays/Dialog/DialogTrigger.tsx"],"sourcesContent":["import { PressResponder } from '@react-aria/interactions';\nimport { useMediaQuery } from '@react-spectrum/utils';\nimport { Styles } from '@tenphi/tasty';\nimport { Fragment, ReactElement, RefObject, useEffect, useRef } from 'react';\nimport {\n OverlayTriggerProps,\n Placement,\n PositionProps,\n useOverlayPosition,\n useOverlayTrigger,\n} from 'react-aria';\nimport { OverlayTriggerState, useOverlayTriggerState } from 'react-stately';\n\nimport { useCombinedRefs } from '../../../utils/react/index';\nimport { Modal, Popover, Tray, WithCloseBehavior } from '../Modal';\n\nimport { DialogContext } from './context';\n\nexport type CubeDialogClose = (close: () => void) => ReactElement;\n\nexport interface CubeDialogTriggerProps\n extends OverlayTriggerProps,\n PositionProps,\n WithCloseBehavior {\n /** The Dialog and its trigger element. See the DialogTrigger [Content section](#content) for more information on what to provide as children. */\n children: [\n ReactElement | ((state: OverlayTriggerState) => ReactElement),\n CubeDialogClose | ReactElement,\n ];\n /**\n * The type of Dialog that should be rendered. See the DialogTrigger [types section](#dialog-types) for an explanation on each.\n * @default 'modal'\n */\n type?:\n | 'modal'\n | 'popover'\n | 'tray'\n | 'fullscreen'\n | 'fullscreenTakeover'\n | 'panel';\n /** The type of Dialog that should be rendered when on a mobile device. See DialogTrigger [types section](#dialog-types) for an explanation on each. */\n mobileType?:\n | 'modal'\n | 'tray'\n | 'fullscreen'\n | 'fullscreenTakeover'\n | 'panel'\n | 'popover';\n placement?: Placement;\n /**\n * Whether a popover type Dialog's arrow should be hidden.\n */\n hideArrow?: boolean;\n /** The ref of the element the Dialog should visually attach itself to. Defaults to the trigger button if not defined. */\n targetRef?: RefObject<HTMLElement | null>;\n /** Whether a modal type Dialog should be dismissable. */\n isDismissable?: boolean;\n /** Whether pressing the escape key to close the dialog should be disabled. */\n isKeyboardDismissDisabled?: boolean;\n /** The screen breakpoint for the mobile type */\n mobileViewport?: number;\n /** The style map for the overlay **/\n styles?: Styles;\n shouldCloseOnInteractOutside?: (element: Element) => boolean;\n onDismiss?: (action?: string) => void;\n isOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n defaultOpen?: boolean;\n shouldFlip?: boolean;\n shouldUpdatePosition?: boolean;\n /** Minimum padding in pixels between the popover and viewport edges */\n containerPadding?: number;\n}\n\n/**\n * DialogTrigger serves as a wrapper around a Dialog and its associated trigger, linking the Dialog's\n * open state with the trigger's press state. Additionally, it allows you to customize the type and\n * positioning of the Dialog.\n */\nexport function DialogTrigger(props: CubeDialogTriggerProps) {\n let {\n children,\n type = 'modal',\n mobileType = type === 'popover' ? 'modal' : type,\n hideArrow,\n targetRef,\n onDismiss,\n isDismissable = true,\n isKeyboardDismissDisabled,\n styles,\n mobileViewport = 700,\n hideOnClose,\n shouldCloseOnInteractOutside,\n ...positionProps\n } = props;\n\n if (!Array.isArray(children) || children.length > 2) {\n throw new Error('DialogTrigger must have exactly 2 children');\n }\n // if a function is passed as the second child, it won't appear in toArray\n let [trigger, content] = children;\n\n // On small devices, show a modal or tray instead of a popover.\n let isMobile = useMediaQuery(`(max-width: ${mobileViewport}px)`);\n if (isMobile) {\n // handle cases where desktop popovers need a close button for the mobile modal view\n if (type !== 'modal' && mobileType === 'modal') {\n isDismissable = true;\n }\n\n type = mobileType;\n }\n\n let state = useOverlayTriggerState(props);\n\n if (typeof trigger === 'function') {\n trigger = trigger(state);\n }\n\n let wasOpen = useRef(false);\n let isExiting = useRef(false);\n let onExiting = () => (isExiting.current = true);\n let onExited = () => (isExiting.current = false);\n\n wasOpen.current = state.isOpen;\n\n useEffect(() => {\n return () => {\n if (\n (wasOpen.current || isExiting.current) &&\n type !== 'popover' &&\n type !== 'tray'\n ) {\n console.warn(\n 'CubeUIKit: A DialogTrigger unmounted while open. This is likely due to being placed within a trigger that unmounts or inside a conditional. Consider using a DialogContainer instead.',\n );\n }\n };\n }, []);\n\n function onClose(action) {\n if (isDismissable) {\n onDismiss && onDismiss(action);\n state.close();\n }\n }\n\n if (type === 'popover') {\n return (\n <PopoverTrigger\n {...positionProps}\n hideOnClose={hideOnClose}\n state={state}\n styles={styles}\n targetRef={targetRef}\n trigger={trigger}\n content={content}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n hideArrow={hideArrow}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n onClose={onClose}\n />\n );\n }\n\n let renderOverlay = () => {\n switch (type) {\n case 'panel':\n case 'fullscreen':\n case 'fullscreenTakeover':\n case 'modal':\n return (\n <Modal\n hideOnClose={hideOnClose}\n isOpen={state.isOpen}\n isDismissable={isDismissable}\n type={type}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n styles={styles}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n onClose={onClose}\n onExiting={onExiting}\n onExited={onExited}\n >\n {typeof content === 'function' ? content(state.close) : content}\n </Modal>\n );\n case 'tray':\n return (\n <Tray\n hideOnClose={hideOnClose}\n isOpen={state.isOpen}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n styles={styles}\n onClose={onClose}\n >\n {typeof content === 'function' ? content(state.close) : content}\n </Tray>\n );\n }\n };\n\n return (\n <DialogTriggerBase\n type={type}\n state={state}\n isDismissable={isDismissable}\n trigger={trigger}\n overlay={renderOverlay()}\n hideOnClose={hideOnClose}\n onClose={onClose}\n />\n );\n}\n\nfunction PopoverTrigger(allProps) {\n let {\n state,\n styles,\n targetRef,\n trigger,\n content,\n hideArrow,\n onClose,\n isKeyboardDismissDisabled,\n hideOnClose,\n shouldCloseOnInteractOutside,\n keepOpenOnScroll,\n ...props\n } = allProps;\n\n let triggerRef = useRef<HTMLButtonElement>(null);\n let overlayRef = useRef<HTMLDivElement>(null);\n\n let {\n overlayProps: popoverProps,\n placement,\n arrowProps,\n updatePosition,\n } = useOverlayPosition({\n targetRef: targetRef || triggerRef,\n overlayRef: overlayRef,\n placement: props.placement,\n containerPadding: props.containerPadding,\n offset: props.offset || 8,\n crossOffset: props.crossOffset,\n shouldFlip: props.shouldFlip,\n shouldUpdatePosition: props.shouldUpdatePosition,\n isOpen: state.isOpen,\n });\n\n let overlayTriggerState = state;\n\n if (keepOpenOnScroll) {\n overlayTriggerState = { ...state, close: updatePosition };\n }\n\n let { triggerProps, overlayProps } = useOverlayTrigger(\n { type: 'dialog' },\n overlayTriggerState,\n triggerRef,\n );\n\n let triggerPropsWithRef = {\n ...triggerProps,\n ref: targetRef ? undefined : triggerRef,\n };\n\n let overlay = (\n <Popover\n ref={overlayRef}\n styles={styles}\n hideOnClose={hideOnClose}\n isOpen={state.isOpen}\n style={popoverProps.style}\n placement={placement}\n arrowProps={arrowProps}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n hideArrow={hideArrow}\n updatePosition={updatePosition}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n onClose={onClose}\n >\n {typeof content === 'function' ? content(state.close) : content}\n </Popover>\n );\n\n return (\n <DialogTriggerBase\n type=\"popover\"\n state={state}\n triggerProps={triggerPropsWithRef}\n dialogProps={overlayProps}\n trigger={trigger}\n overlay={overlay}\n onClose={onClose}\n />\n );\n}\n\nfunction DialogTriggerBase(props: any) {\n const ref = useCombinedRefs<HTMLElement>(props.ref);\n const wasOpenRef = useRef(false);\n\n let {\n type,\n state,\n onClose,\n isDismissable,\n dialogProps = {},\n triggerProps = {},\n overlay,\n trigger,\n } = props;\n\n let context = {\n type,\n onClose,\n isDismissable,\n isOpen: state.isOpen,\n ...dialogProps,\n };\n\n // Restore focus manually when the dialog closes\n useEffect(() => {\n if (!state.isOpen && wasOpenRef.current) {\n wasOpenRef.current = false;\n ref.current?.focus();\n } else if (state.isOpen) {\n wasOpenRef.current = true;\n }\n }, [state.isOpen]);\n\n return (\n <Fragment>\n <PressResponder\n ref={ref}\n {...triggerProps}\n isPressed={\n state.isOpen &&\n type !== 'modal' &&\n type !== 'fullscreen' &&\n type !== 'fullscreenTakeover'\n }\n onPress={state.toggle}\n >\n {trigger}\n </PressResponder>\n <DialogContext.Provider value={context}>{overlay}</DialogContext.Provider>\n </Fragment>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DialogTrigger.js","names":["Modal","Tray","Popover"],"sources":["../../../../src/components/overlays/Dialog/DialogTrigger.tsx"],"sourcesContent":["import { PressResponder } from '@react-aria/interactions';\nimport { useMediaQuery } from '@react-spectrum/utils';\nimport { Styles } from '@tenphi/tasty';\nimport { Fragment, ReactElement, RefObject, useEffect, useRef } from 'react';\nimport {\n OverlayTriggerProps,\n Placement,\n PositionProps,\n useOverlayPosition,\n useOverlayTrigger,\n} from 'react-aria';\nimport { OverlayTriggerState, useOverlayTriggerState } from 'react-stately';\n\nimport { useCombinedRefs } from '../../../utils/react/index';\nimport { Modal, Popover, Tray, WithCloseBehavior } from '../Modal';\n\nimport { DialogContext } from './context';\n\nexport type CubeDialogClose = (close: () => void) => ReactElement;\n\nexport interface CubeDialogTriggerProps\n extends OverlayTriggerProps,\n PositionProps,\n WithCloseBehavior {\n /** The Dialog and its trigger element. See the DialogTrigger [Content section](#content) for more information on what to provide as children. */\n children: [\n ReactElement | ((state: OverlayTriggerState) => ReactElement),\n CubeDialogClose | ReactElement,\n ];\n /**\n * The type of Dialog that should be rendered. See the DialogTrigger [types section](#dialog-types) for an explanation on each.\n * @default 'modal'\n */\n type?:\n | 'modal'\n | 'popover'\n | 'tray'\n | 'fullscreen'\n | 'fullscreenTakeover'\n | 'panel';\n /** The type of Dialog that should be rendered when on a mobile device. See DialogTrigger [types section](#dialog-types) for an explanation on each. */\n mobileType?:\n | 'modal'\n | 'tray'\n | 'fullscreen'\n | 'fullscreenTakeover'\n | 'panel'\n | 'popover';\n placement?: Placement;\n /**\n * Whether a popover type Dialog's arrow should be hidden.\n */\n hideArrow?: boolean;\n /** The ref of the element the Dialog should visually attach itself to. Defaults to the trigger button if not defined. */\n targetRef?: RefObject<HTMLElement | null>;\n /** Whether a modal type Dialog should be dismissable. */\n isDismissable?: boolean;\n /** Whether pressing the escape key to close the dialog should be disabled. */\n isKeyboardDismissDisabled?: boolean;\n /** The screen breakpoint for the mobile type */\n mobileViewport?: number;\n /** The style map for the overlay **/\n styles?: Styles;\n shouldCloseOnInteractOutside?: (element: Element) => boolean;\n onDismiss?: (action?: string) => void;\n isOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n defaultOpen?: boolean;\n shouldFlip?: boolean;\n shouldUpdatePosition?: boolean;\n /** Minimum padding in pixels between the popover and viewport edges */\n containerPadding?: number;\n}\n\n/**\n * DialogTrigger serves as a wrapper around a Dialog and its associated trigger, linking the Dialog's\n * open state with the trigger's press state. Additionally, it allows you to customize the type and\n * positioning of the Dialog.\n */\nexport function DialogTrigger(props: CubeDialogTriggerProps) {\n let {\n children,\n type = 'modal',\n mobileType = type === 'popover' ? 'modal' : type,\n hideArrow,\n targetRef,\n onDismiss,\n isDismissable = true,\n isKeyboardDismissDisabled,\n styles,\n mobileViewport = 700,\n hideOnClose,\n shouldCloseOnInteractOutside,\n ...positionProps\n } = props;\n\n if (!Array.isArray(children) || children.length > 2) {\n throw new Error('DialogTrigger must have exactly 2 children');\n }\n // if a function is passed as the second child, it won't appear in toArray\n let [trigger, content] = children;\n\n // On small devices, show a modal or tray instead of a popover.\n let isMobile = useMediaQuery(`(max-width: ${mobileViewport}px)`);\n if (isMobile) {\n // handle cases where desktop popovers need a close button for the mobile modal view\n if (type !== 'modal' && mobileType === 'modal') {\n isDismissable = true;\n }\n\n type = mobileType;\n }\n\n let state = useOverlayTriggerState(props);\n\n if (typeof trigger === 'function') {\n trigger = trigger(state);\n }\n\n let wasOpen = useRef(false);\n let isExiting = useRef(false);\n let onExiting = () => (isExiting.current = true);\n let onExited = () => (isExiting.current = false);\n\n wasOpen.current = state.isOpen;\n\n useEffect(() => {\n return () => {\n if (\n (wasOpen.current || isExiting.current) &&\n type !== 'popover' &&\n type !== 'tray'\n ) {\n console.warn(\n 'CubeUIKit: A DialogTrigger unmounted while open. This is likely due to being placed within a trigger that unmounts or inside a conditional. Consider using a DialogContainer instead.',\n );\n }\n };\n }, []);\n\n function onClose(action) {\n if (isDismissable) {\n onDismiss && onDismiss(action);\n state.close();\n }\n }\n\n if (type === 'popover') {\n return (\n <PopoverTrigger\n {...positionProps}\n hideOnClose={hideOnClose}\n state={state}\n styles={styles}\n targetRef={targetRef}\n trigger={trigger}\n content={content}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n hideArrow={hideArrow}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n onClose={onClose}\n />\n );\n }\n\n let renderOverlay = () => {\n switch (type) {\n case 'panel':\n case 'fullscreen':\n case 'fullscreenTakeover':\n case 'modal':\n return (\n <Modal\n hideOnClose={hideOnClose}\n isOpen={state.isOpen}\n isDismissable={isDismissable}\n type={type}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n styles={styles}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n onClose={onClose}\n onExiting={onExiting}\n onExited={onExited}\n >\n {typeof content === 'function' ? content(state.close) : content}\n </Modal>\n );\n case 'tray':\n return (\n <Tray\n hideOnClose={hideOnClose}\n isOpen={state.isOpen}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n styles={styles}\n onClose={onClose}\n >\n {typeof content === 'function' ? content(state.close) : content}\n </Tray>\n );\n }\n };\n\n return (\n <DialogTriggerBase\n type={type}\n state={state}\n isDismissable={isDismissable}\n trigger={trigger}\n overlay={renderOverlay()}\n hideOnClose={hideOnClose}\n onClose={onClose}\n />\n );\n}\n\nfunction PopoverTrigger(allProps) {\n let {\n state,\n styles,\n targetRef,\n trigger,\n content,\n hideArrow,\n onClose,\n isKeyboardDismissDisabled,\n hideOnClose,\n shouldCloseOnInteractOutside,\n keepOpenOnScroll,\n ...props\n } = allProps;\n\n let triggerRef = useRef<HTMLButtonElement>(null);\n let overlayRef = useRef<HTMLDivElement>(null);\n\n let {\n overlayProps: popoverProps,\n placement,\n arrowProps,\n updatePosition,\n } = useOverlayPosition({\n targetRef: targetRef || triggerRef,\n overlayRef: overlayRef,\n placement: props.placement,\n containerPadding: props.containerPadding,\n offset: props.offset || 8,\n crossOffset: props.crossOffset,\n shouldFlip: props.shouldFlip,\n shouldUpdatePosition: props.shouldUpdatePosition,\n isOpen: state.isOpen,\n });\n\n let overlayTriggerState = state;\n\n if (keepOpenOnScroll) {\n overlayTriggerState = { ...state, close: updatePosition };\n }\n\n let { triggerProps, overlayProps } = useOverlayTrigger(\n { type: 'dialog' },\n overlayTriggerState,\n triggerRef,\n );\n\n let triggerPropsWithRef = {\n ...triggerProps,\n ref: targetRef ? undefined : triggerRef,\n };\n\n let overlay = (\n <Popover\n ref={overlayRef}\n styles={styles}\n hideOnClose={hideOnClose}\n isOpen={state.isOpen}\n style={popoverProps.style}\n placement={placement}\n arrowProps={arrowProps}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n hideArrow={hideArrow}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n onClose={onClose}\n >\n {typeof content === 'function' ? content(state.close) : content}\n </Popover>\n );\n\n return (\n <DialogTriggerBase\n type=\"popover\"\n state={state}\n triggerProps={triggerPropsWithRef}\n dialogProps={overlayProps}\n trigger={trigger}\n overlay={overlay}\n onClose={onClose}\n />\n );\n}\n\nfunction DialogTriggerBase(props: any) {\n const ref = useCombinedRefs<HTMLElement>(props.ref);\n const wasOpenRef = useRef(false);\n\n let {\n type,\n state,\n onClose,\n isDismissable,\n dialogProps = {},\n triggerProps = {},\n overlay,\n trigger,\n } = props;\n\n let context = {\n type,\n onClose,\n isDismissable,\n isOpen: state.isOpen,\n ...dialogProps,\n };\n\n // Restore focus manually when the dialog closes\n useEffect(() => {\n if (!state.isOpen && wasOpenRef.current) {\n wasOpenRef.current = false;\n ref.current?.focus();\n } else if (state.isOpen) {\n wasOpenRef.current = true;\n }\n }, [state.isOpen]);\n\n return (\n <Fragment>\n <PressResponder\n ref={ref}\n {...triggerProps}\n isPressed={\n state.isOpen &&\n type !== 'modal' &&\n type !== 'fullscreen' &&\n type !== 'fullscreenTakeover'\n }\n onPress={state.toggle}\n >\n {trigger}\n </PressResponder>\n <DialogContext.Provider value={context}>{overlay}</DialogContext.Provider>\n </Fragment>\n );\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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";
@@ -36,9 +36,9 @@ const ModalWrapperElement = tasty({
36
36
  const ModalElement = tasty({ styles: {
37
37
  display: {
38
38
  "": "none",
39
- "entering | entered": "grid",
40
- exiting: "grid",
41
- exited: "none"
39
+ "enter | entered": "grid",
40
+ exit: "grid",
41
+ unmounted: "none"
42
42
  },
43
43
  zIndex: 10,
44
44
  height: {
@@ -92,9 +92,9 @@ let ModalWrapper = forwardRef(function ModalWrapper(props, ref) {
92
92
  styles,
93
93
  mods: {
94
94
  open: isOpen,
95
- entering: transitionState === "entering",
96
- exiting: transitionState === "exiting",
97
- exited: transitionState === "exited",
95
+ enter: transitionState === "enter",
96
+ exit: transitionState === "exit",
97
+ unmounted: transitionState === "unmounted",
98
98
  entered: transitionState === "entered"
99
99
  },
100
100
  "data-type": type,
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","names":["Overlay","Underlay","mergeProps"],"sources":["../../../../src/components/overlays/Modal/Modal.tsx"],"sourcesContent":["import { useDOMRef } from '@react-spectrum/utils';\nimport { BaseProps, Props, Styles, tasty } from '@tenphi/tasty';\nimport { forwardRef, ReactNode } from 'react';\nimport { useModal, useOverlay, usePreventScroll } from 'react-aria';\n\nimport { mergeProps } from '../../../utils/react';\n\nimport { Overlay } from './Overlay';\nimport { ModalProps, TransitionState, WithCloseBehavior } from './types';\nimport { Underlay } from './Underlay';\n\nexport const OVERLAY_WRAPPER_STYLES: Styles = {\n position: 'fixed',\n display: 'grid',\n left: 0,\n top: 0,\n placeItems: {\n '': 'center',\n 'type=fullscreen': 'center',\n 'type=fullscreenTakeover | type=panel': 'stretch',\n },\n boxSizing: 'border-box',\n width: '100vw',\n height: '100dvh',\n pointerEvents: 'none',\n zIndex: 10,\n transition: {\n '': 'visibility .5s steps(2, start)',\n open: 'visibility 0s linear',\n },\n};\n\nconst ModalWrapperElement = tasty({\n qa: 'ModalWrapper',\n styles: OVERLAY_WRAPPER_STYLES,\n});\n\nconst ModalElement = tasty({\n styles: {\n display: {\n '': 'none',\n 'entering | entered': 'grid',\n exiting: 'grid',\n exited: 'none',\n },\n zIndex: 10,\n height: {\n '': 'max 90dvh',\n 'type=fullscreenTakeover | type=panel': '100dvh 100dvh',\n 'type=fullscreen': '(100dvh - 8x) (100dvh - 8x)',\n 'type=panel': 'auto',\n },\n width: {\n '': '$min-dialog-size (100dvw - 8x)',\n 'type=panel': 'auto',\n },\n pointerEvents: 'none',\n transition: 'opacity .25s linear, transform .25s ease-in-out',\n transform: {\n '': 'initial',\n 'type=modal & !open': 'translate(0, -3x) scale(1, 1)',\n '(type^=fullscreen | type=panel) & !open':\n 'translate(0, 0) scale(1.02, 1.02)',\n },\n opacity: {\n '': 0,\n open: 0.9999,\n },\n },\n});\n\nexport interface CubeModalProps\n extends Omit<ModalProps, 'container' | 'type' | 'nodeRef'>,\n WithCloseBehavior {\n container?: HTMLElement;\n qa?: BaseProps['qa'];\n onClose?: (action?: string) => void;\n type?: 'modal' | 'fullscreen' | 'fullscreenTakeover' | 'panel';\n styles?: Styles;\n shouldCloseOnInteractOutside?: (element: Element) => boolean;\n}\n\nfunction Modal(props: CubeModalProps, ref) {\n let { qa, children, onClose, type, styles, ...otherProps } = props;\n let domRef = useDOMRef(ref);\n\n let { overlayProps, underlayProps } = useOverlay({ ...props }, domRef);\n\n return (\n <Overlay {...otherProps}>\n {type !== 'fullscreenTakeover' && type !== 'panel' && (\n <Underlay {...underlayProps} />\n )}\n <ModalWrapper\n ref={domRef}\n qa={qa}\n type={type}\n overlayProps={overlayProps}\n styles={styles}\n onClose={onClose}\n >\n {children}\n </ModalWrapper>\n </Overlay>\n );\n}\n\ninterface ModalWrapperProps extends TransitionState {\n children?: ReactNode;\n qa?: BaseProps['qa'];\n isOpen?: boolean;\n type?: 'modal' | 'fullscreen' | 'fullscreenTakeover' | 'panel';\n placement?: 'top' | 'bottom';\n styles?: Styles;\n overlayProps?: Props;\n onClose?: () => void;\n}\n\nlet ModalWrapper = forwardRef(function ModalWrapper(\n props: ModalWrapperProps,\n ref,\n) {\n let {\n qa,\n children,\n isOpen,\n type,\n placement,\n styles,\n overlayProps,\n transitionState,\n ...otherProps\n } = props;\n\n usePreventScroll({ isDisabled: transitionState !== 'entered' });\n\n let { modalProps } = useModal({ isDisabled: transitionState !== 'entered' });\n\n return (\n <ModalWrapperElement data-type={type} data-placement={placement}>\n <ModalElement\n qa={qa || 'Modal'}\n styles={styles}\n mods={{\n open: isOpen,\n entering: transitionState === 'entering',\n exiting: transitionState === 'exiting',\n exited: transitionState === 'exited',\n entered: transitionState === 'entered',\n }}\n data-type={type}\n data-placement={placement}\n {...mergeProps(otherProps, overlayProps, modalProps)}\n ref={ref}\n >\n {children}\n </ModalElement>\n </ModalWrapperElement>\n );\n});\n\nlet _Modal = forwardRef(Modal);\n\n_Modal.displayName = 'Modal';\n\nexport { _Modal as Modal };\n"],"mappings":";;;;;;;;;;;AAWA,MAAa,yBAAiC;CAC5C,UAAU;CACV,SAAS;CACT,MAAM;CACN,KAAK;CACL,YAAY;EACV,IAAI;EACJ,mBAAmB;EACnB,wCAAwC;EACzC;CACD,WAAW;CACX,OAAO;CACP,QAAQ;CACR,eAAe;CACf,QAAQ;CACR,YAAY;EACV,IAAI;EACJ,MAAM;EACP;CACF;AAED,MAAM,sBAAsB,MAAM;CAChC,IAAI;CACJ,QAAQ;CACT,CAAC;AAEF,MAAM,eAAe,MAAM,EACzB,QAAQ;CACN,SAAS;EACP,IAAI;EACJ,sBAAsB;EACtB,SAAS;EACT,QAAQ;EACT;CACD,QAAQ;CACR,QAAQ;EACN,IAAI;EACJ,wCAAwC;EACxC,mBAAmB;EACnB,cAAc;EACf;CACD,OAAO;EACL,IAAI;EACJ,cAAc;EACf;CACD,eAAe;CACf,YAAY;CACZ,WAAW;EACT,IAAI;EACJ,sBAAsB;EACtB,2CACE;EACH;CACD,SAAS;EACP,IAAI;EACJ,MAAM;EACP;CACF,EACF,CAAC;AAaF,SAAS,MAAM,OAAuB,KAAK;CACzC,IAAI,EAAE,IAAI,UAAU,SAAS,MAAM,QAAQ,GAAG,eAAe;CAC7D,IAAI,SAAS,UAAU,IAAI;CAE3B,IAAI,EAAE,cAAc,kBAAkB,WAAW,EAAE,GAAG,OAAO,EAAE,OAAO;AAEtE,QACE,qBAACA;EAAQ,GAAI;aACV,SAAS,wBAAwB,SAAS,WACzC,oBAACC,aAAS,GAAI,gBAAiB,EAEjC,oBAAC;GACC,KAAK;GACD;GACE;GACQ;GACN;GACC;GAER;IACY;GACP;;AAed,IAAI,eAAe,WAAW,SAAS,aACrC,OACA,KACA;CACA,IAAI,EACF,IACA,UACA,QACA,MACA,WACA,QACA,cACA,iBACA,GAAG,eACD;AAEJ,kBAAiB,EAAE,YAAY,oBAAoB,WAAW,CAAC;CAE/D,IAAI,EAAE,eAAe,SAAS,EAAE,YAAY,oBAAoB,WAAW,CAAC;AAE5E,QACE,oBAAC;EAAoB,aAAW;EAAM,kBAAgB;YACpD,oBAAC;GACC,IAAI,MAAM;GACF;GACR,MAAM;IACJ,MAAM;IACN,UAAU,oBAAoB;IAC9B,SAAS,oBAAoB;IAC7B,QAAQ,oBAAoB;IAC5B,SAAS,oBAAoB;IAC9B;GACD,aAAW;GACX,kBAAgB;GAChB,GAAIC,aAAW,YAAY,cAAc,WAAW;GAC/C;GAEJ;IACY;GACK;EAExB;AAEF,IAAI,SAAS,WAAW,MAAM;AAE9B,OAAO,cAAc"}
1
+ {"version":3,"file":"Modal.js","names":["Overlay","Underlay","mergeProps"],"sources":["../../../../src/components/overlays/Modal/Modal.tsx"],"sourcesContent":["import { useDOMRef } from '@react-spectrum/utils';\nimport { BaseProps, Props, Styles, tasty } from '@tenphi/tasty';\nimport { forwardRef, ReactNode } from 'react';\nimport { useModal, useOverlay, usePreventScroll } from 'react-aria';\n\nimport { mergeProps } from '../../../utils/react';\n\nimport { Overlay } from './Overlay';\nimport { ModalProps, TransitionState, WithCloseBehavior } from './types';\nimport { Underlay } from './Underlay';\n\nexport const OVERLAY_WRAPPER_STYLES: Styles = {\n position: 'fixed',\n display: 'grid',\n left: 0,\n top: 0,\n placeItems: {\n '': 'center',\n 'type=fullscreen': 'center',\n 'type=fullscreenTakeover | type=panel': 'stretch',\n },\n boxSizing: 'border-box',\n width: '100vw',\n height: '100dvh',\n pointerEvents: 'none',\n zIndex: 10,\n transition: {\n '': 'visibility .5s steps(2, start)',\n open: 'visibility 0s linear',\n },\n};\n\nconst ModalWrapperElement = tasty({\n qa: 'ModalWrapper',\n styles: OVERLAY_WRAPPER_STYLES,\n});\n\nconst ModalElement = tasty({\n styles: {\n display: {\n '': 'none',\n 'enter | entered': 'grid',\n exit: 'grid',\n unmounted: 'none',\n },\n zIndex: 10,\n height: {\n '': 'max 90dvh',\n 'type=fullscreenTakeover | type=panel': '100dvh 100dvh',\n 'type=fullscreen': '(100dvh - 8x) (100dvh - 8x)',\n 'type=panel': 'auto',\n },\n width: {\n '': '$min-dialog-size (100dvw - 8x)',\n 'type=panel': 'auto',\n },\n pointerEvents: 'none',\n transition: 'opacity .25s linear, transform .25s ease-in-out',\n transform: {\n '': 'initial',\n 'type=modal & !open': 'translate(0, -3x) scale(1, 1)',\n '(type^=fullscreen | type=panel) & !open':\n 'translate(0, 0) scale(1.02, 1.02)',\n },\n opacity: {\n '': 0,\n open: 0.9999,\n },\n },\n});\n\nexport interface CubeModalProps\n extends Omit<ModalProps, 'container' | 'type' | 'nodeRef'>,\n WithCloseBehavior {\n container?: HTMLElement;\n qa?: BaseProps['qa'];\n onClose?: (action?: string) => void;\n type?: 'modal' | 'fullscreen' | 'fullscreenTakeover' | 'panel';\n styles?: Styles;\n shouldCloseOnInteractOutside?: (element: Element) => boolean;\n}\n\nfunction Modal(props: CubeModalProps, ref) {\n let { qa, children, onClose, type, styles, ...otherProps } = props;\n let domRef = useDOMRef(ref);\n\n let { overlayProps, underlayProps } = useOverlay({ ...props }, domRef);\n\n return (\n <Overlay {...otherProps}>\n {type !== 'fullscreenTakeover' && type !== 'panel' && (\n <Underlay {...underlayProps} />\n )}\n <ModalWrapper\n ref={domRef}\n qa={qa}\n type={type}\n overlayProps={overlayProps}\n styles={styles}\n onClose={onClose}\n >\n {children}\n </ModalWrapper>\n </Overlay>\n );\n}\n\ninterface ModalWrapperProps extends TransitionState {\n children?: ReactNode;\n qa?: BaseProps['qa'];\n isOpen?: boolean;\n type?: 'modal' | 'fullscreen' | 'fullscreenTakeover' | 'panel';\n placement?: 'top' | 'bottom';\n styles?: Styles;\n overlayProps?: Props;\n onClose?: () => void;\n}\n\nlet ModalWrapper = forwardRef(function ModalWrapper(\n props: ModalWrapperProps,\n ref,\n) {\n let {\n qa,\n children,\n isOpen,\n type,\n placement,\n styles,\n overlayProps,\n transitionState,\n ...otherProps\n } = props;\n\n usePreventScroll({ isDisabled: transitionState !== 'entered' });\n\n let { modalProps } = useModal({ isDisabled: transitionState !== 'entered' });\n\n return (\n <ModalWrapperElement data-type={type} data-placement={placement}>\n <ModalElement\n qa={qa || 'Modal'}\n styles={styles}\n mods={{\n open: isOpen,\n enter: transitionState === 'enter',\n exit: transitionState === 'exit',\n unmounted: transitionState === 'unmounted',\n entered: transitionState === 'entered',\n }}\n data-type={type}\n data-placement={placement}\n {...mergeProps(otherProps, overlayProps, modalProps)}\n ref={ref}\n >\n {children}\n </ModalElement>\n </ModalWrapperElement>\n );\n});\n\nlet _Modal = forwardRef(Modal);\n\n_Modal.displayName = 'Modal';\n\nexport { _Modal as Modal };\n"],"mappings":";;;;;;;;;;;AAWA,MAAa,yBAAiC;CAC5C,UAAU;CACV,SAAS;CACT,MAAM;CACN,KAAK;CACL,YAAY;EACV,IAAI;EACJ,mBAAmB;EACnB,wCAAwC;EACzC;CACD,WAAW;CACX,OAAO;CACP,QAAQ;CACR,eAAe;CACf,QAAQ;CACR,YAAY;EACV,IAAI;EACJ,MAAM;EACP;CACF;AAED,MAAM,sBAAsB,MAAM;CAChC,IAAI;CACJ,QAAQ;CACT,CAAC;AAEF,MAAM,eAAe,MAAM,EACzB,QAAQ;CACN,SAAS;EACP,IAAI;EACJ,mBAAmB;EACnB,MAAM;EACN,WAAW;EACZ;CACD,QAAQ;CACR,QAAQ;EACN,IAAI;EACJ,wCAAwC;EACxC,mBAAmB;EACnB,cAAc;EACf;CACD,OAAO;EACL,IAAI;EACJ,cAAc;EACf;CACD,eAAe;CACf,YAAY;CACZ,WAAW;EACT,IAAI;EACJ,sBAAsB;EACtB,2CACE;EACH;CACD,SAAS;EACP,IAAI;EACJ,MAAM;EACP;CACF,EACF,CAAC;AAaF,SAAS,MAAM,OAAuB,KAAK;CACzC,IAAI,EAAE,IAAI,UAAU,SAAS,MAAM,QAAQ,GAAG,eAAe;CAC7D,IAAI,SAAS,UAAU,IAAI;CAE3B,IAAI,EAAE,cAAc,kBAAkB,WAAW,EAAE,GAAG,OAAO,EAAE,OAAO;AAEtE,QACE,qBAACA;EAAQ,GAAI;aACV,SAAS,wBAAwB,SAAS,WACzC,oBAACC,aAAS,GAAI,gBAAiB,EAEjC,oBAAC;GACC,KAAK;GACD;GACE;GACQ;GACN;GACC;GAER;IACY;GACP;;AAed,IAAI,eAAe,WAAW,SAAS,aACrC,OACA,KACA;CACA,IAAI,EACF,IACA,UACA,QACA,MACA,WACA,QACA,cACA,iBACA,GAAG,eACD;AAEJ,kBAAiB,EAAE,YAAY,oBAAoB,WAAW,CAAC;CAE/D,IAAI,EAAE,eAAe,SAAS,EAAE,YAAY,oBAAoB,WAAW,CAAC;AAE5E,QACE,oBAAC;EAAoB,aAAW;EAAM,kBAAgB;YACpD,oBAAC;GACC,IAAI,MAAM;GACF;GACR,MAAM;IACJ,MAAM;IACN,OAAO,oBAAoB;IAC3B,MAAM,oBAAoB;IAC1B,WAAW,oBAAoB;IAC/B,SAAS,oBAAoB;IAC9B;GACD,aAAW;GACX,kBAAgB;GAChB,GAAIC,aAAW,YAAY,cAAc,WAAW;GAC/C;GAEJ;IACY;GACK;EAExB;AAEF,IAAI,SAAS,WAAW,MAAM;AAE9B,OAAO,cAAc"}
@@ -0,0 +1,12 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | Cube Dev Team */
2
+ import { createContext, useContext } from "react";
3
+
4
+ //#region src/components/overlays/Modal/OpenTransitionContext.tsx
5
+ const OpenTransitionContext = createContext(null);
6
+ function useOpenTransitionContext() {
7
+ return useContext(OpenTransitionContext);
8
+ }
9
+
10
+ //#endregion
11
+ export { OpenTransitionContext, useOpenTransitionContext };
12
+ //# sourceMappingURL=OpenTransitionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenTransitionContext.js","names":[],"sources":["../../../../src/components/overlays/Modal/OpenTransitionContext.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport { TransitionStatus } from './types';\n\nconst OpenTransitionContext = createContext<{\n transitionState: TransitionStatus;\n} | null>(null);\n\nexport function useOpenTransitionContext() {\n return useContext(OpenTransitionContext);\n}\n\nexport { OpenTransitionContext };\n"],"mappings":";;;;AAIA,MAAM,wBAAwB,cAEpB,KAAK;AAEf,SAAgB,2BAA2B;AACzC,QAAO,WAAW,sBAAsB"}
@@ -1,38 +1,65 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | Cube Dev Team */
2
+ import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransition.js";
2
3
  import { Provider, useProviderProps } from "../../../provider.js";
3
- import { OpenTransition } from "./OpenTransition.js";
4
- import { forwardRef, useCallback, useState } from "react";
4
+ import { OpenTransitionContext } from "./OpenTransitionContext.js";
5
+ import { Children, cloneElement, forwardRef, useCallback, useState } from "react";
5
6
  import { jsx } from "react/jsx-runtime";
6
7
  import { createPortal } from "react-dom";
7
8
 
8
9
  //#region src/components/overlays/Modal/Overlay.tsx
10
+ const EXIT_DURATION = 350;
9
11
  function Overlay(props, ref) {
10
12
  let { children, isOpen, container = null, onEnter, onEntering, onEntered, onExit, onExiting, onExited, hideOnClose = false } = props;
11
13
  let [exited, setExited] = useState(!isOpen);
14
+ if (isOpen && exited) setExited(false);
12
15
  let { root } = useProviderProps({});
13
- let handleEntered = useCallback(() => {
14
- setExited(false);
15
- onEntered?.();
16
- }, [onEntered]);
17
- let handleExited = useCallback(() => {
18
- setExited(true);
19
- onExited?.();
20
- }, [onExited]);
16
+ let handlePhaseChange = useCallback((phase) => {
17
+ switch (phase) {
18
+ case "enter":
19
+ setExited(false);
20
+ onEnter?.();
21
+ onEntering?.();
22
+ break;
23
+ case "entered":
24
+ onEntered?.();
25
+ break;
26
+ case "exit":
27
+ onExit?.();
28
+ onExiting?.();
29
+ break;
30
+ case "unmounted":
31
+ setExited(true);
32
+ onExited?.();
33
+ break;
34
+ }
35
+ }, [
36
+ onEnter,
37
+ onEntering,
38
+ onEntered,
39
+ onExit,
40
+ onExiting,
41
+ onExited
42
+ ]);
21
43
  if (!(isOpen || !exited)) {
22
44
  if (!hideOnClose) return null;
23
45
  }
24
46
  return createPortal(/* @__PURE__ */ jsx(Provider, {
25
47
  ref,
26
- children: /* @__PURE__ */ jsx(OpenTransition, {
27
- appear: true,
28
- in: isOpen,
29
- onExit,
30
- onExiting,
31
- onExited: handleExited,
32
- onEnter,
33
- onEntering,
34
- onEntered: handleEntered,
35
- children
48
+ children: /* @__PURE__ */ jsx(DisplayTransition, {
49
+ animateOnMount: true,
50
+ isShown: !!isOpen,
51
+ exposeUnmounted: hideOnClose,
52
+ duration: EXIT_DURATION,
53
+ onPhaseChange: handlePhaseChange,
54
+ children: ({ phase, isShown }) => {
55
+ return /* @__PURE__ */ jsx(OpenTransitionContext.Provider, {
56
+ value: { transitionState: phase },
57
+ children: Children.map(children, (child) => child && cloneElement(child, {
58
+ isOpen: isShown,
59
+ transitionState: phase
60
+ }))
61
+ });
62
+ }
36
63
  })
37
64
  }), container || root || document.body);
38
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Overlay.js","names":[],"sources":["../../../../src/components/overlays/Modal/Overlay.tsx"],"sourcesContent":["import { Props } from '@tenphi/tasty';\nimport { forwardRef, useCallback, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Provider, useProviderProps } from '../../../provider';\n\nimport { OpenTransition } from './OpenTransition';\nimport { WithCloseBehavior } from './types';\n\nimport type { OverlayProps } from 'react-aria';\n\nexport interface CubeOverlayProps\n extends Omit<OverlayProps, 'container' | 'nodeRef'>,\n WithCloseBehavior {\n container?: HTMLElement | null;\n}\n\nfunction Overlay(props: CubeOverlayProps, ref) {\n let {\n children,\n isOpen,\n container = null,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n hideOnClose = false,\n } = props;\n let [exited, setExited] = useState(!isOpen);\n let { root } = useProviderProps({} as Props);\n\n let handleEntered = useCallback(() => {\n setExited(false);\n onEntered?.();\n }, [onEntered]);\n\n let handleExited = useCallback(() => {\n setExited(true);\n onExited?.();\n }, [onExited]);\n\n // Don't un-render the overlay while it's transitioning out.\n let mountOverlay = isOpen || !exited;\n\n if (!mountOverlay) {\n // Don't bother showing anything if we don't have to.\n if (!hideOnClose) {\n return null;\n }\n }\n\n let contents = (\n <Provider ref={ref}>\n <OpenTransition\n appear\n in={isOpen}\n onExit={onExit}\n onExiting={onExiting}\n onExited={handleExited}\n onEnter={onEnter}\n onEntering={onEntering}\n onEntered={handleEntered}\n >\n {children}\n </OpenTransition>\n </Provider>\n );\n\n return createPortal(contents, container || root || document.body);\n}\n\nlet _Overlay = forwardRef(Overlay);\n\n_Overlay.displayName = 'Overlay';\n\nexport { _Overlay as Overlay };\n"],"mappings":";;;;;;;;AAiBA,SAAS,QAAQ,OAAyB,KAAK;CAC7C,IAAI,EACF,UACA,QACA,YAAY,MACZ,SACA,YACA,WACA,QACA,WACA,UACA,cAAc,UACZ;CACJ,IAAI,CAAC,QAAQ,aAAa,SAAS,CAAC,OAAO;CAC3C,IAAI,EAAE,SAAS,iBAAiB,EAAE,CAAU;CAE5C,IAAI,gBAAgB,kBAAkB;AACpC,YAAU,MAAM;AAChB,eAAa;IACZ,CAAC,UAAU,CAAC;CAEf,IAAI,eAAe,kBAAkB;AACnC,YAAU,KAAK;AACf,cAAY;IACX,CAAC,SAAS,CAAC;AAKd,KAAI,EAFe,UAAU,CAAC,SAI5B;MAAI,CAAC,YACH,QAAO;;AAqBX,QAAO,aAhBL,oBAAC;EAAc;YACb,oBAAC;GACC;GACA,IAAI;GACI;GACG;GACX,UAAU;GACD;GACG;GACZ,WAAW;GAEV;IACc;GACR,EAGiB,aAAa,QAAQ,SAAS,KAAK;;AAGnE,IAAI,WAAW,WAAW,QAAQ;AAElC,SAAS,cAAc"}
1
+ {"version":3,"file":"Overlay.js","names":[],"sources":["../../../../src/components/overlays/Modal/Overlay.tsx"],"sourcesContent":["import { Props } from '@tenphi/tasty';\nimport {\n Children,\n cloneElement,\n forwardRef,\n ReactElement,\n useCallback,\n useState,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Provider, useProviderProps } from '../../../provider';\nimport { DisplayTransition } from '../../helpers/DisplayTransition/DisplayTransition';\n\nimport { OpenTransitionContext } from './OpenTransitionContext';\nimport { WithCloseBehavior } from './types';\n\nimport type { OverlayProps } from 'react-aria';\nimport type { ReportedPhase } from '../../helpers/DisplayTransition/DisplayTransition';\n\nexport interface CubeOverlayProps\n extends Omit<OverlayProps, 'container' | 'nodeRef'>,\n WithCloseBehavior {\n container?: HTMLElement | null;\n}\n\nconst EXIT_DURATION = 350;\n\nfunction Overlay(props: CubeOverlayProps, ref) {\n let {\n children,\n isOpen,\n container = null,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n hideOnClose = false,\n } = props;\n let [exited, setExited] = useState(!isOpen);\n\n if (isOpen && exited) {\n setExited(false);\n }\n\n let { root } = useProviderProps({} as Props);\n\n let handlePhaseChange = useCallback(\n (phase: ReportedPhase) => {\n switch (phase) {\n case 'enter':\n setExited(false);\n onEnter?.();\n onEntering?.();\n break;\n case 'entered':\n onEntered?.();\n break;\n case 'exit':\n onExit?.();\n onExiting?.();\n break;\n case 'unmounted':\n setExited(true);\n onExited?.();\n break;\n }\n },\n [onEnter, onEntering, onEntered, onExit, onExiting, onExited],\n );\n\n let mountOverlay = isOpen || !exited;\n\n if (!mountOverlay) {\n if (!hideOnClose) {\n return null;\n }\n }\n\n let contents = (\n <Provider ref={ref}>\n <DisplayTransition\n animateOnMount\n isShown={!!isOpen}\n exposeUnmounted={hideOnClose}\n duration={EXIT_DURATION}\n onPhaseChange={handlePhaseChange}\n >\n {({ phase, isShown }) => {\n return (\n <OpenTransitionContext.Provider\n value={{ transitionState: phase as ReportedPhase }}\n >\n {Children.map(\n children,\n (child) =>\n child &&\n cloneElement(\n child as ReactElement,\n {\n isOpen: isShown,\n transitionState: phase,\n } as any,\n ),\n )}\n </OpenTransitionContext.Provider>\n );\n }}\n </DisplayTransition>\n </Provider>\n );\n\n return createPortal(contents, container || root || document.body);\n}\n\nlet _Overlay = forwardRef(Overlay);\n\n_Overlay.displayName = 'Overlay';\n\nexport { _Overlay as Overlay };\n"],"mappings":";;;;;;;;;AA0BA,MAAM,gBAAgB;AAEtB,SAAS,QAAQ,OAAyB,KAAK;CAC7C,IAAI,EACF,UACA,QACA,YAAY,MACZ,SACA,YACA,WACA,QACA,WACA,UACA,cAAc,UACZ;CACJ,IAAI,CAAC,QAAQ,aAAa,SAAS,CAAC,OAAO;AAE3C,KAAI,UAAU,OACZ,WAAU,MAAM;CAGlB,IAAI,EAAE,SAAS,iBAAiB,EAAE,CAAU;CAE5C,IAAI,oBAAoB,aACrB,UAAyB;AACxB,UAAQ,OAAR;GACE,KAAK;AACH,cAAU,MAAM;AAChB,eAAW;AACX,kBAAc;AACd;GACF,KAAK;AACH,iBAAa;AACb;GACF,KAAK;AACH,cAAU;AACV,iBAAa;AACb;GACF,KAAK;AACH,cAAU,KAAK;AACf,gBAAY;AACZ;;IAGN;EAAC;EAAS;EAAY;EAAW;EAAQ;EAAW;EAAS,CAC9D;AAID,KAAI,EAFe,UAAU,CAAC,SAG5B;MAAI,CAAC,YACH,QAAO;;AAqCX,QAAO,aAhCL,oBAAC;EAAc;YACb,oBAAC;GACC;GACA,SAAS,CAAC,CAAC;GACX,iBAAiB;GACjB,UAAU;GACV,eAAe;cAEb,EAAE,OAAO,cAAc;AACvB,WACE,oBAAC,sBAAsB;KACrB,OAAO,EAAE,iBAAiB,OAAwB;eAEjD,SAAS,IACR,WACC,UACC,SACA,aACE,OACA;MACE,QAAQ;MACR,iBAAiB;MAClB,CACF,CACJ;MAC8B;;IAGnB;GACX,EAGiB,aAAa,QAAQ,SAAS,KAAK;;AAGnE,IAAI,WAAW,WAAW,QAAQ;AAElC,SAAS,cAAc"}
@@ -1,8 +1,8 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-46112bd | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-904a0d4 | 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";
5
- import { forwardRef, useEffect } from "react";
5
+ import { forwardRef } from "react";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
  import { useModal, useOverlay } from "react-aria";
8
8
 
@@ -12,9 +12,9 @@ const PopoverElement = tasty({
12
12
  styles: {
13
13
  display: {
14
14
  "": "none",
15
- "entering | entered": "initial",
16
- exiting: "initial",
17
- exited: "none"
15
+ "enter | entered": "initial",
16
+ exit: "initial",
17
+ unmounted: "none"
18
18
  },
19
19
  pointerEvents: "auto",
20
20
  position: "absolute",
@@ -34,7 +34,7 @@ const PopoverElement = tasty({
34
34
  }
35
35
  });
36
36
  function Popover(props, ref) {
37
- let { qa, style, styles, children, placement, arrowProps, onClose, shouldCloseOnBlur, isKeyboardDismissDisabled, isNonModal, isDismissable = true, updatePosition, shouldCloseOnInteractOutside, ...otherProps } = props;
37
+ let { qa, style, styles, children, placement, arrowProps, onClose, shouldCloseOnBlur, isKeyboardDismissDisabled, isNonModal, isDismissable = true, shouldCloseOnInteractOutside, ...otherProps } = props;
38
38
  return /* @__PURE__ */ jsx(_Overlay, {
39
39
  ...otherProps,
40
40
  children: /* @__PURE__ */ jsx(PopoverWrapper, {
@@ -48,7 +48,6 @@ function Popover(props, ref) {
48
48
  isKeyboardDismissDisabled,
49
49
  isNonModal,
50
50
  isDismissable,
51
- updatePosition,
52
51
  shouldCloseOnInteractOutside,
53
52
  onClose,
54
53
  children
@@ -56,15 +55,12 @@ function Popover(props, ref) {
56
55
  });
57
56
  }
58
57
  const PopoverWrapper = forwardRef(function PopoverWrapper(props, ref) {
59
- let { qa, children, placement = "bottom", arrowProps, isOpen, style, styles, shouldCloseOnBlur, isKeyboardDismissDisabled, isNonModal, isDismissable, updatePosition, transitionState, shouldCloseOnInteractOutside, ...otherProps } = props;
58
+ let { qa, children, placement = "bottom", arrowProps, isOpen, style, styles, shouldCloseOnBlur, isKeyboardDismissDisabled, isNonModal, isDismissable, transitionState, shouldCloseOnInteractOutside, ...otherProps } = props;
60
59
  let { overlayProps } = useOverlay({
61
60
  ...props,
62
61
  isDismissable: isDismissable && isOpen
63
62
  }, ref);
64
63
  let { modalProps } = useModal({ isDisabled: isNonModal });
65
- useEffect(() => {
66
- if (transitionState === "entered") updatePosition?.();
67
- }, [updatePosition, transitionState]);
68
64
  return /* @__PURE__ */ jsx(PopoverElement, {
69
65
  qa: qa || "Popover",
70
66
  ...mergeProps$1(otherProps, overlayProps, modalProps),
@@ -72,9 +68,9 @@ const PopoverWrapper = forwardRef(function PopoverWrapper(props, ref) {
72
68
  styles,
73
69
  mods: {
74
70
  open: isOpen,
75
- entering: transitionState === "entering",
76
- exiting: transitionState === "exiting",
77
- exited: transitionState === "exited",
71
+ enter: transitionState === "enter",
72
+ exit: transitionState === "exit",
73
+ unmounted: transitionState === "unmounted",
78
74
  entered: transitionState === "entered"
79
75
  },
80
76
  "data-placement": placement,