@cube-dev/ui-kit 0.199.2 → 0.200.1

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 (675) hide show
  1. package/dist/CHANGELOG.md +41 -0
  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.d.ts +6 -4
  14. package/dist/components/GridProvider.js +14 -9
  15. package/dist/components/GridProvider.js.map +1 -1
  16. package/dist/components/HiddenInput.js +1 -1
  17. package/dist/components/Root.js +1 -1
  18. package/dist/components/Root.js.map +1 -1
  19. package/dist/components/actions/Action/Action.js +1 -1
  20. package/dist/components/actions/Banner/Banner.js +1 -1
  21. package/dist/components/actions/Button/Button.js +2 -2
  22. package/dist/components/actions/Button/Button.js.map +1 -1
  23. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  24. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  25. package/dist/components/actions/ButtonSplit/context.js +1 -1
  26. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  27. package/dist/components/actions/CommandMenu/styled.js +1 -1
  28. package/dist/components/actions/ItemAction/ItemAction.js +7 -12
  29. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  30. package/dist/components/actions/ItemActionContext.js +1 -1
  31. package/dist/components/actions/ItemActionsWrapper.js +5 -6
  32. package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
  33. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  34. package/dist/components/actions/Link/Link.js +1 -1
  35. package/dist/components/actions/Menu/Menu.js +1 -1
  36. package/dist/components/actions/Menu/MenuCollectionItem.js +1 -1
  37. package/dist/components/actions/Menu/MenuItem.js +1 -1
  38. package/dist/components/actions/Menu/MenuSection.js +1 -1
  39. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  40. package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
  41. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  42. package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
  43. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  44. package/dist/components/actions/Menu/context.js +1 -1
  45. package/dist/components/actions/Menu/styled.js +2 -2
  46. package/dist/components/actions/Menu/styled.js.map +1 -1
  47. package/dist/components/actions/actions-run.js +1 -1
  48. package/dist/components/actions/index.js +1 -1
  49. package/dist/components/actions/use-action.js +1 -1
  50. package/dist/components/actions/use-anchored-menu.js +1 -1
  51. package/dist/components/actions/use-context-menu.js +1 -1
  52. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  53. package/dist/components/content/Alert/Alert.js +1 -1
  54. package/dist/components/content/Alert/Alert.js.map +1 -1
  55. package/dist/components/content/Alert/use-alert.js +24 -27
  56. package/dist/components/content/Alert/use-alert.js.map +1 -1
  57. package/dist/components/content/Avatar/Avatar.js +1 -1
  58. package/dist/components/content/Badge/Badge.js +6 -2
  59. package/dist/components/content/Badge/Badge.js.map +1 -1
  60. package/dist/components/content/Card/Card.js +1 -1
  61. package/dist/components/content/Content.js +1 -1
  62. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +3 -3
  63. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
  64. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  65. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  66. package/dist/components/content/Divider.js +1 -1
  67. package/dist/components/content/Footer.js +1 -1
  68. package/dist/components/content/Header.js +1 -1
  69. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  70. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  71. package/dist/components/content/InlineInput/InlineInput.js +6 -13
  72. package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
  73. package/dist/components/content/Item/Item.js +18 -18
  74. package/dist/components/content/Item/Item.js.map +1 -1
  75. package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
  76. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  77. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  78. package/dist/components/content/Layout/GridLayout.js +1 -1
  79. package/dist/components/content/Layout/Layout.js +1 -1
  80. package/dist/components/content/Layout/Layout.js.map +1 -1
  81. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  82. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  83. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  84. package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
  85. package/dist/components/content/Layout/LayoutContent.js +5 -3
  86. package/dist/components/content/Layout/LayoutContent.js.map +1 -1
  87. package/dist/components/content/Layout/LayoutContext.js +1 -1
  88. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  89. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  90. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  91. package/dist/components/content/Layout/LayoutHeader.js +2 -2
  92. package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
  93. package/dist/components/content/Layout/LayoutPane.js +16 -12
  94. package/dist/components/content/Layout/LayoutPane.js.map +1 -1
  95. package/dist/components/content/Layout/LayoutPanel.js +23 -19
  96. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  97. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  98. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  99. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  100. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  101. package/dist/components/content/Layout/index.js +1 -1
  102. package/dist/components/content/Layout/utils.js +1 -1
  103. package/dist/components/content/Paragraph.js +1 -1
  104. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  105. package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
  106. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  107. package/dist/components/content/PrismCode/PrismCode.js.map +1 -1
  108. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  109. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  110. package/dist/components/content/Result/Result.js +1 -1
  111. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  112. package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
  113. package/dist/components/content/Tag/Tag.js +6 -2
  114. package/dist/components/content/Tag/Tag.js.map +1 -1
  115. package/dist/components/content/Text.js +1 -1
  116. package/dist/components/content/TextItem/TextItem.js +1 -1
  117. package/dist/components/content/Title.js +1 -1
  118. package/dist/components/content/Tree/Tree.js +9 -17
  119. package/dist/components/content/Tree/Tree.js.map +1 -1
  120. package/dist/components/content/Tree/TreeNode.js +6 -4
  121. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  122. package/dist/components/content/Tree/styled.js +30 -11
  123. package/dist/components/content/Tree/styled.js.map +1 -1
  124. package/dist/components/content/Tree/tree-index.js +1 -1
  125. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  126. package/dist/components/content/Tree/use-load-data.js +1 -1
  127. package/dist/components/content/highlightText.js +1 -1
  128. package/dist/components/content/use-auto-tooltip.js +1 -1
  129. package/dist/components/data/DataTable/DataTable.js +1 -1
  130. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  131. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  132. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  133. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  134. package/dist/components/data/ItemTable/ItemTableToolbar.js +2 -2
  135. package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
  136. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  137. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  138. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  139. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  140. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  141. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  142. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  143. package/dist/components/data/TableBase/RowCollection.js +1 -1
  144. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  145. package/dist/components/data/TableBase/TableRow.js +1 -1
  146. package/dist/components/data/TableBase/TableRow.js.map +1 -1
  147. package/dist/components/data/TableBase/TableView.js +1 -1
  148. package/dist/components/data/TableBase/TableView.js.map +1 -1
  149. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  150. package/dist/components/data/TableBase/TreeGridTable.js.map +1 -1
  151. package/dist/components/data/TableBase/column-header.js +1 -1
  152. package/dist/components/data/TableBase/column-menu.js +1 -1
  153. package/dist/components/data/TableBase/column-styles.js +1 -1
  154. package/dist/components/data/TableBase/column-tint.js +1 -1
  155. package/dist/components/data/TableBase/row-menu.js +1 -1
  156. package/dist/components/data/TableBase/styled.js +26 -29
  157. package/dist/components/data/TableBase/styled.js.map +1 -1
  158. package/dist/components/data/TableBase/table-tree.js +1 -1
  159. package/dist/components/data/TableBase/types.js +1 -1
  160. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  161. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  162. package/dist/components/data/TableBase/use-column-order.js +1 -1
  163. package/dist/components/data/TableBase/use-column-window.js +1 -1
  164. package/dist/components/data/TableBase/use-container-width.js +1 -1
  165. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  166. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  167. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  168. package/dist/components/data/TableBase/use-table-search.js +1 -1
  169. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  170. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  171. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  172. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  173. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
  174. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  175. package/dist/components/fields/Checkbox/Checkbox.js +3 -3
  176. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  177. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  178. package/dist/components/fields/Checkbox/context.js +1 -1
  179. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  180. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  181. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  182. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +6 -6
  183. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
  184. package/dist/components/fields/ComboBox/ComboBox.d.ts +1 -1
  185. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  186. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  187. package/dist/components/fields/ComboBox/comboBoxOptions.js +1 -1
  188. package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +1 -1
  189. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  190. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  191. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  192. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  193. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  194. package/dist/components/fields/DatePicker/DateInputBase.js +5 -9
  195. package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
  196. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  197. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  198. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  199. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  200. package/dist/components/fields/DatePicker/DatePickerSegment.js +49 -39
  201. package/dist/components/fields/DatePicker/DatePickerSegment.js.map +1 -1
  202. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  203. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  204. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  205. package/dist/components/fields/DatePicker/PeriodPicker.js +5 -3
  206. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  207. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  208. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  209. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  210. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  211. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  212. package/dist/components/fields/DatePicker/period.js +1 -1
  213. package/dist/components/fields/DatePicker/props.js +1 -1
  214. package/dist/components/fields/DatePicker/utils.js +1 -1
  215. package/dist/components/fields/FileInput/FileInput.js +2 -2
  216. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  217. package/dist/components/fields/FilterListBox/FilterListBox.js +6 -8
  218. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  219. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  220. package/dist/components/fields/Input/Input.js +1 -1
  221. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  222. package/dist/components/fields/ListBox/ListBox.d.ts +1 -1
  223. package/dist/components/fields/ListBox/ListBox.js +49 -24
  224. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  225. package/dist/components/fields/ListBox/optionId.js +1 -1
  226. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  227. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  228. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  229. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  230. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  231. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  232. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  233. package/dist/components/fields/Picker/Picker.js +1 -1
  234. package/dist/components/fields/RadioGroup/Radio.js +91 -96
  235. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  236. package/dist/components/fields/RadioGroup/RadioGroup.js +3 -3
  237. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  238. package/dist/components/fields/RadioGroup/context.js +1 -1
  239. package/dist/components/fields/SearchComboBox/SearchComboBox.d.ts +1 -1
  240. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  241. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  242. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  243. package/dist/components/fields/Select/Select.d.ts +1 -1
  244. package/dist/components/fields/Select/Select.js +3 -3
  245. package/dist/components/fields/Select/Select.js.map +1 -1
  246. package/dist/components/fields/Slider/Gradation.js +1 -1
  247. package/dist/components/fields/Slider/HueSlider.js +3 -3
  248. package/dist/components/fields/Slider/HueSlider.js.map +1 -1
  249. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  250. package/dist/components/fields/Slider/Slider.js +1 -1
  251. package/dist/components/fields/Slider/SliderBase.js +4 -6
  252. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  253. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  254. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  255. package/dist/components/fields/Slider/elements.js +7 -6
  256. package/dist/components/fields/Slider/elements.js.map +1 -1
  257. package/dist/components/fields/Slider/index.js +1 -1
  258. package/dist/components/fields/Switch/Switch.js +3 -3
  259. package/dist/components/fields/Switch/Switch.js.map +1 -1
  260. package/dist/components/fields/TagInput/TagInput.d.ts +1 -1
  261. package/dist/components/fields/TagInput/TagInput.js +1 -1
  262. package/dist/components/fields/TagInput/TagInput.js.map +1 -1
  263. package/dist/components/fields/TagInput/TagList.js +3 -3
  264. package/dist/components/fields/TagInput/TagList.js.map +1 -1
  265. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  266. package/dist/components/fields/TagInput/useTagError.js +1 -1
  267. package/dist/components/fields/TextArea/TextArea.js +1 -1
  268. package/dist/components/fields/TextInput/TextInput.js +1 -1
  269. package/dist/components/fields/TextInput/TextInputBase.js +3 -6
  270. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  271. package/dist/components/fields/TextInput/displayed-validation.js +1 -1
  272. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  273. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  274. package/dist/components/fields/TriggerActions.js +1 -1
  275. package/dist/components/fields/color/ColorPanel.js +2 -2
  276. package/dist/components/fields/color/ColorPanel.js.map +1 -1
  277. package/dist/components/fields/color/channels.js +1 -1
  278. package/dist/components/fields/color/color.js +1 -1
  279. package/dist/components/fields/color/context.js +1 -1
  280. package/dist/components/fields/option-origin-press.js +1 -1
  281. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  282. package/dist/components/form/FieldWrapper/field-description.js +1 -1
  283. package/dist/components/form/Form/Field.js +1 -1
  284. package/dist/components/form/Form/Form.js +1 -1
  285. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  286. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  287. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  288. package/dist/components/form/Form/SubmitError.js +1 -1
  289. package/dist/components/form/Form/backend.js +1 -1
  290. package/dist/components/form/Form/index.js +1 -1
  291. package/dist/components/form/Form/modern/actions.js +1 -1
  292. package/dist/components/form/Form/modern/context.js +1 -1
  293. package/dist/components/form/Form/modern/controller.js +1 -1
  294. package/dist/components/form/Form/modern/field-binding.js +1 -1
  295. package/dist/components/form/Form/modern/field.js +1 -1
  296. package/dist/components/form/Form/modern/react.js +1 -1
  297. package/dist/components/form/Form/modern/store.js +1 -1
  298. package/dist/components/form/Form/modern/validation.js +1 -1
  299. package/dist/components/form/Form/modern/values.js +1 -1
  300. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  301. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  302. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  303. package/dist/components/form/Form/use-field/use-field.js +1 -1
  304. package/dist/components/form/Form/use-form.js +1 -1
  305. package/dist/components/form/Form/validation.js +1 -1
  306. package/dist/components/form/Label.js +1 -1
  307. package/dist/components/form/field-chrome.js +1 -1
  308. package/dist/components/form/legacy-tooltip.js +1 -1
  309. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  310. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  311. package/dist/components/form/validation/use-validation-props.js +1 -1
  312. package/dist/components/form/wrapper.js +1 -1
  313. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  314. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  315. package/dist/components/layout/Flex.js +1 -1
  316. package/dist/components/layout/Flow.js +1 -1
  317. package/dist/components/layout/Grid.js +1 -1
  318. package/dist/components/layout/Panel.js +13 -38
  319. package/dist/components/layout/Panel.js.map +1 -1
  320. package/dist/components/layout/Prefix.js +1 -1
  321. package/dist/components/layout/ResizablePanel.js +24 -20
  322. package/dist/components/layout/ResizablePanel.js.map +1 -1
  323. package/dist/components/layout/Space.js +1 -1
  324. package/dist/components/layout/Suffix.js +1 -1
  325. package/dist/components/navigation/Pagination/Pagination.js +2 -2
  326. package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
  327. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  328. package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
  329. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  330. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  331. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  332. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  333. package/dist/components/navigation/Tabs/TabPicker.js +62 -68
  334. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  335. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  336. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  337. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  338. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  339. package/dist/components/navigation/Tabs/styled.js +13 -12
  340. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  341. package/dist/components/navigation/Tabs/types.js +1 -1
  342. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  343. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  344. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  345. package/dist/components/other/Calendar/Calendar.js +1 -1
  346. package/dist/components/other/Calendar/CalendarCell.js +6 -6
  347. package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
  348. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  349. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  350. package/dist/components/other/Calendar/CalendarPanel.js +3 -3
  351. package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
  352. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  353. package/dist/components/other/Calendar/PeriodGrid.js +6 -6
  354. package/dist/components/other/Calendar/PeriodGrid.js.map +1 -1
  355. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  356. package/dist/components/other/Calendar/styled.js +4 -4
  357. package/dist/components/other/Calendar/styled.js.map +1 -1
  358. package/dist/components/other/CubeLogo/CubeLogo.js +3 -4
  359. package/dist/components/other/CubeLogo/CubeLogo.js.map +1 -1
  360. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  361. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  362. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  363. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  364. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  365. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  366. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  367. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  368. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  369. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  370. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  371. package/dist/components/overlays/Dialog/context.js +1 -1
  372. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  373. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  374. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  375. package/dist/components/overlays/Dialog/use-dialog-open-sync.js +1 -1
  376. package/dist/components/overlays/Dialog/use-retained-dialog-focus.js +1 -1
  377. package/dist/components/overlays/Modal/Modal.js +1 -1
  378. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  379. package/dist/components/overlays/Modal/Overlay.js +1 -1
  380. package/dist/components/overlays/Modal/Popover.js +1 -1
  381. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  382. package/dist/components/overlays/Modal/Tray.js +4 -5
  383. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  384. package/dist/components/overlays/Modal/Underlay.js +1 -1
  385. package/dist/components/overlays/Modal/modal-containment.js +1 -1
  386. package/dist/components/overlays/Notifications/Notification.js +1 -1
  387. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  388. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  389. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  390. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  391. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  392. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  393. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  394. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  395. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  396. package/dist/components/overlays/Notifications/index.js +1 -1
  397. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  398. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  399. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  400. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  401. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  402. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  403. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  404. package/dist/components/overlays/Toast/index.js +1 -1
  405. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  406. package/dist/components/overlays/Toast/useToast.js +1 -1
  407. package/dist/components/overlays/Tooltip/Tooltip.js +8 -6
  408. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  409. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  410. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  411. package/dist/components/overlays/Tooltip/context.js +1 -1
  412. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  413. package/dist/components/portal/Portal.js +1 -1
  414. package/dist/components/portal/PortalProvider.js +1 -1
  415. package/dist/components/portal/usePortal.js +1 -1
  416. package/dist/components/shared/DraggableCollection.js +1 -1
  417. package/dist/components/shared/InvalidIcon.js +1 -1
  418. package/dist/components/shared/ValidIcon.js +1 -1
  419. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  420. package/dist/components/status/Spin/Cube.js +1 -1
  421. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  422. package/dist/components/status/Spin/Spin.js +1 -1
  423. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  424. package/dist/data/item-themes.js +27 -27
  425. package/dist/data/item-themes.js.map +1 -1
  426. package/dist/data/themes.js +1 -1
  427. package/dist/eslint-plugin/defaults.generated.js +2 -2
  428. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  429. package/dist/eslint-plugin/index.js +1 -1
  430. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  431. package/dist/i18n/I18nProvider.js +1 -1
  432. package/dist/i18n/createFormatter.js +1 -1
  433. package/dist/i18n/index.js +1 -1
  434. package/dist/i18n/instance.js +1 -1
  435. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  436. package/dist/i18n/locales/en-US/uikit.js +1 -1
  437. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  438. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  439. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  440. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  441. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  442. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  443. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  444. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  445. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  446. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  447. package/dist/i18n/locales.js +1 -1
  448. package/dist/i18n/namespace.js +1 -1
  449. package/dist/i18n/useFormatter.js +1 -1
  450. package/dist/i18n/useI18n.js +1 -1
  451. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  452. package/dist/icons/AdjustmentsIcon.js +1 -1
  453. package/dist/icons/AiIcon.js +1 -1
  454. package/dist/icons/AreaChartIcon.js +1 -1
  455. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  456. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  457. package/dist/icons/BackwardIcon.js +1 -1
  458. package/dist/icons/BarChartIcon.js +1 -1
  459. package/dist/icons/BellFilledIcon.js +1 -1
  460. package/dist/icons/BellIcon.js +1 -1
  461. package/dist/icons/BooleanIcon.js +1 -1
  462. package/dist/icons/CalendarEditIcon.js +1 -1
  463. package/dist/icons/CalendarIcon.js +1 -1
  464. package/dist/icons/CaretDownIcon.js +1 -1
  465. package/dist/icons/CaretUpIcon.js +1 -1
  466. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  467. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  468. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  469. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  470. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  471. package/dist/icons/ChartBarLineIcon.js +1 -1
  472. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  473. package/dist/icons/ChartBarStackedIcon.js +1 -1
  474. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  475. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  476. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  477. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  478. package/dist/icons/ChartBubbleIcon.js +1 -1
  479. package/dist/icons/ChartDonut2Icon.js +1 -1
  480. package/dist/icons/ChartFunnelIcon.js +1 -1
  481. package/dist/icons/ChartHeatmapIcon.js +1 -1
  482. package/dist/icons/ChartKPIIcon.js +1 -1
  483. package/dist/icons/ChartPie2Icon.js +1 -1
  484. package/dist/icons/ChartScatterIcon.js +1 -1
  485. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  486. package/dist/icons/CheckCircleIcon.js +1 -1
  487. package/dist/icons/CheckIcon.js +1 -1
  488. package/dist/icons/CircleFilledIcon.js +1 -1
  489. package/dist/icons/ClearIcon.js +1 -1
  490. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  491. package/dist/icons/CloseCircleIcon.js +1 -1
  492. package/dist/icons/CloseIcon.js +1 -1
  493. package/dist/icons/CodeIcon.js +1 -1
  494. package/dist/icons/ColumnTotalIcon.js +1 -1
  495. package/dist/icons/CopyIcon.js +1 -1
  496. package/dist/icons/CountIcon.js +1 -1
  497. package/dist/icons/CubeIcon.js +1 -1
  498. package/dist/icons/CubePauseIcon.js +1 -1
  499. package/dist/icons/CubePlayIcon.js +1 -1
  500. package/dist/icons/CurrencyDollarIcon.js +1 -1
  501. package/dist/icons/DangerIcon.js +1 -1
  502. package/dist/icons/DashboardIcon.js +1 -1
  503. package/dist/icons/DatabaseIcon.js +1 -1
  504. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  505. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  506. package/dist/icons/DirectionIcon.js +1 -1
  507. package/dist/icons/DonutIcon.js +1 -1
  508. package/dist/icons/DownIcon.js +1 -1
  509. package/dist/icons/EditIcon.js +1 -1
  510. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  511. package/dist/icons/ExclamationCircleIcon.js +1 -1
  512. package/dist/icons/ExclamationIcon.js +1 -1
  513. package/dist/icons/EyeIcon.js +1 -1
  514. package/dist/icons/EyeInvisibleIcon.js +1 -1
  515. package/dist/icons/FilterIcon.js +1 -1
  516. package/dist/icons/FolderFilledIcon.js +1 -1
  517. package/dist/icons/FolderIcon.js +1 -1
  518. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  519. package/dist/icons/FolderOpenIcon.js +1 -1
  520. package/dist/icons/ForwardIcon.js +1 -1
  521. package/dist/icons/GripVerticalIcon.js +1 -1
  522. package/dist/icons/HierarchyIcon.js +1 -1
  523. package/dist/icons/HierarchyOpenIcon.js +1 -1
  524. package/dist/icons/Icon.js +21 -38
  525. package/dist/icons/Icon.js.map +1 -1
  526. package/dist/icons/InfoCircleIcon.js +1 -1
  527. package/dist/icons/InfoIcon.js +1 -1
  528. package/dist/icons/KeyIcon.js +1 -1
  529. package/dist/icons/LeftIcon.js +1 -1
  530. package/dist/icons/LineChartIcon.js +1 -1
  531. package/dist/icons/LoadingIcon.js +1 -1
  532. package/dist/icons/LockFilledIcon.js +1 -1
  533. package/dist/icons/LockIcon.js +1 -1
  534. package/dist/icons/MoreIcon.js +1 -1
  535. package/dist/icons/NotAllowedIcon.js +1 -1
  536. package/dist/icons/Number123Icon.js +1 -1
  537. package/dist/icons/NumberIcon.js +1 -1
  538. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  539. package/dist/icons/PauseCircleIcon.js +1 -1
  540. package/dist/icons/PauseIcon.js +1 -1
  541. package/dist/icons/PercentageIcon.js +1 -1
  542. package/dist/icons/PieChartIcon.js +1 -1
  543. package/dist/icons/PipetteIcon.js +1 -1
  544. package/dist/icons/PlayCircleIcon.js +1 -1
  545. package/dist/icons/PlayIcon.js +1 -1
  546. package/dist/icons/PlusIcon.js +1 -1
  547. package/dist/icons/ProgressBarIcon.js +1 -1
  548. package/dist/icons/ReloadIcon.js +1 -1
  549. package/dist/icons/ReportIcon.js +1 -1
  550. package/dist/icons/ReturnIcon.js +1 -1
  551. package/dist/icons/RightIcon.js +1 -1
  552. package/dist/icons/RowTotalsIcon.js +1 -1
  553. package/dist/icons/SchemeIcon.js +1 -1
  554. package/dist/icons/SearchIcon.js +1 -1
  555. package/dist/icons/SemanticQueryIcon.js +1 -1
  556. package/dist/icons/SettingsIcon.js +1 -1
  557. package/dist/icons/ShieldFilledIcon.js +1 -1
  558. package/dist/icons/ShieldIcon.js +1 -1
  559. package/dist/icons/SlashIcon.js +1 -1
  560. package/dist/icons/SparklesIcon.js +1 -1
  561. package/dist/icons/SqlIcon.js +1 -1
  562. package/dist/icons/StatsIcon.js +1 -1
  563. package/dist/icons/StopIcon.js +1 -1
  564. package/dist/icons/StringIcon.js +1 -1
  565. package/dist/icons/SubtotalsIcon.js +1 -1
  566. package/dist/icons/SwitchIcon.js +1 -1
  567. package/dist/icons/TableIcon.js +1 -1
  568. package/dist/icons/ThumbsDownIcon.js +1 -1
  569. package/dist/icons/ThumbsUpIcon.js +1 -1
  570. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  571. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  572. package/dist/icons/ThunderboltIcon.js +1 -1
  573. package/dist/icons/TimeIcon.js +1 -1
  574. package/dist/icons/TrashIcon.js +1 -1
  575. package/dist/icons/UnlockIcon.js +1 -1
  576. package/dist/icons/UpIcon.js +1 -1
  577. package/dist/icons/UserGroupIcon.js +1 -1
  578. package/dist/icons/UserIcon.js +1 -1
  579. package/dist/icons/UserLockIcon.js +1 -1
  580. package/dist/icons/ViewIcon.js +1 -1
  581. package/dist/icons/WarningFilledIcon.js +1 -1
  582. package/dist/icons/WarningIcon.js +1 -1
  583. package/dist/icons/wrap-icon.js +1 -1
  584. package/dist/index.js +1 -1
  585. package/dist/probe/canonicalize.js +1 -1
  586. package/dist/probe/css.js +1 -1
  587. package/dist/probe/index.js +1 -1
  588. package/dist/provider.js +1 -1
  589. package/dist/providers/TrackingProvider.js +1 -1
  590. package/dist/providers/navigation-url.js +1 -1
  591. package/dist/providers/navigationAdapter.default.js +1 -1
  592. package/dist/providers/use-navigation.js +1 -1
  593. package/dist/tokens/all-tokens.js +1 -1
  594. package/dist/tokens/base.js +8 -2
  595. package/dist/tokens/base.js.map +1 -1
  596. package/dist/tokens/color-seed.js +1 -1
  597. package/dist/tokens/color-theme.js +1 -1
  598. package/dist/tokens/colors.js +1 -1
  599. package/dist/tokens/layout.js +1 -1
  600. package/dist/tokens/lazy-styles.js +1 -1
  601. package/dist/tokens/legacy-color.js +1 -1
  602. package/dist/tokens/palette-config.js +1 -1
  603. package/dist/tokens/palette.js +1 -1
  604. package/dist/tokens/resolve.js +1 -1
  605. package/dist/tokens/shadows.d.ts +0 -1
  606. package/dist/tokens/shadows.js +2 -3
  607. package/dist/tokens/shadows.js.map +1 -1
  608. package/dist/tokens/sizes.js +1 -1
  609. package/dist/tokens/spacing.js +1 -1
  610. package/dist/tokens/typography.js +1 -1
  611. package/dist/utils/ResizeSensor.js +1 -1
  612. package/dist/utils/colors.js +1 -1
  613. package/dist/utils/dotize.js +1 -1
  614. package/dist/utils/is-dev-env.js +1 -1
  615. package/dist/utils/modules.js +1 -1
  616. package/dist/utils/promise.js +1 -1
  617. package/dist/utils/raf.js +1 -1
  618. package/dist/utils/random.js +1 -1
  619. package/dist/utils/range.js +1 -1
  620. package/dist/utils/react/RenderCache.js +1 -1
  621. package/dist/utils/react/Slots.js +1 -1
  622. package/dist/utils/react/chain.js +1 -1
  623. package/dist/utils/react/disabledProps.js +1 -1
  624. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  625. package/dist/utils/react/index.js +1 -1
  626. package/dist/utils/react/interactions.js +1 -1
  627. package/dist/utils/react/isTextOnly.js +1 -1
  628. package/dist/utils/react/mapProps.js +1 -1
  629. package/dist/utils/react/mergeProps.js +1 -1
  630. package/dist/utils/react/nullableValue.js +1 -1
  631. package/dist/utils/react/overlayKeyPropagation.js +1 -1
  632. package/dist/utils/react/programmaticFocus.js +1 -1
  633. package/dist/utils/react/resolveIcon.js +1 -1
  634. package/dist/utils/react/sharedStore.js +1 -1
  635. package/dist/utils/react/useBufferedValue.js +1 -1
  636. package/dist/utils/react/useCombinedRefs.js +1 -1
  637. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  638. package/dist/utils/react/useEventBus.js +1 -1
  639. package/dist/utils/react/useId.js +1 -1
  640. package/dist/utils/react/useIsDarwin.js +1 -1
  641. package/dist/utils/react/useKeySymbols.js +1 -1
  642. package/dist/utils/react/useLayoutEffect.js +1 -1
  643. package/dist/utils/react/useLocalStorage.js +1 -1
  644. package/dist/utils/react/useMergeStyles.js +1 -1
  645. package/dist/utils/react/useOverlayEscapeGuard.js +7 -2
  646. package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -1
  647. package/dist/utils/react/usePopoverSync.js +1 -1
  648. package/dist/utils/react/useQaProps.js +1 -1
  649. package/dist/utils/react/useScheme.js +1 -1
  650. package/dist/utils/react/useViewportSize.js +1 -1
  651. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  652. package/dist/utils/selection.js +1 -1
  653. package/dist/utils/styles.js +1 -1
  654. package/dist/utils/tree.js +1 -1
  655. package/dist/utils/warnings.js +1 -1
  656. package/dist/version.js +3 -3
  657. package/docs/BaseProperties.md +2 -0
  658. package/docs/ComplexLayout.md +1 -1
  659. package/docs/Usage.md +45 -2
  660. package/docs/Utilities.md +5 -2
  661. package/docs/components/GridProvider.md +3 -3
  662. package/docs/components/content/Layout.md +1 -1
  663. package/docs/components/fields/ComboBox.md +1 -1
  664. package/docs/components/fields/CommandTextArea.md +1 -1
  665. package/docs/components/fields/FilterListBox.md +1 -1
  666. package/docs/components/fields/FilterPicker.md +1 -1
  667. package/docs/components/fields/ListBox.md +2 -2
  668. package/docs/components/fields/Picker.md +1 -1
  669. package/docs/components/fields/SearchComboBox.md +1 -1
  670. package/docs/components/fields/Select.md +1 -1
  671. package/docs/components/fields/TagInput.md +1 -1
  672. package/docs/components/overlays/Dialog.md +1 -1
  673. package/docs/tasty/react-api.md +1 -1
  674. package/package.json +3 -3
  675. package/tasty.config.ts +153 -0
@@ -1 +1 @@
1
- {"version":3,"file":"CubeLogo.js","names":["mergeStyles","tasty","ForwardedRef","forwardRef","CubeIconProps","Icon","MARK_LIGHT_PATH","MARK_DARK_PATH","WORDMARK_PATH","MARK_VIEW_BOX","FULL_VIEW_BOX","FULL_ASPECT_RATIO","MarkPaths","$","_c","t0","Symbol","for","SCHEME_SWAP","LightMark","display","DarkMark","const","FORCED_SCHEME","light","dark","CubeLogoProps","scheme","resolveLogoStyles","styles","CubeLogoElement","qa","CubeLogo","props","ref","rest","t1","t2","CubeFullLogoElement","width","aspectRatio","Svg","height","CubeFullLogo","_c"],"sources":["../../../../src/components/other/CubeLogo/CubeLogo.tsx"],"sourcesContent":["import { mergeStyles, tasty } from '@tenphi/tasty';\nimport { ForwardedRef, forwardRef } from 'react';\n\nimport { CubeIconProps, Icon } from '../../../icons/Icon';\n\n/**\n * Cube logo marks.\n *\n * The mark is two *different drawings*, not one drawing recoloured: the light\n * variant is an outlined cube, the dark variant is filled differently so it keeps\n * its weight against a dark surface. Both are rendered and swapped by the global\n * `@dark` state rather than picked in JS, so the logo follows the scheme without a\n * re-render and works in SSR.\n *\n * Both marks are drawn with `currentColor`, so colour comes from the surrounding\n * text colour (or an explicit `color` prop) — never a baked-in hex. That is the\n * whole reason the previous `CloudLogo` had to go: it hard-coded the old brand\n * hexes and could not adapt.\n */\n\nconst MARK_LIGHT_PATH =\n 'M12.3428 0.468443C13.3139 -0.0982146 14.5153 -0.0984244 15.4863 0.468443L25.7051 6.43426C26.1063 6.66852 26.3535 7.09853 26.3535 7.56317V11.9008C26.3534 12.1325 26.2301 12.347 26.0303 12.4642L23.8356 13.8389L25.7109 14.8737C26.1088 15.1088 26.3534 15.5366 26.3535 15.9987V20.4352C26.3535 20.8999 26.1063 21.3298 25.7051 21.5641L15.4834 27.53C14.5123 28.0967 13.3119 28.0968 12.3408 27.53L2.11914 21.5641C1.71803 21.3298 1.47168 20.8998 1.47168 20.4352V7.56317C1.47178 7.09851 1.71879 6.66848 2.12012 6.43426L12.3428 0.468443ZM14.7002 1.77118C14.2147 1.4878 13.6144 1.48791 13.1289 1.77118L3.18164 7.57587C3.06086 7.64635 2.98649 7.77589 2.98633 7.91571V20.0085L12.873 14.3005C13.5161 13.9292 14.3091 13.9292 14.9521 14.3005L24.8389 20.0095V16.3513C24.8388 16.2116 24.764 16.082 24.6436 16.0114L14.6982 10.197C14.2129 9.91323 13.6117 9.91297 13.126 10.196L6.38477 14.1247C6.13553 14.2695 5.82263 14.0897 5.82227 13.8015V10.3942C5.82238 10.188 5.93134 9.99713 6.1084 9.89129L12.8613 5.85614C13.5101 5.46859 14.3183 5.4637 14.9717 5.84344L24.8389 11.5788V7.91571C24.8387 7.77604 24.7641 7.64643 24.6436 7.57587L14.7002 1.77118Z';\n\nconst MARK_DARK_PATH =\n 'M25.9002 6.65073C26.2344 6.84455 26.44 7.20162 26.44 7.5879L26.4396 11.3066C26.4395 11.6899 26.2369 12.0447 25.9067 12.2395L22.6916 14.1362L25.9094 16.0449C26.2383 16.24 26.44 16.5941 26.44 16.9766V20.6864C26.44 21.0743 26.2326 21.4327 25.8961 21.6258L15.6128 27.5294C14.6148 28.1023 13.387 28.0996 12.3914 27.5223L2.09765 21.5528C1.7635 21.359 1.55781 21.002 1.55781 20.6157V7.58789C1.55781 7.20162 1.76349 6.84457 2.09764 6.65079L13.049 0.299736C13.6372 -0.0413849 14.363 -0.0413542 14.9512 0.299815L25.9002 6.65073ZM3.08936 20.3607C2.9078 20.4649 2.90801 20.7268 3.08974 20.8307L13.0565 26.5279C13.641 26.8619 14.3587 26.861 14.9423 26.5254L24.821 20.8447C25.0017 20.7408 25.0022 20.4802 24.8218 20.3756L14.9425 14.6505C14.3571 14.3112 13.6353 14.3097 13.0485 14.6464L3.08936 20.3607ZM5.55497 9.75456C5.3906 9.85215 5.28984 10.0292 5.28984 10.2203V13.6284C5.28984 13.8379 5.51738 13.968 5.69791 13.8619L13.0363 9.54766C13.631 9.19804 14.3687 9.19907 14.9624 9.55035L21.2322 13.26C21.4021 13.3605 21.6131 13.3607 21.7831 13.2604L24.8318 11.4632C25.0105 11.3579 25.0093 11.0991 24.8297 10.9954L14.9614 5.29588C14.3677 4.95297 13.6351 4.95738 13.0455 5.3074L5.55497 9.75456Z';\n\nconst WORDMARK_PATH =\n 'M52.1689 16.0085C52.1689 18.0202 53.5876 19.2742 55.3838 19.2742C57.1215 19.274 58.5107 18.02 58.5107 16.0085V7.46362H61.5527V15.7761C61.5526 19.6552 58.8592 22.1041 55.3857 22.1042C51.8518 22.1042 49.1584 19.6553 49.1582 15.7761V7.46362H52.1689V16.0085ZM68.2725 9.2146C69.3445 7.90193 71.0524 7.14436 73.0215 7.14429C77.0745 7.14226 79.999 10.3792 79.999 14.6375C79.999 18.8957 77.0747 22.1042 73.0498 22.1042C70.964 22.1042 69.1394 21.26 68.0693 19.8015V21.7849H65.2314V0.6521H68.2725V9.2146ZM90.0576 7.14233C93.851 7.14255 96.6309 9.94205 96.6309 13.7039C96.6308 14.4918 96.4859 15.2518 96.3994 15.6306H85.8008C86.2072 17.9925 88.0019 19.3923 90.4336 19.3923C92.0849 19.3923 93.3865 18.7502 94.5752 17.7009L96.0234 19.8015C94.5169 21.2297 92.6055 22.1042 90.3467 22.1042C85.9457 22.1042 82.7012 18.8673 82.7012 14.6375C82.7012 10.438 85.9161 7.14233 90.0576 7.14233ZM40.5293 7.14233C43.2224 7.14248 45.3056 8.45506 46.5225 10.4666L44.3809 12.158C43.4536 10.8452 42.2663 9.97046 40.5586 9.97046C37.952 9.97067 36.0996 12.0122 36.0996 14.6072C36.0996 17.2608 37.952 19.272 40.5586 19.2722C42.2381 19.2722 43.4254 18.4277 44.3809 17.115L46.5225 18.7781C45.2774 20.7896 43.1922 22.1021 40.5293 22.1023C36.3314 22.1043 33 18.837 33 14.6091C33 10.4096 36.3314 7.14233 40.5293 7.14233ZM72.5273 9.94409C70.3852 9.94409 68.2403 11.4022 68.2402 14.6394C68.2402 17.905 70.4133 19.3044 72.5273 19.3044C74.9891 19.3042 76.872 17.3803 76.8721 14.6091C76.8721 11.838 74.961 9.9443 72.5273 9.94409ZM89.9424 9.73706C87.9431 9.73916 86.322 11.109 85.8594 13.238H93.5908C93.5325 10.9914 91.8834 9.73706 89.9424 9.73706Z';\n\n/** Mark artwork is square. */\nconst MARK_VIEW_BOX = '0 0 28 28';\n/**\n * Full logo = mark (x 0–28) + wordmark (x 33–98) on one canvas, so the 5-unit\n * gap between them is part of the artwork rather than a layout concern.\n */\nconst FULL_VIEW_BOX = '0 0 98 28';\n/** 98 / 28 — used to let width follow height automatically. */\nconst FULL_ASPECT_RATIO = '98 / 28';\n\nconst MarkPaths = () => (\n <>\n <path\n clipRule=\"evenodd\"\n d={MARK_LIGHT_PATH}\n data-element=\"LightMark\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n />\n <path\n clipRule=\"evenodd\"\n d={MARK_DARK_PATH}\n data-element=\"DarkMark\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n />\n </>\n);\n\nconst SCHEME_SWAP = {\n LightMark: {\n display: { '': 'block', '@dark': 'none' },\n },\n DarkMark: {\n display: { '': 'none', '@dark': 'block' },\n },\n} as const;\n\n/**\n * Pin one mark instead of letting the `@dark` state choose.\n *\n * Needed wherever the background is known but the *document* scheme does not\n * describe it: a fixed-dark panel in a light app (`#surface-inverse`, the\n * `special` theme), an exported image, or a themed region — `tokens` overrides\n * token *values*, and `@dark` is a state, so a region preview cannot reach the\n * swap on its own.\n */\nconst FORCED_SCHEME = {\n light: {\n LightMark: { display: 'block' },\n DarkMark: { display: 'none' },\n },\n dark: {\n LightMark: { display: 'none' },\n DarkMark: { display: 'block' },\n },\n} as const;\n\nexport interface CubeLogoProps extends CubeIconProps {\n /**\n * Force the light or dark mark. Omit it — the default — to follow the document\n * scheme in CSS, which costs no re-render and is correct during SSR.\n */\n scheme?: 'light' | 'dark';\n}\n\n/** Caller styles win; a forced scheme only overrides the swap itself. */\nfunction resolveLogoStyles({ scheme, styles }: CubeLogoProps) {\n return scheme ? mergeStyles(FORCED_SCHEME[scheme], styles) : styles;\n}\n\n/**\n * Square Cube mark, sized through `Icon` — pass `size` (or any `Icon` style prop)\n * and both axes follow it.\n */\nconst CubeLogoElement = tasty(Icon, {\n qa: 'CubeLogo',\n styles: SCHEME_SWAP,\n});\n\nexport const CubeLogo = forwardRef(function CubeLogo(\n props: CubeLogoProps,\n ref: ForwardedRef<HTMLSpanElement>,\n) {\n const { scheme, styles, ...rest } = props;\n\n return (\n <CubeLogoElement\n aria-label=\"Cube\"\n role=\"img\"\n {...rest}\n styles={resolveLogoStyles(props)}\n ref={ref}\n >\n <svg\n fill=\"none\"\n viewBox={MARK_VIEW_BOX}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <MarkPaths />\n </svg>\n </CubeLogoElement>\n );\n});\n\n/**\n * Cube mark + wordmark.\n *\n * `size` sets the **height** only; the width follows the artwork's aspect ratio.\n * `Icon` is square by default (`width: '1em 1em'`), so both the wrapper and the\n * inner `svg` have their width released to `auto` and the ratio pinned with\n * `aspectRatio` — otherwise the wordmark would be squashed into a 1em box.\n */\nconst CubeFullLogoElement = tasty(Icon, {\n qa: 'CubeFullLogo',\n styles: {\n // eslint-disable-next-line tasty/no-style-spread -- light/dark mark swap shared with CubeLogo\n ...SCHEME_SWAP,\n // Height still comes from `$icon-size` via `Icon`; width must not.\n width: 'auto',\n aspectRatio: FULL_ASPECT_RATIO,\n\n Svg: {\n width: 'auto',\n height: '1em 1em',\n aspectRatio: FULL_ASPECT_RATIO,\n },\n },\n});\n\nexport const CubeFullLogo = forwardRef(function CubeFullLogo(\n props: CubeLogoProps,\n ref: ForwardedRef<HTMLSpanElement>,\n) {\n const { scheme, styles, ...rest } = props;\n\n return (\n <CubeFullLogoElement\n aria-label=\"Cube\"\n role=\"img\"\n {...rest}\n styles={resolveLogoStyles(props)}\n ref={ref}\n >\n <svg\n fill=\"none\"\n viewBox={FULL_VIEW_BOX}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <MarkPaths />\n <path d={WORDMARK_PATH} fill=\"currentColor\" />\n </svg>\n </CubeFullLogoElement>\n );\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"CubeLogo.js","names":["mergeStyles","tasty","ForwardedRef","forwardRef","CubeIconProps","Icon","MARK_LIGHT_PATH","MARK_DARK_PATH","WORDMARK_PATH","MARK_VIEW_BOX","FULL_VIEW_BOX","FULL_ASPECT_RATIO","MarkPaths","$","_c","t0","Symbol","for","SCHEME_SWAP","LightMark","display","DarkMark","const","FORCED_SCHEME","light","dark","CubeLogoProps","scheme","resolveLogoStyles","styles","CubeLogoElement","qa","CubeLogo","props","ref","rest","t1","t2","CubeFullLogoElement","width","aspectRatio","Svg","height","CubeFullLogo","_c"],"sources":["../../../../src/components/other/CubeLogo/CubeLogo.tsx"],"sourcesContent":["import { mergeStyles, tasty } from '@tenphi/tasty';\nimport { ForwardedRef, forwardRef } from 'react';\n\nimport { CubeIconProps, Icon } from '../../../icons/Icon';\n\n/**\n * Cube logo marks.\n *\n * The mark is two *different drawings*, not one drawing recoloured: the light\n * variant is an outlined cube, the dark variant is filled differently so it keeps\n * its weight against a dark surface. Both are rendered and swapped by the global\n * `@dark` state rather than picked in JS, so the logo follows the scheme without a\n * re-render and works in SSR.\n *\n * Both marks are drawn with `currentColor`, so colour comes from the surrounding\n * text colour (or an explicit `color` prop) — never a baked-in hex. That is the\n * whole reason the previous `CloudLogo` had to go: it hard-coded the old brand\n * hexes and could not adapt.\n */\n\nconst MARK_LIGHT_PATH =\n 'M12.3428 0.468443C13.3139 -0.0982146 14.5153 -0.0984244 15.4863 0.468443L25.7051 6.43426C26.1063 6.66852 26.3535 7.09853 26.3535 7.56317V11.9008C26.3534 12.1325 26.2301 12.347 26.0303 12.4642L23.8356 13.8389L25.7109 14.8737C26.1088 15.1088 26.3534 15.5366 26.3535 15.9987V20.4352C26.3535 20.8999 26.1063 21.3298 25.7051 21.5641L15.4834 27.53C14.5123 28.0967 13.3119 28.0968 12.3408 27.53L2.11914 21.5641C1.71803 21.3298 1.47168 20.8998 1.47168 20.4352V7.56317C1.47178 7.09851 1.71879 6.66848 2.12012 6.43426L12.3428 0.468443ZM14.7002 1.77118C14.2147 1.4878 13.6144 1.48791 13.1289 1.77118L3.18164 7.57587C3.06086 7.64635 2.98649 7.77589 2.98633 7.91571V20.0085L12.873 14.3005C13.5161 13.9292 14.3091 13.9292 14.9521 14.3005L24.8389 20.0095V16.3513C24.8388 16.2116 24.764 16.082 24.6436 16.0114L14.6982 10.197C14.2129 9.91323 13.6117 9.91297 13.126 10.196L6.38477 14.1247C6.13553 14.2695 5.82263 14.0897 5.82227 13.8015V10.3942C5.82238 10.188 5.93134 9.99713 6.1084 9.89129L12.8613 5.85614C13.5101 5.46859 14.3183 5.4637 14.9717 5.84344L24.8389 11.5788V7.91571C24.8387 7.77604 24.7641 7.64643 24.6436 7.57587L14.7002 1.77118Z';\n\nconst MARK_DARK_PATH =\n 'M25.9002 6.65073C26.2344 6.84455 26.44 7.20162 26.44 7.5879L26.4396 11.3066C26.4395 11.6899 26.2369 12.0447 25.9067 12.2395L22.6916 14.1362L25.9094 16.0449C26.2383 16.24 26.44 16.5941 26.44 16.9766V20.6864C26.44 21.0743 26.2326 21.4327 25.8961 21.6258L15.6128 27.5294C14.6148 28.1023 13.387 28.0996 12.3914 27.5223L2.09765 21.5528C1.7635 21.359 1.55781 21.002 1.55781 20.6157V7.58789C1.55781 7.20162 1.76349 6.84457 2.09764 6.65079L13.049 0.299736C13.6372 -0.0413849 14.363 -0.0413542 14.9512 0.299815L25.9002 6.65073ZM3.08936 20.3607C2.9078 20.4649 2.90801 20.7268 3.08974 20.8307L13.0565 26.5279C13.641 26.8619 14.3587 26.861 14.9423 26.5254L24.821 20.8447C25.0017 20.7408 25.0022 20.4802 24.8218 20.3756L14.9425 14.6505C14.3571 14.3112 13.6353 14.3097 13.0485 14.6464L3.08936 20.3607ZM5.55497 9.75456C5.3906 9.85215 5.28984 10.0292 5.28984 10.2203V13.6284C5.28984 13.8379 5.51738 13.968 5.69791 13.8619L13.0363 9.54766C13.631 9.19804 14.3687 9.19907 14.9624 9.55035L21.2322 13.26C21.4021 13.3605 21.6131 13.3607 21.7831 13.2604L24.8318 11.4632C25.0105 11.3579 25.0093 11.0991 24.8297 10.9954L14.9614 5.29588C14.3677 4.95297 13.6351 4.95738 13.0455 5.3074L5.55497 9.75456Z';\n\nconst WORDMARK_PATH =\n 'M52.1689 16.0085C52.1689 18.0202 53.5876 19.2742 55.3838 19.2742C57.1215 19.274 58.5107 18.02 58.5107 16.0085V7.46362H61.5527V15.7761C61.5526 19.6552 58.8592 22.1041 55.3857 22.1042C51.8518 22.1042 49.1584 19.6553 49.1582 15.7761V7.46362H52.1689V16.0085ZM68.2725 9.2146C69.3445 7.90193 71.0524 7.14436 73.0215 7.14429C77.0745 7.14226 79.999 10.3792 79.999 14.6375C79.999 18.8957 77.0747 22.1042 73.0498 22.1042C70.964 22.1042 69.1394 21.26 68.0693 19.8015V21.7849H65.2314V0.6521H68.2725V9.2146ZM90.0576 7.14233C93.851 7.14255 96.6309 9.94205 96.6309 13.7039C96.6308 14.4918 96.4859 15.2518 96.3994 15.6306H85.8008C86.2072 17.9925 88.0019 19.3923 90.4336 19.3923C92.0849 19.3923 93.3865 18.7502 94.5752 17.7009L96.0234 19.8015C94.5169 21.2297 92.6055 22.1042 90.3467 22.1042C85.9457 22.1042 82.7012 18.8673 82.7012 14.6375C82.7012 10.438 85.9161 7.14233 90.0576 7.14233ZM40.5293 7.14233C43.2224 7.14248 45.3056 8.45506 46.5225 10.4666L44.3809 12.158C43.4536 10.8452 42.2663 9.97046 40.5586 9.97046C37.952 9.97067 36.0996 12.0122 36.0996 14.6072C36.0996 17.2608 37.952 19.272 40.5586 19.2722C42.2381 19.2722 43.4254 18.4277 44.3809 17.115L46.5225 18.7781C45.2774 20.7896 43.1922 22.1021 40.5293 22.1023C36.3314 22.1043 33 18.837 33 14.6091C33 10.4096 36.3314 7.14233 40.5293 7.14233ZM72.5273 9.94409C70.3852 9.94409 68.2403 11.4022 68.2402 14.6394C68.2402 17.905 70.4133 19.3044 72.5273 19.3044C74.9891 19.3042 76.872 17.3803 76.8721 14.6091C76.8721 11.838 74.961 9.9443 72.5273 9.94409ZM89.9424 9.73706C87.9431 9.73916 86.322 11.109 85.8594 13.238H93.5908C93.5325 10.9914 91.8834 9.73706 89.9424 9.73706Z';\n\n/** Mark artwork is square. */\nconst MARK_VIEW_BOX = '0 0 28 28';\n/**\n * Full logo = mark (x 0–28) + wordmark (x 33–98) on one canvas, so the 5-unit\n * gap between them is part of the artwork rather than a layout concern.\n */\nconst FULL_VIEW_BOX = '0 0 98 28';\n/** 98 / 28 — used to let width follow height automatically. */\nconst FULL_ASPECT_RATIO = '98 / 28';\n\nconst MarkPaths = () => (\n <>\n <path\n clipRule=\"evenodd\"\n d={MARK_LIGHT_PATH}\n data-element=\"LightMark\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n />\n <path\n clipRule=\"evenodd\"\n d={MARK_DARK_PATH}\n data-element=\"DarkMark\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n />\n </>\n);\n\nconst SCHEME_SWAP = {\n LightMark: {\n display: { '': 'block', '@dark': 'none' },\n },\n DarkMark: {\n display: { '': 'none', '@dark': 'block' },\n },\n} as const;\n\n/**\n * Pin one mark instead of letting the `@dark` state choose.\n *\n * Needed wherever the background is known but the *document* scheme does not\n * describe it: a fixed-dark panel in a light app (`#surface-inverse`, the\n * `special` theme), an exported image, or a themed region — `tokens` overrides\n * token *values*, and `@dark` is a state, so a region preview cannot reach the\n * swap on its own.\n */\nconst FORCED_SCHEME = {\n light: {\n LightMark: { display: 'block' },\n DarkMark: { display: 'none' },\n },\n dark: {\n LightMark: { display: 'none' },\n DarkMark: { display: 'block' },\n },\n} as const;\n\nexport interface CubeLogoProps extends CubeIconProps {\n /**\n * Force the light or dark mark. Omit it — the default — to follow the document\n * scheme in CSS, which costs no re-render and is correct during SSR.\n */\n scheme?: 'light' | 'dark';\n}\n\n/** Caller styles win; a forced scheme only overrides the swap itself. */\nfunction resolveLogoStyles({ scheme, styles }: CubeLogoProps) {\n return scheme ? mergeStyles(FORCED_SCHEME[scheme], styles) : styles;\n}\n\n/**\n * Square Cube mark, sized through `Icon` — pass `size` (or any `Icon` style prop)\n * and both axes follow it.\n */\nconst CubeLogoElement = tasty(Icon, {\n qa: 'CubeLogo',\n styles: SCHEME_SWAP,\n});\n\nexport const CubeLogo = forwardRef(function CubeLogo(\n props: CubeLogoProps,\n ref: ForwardedRef<HTMLSpanElement>,\n) {\n const { scheme, styles, ...rest } = props;\n\n return (\n <CubeLogoElement\n aria-label=\"Cube\"\n role=\"img\"\n {...rest}\n styles={resolveLogoStyles(props)}\n ref={ref}\n >\n <svg\n fill=\"none\"\n viewBox={MARK_VIEW_BOX}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <MarkPaths />\n </svg>\n </CubeLogoElement>\n );\n});\n\n/**\n * Cube mark + wordmark.\n *\n * `size` sets the **height** only; the width follows the artwork's aspect ratio.\n * `Icon` is square by default (`width: '1em 1em'`), so both the wrapper and the\n * inner `svg` have their width released to `auto` and the ratio pinned with\n * `aspectRatio` — otherwise the wordmark would be squashed into a 1em box.\n */\nconst CubeFullLogoElement = tasty(Icon, {\n qa: 'CubeFullLogo',\n styles: mergeStyles(SCHEME_SWAP, {\n // Height still comes from `$icon-size` via `Icon`; width must not.\n width: 'auto',\n aspectRatio: FULL_ASPECT_RATIO,\n\n Svg: {\n width: 'auto',\n height: '1em 1em',\n aspectRatio: FULL_ASPECT_RATIO,\n },\n }),\n});\n\nexport const CubeFullLogo = forwardRef(function CubeFullLogo(\n props: CubeLogoProps,\n ref: ForwardedRef<HTMLSpanElement>,\n) {\n const { scheme, styles, ...rest } = props;\n\n return (\n <CubeFullLogoElement\n aria-label=\"Cube\"\n role=\"img\"\n {...rest}\n styles={resolveLogoStyles(props)}\n ref={ref}\n >\n <svg\n fill=\"none\"\n viewBox={FULL_VIEW_BOX}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <MarkPaths />\n <path d={WORDMARK_PATH} fill=\"currentColor\" />\n </svg>\n </CubeFullLogoElement>\n );\n});\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { wrapIcon } from "../../../icons/wrap-icon.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  //#region src/components/other/NoDataIcon/NoDataIcon.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { chain } from "../../../utils/react/chain.js";
3
3
  import { Paragraph } from "../../content/Paragraph.js";
4
4
  import { Title as _Title } from "../../content/Title.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { AlertDialogZone } from "./AlertDialogZone.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { createContext, useContext, useLayoutEffect, useRef, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { Portal } from "../../portal/Portal.js";
3
3
  import { DialogContainer } from "../Dialog/DialogContainer.js";
4
4
  import { AlertDialog as _AlertDialog } from "./AlertDialog.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { SlotProvider } from "../../../utils/react/Slots.js";
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","names":["createFocusManager","getFocusableTreeWalker","focusSafely","getInteractionModality","focusWithoutScrolling","isFocusable","runAfterTransition","useObjectRef","BASE_STYLES","BaseProps","BaseStyleProps","BLOCK_STYLES","BlockStyleProps","DIMENSION_STYLES","DimensionStyleProps","FLOW_STYLES","Styles","tasty","FocusEvent","forwardRef","ReactElement","Ref","useEffect","useRef","AriaDialogProps","DismissButton","FocusScope","useDialog","useI18n","CloseIcon","mergeProps","SlotProvider","extractStyles","ItemButton","useOpenTransitionContext","trapsFocus","useDialogContext","useContentOverflow","useRetainedDialogFocus","STYLES_LIST","DialogElement","as","styles","display","flow","fill","pointerEvents","outline","position","width","height","gap","border","radius","shadow","top","CloseButton","qa","type","right","sizeMap","S","M","L","sizePxMap","small","medium","large","CubeDialogProps","Omit","size","isDismissable","onDismiss","arg","closeIcon","closeButtonStyles","role","findPriorityFocusElement","dialog","HTMLElement","marked","querySelectorAll","element","Array","from","reverse","target","tabbable","nextNode","button","getAttribute","querySelector","Dialog","props","ref","$","_c","transitionState","isShown","context","t0","content","t1","isOpen","shouldContainFocus","t2","shouldRestoreFocus","t3","DialogContent","HTMLDivElement","contextProps","children","undefined","onClose","tokens","style","otherProps","toUpperCase","t","domRef","isFocusInTreeRef","isRetained","isTrapping","isRefocusingRef","mountedAtRef","current","Date","now","dialogProps","titleProps","contentProps","dismissButton","timer","ReturnType","setTimeout","isClosed","contains","document","activeElement","body","blur","isFocusOutsideDialog","isFocusOnDialogShell","priorityElement","focus","focused","focusManager","focusFirst","clearTimeout","contentOverflows","slots","title","level","preset","id","flexGrow","padding","header","ellipsis","placeItems","placeContent","footer","mods","buttonGroup","onFocus","onBlur","event","stopPropagation","dismissable","ItemButton","_c","mergeProps"],"sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import { createFocusManager, getFocusableTreeWalker } from '@react-aria/focus';\nimport { focusSafely, getInteractionModality } from '@react-aria/interactions';\nimport {\n focusWithoutScrolling,\n isFocusable,\n runAfterTransition,\n useObjectRef,\n} from '@react-aria/utils';\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 {\n FocusEvent,\n forwardRef,\n ReactElement,\n Ref,\n useEffect,\n useRef,\n} from 'react';\nimport {\n AriaDialogProps,\n DismissButton,\n FocusScope,\n useDialog,\n} from 'react-aria';\n\nimport { useI18n } from '../../../i18n';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { mergeProps, SlotProvider } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { ItemButton } from '../../actions/ItemButton/ItemButton';\nimport { useOpenTransitionContext } from '../Modal/OpenTransitionContext';\n\nimport { trapsFocus, useDialogContext } from './context';\nimport { useContentOverflow } from './use-content-overflow';\nimport { useRetainedDialogFocus } from './use-retained-dialog-focus';\n\nconst STYLES_LIST = [\n ...BASE_STYLES,\n ...DIMENSION_STYLES,\n ...BLOCK_STYLES,\n ...FLOW_STYLES,\n];\n\nconst DialogElement = tasty({\n as: 'section',\n styles: {\n display: 'flex',\n flow: 'column',\n fill: '#surface',\n pointerEvents: 'auto',\n outline: 0,\n position: {\n '': 'relative',\n 'type=panel': 'absolute',\n },\n // The widest the dialog gets, also under a `width`. A tray is held by its\n // shell, whose own `styles` widen it; a takeover and a panel may span the\n // viewport.\n '$dialog-width-limit': {\n '': '$dialog-max-size',\n 'type=tray': '100%',\n 'type=fullscreenTakeover | type=panel': '100dvw',\n },\n width: {\n '': '$min-dialog-size $dialog-size $dialog-width-limit',\n 'type=fullscreen': '$dialog-max-size $dialog-max-size',\n 'type=fullscreenTakeover': '100dvw 100dvw',\n 'type=panel': 'auto',\n // A `width` is the preferred width in `$dialog-size`: it keeps the\n // limit, and replaces the floor.\n 'custom-width': 'initial $dialog-size $dialog-width-limit',\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 // A `Form` placed directly here (`Dialog > Form > Content + Footer`) lays\n // itself out as this flex column — see `FormElement`. It is the form's own\n // state rather than a rule here, so the form's `styles` still win.\n },\n});\n\nconst CloseButton = tasty(ItemButton, {\n qa: 'ModalCloseButton',\n type: 'clear',\n styles: {\n position: 'absolute',\n top: '1x',\n right: '1x',\n },\n});\n\nconst sizeMap = {\n S: 'small',\n M: 'medium',\n L: 'large',\n};\nconst sizePxMap = {\n small: 360,\n medium: 479,\n large: 798,\n};\n\nexport interface CubeDialogProps\n extends\n Omit<BaseProps, 'role'>,\n AriaDialogProps,\n BaseStyleProps,\n BlockStyleProps,\n Omit<DimensionStyleProps, 'width'> {\n /**\n * The dialog's preferred width, one value (`520px`, `65x`, `600`). It keeps\n * the type's maximum, so the dialog still fits a phone, and replaces\n * `$min-dialog-size`. To clamp the width yourself, set `styles.width`.\n */\n width?: string | number;\n /** The size of the dialog */\n size?: 'S' | 'M' | 'L' | 'small' | 'medium' | 'large';\n /**\n * Whether the dialog shows its close button. Defaults to its DialogTrigger's\n * or DialogContainer's `isDismissable`, except in a popover.\n */\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 * The control a dialog focuses when it opens: the last one marked\n * `data-autofocus` that can take focus, as kit controls mark themselves for\n * `autoFocus` (the last of several takes focus as they mount), or the first\n * control of a marked field (a date field's first segment). Otherwise a\n * submit or primary button, which in an alert dialog is never a destructive\n * (`danger`) one: a reflexive Enter would run it.\n */\nfunction findPriorityFocusElement(dialog: HTMLElement) {\n const marked = dialog.querySelectorAll<HTMLElement>('[data-autofocus]');\n\n for (const element of Array.from(marked).reverse()) {\n const target = isFocusable(element)\n ? element\n : getFocusableTreeWalker(element, { tabbable: true }).nextNode();\n\n if (target) return target as HTMLElement;\n }\n\n const button =\n dialog.getAttribute('role') === 'alertdialog'\n ? 'button:not([data-theme=\"danger\"])'\n : 'button';\n\n return dialog.querySelector<HTMLElement>(\n `${button}[type=\"submit\"], ${button}[data-type=\"primary\"]`,\n );\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: Ref<HTMLDivElement>,\n) {\n const transitionState = useOpenTransitionContext()?.transitionState;\n\n // From the first frame of the enter transition, not only once it has\n // ended: a Tab pressed while the dialog animates in would otherwise land on\n // the page behind it, and nothing would pull it back. Released as soon as\n // the dialog closes, so focus can return to the trigger during the exit.\n const isShown = transitionState === 'enter' || transitionState === 'entered';\n\n const context = useDialogContext();\n\n const content = <DialogContent key=\"content\" {...props} ref={ref} />;\n\n const shouldContainFocus = isShown && !!context.isOpen && trapsFocus(context);\n\n return (\n // This component traps the focus inside the dialog and restores it when\n // it unmounts (a retained dialog never does, so `DialogContent` moves\n // focus for that one). The restore is the one that matters for popover-type dialogs\n // — `DialogTrigger`'s own restore is a no-op there — so\n // `shouldRestoreFocus` has to reach it. Containment is unaffected either way.\n <FocusScope\n restoreFocus={context.shouldRestoreFocus ?? true}\n contain={shouldContainFocus}\n >\n {content}\n </FocusScope>\n );\n});\n\nconst DialogContent = forwardRef(function DialogContent(\n props: CubeDialogProps,\n ref: Ref<HTMLDivElement>,\n) {\n let { type = 'modal', ...contextProps } = useDialogContext();\n\n let {\n qa,\n children,\n size = 'M',\n // A popover shows a close button only when its `Dialog` asks for one: its\n // trigger's `isDismissable` decides whether an outside press closes it.\n isDismissable = type === 'popover' ? undefined : contextProps.isDismissable,\n onDismiss = contextProps.onClose,\n closeIcon,\n closeButtonStyles,\n width,\n tokens,\n style,\n ...otherProps\n } = props;\n\n size = sizeMap[size.toUpperCase()] || size;\n\n const styles: Styles = extractStyles(otherProps, STYLES_LIST);\n\n const { t } = useI18n();\n\n let domRef = useObjectRef(ref);\n\n // Whether focus is in the dialog or in anything opened from it, portals\n // included: React focus events bubble through the component tree.\n const isFocusInTreeRef = useRef(false);\n const isRetained = useRetainedDialogFocus(domRef, isFocusInTreeRef);\n const isTrapping = trapsFocus({ ...contextProps, type });\n\n // Set while the dialog refocuses itself, so the blur in between does not\n // reach overlays that close when focus leaves them.\n const isRefocusingRef = useRef(false);\n\n // When the dialog mounted: `useDialog` refocuses it half a second later.\n const mountedAtRef = useRef(0);\n\n useEffect(() => {\n mountedAtRef.current = Date.now();\n }, []);\n\n // `contentProps` carries an id only for `role=\"alertdialog\"` without an\n // explicit `aria-describedby`: an alert is described by its message, while a\n // plain dialog links nothing, so opening a form does not read it aloud.\n let { dialogProps, titleProps, contentProps } = useDialog(\n mergeProps(contextProps, props),\n domRef,\n );\n\n // If rendered in a popover or tray there won't be a visible dismiss button,\n // so we render a hidden one for screen readers.\n let dismissButton;\n if (type === 'popover' || type === 'tray') {\n dismissButton = <DismissButton onDismiss={onDismiss} />;\n }\n\n // Focus the first focusable element in the dialog when it opens.\n //\n // We also re-run the priority focus logic when the dialog <section>\n // itself is the active element. This recovers from a race that occurs\n // when a popover-based component (FilterPicker, Picker, Select, …) opens\n // inside another contained Dialog: React's native `autoFocus` on the\n // inner control fires during the mutation phase, before the popover's\n // FocusScope registers in react-aria's focus-scope tree, so the outer\n // FocusScope yanks focus back. useDialog then defaults focus to the\n // dialog <section>; without re-promoting it here, the priority element\n // (e.g. the search input) is never focused.\n useEffect(() => {\n // The pending timer: this one, then the refocus it may start.\n let timer: ReturnType<typeof setTimeout> | undefined;\n let isClosed = false;\n\n if (contextProps.isOpen) {\n timer = setTimeout(() => {\n if (!domRef.current) return;\n\n // `useDialog` focuses the dialog itself when it mounts, without\n // scrolling, unless focus is already inside. A retained dialog opens\n // without remounting, so do the same here: the rules below then run as\n // for a fresh dialog, and kept content keeps its scroll.\n if (isRetained && !domRef.current.contains(document.activeElement)) {\n focusSafely(domRef.current);\n\n // As `useDialog` does next: VoiceOver on iOS announces a dialog only\n // once it has rendered, so blur and refocus it half a second later\n // if focus is still on it or lost to `<body>`. Unless the refocus\n // `useDialog` set up when the dialog mounted is still to come.\n if (Date.now() - mountedAtRef.current >= 500) {\n timer = setTimeout(() => {\n const dialog = domRef.current;\n const activeElement = document.activeElement;\n\n if (\n !dialog ||\n (activeElement !== dialog && activeElement !== document.body)\n ) {\n return;\n }\n\n isRefocusingRef.current = true;\n dialog.blur();\n focusSafely(dialog);\n isRefocusingRef.current = false;\n }, 500);\n }\n }\n\n const activeElement = document.activeElement;\n const isFocusOutsideDialog = !domRef.current.contains(activeElement);\n const isFocusOnDialogShell = activeElement === domRef.current;\n\n // Priority 1: an autofocused control, or a submit or primary button\n const priorityElement = findPriorityFocusElement(domRef.current);\n\n if (priorityElement && (isFocusOutsideDialog || isFocusOnDialogShell)) {\n priorityElement.focus();\n return;\n }\n\n if (isFocusOutsideDialog && getInteractionModality() === 'virtual') {\n // A screen reader's cursor: the dialog itself takes focus once the\n // open transition ends, as `focusSafely` does it. Then also when\n // something moved focus meanwhile, as a closing menu returns it to\n // its trigger, unless a dialog that leaves the page usable lost it\n // to a control there.\n runAfterTransition(() => {\n const dialog = domRef.current;\n const focused = document.activeElement;\n\n if (\n isClosed ||\n !dialog ||\n dialog.contains(focused) ||\n (!isTrapping &&\n focused !== document.body &&\n focused !== activeElement)\n ) {\n return;\n }\n\n focusWithoutScrolling(dialog);\n });\n } else if (isFocusOutsideDialog) {\n // Fallback: focus first tabbable element, or dialog itself\n const focusManager = createFocusManager(domRef);\n\n if (!focusManager.focusFirst({ tabbable: true })) {\n domRef.current.focus();\n }\n }\n });\n }\n\n return () => {\n isClosed = true;\n clearTimeout(timer);\n };\n }, [contextProps.isOpen, isRetained, isTrapping]);\n\n // let hasHeader = useHasChild('[data-id=\"Header\"]', domRef);\n // let hasFooter = useHasChild('[data-id=\"Footer\"]', domRef);\n\n const contentOverflows = useContentOverflow(domRef);\n\n let slots = {\n title: {\n level: 2,\n preset: 'h4',\n ...titleProps,\n },\n content: {\n // `null` rather than `undefined` when there is none: slots reach nested\n // slot providers, and `undefined` does not override, so a dialog opened\n // inside an alert dialog would repeat the alert's message id.\n id: contentProps.id ?? null,\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 mods: { 'content-overflow': contentOverflows },\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 // A line only while the body scrolls: the footer then sits over\n // content that carries on beneath it, and the line is what says so.\n // Under a body that fits, the actions simply end it and a rule there\n // reads as clutter.\n border: {\n '': false,\n 'content-overflow': 'top',\n },\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 {...mergeProps(dialogProps, {\n onFocus() {\n isFocusInTreeRef.current = true;\n },\n onBlur(event: FocusEvent) {\n isFocusInTreeRef.current = false;\n\n if (isRefocusingRef.current) event.stopPropagation();\n },\n })}\n mods={{ dismissable: isDismissable, 'custom-width': width != null }}\n tokens={{\n '$dialog-size':\n width == null\n ? `${sizePxMap[size] || sizePxMap.small}px`\n : typeof width === 'number'\n ? `${width}px`\n : width,\n ...tokens,\n }}\n // oxlint-disable-next-line react/forbid-component-props -- forwards the consumer's public `style` prop\n style={style}\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 aria-label={t('dialog.dismiss', '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":["createFocusManager","getFocusableTreeWalker","focusSafely","getInteractionModality","focusWithoutScrolling","isFocusable","runAfterTransition","useObjectRef","BASE_STYLES","BaseProps","BaseStyleProps","BLOCK_STYLES","BlockStyleProps","DIMENSION_STYLES","DimensionStyleProps","FLOW_STYLES","Styles","tasty","FocusEvent","forwardRef","ReactElement","Ref","useEffect","useRef","AriaDialogProps","DismissButton","FocusScope","useDialog","useI18n","CloseIcon","mergeProps","SlotProvider","extractStyles","ItemButton","useOpenTransitionContext","trapsFocus","useDialogContext","useContentOverflow","useRetainedDialogFocus","STYLES_LIST","DialogElement","as","styles","display","flow","fill","pointerEvents","outline","position","width","height","gap","border","radius","shadow","top","CloseButton","qa","type","right","sizeMap","S","M","L","sizePxMap","small","medium","large","CubeDialogProps","Omit","size","isDismissable","onDismiss","arg","closeIcon","closeButtonStyles","role","findPriorityFocusElement","dialog","HTMLElement","marked","querySelectorAll","element","Array","from","reverse","target","tabbable","nextNode","button","getAttribute","querySelector","Dialog","props","ref","$","_c","transitionState","isShown","context","t0","content","t1","isOpen","shouldContainFocus","t2","shouldRestoreFocus","t3","DialogContent","HTMLDivElement","contextProps","children","undefined","onClose","tokens","style","otherProps","toUpperCase","t","domRef","isFocusInTreeRef","isRetained","isTrapping","isRefocusingRef","mountedAtRef","current","Date","now","dialogProps","titleProps","contentProps","dismissButton","timer","ReturnType","setTimeout","isClosed","contains","document","activeElement","body","blur","isFocusOutsideDialog","isFocusOnDialogShell","priorityElement","focus","focused","focusManager","focusFirst","clearTimeout","contentOverflows","slots","title","level","preset","id","flexGrow","padding","header","ellipsis","placeItems","placeContent","footer","mods","buttonGroup","onFocus","onBlur","event","stopPropagation","dismissable","ItemButton","_c","mergeProps"],"sources":["../../../../src/components/overlays/Dialog/Dialog.tsx"],"sourcesContent":["import { createFocusManager, getFocusableTreeWalker } from '@react-aria/focus';\nimport { focusSafely, getInteractionModality } from '@react-aria/interactions';\nimport {\n focusWithoutScrolling,\n isFocusable,\n runAfterTransition,\n useObjectRef,\n} from '@react-aria/utils';\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 {\n FocusEvent,\n forwardRef,\n ReactElement,\n Ref,\n useEffect,\n useRef,\n} from 'react';\nimport {\n AriaDialogProps,\n DismissButton,\n FocusScope,\n useDialog,\n} from 'react-aria';\n\nimport { useI18n } from '../../../i18n';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { mergeProps, SlotProvider } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { ItemButton } from '../../actions/ItemButton/ItemButton';\nimport { useOpenTransitionContext } from '../Modal/OpenTransitionContext';\n\nimport { trapsFocus, useDialogContext } from './context';\nimport { useContentOverflow } from './use-content-overflow';\nimport { useRetainedDialogFocus } from './use-retained-dialog-focus';\n\nconst STYLES_LIST = [\n ...BASE_STYLES,\n ...DIMENSION_STYLES,\n ...BLOCK_STYLES,\n ...FLOW_STYLES,\n];\n\nconst DialogElement = tasty({\n as: 'section',\n styles: {\n display: 'flex',\n flow: 'column',\n fill: '#surface',\n pointerEvents: 'auto',\n outline: 0,\n position: {\n '': 'relative',\n 'type=panel': 'absolute',\n },\n // The widest the dialog gets, also under a `width`. A tray is held by its\n // shell, whose own `styles` widen it; a takeover and a panel may span the\n // viewport.\n '$dialog-width-limit': {\n '': '$dialog-max-size',\n 'type=tray': '100%',\n 'type=fullscreenTakeover | type=panel': '100dvw',\n },\n width: {\n '': '$min-dialog-size $dialog-size $dialog-width-limit',\n 'type=fullscreen': '$dialog-max-size $dialog-max-size',\n 'type=fullscreenTakeover': '100dvw 100dvw',\n 'type=panel': 'auto',\n // A `width` is the preferred width in `$dialog-size`: it keeps the\n // limit, and replaces the floor.\n 'custom-width': 'initial $dialog-size $dialog-width-limit',\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 // A `Form` placed directly here (`Dialog > Form > Content + Footer`) lays\n // itself out as this flex column — see `FormElement`. It is the form's own\n // state rather than a rule here, so the form's `styles` still win.\n },\n});\n\nconst CloseButton = tasty(ItemButton, {\n qa: 'ModalCloseButton',\n type: 'clear',\n styles: {\n position: 'absolute',\n top: '1x',\n right: '1x',\n },\n});\n\nconst sizeMap = {\n S: 'small',\n M: 'medium',\n L: 'large',\n};\nconst sizePxMap = {\n small: 360,\n medium: 479,\n large: 798,\n};\n\nexport interface CubeDialogProps\n extends\n Omit<BaseProps, 'role'>,\n AriaDialogProps,\n BaseStyleProps,\n BlockStyleProps,\n Omit<DimensionStyleProps, 'width'> {\n /**\n * The dialog's preferred width, one value (`520px`, `65x`, `600`). It keeps\n * the type's maximum, so the dialog still fits a phone, and replaces\n * `$min-dialog-size`. To clamp the width yourself, set `styles.width`.\n */\n width?: string | number;\n /** The size of the dialog */\n size?: 'S' | 'M' | 'L' | 'small' | 'medium' | 'large';\n /**\n * Whether the dialog shows its close button. Defaults to its DialogTrigger's\n * or DialogContainer's `isDismissable`, except in a popover.\n */\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 * The control a dialog focuses when it opens: the last one marked\n * `data-autofocus` that can take focus, as kit controls mark themselves for\n * `autoFocus` (the last of several takes focus as they mount), or the first\n * control of a marked field (a date field's first segment). Otherwise a\n * submit or primary button, which in an alert dialog is never a destructive\n * (`danger`) one: a reflexive Enter would run it.\n */\nfunction findPriorityFocusElement(dialog: HTMLElement) {\n const marked = dialog.querySelectorAll<HTMLElement>('[data-autofocus]');\n\n for (const element of Array.from(marked).reverse()) {\n const target = isFocusable(element)\n ? element\n : getFocusableTreeWalker(element, { tabbable: true }).nextNode();\n\n if (target) return target as HTMLElement;\n }\n\n const button =\n dialog.getAttribute('role') === 'alertdialog'\n ? 'button:not([data-theme=\"danger\"])'\n : 'button';\n\n return dialog.querySelector<HTMLElement>(\n `${button}[type=\"submit\"], ${button}[data-type=\"primary\"]`,\n );\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: Ref<HTMLDivElement>,\n) {\n const transitionState = useOpenTransitionContext()?.transitionState;\n\n // From the first frame of the enter transition, not only once it has\n // ended: a Tab pressed while the dialog animates in would otherwise land on\n // the page behind it, and nothing would pull it back. Released as soon as\n // the dialog closes, so focus can return to the trigger during the exit.\n const isShown = transitionState === 'enter' || transitionState === 'entered';\n\n const context = useDialogContext();\n\n const content = <DialogContent key=\"content\" {...props} ref={ref} />;\n\n const shouldContainFocus = isShown && !!context.isOpen && trapsFocus(context);\n\n return (\n // This component traps the focus inside the dialog and restores it when\n // it unmounts (a retained dialog never does, so `DialogContent` moves\n // focus for that one). The restore is the one that matters for popover-type dialogs\n // — `DialogTrigger`'s own restore is a no-op there — so\n // `shouldRestoreFocus` has to reach it. Containment is unaffected either way.\n <FocusScope\n restoreFocus={context.shouldRestoreFocus ?? true}\n contain={shouldContainFocus}\n >\n {content}\n </FocusScope>\n );\n});\n\nconst DialogContent = forwardRef(function DialogContent(\n props: CubeDialogProps,\n ref: Ref<HTMLDivElement>,\n) {\n let { type = 'modal', ...contextProps } = useDialogContext();\n\n let {\n qa,\n children,\n size = 'M',\n // A popover shows a close button only when its `Dialog` asks for one: its\n // trigger's `isDismissable` decides whether an outside press closes it.\n isDismissable = type === 'popover' ? undefined : contextProps.isDismissable,\n onDismiss = contextProps.onClose,\n closeIcon,\n closeButtonStyles,\n width,\n tokens,\n style,\n ...otherProps\n } = props;\n\n size = sizeMap[size.toUpperCase()] || size;\n\n const styles: Styles = extractStyles(otherProps, STYLES_LIST);\n\n const { t } = useI18n();\n\n let domRef = useObjectRef(ref);\n\n // Whether focus is in the dialog or in anything opened from it, portals\n // included: React focus events bubble through the component tree.\n const isFocusInTreeRef = useRef(false);\n const isRetained = useRetainedDialogFocus(domRef, isFocusInTreeRef);\n const isTrapping = trapsFocus({ ...contextProps, type });\n\n // Set while the dialog refocuses itself, so the blur in between does not\n // reach overlays that close when focus leaves them.\n const isRefocusingRef = useRef(false);\n\n // When the dialog mounted: `useDialog` refocuses it half a second later.\n const mountedAtRef = useRef(0);\n\n useEffect(() => {\n mountedAtRef.current = Date.now();\n }, []);\n\n // `contentProps` carries an id only for `role=\"alertdialog\"` without an\n // explicit `aria-describedby`: an alert is described by its message, while a\n // plain dialog links nothing, so opening a form does not read it aloud.\n let { dialogProps, titleProps, contentProps } = useDialog(\n mergeProps(contextProps, props),\n domRef,\n );\n\n // If rendered in a popover or tray there won't be a visible dismiss button,\n // so we render a hidden one for screen readers.\n let dismissButton;\n if (type === 'popover' || type === 'tray') {\n dismissButton = <DismissButton onDismiss={onDismiss} />;\n }\n\n // Focus the first focusable element in the dialog when it opens.\n //\n // We also re-run the priority focus logic when the dialog <section>\n // itself is the active element. This recovers from a race that occurs\n // when a popover-based component (FilterPicker, Picker, Select, …) opens\n // inside another contained Dialog: React's native `autoFocus` on the\n // inner control fires during the mutation phase, before the popover's\n // FocusScope registers in react-aria's focus-scope tree, so the outer\n // FocusScope yanks focus back. useDialog then defaults focus to the\n // dialog <section>; without re-promoting it here, the priority element\n // (e.g. the search input) is never focused.\n useEffect(() => {\n // The pending timer: this one, then the refocus it may start.\n let timer: ReturnType<typeof setTimeout> | undefined;\n let isClosed = false;\n\n if (contextProps.isOpen) {\n timer = setTimeout(() => {\n if (!domRef.current) return;\n\n // `useDialog` focuses the dialog itself when it mounts, without\n // scrolling, unless focus is already inside. A retained dialog opens\n // without remounting, so do the same here: the rules below then run as\n // for a fresh dialog, and kept content keeps its scroll.\n if (isRetained && !domRef.current.contains(document.activeElement)) {\n focusSafely(domRef.current);\n\n // As `useDialog` does next: VoiceOver on iOS announces a dialog only\n // once it has rendered, so blur and refocus it half a second later\n // if focus is still on it or lost to `<body>`. Unless the refocus\n // `useDialog` set up when the dialog mounted is still to come.\n if (Date.now() - mountedAtRef.current >= 500) {\n timer = setTimeout(() => {\n const dialog = domRef.current;\n const activeElement = document.activeElement;\n\n if (\n !dialog ||\n (activeElement !== dialog && activeElement !== document.body)\n ) {\n return;\n }\n\n isRefocusingRef.current = true;\n dialog.blur();\n focusSafely(dialog);\n isRefocusingRef.current = false;\n }, 500);\n }\n }\n\n const activeElement = document.activeElement;\n const isFocusOutsideDialog = !domRef.current.contains(activeElement);\n const isFocusOnDialogShell = activeElement === domRef.current;\n\n // Priority 1: an autofocused control, or a submit or primary button\n const priorityElement = findPriorityFocusElement(domRef.current);\n\n if (priorityElement && (isFocusOutsideDialog || isFocusOnDialogShell)) {\n priorityElement.focus();\n return;\n }\n\n if (isFocusOutsideDialog && getInteractionModality() === 'virtual') {\n // A screen reader's cursor: the dialog itself takes focus once the\n // open transition ends, as `focusSafely` does it. Then also when\n // something moved focus meanwhile, as a closing menu returns it to\n // its trigger, unless a dialog that leaves the page usable lost it\n // to a control there.\n runAfterTransition(() => {\n const dialog = domRef.current;\n const focused = document.activeElement;\n\n if (\n isClosed ||\n !dialog ||\n dialog.contains(focused) ||\n (!isTrapping &&\n focused !== document.body &&\n focused !== activeElement)\n ) {\n return;\n }\n\n focusWithoutScrolling(dialog);\n });\n } else if (isFocusOutsideDialog) {\n // Fallback: focus first tabbable element, or dialog itself\n const focusManager = createFocusManager(domRef);\n\n if (!focusManager.focusFirst({ tabbable: true })) {\n domRef.current.focus();\n }\n }\n });\n }\n\n return () => {\n isClosed = true;\n clearTimeout(timer);\n };\n }, [contextProps.isOpen, isRetained, isTrapping]);\n\n // let hasHeader = useHasChild('[data-id=\"Header\"]', domRef);\n // let hasFooter = useHasChild('[data-id=\"Footer\"]', domRef);\n\n const contentOverflows = useContentOverflow(domRef);\n\n let slots = {\n title: {\n level: 2,\n preset: 'h4',\n ...titleProps,\n },\n content: {\n // `null` rather than `undefined` when there is none: slots reach nested\n // slot providers, and `undefined` does not override, so a dialog opened\n // inside an alert dialog would repeat the alert's message id.\n id: contentProps.id ?? null,\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 mods: { 'content-overflow': contentOverflows },\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 // A line only while the body scrolls: the footer then sits over\n // content that carries on beneath it, and the line is what says so.\n // Under a body that fits, the actions simply end it and a rule there\n // reads as clutter.\n border: {\n '': false,\n 'content-overflow': 'top',\n },\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 {...mergeProps(dialogProps, {\n onFocus() {\n isFocusInTreeRef.current = true;\n },\n onBlur(event: FocusEvent) {\n isFocusInTreeRef.current = false;\n\n if (isRefocusingRef.current) event.stopPropagation();\n },\n })}\n mods={{ dismissable: isDismissable, 'custom-width': width != null }}\n tokens={{\n '$dialog-size':\n width == null\n ? `${sizePxMap[size] || sizePxMap.small}px`\n : typeof width === 'number'\n ? `${width}px`\n : width,\n ...tokens,\n }}\n // oxlint-disable-next-line tasty/no-style-prop -- forwards the consumer's public `style` prop\n style={style}\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 aria-label={t('dialog.dismiss', '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.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { Modal as _Modal } from "../Modal/Modal.js";
3
3
  import { Tray as _Tray } from "../Modal/Tray.js";
4
4
  import { DialogContext } from "./context.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { Title as _Title } from "../../content/Title.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { Button } from "../../actions/Button/Button.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { usePopoverSync } from "../../../utils/react/usePopoverSync.js";
@@ -1 +1 @@
1
- {"version":3,"file":"DialogTrigger.js","names":["PressResponder","useMediaQuery","Styles","Fragment","ReactElement","RefObject","useEffect","useMemo","useRef","OverlayTriggerProps","Placement","PositionProps","useOverlayPosition","useOverlayTrigger","OverlayTriggerState","useOverlayTriggerState","useEvent","generateRandomId","useCombinedRefs","useLayoutEffect","usePopoverSync","isOwnActionsPress","Modal","Popover","Tray","WithCloseBehavior","DialogContext","useDialogOpenSync","CubeDialogClose","close","CubeDialogTriggerProps","Omit","children","state","type","mobileType","placement","hideArrow","targetRef","HTMLElement","isDismissable","isKeyboardDismissDisabled","mobileViewport","styles","shouldCloseOnInteractOutside","element","Element","onDismiss","action","isOpen","onOpenChange","defaultOpen","shouldFlip","shouldUpdatePosition","containerPadding","shouldRestoreFocus","DialogTrigger","props","hideOnClose","positionProps","Array","isArray","length","Error","trigger","content","isMobile","wasOpen","isExiting","onExiting","current","onExited","dialogSyncId","syncTriggerRef","syncOverlayRef","isPopoverFlavored","menuId","onClose","triggerRef","containerRef","dismissOnInnerButtonPress","closeOnPeerOpen","emits","closes","overlayRef","console","warn","fromAction","renderOverlay","PopoverTrigger","allProps","$","_c","keepOpenOnScroll","t0","t1","t2","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","triggerType","t15","anchorRef","offset","crossOffset","overlayProps","popoverProps","arrowProps","updatePosition","overlayTriggerState","Symbol","for","triggerProps","undefined","ref","triggerPropsWithRef","el","ownTrigger","popoverTriggerEl","closest","setTimeout","contains","resolveShouldCloseOnInteractOutside","style","overlay","DialogTriggerBase","wasOpenRef","dialogProps","context","hasFocusMovedOutsideDialog","activeElement","document","body","isConnected","focus","triggerExtraProps","toggle","Modal","Tray","_c","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 {\n Fragment,\n ReactElement,\n RefObject,\n useEffect,\n useMemo,\n useRef,\n} 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 { useEvent } from '../../../_internal';\nimport { generateRandomId } from '../../../utils/random';\nimport { useCombinedRefs, useLayoutEffect } from '../../../utils/react/index';\nimport { usePopoverSync } from '../../../utils/react/usePopoverSync';\nimport { isOwnActionsPress } from '../../actions/actions-run';\nimport { Modal, Popover, Tray, WithCloseBehavior } from '../Modal';\n\nimport { DialogContext } from './context';\nimport { useDialogOpenSync } from './use-dialog-open-sync';\n\nexport type CubeDialogClose = (close: () => void) => ReactElement;\n\nexport interface CubeDialogTriggerProps\n extends Omit<OverlayTriggerProps, 'type'>, PositionProps, 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 rendered on mobile, defaulting to `type`. 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 * Has no effect: popovers render no arrow.\n * @deprecated Popovers never render an arrow, so there is nothing to hide.\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. A popover closes when this element scrolls, as one attached to its trigger does. */\n targetRef?: RefObject<HTMLElement | null>;\n /**\n * Whether passive dismissal (Escape or an outside click) can close the dialog. Explicit dialog actions can still close it.\n * A popover that is not dismissable lets an outside press through to the control it lands on, including a text field, which can take focus. It stays open when another popover opens, and closes when a modal, tray, fullscreen or panel dialog opens from another `DialogTrigger`.\n */\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 * Whether focus returns to the trigger when the dialog closes. Defaults to\n * `true`.\n *\n * The restore is skipped automatically whenever the action that closed the\n * dialog has already moved focus somewhere else, so an action that opens a\n * panel/dialog/inline editor and focuses it needs nothing here. Pass `false`\n * for the remaining case: a surface that claims focus *later* than the\n * dialog's own restore (after an async load, an entry animation, or a\n * `requestAnimationFrame`), where the trigger would otherwise take focus\n * first and produce a visible flash.\n */\n shouldRestoreFocus?: boolean;\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,\n hideArrow,\n targetRef,\n onDismiss,\n isDismissable = true,\n isKeyboardDismissDisabled,\n styles,\n mobileViewport = 700,\n hideOnClose,\n shouldCloseOnInteractOutside,\n shouldRestoreFocus = true,\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 // Apply the mobile type at the configured breakpoint.\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 // Shared identity + refs for `usePopoverSync`. Allocating here (rather than\n // inside the branch-specific sub-trees) keeps a single sync registration for\n // the lifetime of the trigger, even when `type` flips between popover and\n // modal at the mobile breakpoint. The refs are then threaded into the\n // appropriate branch so existing positioning / useOverlayTrigger hooks keep\n // their original ref targets and `usePopoverSync`'s `contains()` check has a\n // real DOM node to query.\n const dialogSyncId = useMemo(() => generateRandomId(), []);\n const syncTriggerRef = useRef<HTMLElement | null>(null);\n const syncOverlayRef = useRef<HTMLElement | null>(null);\n\n // Only popover-type Dialogs participate in the \"press inside dismisses\n // me\" / \"peer popover opening dismisses me\" behaviours: modals, trays,\n // fullscreen and panel Dialogs are persistent workspaces and must not be\n // yanked closed via the EventBus (which would bypass `isDismissable` and\n // call `state.close()` directly). Non-popover types DO still EMIT\n // `popover:open`, so opening a modal correctly dismisses peer popovers.\n //\n // A popover that is not dismissable does not listen to `popover:open`: a\n // peer popover leaves it open, as any other outside press does. A modal,\n // tray, fullscreen or panel Dialog opening still closes it, through\n // `useDialogOpenSync` below.\n const isPopoverFlavored = type === 'popover';\n usePopoverSync({\n menuId: dialogSyncId,\n isOpen: state.isOpen,\n onClose: () => state.close(),\n triggerRef: syncTriggerRef,\n containerRef: syncOverlayRef,\n dismissOnInnerButtonPress: isPopoverFlavored,\n closeOnPeerOpen: isPopoverFlavored && isDismissable,\n });\n useDialogOpenSync({\n emits: !isPopoverFlavored,\n closes: isPopoverFlavored && !isDismissable,\n state,\n triggerRef: syncTriggerRef,\n overlayRef: syncOverlayRef,\n });\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, fromAction = false) {\n if (isDismissable || fromAction) {\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 isDismissable={isDismissable}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n hideArrow={hideArrow}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n shouldRestoreFocus={shouldRestoreFocus}\n syncTriggerRef={syncTriggerRef}\n syncOverlayRef={syncOverlayRef}\n triggerType={type}\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 ref={syncOverlayRef}\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 ref={syncOverlayRef}\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 syncTriggerRef={syncTriggerRef}\n overlayRef={syncOverlayRef}\n shouldRestoreFocus={shouldRestoreFocus}\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 isDismissable,\n isKeyboardDismissDisabled,\n hideOnClose,\n shouldCloseOnInteractOutside,\n shouldRestoreFocus,\n keepOpenOnScroll,\n syncTriggerRef,\n syncOverlayRef,\n triggerType,\n ...props\n } = allProps;\n\n let triggerRef = useRef<HTMLButtonElement>(null);\n let overlayRef = useRef<HTMLDivElement>(null);\n // What the popover is positioned against, and closes on scroll with.\n let anchorRef = targetRef || triggerRef;\n\n // Mirror the trigger/overlay DOM nodes into the parent-owned sync refs.\n //\n // We deliberately do NOT use `useCombinedRefs` here: that hook returns a\n // brand new internal ref and propagates to the passed refs via a regular\n // `useEffect` (post-commit). `useOverlayPosition` below reads\n // `triggerRef.current` in its own layout effect during the SAME commit, so\n // if `triggerRef` only receives the DOM node via a delayed effect, the\n // first measurement sees `null` and the popover positions at the document\n // origin until something forces a re-measure.\n //\n // Keeping `triggerRef`/`overlayRef` as the direct React refs preserves\n // synchronous assignment for `useOverlayPosition`. The sync refs are only\n // ever read inside `popover:open` handlers, which fire via setTimeout(0),\n // so a layout-effect mirror is more than fast enough.\n useLayoutEffect(() => {\n if (syncTriggerRef) {\n syncTriggerRef.current = targetRef?.current ?? triggerRef.current ?? null;\n }\n if (syncOverlayRef) {\n syncOverlayRef.current = overlayRef.current ?? null;\n }\n });\n\n let {\n overlayProps: popoverProps,\n placement,\n arrowProps,\n updatePosition,\n } = useOverlayPosition({\n targetRef: anchorRef,\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 // Registers the close (or, with `keepOpenOnScroll`, the reposition) that\n // `useOverlayPosition` runs when the anchor scrolls. It is looked up by the\n // anchor element, so it has to be registered there: with `targetRef` the\n // trigger ref is never attached, and the popover stayed open while its\n // anchor scrolled away.\n let { triggerProps, overlayProps } = useOverlayTrigger(\n { type: 'dialog' },\n overlayTriggerState,\n anchorRef,\n );\n\n let triggerPropsWithRef = {\n ...triggerProps,\n ref: targetRef ? undefined : triggerRef,\n };\n\n // Mirror the Select/ComboBox/MenuTrigger pattern: when an outside click lands\n // on ANOTHER popover trigger, return `false` so react-aria's `useOverlay`\n // does NOT `stopPropagation()` the click. The click then reaches that trigger,\n // its popover opens, and `usePopoverSync` closes this one via the EventBus.\n // Without this, react-aria swallows every outside click and a single click on\n // a sibling trigger can't open it while this popover is open.\n const resolveShouldCloseOnInteractOutside = useEvent(\n (el: Element): boolean => {\n // The caller's own predicate is asked FIRST, so an explicit \"keep me open\n // for this element\" wins over every automatic behaviour below (CUB-4113).\n // It used to be consulted last, which made the prop inert for every\n // `Button` / `ItemButton`: those carry `data-popover-dismiss`, so the\n // auto-dismiss branch matched and closed the popover before the predicate\n // was ever asked.\n //\n // Asked before every lookup below, not just inside the \"outside any\n // trigger\" branch: a trigger can own interactive controls of its own, and\n // those used to be decided without the predicate ever being asked.\n //\n // React Aria hands over the element the pointer landed on — for a\n // `Button` that is the label inside it, not the `<button>` — so a\n // predicate that guards an element has to use `contains()` rather than an\n // identity check.\n if (shouldCloseOnInteractOutside && !shouldCloseOnInteractOutside(el)) {\n return false;\n }\n\n const ownTrigger = targetRef?.current ?? triggerRef.current;\n\n // A press on our OWN trigger's actions run — an `ItemButton` row's\n // `actions`, a picker's clear button — is not a press outside. The run is\n // rendered as a sibling of the trigger (see `ItemActionsWrapper`), so the\n // `contains` checks below cannot recognise it and we dismissed instead,\n // which cost the action its press: the first press on `Reset` while the\n // popover was open only closed the popover and never ran.\n if (isOwnActionsPress(el, ownTrigger)) return false;\n\n const popoverTriggerEl = el.closest('[data-popover-trigger]');\n if (!popoverTriggerEl) {\n if (el.closest('[data-popover-keep]')) return false;\n // Plain interactive controls (Button, ItemButton) opt in via\n // `data-popover-dismiss`. Schedule the close after the click finishes so\n // the control's `onPress` runs first instead of losing the click to\n // useOverlay's stopPropagation.\n if (el.closest('[data-popover-dismiss]')) {\n setTimeout(() => state.close(), 0);\n return false;\n }\n return true;\n }\n // Clicking our own trigger again should dismiss us.\n if (popoverTriggerEl === ownTrigger || ownTrigger?.contains(el))\n return true;\n // Another popover's trigger: let the click through so it can open.\n return false;\n },\n );\n\n let overlay = (\n <Popover\n ref={overlayRef}\n styles={styles}\n hideOnClose={hideOnClose}\n isOpen={state.isOpen}\n // oxlint-disable-next-line react/forbid-component-props -- React Aria's overlay positioning computes these coordinates\n style={popoverProps.style}\n placement={placement ?? undefined}\n arrowProps={arrowProps}\n // Not dismissable: an outside press is left alone entirely, so it\n // reaches the control it landed on and nothing below is asked.\n isDismissable={isDismissable}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n hideArrow={hideArrow}\n shouldCloseOnInteractOutside={resolveShouldCloseOnInteractOutside}\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 overlayRef={overlayRef}\n isDismissable={isDismissable}\n shouldRestoreFocus={shouldRestoreFocus}\n onClose={onClose}\n />\n );\n}\n\nfunction DialogTriggerBase(props: any) {\n const ref = useCombinedRefs<HTMLElement>(props.ref);\n const wasOpenRef = useRef(false);\n const overlayRef: RefObject<HTMLElement | null> | undefined =\n props.overlayRef;\n\n // Mirror the press-responder DOM node into the parent's sync trigger ref.\n // Done via `useLayoutEffect` rather than threading through `useCombinedRefs`\n // for consistency with `PopoverTrigger` (see comment there) — keeps the\n // sync-ref population deterministic regardless of branch.\n useLayoutEffect(() => {\n if (props.syncTriggerRef) {\n props.syncTriggerRef.current = ref.current ?? null;\n }\n });\n\n let {\n type,\n state,\n onClose,\n isDismissable,\n dialogProps = {},\n triggerProps = {},\n overlay,\n trigger,\n shouldRestoreFocus = true,\n } = props;\n\n let context = {\n type,\n // Explicit dialog actions can close even when passive dismissal is disabled.\n onClose: (action?: string) => onClose?.(action, true),\n isDismissable,\n isOpen: state.isOpen,\n // Reaches `Dialog`'s `FocusScope`, which owns the restore for\n // popover-type dialogs (`Dialog` itself, for a retained one). `useDialog`\n // filters it out of the DOM props.\n shouldRestoreFocus,\n ...dialogProps,\n };\n\n // Whether focus has been claimed by something outside the closing dialog —\n // the signal that an action handed focus off and the trigger must not take\n // it back. Same rule as `MenuTrigger` (see CUB-3962): an action that opens\n // a panel, another dialog or an inline editor focuses that surface, and\n // restoring here would undo the hand-off.\n //\n // Focus still inside the overlay means nobody claimed it (the pressed\n // control keeps focus while the overlay plays its ~350ms exit animation),\n // and focus on `<body>` or on a detached node means the focused element\n // went away with the dialog. Both belong back on the trigger.\n const hasFocusMovedOutsideDialog = useEvent(() => {\n const activeElement = document.activeElement;\n\n if (!activeElement || activeElement === document.body) return false;\n if (!activeElement.isConnected) return false;\n\n return !(\n overlayRef?.current?.contains(activeElement) ||\n ref.current?.contains(activeElement)\n );\n });\n\n // Restore focus manually when the dialog closes.\n //\n // Live for modal/tray/fullscreen/panel types only: in the popover branch\n // `triggerProps` carries its own `ref`, which overrides the `ref={ref}` on\n // `PressResponder` below, so `ref.current` stays null and this is a no-op.\n // Popovers get their restore from `Dialog`'s own `<FocusScope restoreFocus>`\n // instead, or from `Dialog` at the end of the exit when `hideOnClose` keeps\n // that scope mounted; both decline to restore when focus moved elsewhere.\n useEffect(() => {\n if (!state.isOpen && wasOpenRef.current) {\n wasOpenRef.current = false;\n if (!shouldRestoreFocus) return;\n if (hasFocusMovedOutsideDialog()) return;\n ref.current?.focus();\n } else if (state.isOpen) {\n wasOpenRef.current = true;\n }\n }, [state.isOpen, shouldRestoreFocus, hasFocusMovedOutsideDialog]);\n\n // Mark popover-type DialogTrigger children with `data-popover-trigger` so\n // `Button` / `ItemButton`'s default dismiss-on-press behaviour treats them\n // as popover triggers (skips the dismiss). Modal/tray/fullscreen children\n // intentionally stay UNMARKED — when a modal-type DialogTrigger lives\n // inside a popover footer, pressing it should dismiss the parent popover\n // (matching the \"modal takes over\" native UX).\n const triggerExtraProps =\n type === 'popover' ? { 'data-popover-trigger': '' } : {};\n\n return (\n <Fragment>\n <PressResponder\n ref={ref}\n {...triggerProps}\n {...triggerExtraProps}\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":";;;;;;;;;;;;;;;;;;;;;;;;;AA0GA,SAAgBwD,cAAcC,OAA+B;CAC3D,IAAI,EACFzB,UACAE,OAAO,SACPC,aAAaD,MACbG,WACAC,WACAS,WACAP,gBAAgB,MAChBC,2BACAE,QACAD,iBAAiB,KACjBgB,aACAd,8BACAW,qBAAqB,MACrB,GAAGI,kBACDF;CAEJ,IAAI,CAACG,MAAMC,QAAQ7B,QAAQ,KAAKA,SAAS8B,SAAS,GAChD,MAAM,IAAIC,MAAM,4CAA4C;CAG9D,IAAI,CAACC,SAASC,WAAWjC;CAIzB,IADe/B,cAAc,eAAeyC,eAAc,IACtDwB,GAAU;EAEZ,IAAIhC,SAAS,WAAWC,eAAe,SACrCK,gBAAgB;EAGlBN,OAAOC;CACT;CAEA,IAAIF,QAAQlB,uBAAuB0C,KAAK;CAExC,IAAI,OAAOO,YAAY,YACrBA,UAAUA,QAAQ/B,KAAK;CAGzB,IAAIkC,UAAU3D,OAAO,KAAK;CAC1B,IAAI4D,YAAY5D,OAAO,KAAK;CAC5B,IAAI6D,kBAAmBD,UAAUE,UAAU;CAC3C,IAAIC,iBAAkBH,UAAUE,UAAU;CAE1CH,QAAQG,UAAUrC,MAAMgB;CASxB,MAAMuB,eAAejE,cAAcU,iBAAiB,GAAG,CAAA,CAAE;CACzD,MAAMwD,iBAAiBjE,OAA2B,IAAI;CACtD,MAAMkE,iBAAiBlE,OAA2B,IAAI;CAatD,MAAMmE,oBAAoBzC,SAAS;CACnCd,eAAe;EACbwD,QAAQJ;EACRvB,QAAQhB,MAAMgB;EACd4B,eAAe5C,MAAMJ,MAAM;EAC3BiD,YAAYL;EACZM,cAAcL;EACdM,2BAA2BL;EAC3BM,iBAAiBN,qBAAqBnC;CACxC,CAAC;CACDb,kBAAkB;EAChBuD,OAAO,CAACP;EACRQ,QAAQR,qBAAqB,CAACnC;EAC9BP;EACA6C,YAAYL;EACZW,YAAYV;CACd,CAAC;CAEDpE,gBAAgB;EACd,aAAa;GACX,KACG6D,QAAQG,WAAWF,UAAUE,YAC9BpC,SAAS,aACTA,SAAS,QAETmD,QAAQC,KACN,uLACF;EAEJ;CACF,GAAG,CAAA,CAAE;CAEL,SAAST,QAAQ7B,QAAQuC,aAAa,OAAO;EAC3C,IAAI/C,iBAAiB+C,YAAY;GAC/BxC,aAAaA,UAAUC,MAAM;GAC7Bf,MAAMJ,MAAM;EACd;CACF;CAEA,IAAIK,SAAS,WACX,OACE,oBAAC,gBAAD;EACE,GAAIyB;EACSD;EACNzB;EACCU;EACGL;EACF0B;EACAC;EACMzB;EACYC;EAChBJ;EACmBO;EACVW;EACJkB;EACAC;EAChB,aAAaxC;EACJ2C;CAAQ,CAAA;CAKvB,IAAIW,sBAAsB;EACxB,QAAQtD,MAAR;GACE,KAAK;GACL,KAAK;GACL,KAAK;GACL,KAAK,SACH,OACE,oBAACgH,QAAD;IACE,KAAKxE;IACQhB;IACb,QAAQzB,MAAMgB;IACCT;IACTN;IACqBO;IACnBE;IACsBC;IACrBiC;IACER;IACDE;IAET,UAAA,OAAON,YAAY,aAAaA,QAAQhC,MAAMJ,KAAK,IAAIoC;GACnD,CAAA;GAEX,KAAK,QACH,OACE,oBAACkF,OAAD;IACE,KAAKzE;IACQhB;IACb,QAAQzB,MAAMgB;IACaR;IACnBE;IACCkC;IAER,UAAA,OAAOZ,YAAY,aAAaA,QAAQhC,MAAMJ,KAAK,IAAIoC;GACpD,CAAA;EAEZ;CACF;CAEA,OACE,oBAAC,mBAAD;EACQ/B;EACCD;EACQO;EACNwB;EACT,SAASwB,cAAc;EACV9B;EACGe;EAChB,YAAYC;EACQnB;EACXsB;CAAQ,CAAA;AAGvB;AAEA,SAAAY,eAAAC,UAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAA3B;CAAA,IAAA5B;CAAA,IAAAqB;CAAA,IAAAlB;CAAA,IAAAC;CAAA,IAAAoD;CAAA,IAAAhB;CAAA,IAAApB;CAAA,IAAAb;CAAA,IAAAW;CAAA,IAAAtB;CAAA,IAAAU;CAAA,IAAA+B;CAAA,IAAAD;CAAA,IAAAnC;CAAA,IAAA0B;CAAA,IAAA2B,EAAA,OAAAD,UAAA;EACE,MAAA,EAAAzD,OAAA6D,IAAAnD,QAAAoD,IAAAzD,WAAA0D,IAAAhC,SAAAiC,IAAAhC,SAAAiC,IAAA7D,WAAA8D,IAAAtB,SAAAuB,IAAA5D,eAAA6D,IAAA5D,2BAAA6D,IAAA5C,aAAA6C,IAAA3D,8BAAA4D,KAAAjD,oBAAAkD,KAAAZ,kBAAAa,KAAAjC,gBAAAkC,KAAAjC,gBAAAkC,KAAAC,aAAA,GAAAC,QAkBIpB;EAlBJzD,QAAA6D;EAAAnD,SAAAoD;EAAAzD,YAAA0D;EAAAhC,UAAAiC;EAAAhC,UAAAiC;EAAA7D,YAAA8D;EAAAtB,UAAAuB;EAAA5D,gBAAA6D;EAAA5D,4BAAA6D;EAAA5C,cAAA6C;EAAA3D,+BAAA4D;EAAAjD,qBAAAkD;EAAAZ,mBAAAa;EAAAjC,iBAAAkC;EAAAjC,iBAAAkC;EAAAnD,QAAAqD;EAkBanB,EAAA,KAAAD;EAAAC,EAAA,KAAA1B;EAAA0B,EAAA,KAAAtD;EAAAsD,EAAA,KAAAjC;EAAAiC,EAAA,KAAAnD;EAAAmD,EAAA,KAAAlD;EAAAkD,EAAA,KAAAE;EAAAF,EAAA,KAAAd;EAAAc,EAAA,KAAAlC;EAAAkC,EAAA,KAAA/C;EAAA+C,EAAA,MAAApC;EAAAoC,EAAA,MAAA1D;EAAA0D,EAAA,MAAAhD;EAAAgD,EAAA,MAAAjB;EAAAiB,EAAA,MAAAlB;EAAAkB,EAAA,MAAArD;EAAAqD,EAAA,MAAA3B;CAAA,OAAA;EAAAC,UAAA0B,EAAA;EAAAtD,YAAAsD,EAAA;EAAAjC,cAAAiC,EAAA;EAAAnD,gBAAAmD,EAAA;EAAAlD,4BAAAkD,EAAA;EAAAE,mBAAAF,EAAA;EAAAd,UAAAc,EAAA;EAAAlC,QAAAkC,EAAA;EAAA/C,+BAAA+C,EAAA;EAAApC,qBAAAoC,EAAA;EAAA1D,QAAA0D,EAAA;EAAAhD,SAAAgD,EAAA;EAAAjB,iBAAAiB,EAAA;EAAAlB,iBAAAkB,EAAA;EAAArD,YAAAqD,EAAA;EAAA3B,UAAA2B,EAAA;CAAA;CAEb,MAAAb,aAAiBtE,OAA0B,IAAI;CAC/C,MAAA4E,aAAiB5E,OAAuB,IAAI;CAE5C,MAAAuG,YAAgBzE,aAAAwC;CAAwB,IAAAgB;CAAA,IAAAH,EAAA,QAAAjB,kBAAAiB,EAAA,QAAAlB,kBAAAkB,EAAA,QAAArD,WAAA;EAgBxBwD,WAAA;GACd,IAAIrB,gBACFA,eAAcH,UAAWhC,WAASgC,WAAaQ,WAAUR,WAAhC;GAE3B,IAAII,gBACFA,eAAcJ,UAAWc,WAAUd,WAAV;EAC1B;EACFqB,EAAA,MAAAjB;EAAAiB,EAAA,MAAAlB;EAAAkB,EAAA,MAAArD;EAAAqD,EAAA,MAAAG;CAAA,OAAAA,KAAAH,EAAA;CAPDxE,kBAAgB2E,EAOf;CAYS,MAAAC,KAAAtC,MAAKuD,UAAL;CAAiB,IAAAhB;CAAA,IAAAL,EAAA,QAAAoB,aAAApB,EAAA,QAAAlC,MAAAH,oBAAAqC,EAAA,QAAAlC,MAAAwD,eAAAtB,EAAA,QAAAlC,MAAArB,aAAAuD,EAAA,QAAAlC,MAAAL,cAAAuC,EAAA,QAAAlC,MAAAJ,wBAAAsC,EAAA,QAAA1D,MAAAgB,UAAA0C,EAAA,QAAAI,IAAA;EALJC,KAAA;GAAA1D,WACVyE;GAAS3B;GAAAhD,WAETqB,MAAKrB;GAAUkB,kBACRG,MAAKH;GAAiB0D,QAChCjB;GAAiBkB,aACZxD,MAAKwD;GAAY7D,YAClBK,MAAKL;GAAWC,sBACNI,MAAKJ;GAAqBJ,QACxChB,MAAKgB;EACf;EAAC0C,EAAA,MAAAoB;EAAApB,EAAA,MAAAlC,MAAAH;EAAAqC,EAAA,MAAAlC,MAAAwD;EAAAtB,EAAA,MAAAlC,MAAArB;EAAAuD,EAAA,MAAAlC,MAAAL;EAAAuC,EAAA,MAAAlC,MAAAJ;EAAAsC,EAAA,MAAA1D,MAAAgB;EAAA0C,EAAA,MAAAI;EAAAJ,EAAA,MAAAK;CAAA,OAAAA,KAAAL,EAAA;CAfD,MAAA,EAAAuB,cAAAC,cAAA/E,WAAAgF,YAAAC,mBAKIzG,mBAAmBoF,EAUtB;CAED,IAAAsB,sBAA0BrF;CAE1B,IAAI4D,kBAAgB;EAAA,IAAAI;EAAA,IAAAN,EAAA,QAAA1D,SAAA0D,EAAA,QAAA0B,gBAAA;GACIpB,KAAA;IAAA,GAAKhE;IAAKJ,OAASwF;GAAe;GAAC1B,EAAA,MAAA1D;GAAA0D,EAAA,MAAA0B;GAAA1B,EAAA,MAAAM;EAAA,OAAAA,KAAAN,EAAA;EAAzD2B,sBAAsBA;CAAH;CACpB,IAAArB;CAAA,IAAAN,EAAA,QAAA4B,OAAAC,IAAA,2BAAA,GAAA;EAQCvB,KAAA,EAAA/D,MAAQ,SAAS;EAACyD,EAAA,MAAAM;CAAA,OAAAA,KAAAN,EAAA;CADpB,MAAA,EAAA8B,cAAAP,iBAAqCrG,kBACnCoF,IACAqB,qBACAP,SACF;CAIO,MAAAb,KAAA5D,YAAAoF,KAAAA,IAAA5C;CAAkC,IAAAqB;CAAA,IAAAR,EAAA,QAAAO,MAAAP,EAAA,QAAA8B,cAAA;EAFftB,KAAA;GAAA,GACrBsB;GAAYE,KACVzB;EACP;EAACP,EAAA,MAAAO;EAAAP,EAAA,MAAA8B;EAAA9B,EAAA,MAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAHD,MAAAiC,sBAA0BzB;CAGxB,IAAAC;CAAA,IAAAT,EAAA,QAAA/C,gCAAA+C,EAAA,QAAA1D,SAAA0D,EAAA,QAAArD,WAAA;EASA8D,MAAAyB,OAAA;GAgBE,IAAIjF,gCAAA,CAAiCA,6BAA6BiF,EAAE,GAAC,OAC5D;GAGT,MAAAC,aAAmBxF,WAASgC,WAAaQ,WAAUR;GAQnD,IAAIjD,kBAAkBwG,IAAIC,UAAU,GAAC,OAAS;GAE9C,MAAAC,mBAAyBF,GAAEG,QAAS,wBAAwB;GAC5D,IAAI,CAACD,kBAAgB;IACnB,IAAIF,GAAEG,QAAS,qBAAqB,GAAC,OAAS;IAK9C,IAAIH,GAAEG,QAAS,wBAAwB,GAAC;KACtCC,iBAAiBhG,MAAKJ,MAAO,GAAG,CAAC;KAAC,OAC3B;IAAK;IACb,OACM;GAAI;GAGb,IAAIkG,qBAAqBD,cAAcA,YAAUI,SAAWL,EAAE,GAAC,OACtD;GAAK,OAEP;EAAK;EACblC,EAAA,MAAA/C;EAAA+C,EAAA,MAAA1D;EAAA0D,EAAA,MAAArD;EAAAqD,EAAA,MAAAS;CAAA,OAAAA,KAAAT,EAAA;CAjDH,MAAAwC,sCAA4CnH,SAC1CoF,EAiDF;CAUe,MAAAC,KAAAjE,aAAAsF,KAAAA;CAAsB,IAAApB;CAAA,IAAAX,EAAA,QAAA1B,WAAA0B,EAAA,QAAA1D,MAAAJ,OAAA;EAUhCyE,KAAA,OAAOrC,YAAY,aAAaA,QAAQhC,MAAKJ,KAAgB,IAA7DoC;EAA8D0B,EAAA,MAAA1B;EAAA0B,EAAA,MAAA1D,MAAAJ;EAAA8D,EAAA,MAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,QAAAyB,cAAAzB,EAAA,QAAAtD,aAAAsD,EAAA,QAAAjC,eAAAiC,EAAA,QAAAnD,iBAAAmD,EAAA,QAAAlD,6BAAAkD,EAAA,QAAAd,WAAAc,EAAA,QAAAwB,aAAAiB,SAAAzC,EAAA,QAAAwC,uCAAAxC,EAAA,QAAA1D,MAAAgB,UAAA0C,EAAA,QAAAhD,UAAAgD,EAAA,QAAAU,MAAAV,EAAA,QAAAW,IAAA;EAjBjEC,KAAA,oBAAC8C,UAAD;GACOjE,KAAAA;GACGzC;GACKe;GACL,QAAAzB,MAAKgB;GAEN,OAAAkE,aAAYiB;GACR,WAAA/B;GACCe;GAGG5E;GACYC;GAChBJ;GACmB8F,8BAAAA;GACrBtD;GAERyB,UAAAA;EAjBK,CAAA;EAkBEX,EAAA,MAAAyB;EAAAzB,EAAA,MAAAtD;EAAAsD,EAAA,MAAAjC;EAAAiC,EAAA,MAAAnD;EAAAmD,EAAA,MAAAlD;EAAAkD,EAAA,MAAAd;EAAAc,EAAA,MAAAwB,aAAAiB;EAAAzC,EAAA,MAAAwC;EAAAxC,EAAA,MAAA1D,MAAAgB;EAAA0C,EAAA,MAAAhD;EAAAgD,EAAA,MAAAU;EAAAV,EAAA,MAAAW;EAAAX,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAnBZ,MAAA0C,UACE9B;CAmBA,IAAAC;CAAA,IAAAb,EAAA,QAAAnD,iBAAAmD,EAAA,QAAAd,WAAAc,EAAA,QAAA0C,WAAA1C,EAAA,QAAAuB,gBAAAvB,EAAA,QAAApC,sBAAAoC,EAAA,QAAA1D,SAAA0D,EAAA,QAAA3B,WAAA2B,EAAA,QAAAiC,qBAAA;EAGApB,MAAA,oBAAC,mBAAD;GACO,MAAA;GACEvE;GACO2F,cAAAA;GACDV,aAAAA;GACJlD;GACAqE;GACGjD;GACG5C;GACKe;GACXsB;EAAO,CAAA;EAChBc,EAAA,MAAAnD;EAAAmD,EAAA,MAAAd;EAAAc,EAAA,MAAA0C;EAAA1C,EAAA,MAAAuB;EAAAvB,EAAA,MAAApC;EAAAoC,EAAA,MAAA1D;EAAA0D,EAAA,MAAA3B;EAAA2B,EAAA,MAAAiC;EAAAjC,EAAA,MAAAa;CAAA,OAAAA,MAAAb,EAAA;CAAA,OAXFa;AAWE;AAIN,SAAS8B,kBAAkB7E,OAAY;CACrC,MAAMkE,MAAMzG,gBAA6BuC,MAAMkE,GAAG;CAClD,MAAMY,aAAa/H,OAAO,KAAK;CAC/B,MAAM4E,aACJ3B,MAAM2B;CAMRjE,wBAAsB;EACpB,IAAIsC,MAAMgB,gBACRhB,MAAMgB,eAAeH,UAAUqD,IAAIrD,WAAW;CAElD,CAAC;CAED,IAAI,EACFpC,MACAD,OACA4C,SACArC,eACAgG,cAAc,CAAC,GACff,eAAe,CAAC,GAChBY,SACArE,SACAT,qBAAqB,SACnBE;CAEJ,IAAIgF,UAAU;EACZvG;EAEA2C,UAAU7B,WAAoB6B,UAAU7B,QAAQ,IAAI;EACpDR;EACAS,QAAQhB,MAAMgB;EAIdM;EACA,GAAGiF;CACL;CAYA,MAAME,6BAA6B1H,eAAe;EAChD,MAAM2H,gBAAgBC,SAASD;EAE/B,IAAI,CAACA,iBAAiBA,kBAAkBC,SAASC,MAAM,OAAO;EAC9D,IAAI,CAACF,cAAcG,aAAa,OAAO;EAEvC,OAAO,EACL1D,YAAYd,SAAS4D,SAASS,aAAa,KAC3ChB,IAAIrD,SAAS4D,SAASS,aAAa;CAEvC,CAAC;CAUDrI,gBAAgB;EACd,IAAI,CAAC2B,MAAMgB,UAAUsF,WAAWjE,SAAS;GACvCiE,WAAWjE,UAAU;GACrB,IAAI,CAACf,oBAAoB;GACzB,IAAImF,2BAA2B,GAAG;GAClCf,IAAIrD,SAASyE,MAAM;EACrB,OAAO,IAAI9G,MAAMgB,QACfsF,WAAWjE,UAAU;CAEzB,GAAG;EAACrC,MAAMgB;EAAQM;EAAoBmF;CAA0B,CAAC;CAQjE,MAAMM,oBACJ9G,SAAS,YAAY,EAAE,wBAAwB,GAAG,IAAI,CAAC;CAEzD,OACE,qBAAC,UAAD,EAAA,UAAA,CACE,oBAAC,gBAAD;EACOyF;EACL,GAAIF;EACJ,GAAIuB;EACJ,WACE/G,MAAMgB,UACNf,SAAS,WACTA,SAAS,gBACTA,SAAS;EAEX,SAASD,MAAMgH;EAEdjF,UAAAA;CACa,CAAA,GAChB,oBAAC,cAAc,UAAf;EAAwB,OAAOyE;EAAUJ,UAAAA;CAAgC,CAAA,CACjE,EAAA,CAAA;AAEd"}
1
+ {"version":3,"file":"DialogTrigger.js","names":["PressResponder","useMediaQuery","Styles","Fragment","ReactElement","RefObject","useEffect","useMemo","useRef","OverlayTriggerProps","Placement","PositionProps","useOverlayPosition","useOverlayTrigger","OverlayTriggerState","useOverlayTriggerState","useEvent","generateRandomId","useCombinedRefs","useLayoutEffect","usePopoverSync","isOwnActionsPress","Modal","Popover","Tray","WithCloseBehavior","DialogContext","useDialogOpenSync","CubeDialogClose","close","CubeDialogTriggerProps","Omit","children","state","type","mobileType","placement","hideArrow","targetRef","HTMLElement","isDismissable","isKeyboardDismissDisabled","mobileViewport","styles","shouldCloseOnInteractOutside","element","Element","onDismiss","action","isOpen","onOpenChange","defaultOpen","shouldFlip","shouldUpdatePosition","containerPadding","shouldRestoreFocus","DialogTrigger","props","hideOnClose","positionProps","Array","isArray","length","Error","trigger","content","isMobile","wasOpen","isExiting","onExiting","current","onExited","dialogSyncId","syncTriggerRef","syncOverlayRef","isPopoverFlavored","menuId","onClose","triggerRef","containerRef","dismissOnInnerButtonPress","closeOnPeerOpen","emits","closes","overlayRef","console","warn","fromAction","renderOverlay","PopoverTrigger","allProps","$","_c","keepOpenOnScroll","t0","t1","t2","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","triggerType","t15","anchorRef","offset","crossOffset","overlayProps","popoverProps","arrowProps","updatePosition","overlayTriggerState","Symbol","for","triggerProps","undefined","ref","triggerPropsWithRef","el","ownTrigger","popoverTriggerEl","closest","setTimeout","contains","resolveShouldCloseOnInteractOutside","style","overlay","DialogTriggerBase","wasOpenRef","dialogProps","context","hasFocusMovedOutsideDialog","activeElement","document","body","isConnected","focus","triggerExtraProps","toggle","Modal","Tray","_c","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 {\n Fragment,\n ReactElement,\n RefObject,\n useEffect,\n useMemo,\n useRef,\n} 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 { useEvent } from '../../../_internal';\nimport { generateRandomId } from '../../../utils/random';\nimport { useCombinedRefs, useLayoutEffect } from '../../../utils/react/index';\nimport { usePopoverSync } from '../../../utils/react/usePopoverSync';\nimport { isOwnActionsPress } from '../../actions/actions-run';\nimport { Modal, Popover, Tray, WithCloseBehavior } from '../Modal';\n\nimport { DialogContext } from './context';\nimport { useDialogOpenSync } from './use-dialog-open-sync';\n\nexport type CubeDialogClose = (close: () => void) => ReactElement;\n\nexport interface CubeDialogTriggerProps\n extends Omit<OverlayTriggerProps, 'type'>, PositionProps, 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 rendered on mobile, defaulting to `type`. 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 * Has no effect: popovers render no arrow.\n * @deprecated Popovers never render an arrow, so there is nothing to hide.\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. A popover closes when this element scrolls, as one attached to its trigger does. */\n targetRef?: RefObject<HTMLElement | null>;\n /**\n * Whether passive dismissal (Escape or an outside click) can close the dialog. Explicit dialog actions can still close it.\n * A popover that is not dismissable lets an outside press through to the control it lands on, including a text field, which can take focus. It stays open when another popover opens, and closes when a modal, tray, fullscreen or panel dialog opens from another `DialogTrigger`.\n */\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 * Whether focus returns to the trigger when the dialog closes. Defaults to\n * `true`.\n *\n * The restore is skipped automatically whenever the action that closed the\n * dialog has already moved focus somewhere else, so an action that opens a\n * panel/dialog/inline editor and focuses it needs nothing here. Pass `false`\n * for the remaining case: a surface that claims focus *later* than the\n * dialog's own restore (after an async load, an entry animation, or a\n * `requestAnimationFrame`), where the trigger would otherwise take focus\n * first and produce a visible flash.\n */\n shouldRestoreFocus?: boolean;\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,\n hideArrow,\n targetRef,\n onDismiss,\n isDismissable = true,\n isKeyboardDismissDisabled,\n styles,\n mobileViewport = 700,\n hideOnClose,\n shouldCloseOnInteractOutside,\n shouldRestoreFocus = true,\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 // Apply the mobile type at the configured breakpoint.\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 // Shared identity + refs for `usePopoverSync`. Allocating here (rather than\n // inside the branch-specific sub-trees) keeps a single sync registration for\n // the lifetime of the trigger, even when `type` flips between popover and\n // modal at the mobile breakpoint. The refs are then threaded into the\n // appropriate branch so existing positioning / useOverlayTrigger hooks keep\n // their original ref targets and `usePopoverSync`'s `contains()` check has a\n // real DOM node to query.\n const dialogSyncId = useMemo(() => generateRandomId(), []);\n const syncTriggerRef = useRef<HTMLElement | null>(null);\n const syncOverlayRef = useRef<HTMLElement | null>(null);\n\n // Only popover-type Dialogs participate in the \"press inside dismisses\n // me\" / \"peer popover opening dismisses me\" behaviours: modals, trays,\n // fullscreen and panel Dialogs are persistent workspaces and must not be\n // yanked closed via the EventBus (which would bypass `isDismissable` and\n // call `state.close()` directly). Non-popover types DO still EMIT\n // `popover:open`, so opening a modal correctly dismisses peer popovers.\n //\n // A popover that is not dismissable does not listen to `popover:open`: a\n // peer popover leaves it open, as any other outside press does. A modal,\n // tray, fullscreen or panel Dialog opening still closes it, through\n // `useDialogOpenSync` below.\n const isPopoverFlavored = type === 'popover';\n usePopoverSync({\n menuId: dialogSyncId,\n isOpen: state.isOpen,\n onClose: () => state.close(),\n triggerRef: syncTriggerRef,\n containerRef: syncOverlayRef,\n dismissOnInnerButtonPress: isPopoverFlavored,\n closeOnPeerOpen: isPopoverFlavored && isDismissable,\n });\n useDialogOpenSync({\n emits: !isPopoverFlavored,\n closes: isPopoverFlavored && !isDismissable,\n state,\n triggerRef: syncTriggerRef,\n overlayRef: syncOverlayRef,\n });\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, fromAction = false) {\n if (isDismissable || fromAction) {\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 isDismissable={isDismissable}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n hideArrow={hideArrow}\n shouldCloseOnInteractOutside={shouldCloseOnInteractOutside}\n shouldRestoreFocus={shouldRestoreFocus}\n syncTriggerRef={syncTriggerRef}\n syncOverlayRef={syncOverlayRef}\n triggerType={type}\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 ref={syncOverlayRef}\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 ref={syncOverlayRef}\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 syncTriggerRef={syncTriggerRef}\n overlayRef={syncOverlayRef}\n shouldRestoreFocus={shouldRestoreFocus}\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 isDismissable,\n isKeyboardDismissDisabled,\n hideOnClose,\n shouldCloseOnInteractOutside,\n shouldRestoreFocus,\n keepOpenOnScroll,\n syncTriggerRef,\n syncOverlayRef,\n triggerType,\n ...props\n } = allProps;\n\n let triggerRef = useRef<HTMLButtonElement>(null);\n let overlayRef = useRef<HTMLDivElement>(null);\n // What the popover is positioned against, and closes on scroll with.\n let anchorRef = targetRef || triggerRef;\n\n // Mirror the trigger/overlay DOM nodes into the parent-owned sync refs.\n //\n // We deliberately do NOT use `useCombinedRefs` here: that hook returns a\n // brand new internal ref and propagates to the passed refs via a regular\n // `useEffect` (post-commit). `useOverlayPosition` below reads\n // `triggerRef.current` in its own layout effect during the SAME commit, so\n // if `triggerRef` only receives the DOM node via a delayed effect, the\n // first measurement sees `null` and the popover positions at the document\n // origin until something forces a re-measure.\n //\n // Keeping `triggerRef`/`overlayRef` as the direct React refs preserves\n // synchronous assignment for `useOverlayPosition`. The sync refs are only\n // ever read inside `popover:open` handlers, which fire via setTimeout(0),\n // so a layout-effect mirror is more than fast enough.\n useLayoutEffect(() => {\n if (syncTriggerRef) {\n syncTriggerRef.current = targetRef?.current ?? triggerRef.current ?? null;\n }\n if (syncOverlayRef) {\n syncOverlayRef.current = overlayRef.current ?? null;\n }\n });\n\n let {\n overlayProps: popoverProps,\n placement,\n arrowProps,\n updatePosition,\n } = useOverlayPosition({\n targetRef: anchorRef,\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 // Registers the close (or, with `keepOpenOnScroll`, the reposition) that\n // `useOverlayPosition` runs when the anchor scrolls. It is looked up by the\n // anchor element, so it has to be registered there: with `targetRef` the\n // trigger ref is never attached, and the popover stayed open while its\n // anchor scrolled away.\n let { triggerProps, overlayProps } = useOverlayTrigger(\n { type: 'dialog' },\n overlayTriggerState,\n anchorRef,\n );\n\n let triggerPropsWithRef = {\n ...triggerProps,\n ref: targetRef ? undefined : triggerRef,\n };\n\n // Mirror the Select/ComboBox/MenuTrigger pattern: when an outside click lands\n // on ANOTHER popover trigger, return `false` so react-aria's `useOverlay`\n // does NOT `stopPropagation()` the click. The click then reaches that trigger,\n // its popover opens, and `usePopoverSync` closes this one via the EventBus.\n // Without this, react-aria swallows every outside click and a single click on\n // a sibling trigger can't open it while this popover is open.\n const resolveShouldCloseOnInteractOutside = useEvent(\n (el: Element): boolean => {\n // The caller's own predicate is asked FIRST, so an explicit \"keep me open\n // for this element\" wins over every automatic behaviour below (CUB-4113).\n // It used to be consulted last, which made the prop inert for every\n // `Button` / `ItemButton`: those carry `data-popover-dismiss`, so the\n // auto-dismiss branch matched and closed the popover before the predicate\n // was ever asked.\n //\n // Asked before every lookup below, not just inside the \"outside any\n // trigger\" branch: a trigger can own interactive controls of its own, and\n // those used to be decided without the predicate ever being asked.\n //\n // React Aria hands over the element the pointer landed on — for a\n // `Button` that is the label inside it, not the `<button>` — so a\n // predicate that guards an element has to use `contains()` rather than an\n // identity check.\n if (shouldCloseOnInteractOutside && !shouldCloseOnInteractOutside(el)) {\n return false;\n }\n\n const ownTrigger = targetRef?.current ?? triggerRef.current;\n\n // A press on our OWN trigger's actions run — an `ItemButton` row's\n // `actions`, a picker's clear button — is not a press outside. The run is\n // rendered as a sibling of the trigger (see `ItemActionsWrapper`), so the\n // `contains` checks below cannot recognise it and we dismissed instead,\n // which cost the action its press: the first press on `Reset` while the\n // popover was open only closed the popover and never ran.\n if (isOwnActionsPress(el, ownTrigger)) return false;\n\n const popoverTriggerEl = el.closest('[data-popover-trigger]');\n if (!popoverTriggerEl) {\n if (el.closest('[data-popover-keep]')) return false;\n // Plain interactive controls (Button, ItemButton) opt in via\n // `data-popover-dismiss`. Schedule the close after the click finishes so\n // the control's `onPress` runs first instead of losing the click to\n // useOverlay's stopPropagation.\n if (el.closest('[data-popover-dismiss]')) {\n setTimeout(() => state.close(), 0);\n return false;\n }\n return true;\n }\n // Clicking our own trigger again should dismiss us.\n if (popoverTriggerEl === ownTrigger || ownTrigger?.contains(el))\n return true;\n // Another popover's trigger: let the click through so it can open.\n return false;\n },\n );\n\n let overlay = (\n <Popover\n ref={overlayRef}\n styles={styles}\n hideOnClose={hideOnClose}\n isOpen={state.isOpen}\n // oxlint-disable-next-line tasty/no-style-prop -- React Aria's overlay positioning computes these coordinates\n style={popoverProps.style}\n placement={placement ?? undefined}\n arrowProps={arrowProps}\n // Not dismissable: an outside press is left alone entirely, so it\n // reaches the control it landed on and nothing below is asked.\n isDismissable={isDismissable}\n isKeyboardDismissDisabled={isKeyboardDismissDisabled}\n hideArrow={hideArrow}\n shouldCloseOnInteractOutside={resolveShouldCloseOnInteractOutside}\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 overlayRef={overlayRef}\n isDismissable={isDismissable}\n shouldRestoreFocus={shouldRestoreFocus}\n onClose={onClose}\n />\n );\n}\n\nfunction DialogTriggerBase(props: any) {\n const ref = useCombinedRefs<HTMLElement>(props.ref);\n const wasOpenRef = useRef(false);\n const overlayRef: RefObject<HTMLElement | null> | undefined =\n props.overlayRef;\n\n // Mirror the press-responder DOM node into the parent's sync trigger ref.\n // Done via `useLayoutEffect` rather than threading through `useCombinedRefs`\n // for consistency with `PopoverTrigger` (see comment there) — keeps the\n // sync-ref population deterministic regardless of branch.\n useLayoutEffect(() => {\n if (props.syncTriggerRef) {\n props.syncTriggerRef.current = ref.current ?? null;\n }\n });\n\n let {\n type,\n state,\n onClose,\n isDismissable,\n dialogProps = {},\n triggerProps = {},\n overlay,\n trigger,\n shouldRestoreFocus = true,\n } = props;\n\n let context = {\n type,\n // Explicit dialog actions can close even when passive dismissal is disabled.\n onClose: (action?: string) => onClose?.(action, true),\n isDismissable,\n isOpen: state.isOpen,\n // Reaches `Dialog`'s `FocusScope`, which owns the restore for\n // popover-type dialogs (`Dialog` itself, for a retained one). `useDialog`\n // filters it out of the DOM props.\n shouldRestoreFocus,\n ...dialogProps,\n };\n\n // Whether focus has been claimed by something outside the closing dialog —\n // the signal that an action handed focus off and the trigger must not take\n // it back. Same rule as `MenuTrigger` (see CUB-3962): an action that opens\n // a panel, another dialog or an inline editor focuses that surface, and\n // restoring here would undo the hand-off.\n //\n // Focus still inside the overlay means nobody claimed it (the pressed\n // control keeps focus while the overlay plays its ~350ms exit animation),\n // and focus on `<body>` or on a detached node means the focused element\n // went away with the dialog. Both belong back on the trigger.\n const hasFocusMovedOutsideDialog = useEvent(() => {\n const activeElement = document.activeElement;\n\n if (!activeElement || activeElement === document.body) return false;\n if (!activeElement.isConnected) return false;\n\n return !(\n overlayRef?.current?.contains(activeElement) ||\n ref.current?.contains(activeElement)\n );\n });\n\n // Restore focus manually when the dialog closes.\n //\n // Live for modal/tray/fullscreen/panel types only: in the popover branch\n // `triggerProps` carries its own `ref`, which overrides the `ref={ref}` on\n // `PressResponder` below, so `ref.current` stays null and this is a no-op.\n // Popovers get their restore from `Dialog`'s own `<FocusScope restoreFocus>`\n // instead, or from `Dialog` at the end of the exit when `hideOnClose` keeps\n // that scope mounted; both decline to restore when focus moved elsewhere.\n useEffect(() => {\n if (!state.isOpen && wasOpenRef.current) {\n wasOpenRef.current = false;\n if (!shouldRestoreFocus) return;\n if (hasFocusMovedOutsideDialog()) return;\n ref.current?.focus();\n } else if (state.isOpen) {\n wasOpenRef.current = true;\n }\n }, [state.isOpen, shouldRestoreFocus, hasFocusMovedOutsideDialog]);\n\n // Mark popover-type DialogTrigger children with `data-popover-trigger` so\n // `Button` / `ItemButton`'s default dismiss-on-press behaviour treats them\n // as popover triggers (skips the dismiss). Modal/tray/fullscreen children\n // intentionally stay UNMARKED — when a modal-type DialogTrigger lives\n // inside a popover footer, pressing it should dismiss the parent popover\n // (matching the \"modal takes over\" native UX).\n const triggerExtraProps =\n type === 'popover' ? { 'data-popover-trigger': '' } : {};\n\n return (\n <Fragment>\n <PressResponder\n ref={ref}\n {...triggerProps}\n {...triggerExtraProps}\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.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { Title as _Title } from "../../content/Title.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
  import invariant from "tiny-invariant";
4
4
  //#region src/components/overlays/Dialog/context.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  //#region src/components/overlays/Dialog/default-button-text.ts
3
3
  /**
4
4
  * Gives a dialog's built-in button its default text without overriding the
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | 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.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { useEventBus } from "../../../utils/react/useEventBus.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { useEffect, useEffectEvent } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { focusProgrammatically } from "../../../utils/react/programmaticFocus.js";
3
3
  import { useOpenTransitionContext } from "../Modal/OpenTransitionContext.js";
4
4
  import { trapsFocus, useDialogContext } from "./context.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { mergeRefs as mergeRefs$1 } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { ModalContainmentProvider, useModalContainment } from "./modal-containment.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
  //#region src/components/overlays/Modal/OpenTransitionContext.tsx
4
4
  const OpenTransitionContext = createContext(null);
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { markFocusRestoreWindow } from "../../../utils/react/programmaticFocus.js";
3
3
  import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransition.js";
4
4
  import { Provider, useProviderProps } from "../../../provider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.199.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.200.1 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { mergeRefs as mergeRefs$1 } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useModalLayerRef } from "./modal-containment.js";
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.js","names":["useObjectRef","BaseProps","tasty","ForwardedRef","forwardRef","HTMLAttributes","AriaOverlayProps","useModal","useOverlay","PlacementAxis","mergeProps","mergeRefs","useOverlayEscapeGuard","useModalLayerRef","CubeOverlayProps","Overlay","TransitionState","Props","PopoverElement","role","styles","display","hide","exit","unmounted","pointerEvents","position","transition","transform","open","opacity","transformOrigin","CubePopoverProps","container","HTMLElement","placement","arrowProps","hideArrow","isOpen","onClose","shouldCloseOnBlur","isNonModal","isDismissable","shouldCloseOnInteractOutside","element","Element","Popover","props","ref","$","_c","children","otherProps","qa","style","t0","undefined","domRef","t1","t2","overlayProps","rawOverlayProps","layerRef","t3","t4","t5","PopoverWrapperProps","Omit","PopoverWrapper","transitionState","isDisabled","modalProps","T0","t6","t7","t8","t9","enter","entered","t10","_Popover","displayName","_c","mergeRefs","Overlay","mergeProps"],"sources":["../../../../src/components/overlays/Modal/Popover.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport { BaseProps, tasty } from '@tenphi/tasty';\nimport { ForwardedRef, forwardRef, HTMLAttributes } from 'react';\nimport { AriaOverlayProps, useModal, useOverlay } from 'react-aria';\n\nimport { PlacementAxis } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport { mergeRefs } from '../../../utils/react/useCombinedRefs';\nimport { useOverlayEscapeGuard } from '../../../utils/react/useOverlayEscapeGuard';\n\nimport { useModalLayerRef } from './modal-containment';\nimport { CubeOverlayProps, Overlay } from './Overlay';\nimport { TransitionState } from './types';\n\nimport type { Props } from '../../../props';\n\nconst PopoverElement = tasty({\n role: 'presentation',\n styles: {\n display: 'initial',\n hide: {\n '': true,\n 'enter | entered': false,\n exit: false,\n unmounted: true,\n },\n pointerEvents: 'auto',\n position: 'absolute',\n transition:\n 'opacity $disclosure-transition linear, visibility 0ms linear, transform $disclosure-transition ease-in-out',\n transform: {\n '': 'scale(1, .9)',\n open: 'initial',\n },\n opacity: {\n '': 0,\n open: '.9999',\n },\n transformOrigin: {\n '': 'top center',\n '[data-placement=\"top\"]': 'bottom center',\n },\n },\n});\n\nexport interface CubePopoverProps\n extends BaseProps, AriaOverlayProps, CubeOverlayProps, TransitionState {\n container?: HTMLElement;\n placement?: PlacementAxis;\n arrowProps?: HTMLAttributes<HTMLElement>;\n /** @deprecated Has no effect: the popover renders no arrow. */\n hideArrow?: boolean;\n isOpen?: boolean;\n onClose?: () => void;\n shouldCloseOnBlur?: boolean;\n isNonModal?: boolean;\n isDismissable?: boolean;\n shouldCloseOnInteractOutside?: (element: Element) => boolean;\n}\n\nfunction Popover(props: CubePopoverProps, ref: ForwardedRef<HTMLElement>) {\n let {\n qa,\n style,\n styles,\n children,\n placement,\n arrowProps,\n isNonModal,\n isDismissable = true,\n ...otherProps\n } = props;\n\n let domRef = useObjectRef(ref);\n\n // `useOverlay` has to run here rather than inside `PopoverWrapper`, on the\n // *logical* open state — `Overlay` hands its child an `isOpen` that only\n // turns true once the enter animation has settled. Registering the overlay\n // that late leaves it out of React Aria's visible-overlay stack for the first\n // frames, and `Escape` silently does nothing until the popover finishes\n // animating in. `Modal` and `Tray` call it from the same place for the same\n // reason.\n let { overlayProps: rawOverlayProps } = useOverlay(\n { ...props, isDismissable: isDismissable && props.isOpen },\n domRef,\n );\n\n // ...and a popover that has already closed must not answer for `Escape`\n // while it animates out — see `useOverlayEscapeGuard`.\n const overlayProps = useOverlayEscapeGuard(rawOverlayProps, props.isOpen);\n\n // Opened inside a modal, it stays readable while the modal hides the page.\n const layerRef = useModalLayerRef();\n\n return (\n <Overlay {...otherProps}>\n <PopoverWrapper\n ref={mergeRefs(domRef, layerRef)}\n qa={qa}\n // oxlint-disable-next-line react/forbid-component-props -- forwards the consumer's public `style` prop, which carries the overlay position\n style={style}\n styles={styles}\n placement={placement}\n arrowProps={arrowProps}\n isNonModal={isNonModal}\n overlayProps={overlayProps}\n >\n {children}\n </PopoverWrapper>\n </Overlay>\n );\n}\n\ninterface PopoverWrapperProps\n extends Omit<CubePopoverProps, 'isDismissable'>, TransitionState {\n overlayProps?: Props;\n}\n\nconst PopoverWrapper = forwardRef(function PopoverWrapper(\n props: PopoverWrapperProps,\n ref,\n) {\n let {\n qa,\n children,\n placement = 'bottom',\n arrowProps,\n // `isOpen` here is the transition's settled state, not the trigger's — it\n // drives the enter/exit styles only.\n isOpen,\n style,\n styles,\n isNonModal,\n transitionState,\n overlayProps,\n ...otherProps\n } = props;\n let { modalProps } = useModal({\n isDisabled: isNonModal,\n });\n\n return (\n <PopoverElement\n qa={qa || 'Popover'}\n data-overlay-layer=\"\"\n {...mergeProps(otherProps, overlayProps, modalProps)}\n ref={ref}\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-placement={placement}\n // oxlint-disable-next-line react/forbid-component-props -- forwards the consumer's public `style` prop, which carries the overlay position\n style={style}\n >\n {children}\n </PopoverElement>\n );\n});\n\nconst _Popover = forwardRef(Popover);\n\n_Popover.displayName = 'Popover';\n\nexport { _Popover as Popover };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Popover.js","names":["useObjectRef","BaseProps","tasty","ForwardedRef","forwardRef","HTMLAttributes","AriaOverlayProps","useModal","useOverlay","PlacementAxis","mergeProps","mergeRefs","useOverlayEscapeGuard","useModalLayerRef","CubeOverlayProps","Overlay","TransitionState","Props","PopoverElement","role","styles","display","hide","exit","unmounted","pointerEvents","position","transition","transform","open","opacity","transformOrigin","CubePopoverProps","container","HTMLElement","placement","arrowProps","hideArrow","isOpen","onClose","shouldCloseOnBlur","isNonModal","isDismissable","shouldCloseOnInteractOutside","element","Element","Popover","props","ref","$","_c","children","otherProps","qa","style","t0","undefined","domRef","t1","t2","overlayProps","rawOverlayProps","layerRef","t3","t4","t5","PopoverWrapperProps","Omit","PopoverWrapper","transitionState","isDisabled","modalProps","T0","t6","t7","t8","t9","enter","entered","t10","_Popover","displayName","_c","mergeRefs","Overlay","mergeProps"],"sources":["../../../../src/components/overlays/Modal/Popover.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport { BaseProps, tasty } from '@tenphi/tasty';\nimport { ForwardedRef, forwardRef, HTMLAttributes } from 'react';\nimport { AriaOverlayProps, useModal, useOverlay } from 'react-aria';\n\nimport { PlacementAxis } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport { mergeRefs } from '../../../utils/react/useCombinedRefs';\nimport { useOverlayEscapeGuard } from '../../../utils/react/useOverlayEscapeGuard';\n\nimport { useModalLayerRef } from './modal-containment';\nimport { CubeOverlayProps, Overlay } from './Overlay';\nimport { TransitionState } from './types';\n\nimport type { Props } from '../../../props';\n\nconst PopoverElement = tasty({\n role: 'presentation',\n styles: {\n display: 'initial',\n hide: {\n '': true,\n 'enter | entered': false,\n exit: false,\n unmounted: true,\n },\n pointerEvents: 'auto',\n position: 'absolute',\n transition:\n 'opacity $disclosure-transition linear, visibility 0ms linear, transform $disclosure-transition ease-in-out',\n transform: {\n '': 'scale(1, .9)',\n open: 'initial',\n },\n opacity: {\n '': 0,\n open: '.9999',\n },\n transformOrigin: {\n '': 'top center',\n '[data-placement=\"top\"]': 'bottom center',\n },\n },\n});\n\nexport interface CubePopoverProps\n extends BaseProps, AriaOverlayProps, CubeOverlayProps, TransitionState {\n container?: HTMLElement;\n placement?: PlacementAxis;\n arrowProps?: HTMLAttributes<HTMLElement>;\n /** @deprecated Has no effect: the popover renders no arrow. */\n hideArrow?: boolean;\n isOpen?: boolean;\n onClose?: () => void;\n shouldCloseOnBlur?: boolean;\n isNonModal?: boolean;\n isDismissable?: boolean;\n shouldCloseOnInteractOutside?: (element: Element) => boolean;\n}\n\nfunction Popover(props: CubePopoverProps, ref: ForwardedRef<HTMLElement>) {\n let {\n qa,\n style,\n styles,\n children,\n placement,\n arrowProps,\n isNonModal,\n isDismissable = true,\n ...otherProps\n } = props;\n\n let domRef = useObjectRef(ref);\n\n // `useOverlay` has to run here rather than inside `PopoverWrapper`, on the\n // *logical* open state — `Overlay` hands its child an `isOpen` that only\n // turns true once the enter animation has settled. Registering the overlay\n // that late leaves it out of React Aria's visible-overlay stack for the first\n // frames, and `Escape` silently does nothing until the popover finishes\n // animating in. `Modal` and `Tray` call it from the same place for the same\n // reason.\n let { overlayProps: rawOverlayProps } = useOverlay(\n { ...props, isDismissable: isDismissable && props.isOpen },\n domRef,\n );\n\n // ...and a popover that has already closed must not answer for `Escape`\n // while it animates out — see `useOverlayEscapeGuard`.\n const overlayProps = useOverlayEscapeGuard(rawOverlayProps, props.isOpen);\n\n // Opened inside a modal, it stays readable while the modal hides the page.\n const layerRef = useModalLayerRef();\n\n return (\n <Overlay {...otherProps}>\n <PopoverWrapper\n ref={mergeRefs(domRef, layerRef)}\n qa={qa}\n // oxlint-disable-next-line tasty/no-style-prop -- forwards the consumer's public `style` prop, which carries the overlay position\n style={style}\n styles={styles}\n placement={placement}\n arrowProps={arrowProps}\n isNonModal={isNonModal}\n overlayProps={overlayProps}\n >\n {children}\n </PopoverWrapper>\n </Overlay>\n );\n}\n\ninterface PopoverWrapperProps\n extends Omit<CubePopoverProps, 'isDismissable'>, TransitionState {\n overlayProps?: Props;\n}\n\nconst PopoverWrapper = forwardRef(function PopoverWrapper(\n props: PopoverWrapperProps,\n ref,\n) {\n let {\n qa,\n children,\n placement = 'bottom',\n arrowProps,\n // `isOpen` here is the transition's settled state, not the trigger's — it\n // drives the enter/exit styles only.\n isOpen,\n style,\n styles,\n isNonModal,\n transitionState,\n overlayProps,\n ...otherProps\n } = props;\n let { modalProps } = useModal({\n isDisabled: isNonModal,\n });\n\n return (\n <PopoverElement\n qa={qa || 'Popover'}\n data-overlay-layer=\"\"\n {...mergeProps(otherProps, overlayProps, modalProps)}\n ref={ref}\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-placement={placement}\n // oxlint-disable-next-line tasty/no-style-prop -- forwards the consumer's public `style` prop, which carries the overlay position\n style={style}\n >\n {children}\n </PopoverElement>\n );\n});\n\nconst _Popover = forwardRef(Popover);\n\n_Popover.displayName = 'Popover';\n\nexport { _Popover as Popover };\n"],"mappings":"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"}