@cube-dev/ui-kit 0.178.0 → 0.179.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (668) hide show
  1. package/dist/CHANGELOG.md +59 -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.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.d.ts +0 -1
  19. package/dist/components/actions/Button/Button.js +1 -1
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  24. package/dist/components/actions/CommandMenu/styled.js +1 -1
  25. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemActionsWrapper.js +218 -0
  28. package/dist/components/actions/ItemActionsWrapper.js.map +1 -0
  29. package/dist/components/actions/ItemButton/ItemButton.d.ts +11 -1
  30. package/dist/components/actions/ItemButton/ItemButton.js +25 -143
  31. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  32. package/dist/components/actions/Link/Link.js +1 -1
  33. package/dist/components/actions/Menu/Menu.js +1 -1
  34. package/dist/components/actions/Menu/MenuItem.js +1 -1
  35. package/dist/components/actions/Menu/MenuSection.js +1 -1
  36. package/dist/components/actions/Menu/MenuTrigger.js +3 -1
  37. package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
  38. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  39. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  40. package/dist/components/actions/Menu/context.js +1 -1
  41. package/dist/components/actions/Menu/styled.js +1 -1
  42. package/dist/components/actions/actions-run.js +34 -0
  43. package/dist/components/actions/actions-run.js.map +1 -0
  44. package/dist/components/actions/index.js +1 -1
  45. package/dist/components/actions/use-action.js +1 -1
  46. package/dist/components/actions/use-anchored-menu.js +1 -1
  47. package/dist/components/actions/use-context-menu.js +1 -1
  48. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  49. package/dist/components/content/Alert/Alert.js +1 -1
  50. package/dist/components/content/Alert/use-alert.js +1 -1
  51. package/dist/components/content/Avatar/Avatar.js +1 -1
  52. package/dist/components/content/Badge/Badge.js +1 -1
  53. package/dist/components/content/Card/Card.js +1 -1
  54. package/dist/components/content/Content.js +1 -1
  55. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  56. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  57. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  58. package/dist/components/content/Divider.js +1 -1
  59. package/dist/components/content/Footer.js +1 -1
  60. package/dist/components/content/Header.js +1 -1
  61. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  62. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  63. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  64. package/dist/components/content/Item/Item.js +5 -5
  65. package/dist/components/content/Item/Item.js.map +1 -1
  66. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  67. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  68. package/dist/components/content/Layout/GridLayout.js +1 -1
  69. package/dist/components/content/Layout/Layout.js +1 -1
  70. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  71. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  72. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  73. package/dist/components/content/Layout/LayoutContent.js +1 -1
  74. package/dist/components/content/Layout/LayoutContext.js +1 -1
  75. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  76. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  77. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  78. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  79. package/dist/components/content/Layout/LayoutPane.js +1 -1
  80. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  81. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  82. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  83. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  84. package/dist/components/content/Layout/index.js +1 -1
  85. package/dist/components/content/Layout/utils.js +1 -1
  86. package/dist/components/content/Paragraph.js +1 -1
  87. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  88. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  89. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  90. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  91. package/dist/components/content/Result/Result.js +1 -1
  92. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  93. package/dist/components/content/Tag/Tag.js +1 -1
  94. package/dist/components/content/Text.d.ts +14 -14
  95. package/dist/components/content/Text.js +1 -1
  96. package/dist/components/content/TextItem/TextItem.js +1 -1
  97. package/dist/components/content/Title.js +1 -1
  98. package/dist/components/content/Tree/Tree.js +1 -1
  99. package/dist/components/content/Tree/TreeNode.js +1 -1
  100. package/dist/components/content/Tree/styled.js +1 -1
  101. package/dist/components/content/Tree/tree-index.js +1 -1
  102. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  103. package/dist/components/content/Tree/use-load-data.js +1 -1
  104. package/dist/components/content/highlightText.js +1 -1
  105. package/dist/components/content/use-auto-tooltip.js +1 -1
  106. package/dist/components/data/DataTable/DataTable.js +1 -1
  107. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  108. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  109. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  110. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  111. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  112. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  113. package/dist/components/data/TableBase/RowCollection.js +1 -1
  114. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  115. package/dist/components/data/TableBase/TableRow.js +1 -1
  116. package/dist/components/data/TableBase/TableView.js +1 -1
  117. package/dist/components/data/TableBase/column-menu.js +1 -1
  118. package/dist/components/data/TableBase/column-tint.js +1 -1
  119. package/dist/components/data/TableBase/row-menu.js +1 -1
  120. package/dist/components/data/TableBase/styled.d.ts +1 -2
  121. package/dist/components/data/TableBase/styled.js +1 -1
  122. package/dist/components/data/TableBase/table-tree.js +1 -1
  123. package/dist/components/data/TableBase/types.js +1 -1
  124. package/dist/components/data/TableBase/use-cell-selection.d.ts +0 -1
  125. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  126. package/dist/components/data/TableBase/use-column-order.js +1 -1
  127. package/dist/components/data/TableBase/use-container-width.js +1 -1
  128. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  129. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  130. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  131. package/dist/components/data/TableBase/use-table-search.js +1 -1
  132. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  133. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  134. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  135. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  136. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  137. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  138. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  139. package/dist/components/fields/Checkbox/context.js +1 -1
  140. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  141. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  142. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  143. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  144. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  145. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  146. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  147. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  148. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  149. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  150. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  151. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  152. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  153. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  154. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  155. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  156. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  157. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  158. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  159. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  160. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  161. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  162. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  163. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  164. package/dist/components/fields/DatePicker/period.js +1 -1
  165. package/dist/components/fields/DatePicker/props.js +1 -1
  166. package/dist/components/fields/DatePicker/utils.js +1 -1
  167. package/dist/components/fields/FileInput/FileInput.js +1 -1
  168. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  169. package/dist/components/fields/FilterPicker/FilterPicker.js +18 -27
  170. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  171. package/dist/components/fields/Input/Input.js +1 -1
  172. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  173. package/dist/components/fields/ListBox/ListBox.js +1 -1
  174. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  175. package/dist/components/fields/ListBoxPopover/index.d.ts +0 -1
  176. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  177. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  178. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  179. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  180. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  181. package/dist/components/fields/Picker/Picker.js +18 -27
  182. package/dist/components/fields/Picker/Picker.js.map +1 -1
  183. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  184. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  185. package/dist/components/fields/RadioGroup/context.js +1 -1
  186. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  187. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  188. package/dist/components/fields/Select/Select.js +53 -55
  189. package/dist/components/fields/Select/Select.js.map +1 -1
  190. package/dist/components/fields/Slider/Gradation.js +1 -1
  191. package/dist/components/fields/Slider/HueSlider.js +1 -1
  192. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  193. package/dist/components/fields/Slider/Slider.js +1 -1
  194. package/dist/components/fields/Slider/SliderBase.js +1 -1
  195. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  196. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  197. package/dist/components/fields/Slider/elements.js +1 -1
  198. package/dist/components/fields/Slider/index.js +1 -1
  199. package/dist/components/fields/Switch/Switch.js +1 -1
  200. package/dist/components/fields/TextArea/TextArea.js +1 -1
  201. package/dist/components/fields/TextInput/TextInput.js +1 -1
  202. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  203. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  204. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  205. package/dist/components/fields/TriggerActions.js +5 -56
  206. package/dist/components/fields/TriggerActions.js.map +1 -1
  207. package/dist/components/fields/color/ColorPanel.js +1 -1
  208. package/dist/components/fields/color/channels.js +1 -1
  209. package/dist/components/fields/color/color.js +1 -1
  210. package/dist/components/fields/color/context.js +1 -1
  211. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  212. package/dist/components/form/Form/Field.js +1 -1
  213. package/dist/components/form/Form/Form.js +1 -1
  214. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  215. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  216. package/dist/components/form/Form/SubmitError.js +1 -1
  217. package/dist/components/form/Form/index.js +1 -1
  218. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  219. package/dist/components/form/Form/use-field/use-field.js +1 -1
  220. package/dist/components/form/Form/use-form.js +5 -5
  221. package/dist/components/form/Form/use-form.js.map +1 -1
  222. package/dist/components/form/Form/validation.js +1 -1
  223. package/dist/components/form/Label.js +1 -1
  224. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  225. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  226. package/dist/components/form/validation/use-validation-props.js +1 -1
  227. package/dist/components/form/wrapper.js +1 -1
  228. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  229. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  230. package/dist/components/layout/Board/Board.js +1 -1
  231. package/dist/components/layout/Board/BoardProvider.js +1 -1
  232. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  233. package/dist/components/layout/Board/Widget.js +1 -1
  234. package/dist/components/layout/Board/WidgetHost.js +1 -1
  235. package/dist/components/layout/Board/board-context.js +1 -1
  236. package/dist/components/layout/Board/board-store.js +1 -1
  237. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  238. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  239. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  240. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  241. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  242. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  243. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  244. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  245. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  246. package/dist/components/layout/Board/index.js +1 -1
  247. package/dist/components/layout/Board/responsive-utils.js +1 -1
  248. package/dist/components/layout/Board/use-board-layout.js +1 -1
  249. package/dist/components/layout/Board/use-board-registry.js +1 -1
  250. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  251. package/dist/components/layout/Board/use-board-selection.js +1 -1
  252. package/dist/components/layout/Flex.js +1 -1
  253. package/dist/components/layout/Flow.js +1 -1
  254. package/dist/components/layout/Grid.js +1 -1
  255. package/dist/components/layout/Panel.js +1 -1
  256. package/dist/components/layout/Prefix.js +1 -1
  257. package/dist/components/layout/ResizablePanel.js +1 -1
  258. package/dist/components/layout/Space.js +1 -1
  259. package/dist/components/layout/Suffix.js +1 -1
  260. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  261. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  262. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  263. package/dist/components/navigation/Tabs/TabButton.js +36 -40
  264. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  265. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  266. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  267. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  268. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  269. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  270. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  271. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  272. package/dist/components/navigation/Tabs/styled.js +1 -29
  273. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  274. package/dist/components/navigation/Tabs/types.js +1 -1
  275. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  276. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  277. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  278. package/dist/components/other/Calendar/Calendar.js +1 -1
  279. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  280. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  281. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  282. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  283. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  284. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  285. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  286. package/dist/components/other/Calendar/styled.js +1 -1
  287. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  288. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  289. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  290. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  291. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  292. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  293. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  294. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  295. package/dist/components/overlays/Dialog/DialogTrigger.js +4 -2
  296. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  297. package/dist/components/overlays/Dialog/context.js +1 -1
  298. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  299. package/dist/components/overlays/Modal/Modal.d.ts +1 -2
  300. package/dist/components/overlays/Modal/Modal.js +1 -1
  301. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  302. package/dist/components/overlays/Modal/Overlay.d.ts +0 -1
  303. package/dist/components/overlays/Modal/Overlay.js +1 -1
  304. package/dist/components/overlays/Modal/Popover.js +1 -1
  305. package/dist/components/overlays/Modal/Tray.js +1 -1
  306. package/dist/components/overlays/Modal/Underlay.js +1 -1
  307. package/dist/components/overlays/Modal/types.d.ts +0 -1
  308. package/dist/components/overlays/Notifications/Notification.js +1 -1
  309. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  310. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  311. package/dist/components/overlays/Notifications/NotificationContext.d.ts +0 -2
  312. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  313. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  314. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  315. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  316. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  317. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  318. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  319. package/dist/components/overlays/Notifications/index.js +1 -1
  320. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  321. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  322. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  323. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  324. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  325. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  326. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  327. package/dist/components/overlays/Toast/index.js +1 -1
  328. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  329. package/dist/components/overlays/Toast/useToast.js +1 -1
  330. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  331. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  332. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  333. package/dist/components/overlays/Tooltip/context.js +1 -1
  334. package/dist/components/portal/Portal.js +1 -1
  335. package/dist/components/portal/PortalProvider.js +1 -1
  336. package/dist/components/portal/index.d.ts +0 -1
  337. package/dist/components/portal/usePortal.js +1 -1
  338. package/dist/components/shared/DraggableCollection.js +1 -1
  339. package/dist/components/shared/InvalidIcon.js +1 -1
  340. package/dist/components/shared/ValidIcon.js +1 -1
  341. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  342. package/dist/components/status/Spin/Cube.js +1 -1
  343. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  344. package/dist/components/status/Spin/Spin.js +1 -1
  345. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  346. package/dist/data/item-themes.js +25 -6
  347. package/dist/data/item-themes.js.map +1 -1
  348. package/dist/data/themes.js +1 -1
  349. package/dist/eslint-plugin/defaults.generated.js +1 -1
  350. package/dist/eslint-plugin/index.js +1 -1
  351. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  352. package/dist/i18n/I18nProvider.js +1 -1
  353. package/dist/i18n/createFormatter.js +1 -1
  354. package/dist/i18n/index.js +1 -1
  355. package/dist/i18n/instance.js +1 -1
  356. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  357. package/dist/i18n/locales/en-US/uikit.js +1 -1
  358. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  359. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  360. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  361. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  362. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  363. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  364. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  365. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  366. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  367. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  368. package/dist/i18n/locales.js +1 -1
  369. package/dist/i18n/useFormatter.js +1 -1
  370. package/dist/i18n/useI18n.js +1 -1
  371. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  372. package/dist/icons/AdjustmentsIcon.js +1 -1
  373. package/dist/icons/AiIcon.js +1 -1
  374. package/dist/icons/AreaChartIcon.js +1 -1
  375. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  376. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  377. package/dist/icons/BackwardIcon.js +1 -1
  378. package/dist/icons/BarChartIcon.js +1 -1
  379. package/dist/icons/BellFilledIcon.js +1 -1
  380. package/dist/icons/BellIcon.js +1 -1
  381. package/dist/icons/BooleanIcon.js +1 -1
  382. package/dist/icons/CalendarEditIcon.js +1 -1
  383. package/dist/icons/CalendarIcon.js +1 -1
  384. package/dist/icons/CaretDownIcon.js +1 -1
  385. package/dist/icons/CaretUpIcon.js +1 -1
  386. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  387. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  388. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  389. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  390. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  391. package/dist/icons/ChartBarLineIcon.js +1 -1
  392. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  393. package/dist/icons/ChartBarStackedIcon.js +1 -1
  394. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  395. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  396. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  397. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  398. package/dist/icons/ChartBubbleIcon.js +1 -1
  399. package/dist/icons/ChartDonut2Icon.js +1 -1
  400. package/dist/icons/ChartFunnelIcon.js +1 -1
  401. package/dist/icons/ChartHeatmapIcon.js +1 -1
  402. package/dist/icons/ChartKPIIcon.js +1 -1
  403. package/dist/icons/ChartPie2Icon.js +1 -1
  404. package/dist/icons/ChartScatterIcon.js +1 -1
  405. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  406. package/dist/icons/CheckCircleIcon.js +1 -1
  407. package/dist/icons/CheckIcon.js +1 -1
  408. package/dist/icons/CircleFilledIcon.js +1 -1
  409. package/dist/icons/ClearIcon.js +1 -1
  410. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  411. package/dist/icons/CloseCircleIcon.js +1 -1
  412. package/dist/icons/CloseIcon.js +1 -1
  413. package/dist/icons/CodeIcon.js +1 -1
  414. package/dist/icons/ColumnTotalIcon.js +1 -1
  415. package/dist/icons/CopyIcon.js +1 -1
  416. package/dist/icons/CountIcon.js +1 -1
  417. package/dist/icons/CubeIcon.js +1 -1
  418. package/dist/icons/CubePauseIcon.js +1 -1
  419. package/dist/icons/CubePlayIcon.js +1 -1
  420. package/dist/icons/CurrencyDollarIcon.js +1 -1
  421. package/dist/icons/DangerIcon.js +1 -1
  422. package/dist/icons/DashboardIcon.js +1 -1
  423. package/dist/icons/DatabaseIcon.js +1 -1
  424. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  425. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  426. package/dist/icons/DirectionIcon.js +1 -1
  427. package/dist/icons/DonutIcon.js +1 -1
  428. package/dist/icons/DownIcon.js +1 -1
  429. package/dist/icons/EditIcon.js +1 -1
  430. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  431. package/dist/icons/ExclamationCircleIcon.js +1 -1
  432. package/dist/icons/ExclamationIcon.js +1 -1
  433. package/dist/icons/EyeIcon.js +1 -1
  434. package/dist/icons/EyeInvisibleIcon.js +1 -1
  435. package/dist/icons/FilterIcon.js +1 -1
  436. package/dist/icons/FolderFilledIcon.js +1 -1
  437. package/dist/icons/FolderIcon.js +1 -1
  438. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  439. package/dist/icons/FolderOpenIcon.js +1 -1
  440. package/dist/icons/ForwardIcon.js +1 -1
  441. package/dist/icons/GripVerticalIcon.js +1 -1
  442. package/dist/icons/HierarchyIcon.js +1 -1
  443. package/dist/icons/HierarchyOpenIcon.js +1 -1
  444. package/dist/icons/Icon.js +1 -1
  445. package/dist/icons/InfoCircleIcon.js +1 -1
  446. package/dist/icons/InfoIcon.js +1 -1
  447. package/dist/icons/KeyIcon.js +1 -1
  448. package/dist/icons/LeftIcon.js +1 -1
  449. package/dist/icons/LineChartIcon.js +1 -1
  450. package/dist/icons/LoadingIcon.js +1 -1
  451. package/dist/icons/LockFilledIcon.js +1 -1
  452. package/dist/icons/LockIcon.js +1 -1
  453. package/dist/icons/MoreIcon.js +1 -1
  454. package/dist/icons/NotAllowedIcon.js +1 -1
  455. package/dist/icons/Number123Icon.js +1 -1
  456. package/dist/icons/NumberIcon.js +1 -1
  457. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  458. package/dist/icons/PauseCircleIcon.js +1 -1
  459. package/dist/icons/PauseIcon.js +1 -1
  460. package/dist/icons/PercentageIcon.js +1 -1
  461. package/dist/icons/PieChartIcon.js +1 -1
  462. package/dist/icons/PipetteIcon.js +1 -1
  463. package/dist/icons/PlayCircleIcon.js +1 -1
  464. package/dist/icons/PlayIcon.js +1 -1
  465. package/dist/icons/PlusIcon.js +1 -1
  466. package/dist/icons/ProgressBarIcon.js +1 -1
  467. package/dist/icons/ReloadIcon.js +1 -1
  468. package/dist/icons/ReportIcon.js +1 -1
  469. package/dist/icons/ReturnIcon.js +1 -1
  470. package/dist/icons/RightIcon.js +1 -1
  471. package/dist/icons/RowTotalsIcon.js +1 -1
  472. package/dist/icons/SchemeIcon.js +1 -1
  473. package/dist/icons/SearchIcon.js +1 -1
  474. package/dist/icons/SemanticQueryIcon.js +1 -1
  475. package/dist/icons/SettingsIcon.js +1 -1
  476. package/dist/icons/ShieldFilledIcon.js +1 -1
  477. package/dist/icons/ShieldIcon.js +1 -1
  478. package/dist/icons/SlashIcon.js +1 -1
  479. package/dist/icons/SparklesIcon.js +1 -1
  480. package/dist/icons/SqlIcon.js +1 -1
  481. package/dist/icons/StatsIcon.js +1 -1
  482. package/dist/icons/StopIcon.js +1 -1
  483. package/dist/icons/StringIcon.js +1 -1
  484. package/dist/icons/SubtotalsIcon.js +1 -1
  485. package/dist/icons/SwitchIcon.js +1 -1
  486. package/dist/icons/TableIcon.js +1 -1
  487. package/dist/icons/ThumbsDownIcon.js +1 -1
  488. package/dist/icons/ThumbsUpIcon.js +1 -1
  489. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  490. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  491. package/dist/icons/ThunderboltIcon.js +1 -1
  492. package/dist/icons/TimeIcon.js +1 -1
  493. package/dist/icons/TrashIcon.js +1 -1
  494. package/dist/icons/UnlockIcon.js +1 -1
  495. package/dist/icons/UpIcon.js +1 -1
  496. package/dist/icons/UserGroupIcon.js +1 -1
  497. package/dist/icons/UserIcon.js +1 -1
  498. package/dist/icons/UserLockIcon.js +1 -1
  499. package/dist/icons/ViewIcon.js +1 -1
  500. package/dist/icons/WarningFilledIcon.js +1 -1
  501. package/dist/icons/WarningIcon.js +1 -1
  502. package/dist/icons/wrap-icon.js +1 -1
  503. package/dist/index.js +1 -1
  504. package/dist/probe/canonicalize.js +1 -1
  505. package/dist/probe/css.js +1 -1
  506. package/dist/probe/index.js +1 -1
  507. package/dist/provider.js +1 -1
  508. package/dist/providers/TrackingProvider.js +1 -1
  509. package/dist/providers/navigationAdapter.default.js +1 -1
  510. package/dist/tokens/all-tokens.js +1 -1
  511. package/dist/tokens/base.js +1 -1
  512. package/dist/tokens/color-seed.js +1 -1
  513. package/dist/tokens/color-theme.js +1 -1
  514. package/dist/tokens/colors.js +1 -1
  515. package/dist/tokens/layout.js +1 -1
  516. package/dist/tokens/lazy-styles.js +1 -1
  517. package/dist/tokens/legacy-color.js +1 -1
  518. package/dist/tokens/palette-config.js +1 -1
  519. package/dist/tokens/palette.js +1 -1
  520. package/dist/tokens/resolve.js +1 -1
  521. package/dist/tokens/shadows.js +1 -1
  522. package/dist/tokens/sizes.js +1 -1
  523. package/dist/tokens/spacing.js +1 -1
  524. package/dist/tokens/typography.js +1 -1
  525. package/dist/utils/ResizeSensor.js +1 -1
  526. package/dist/utils/colors.js +1 -1
  527. package/dist/utils/dotize.js +50 -0
  528. package/dist/utils/dotize.js.map +1 -0
  529. package/dist/utils/is-dev-env.js +1 -1
  530. package/dist/utils/modules.js +1 -1
  531. package/dist/utils/promise.js +1 -1
  532. package/dist/utils/raf.js +1 -1
  533. package/dist/utils/random.js +1 -1
  534. package/dist/utils/range.js +1 -1
  535. package/dist/utils/react/RenderCache.js +1 -1
  536. package/dist/utils/react/Slots.js +1 -1
  537. package/dist/utils/react/chain.js +1 -1
  538. package/dist/utils/react/disabledProps.js +1 -1
  539. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  540. package/dist/utils/react/index.js +1 -1
  541. package/dist/utils/react/interactions.js +1 -1
  542. package/dist/utils/react/isTextOnly.js +1 -1
  543. package/dist/utils/react/mapProps.js +1 -1
  544. package/dist/utils/react/mergeProps.js +1 -1
  545. package/dist/utils/react/nullableValue.js +1 -1
  546. package/dist/utils/react/resolveIcon.js +1 -1
  547. package/dist/utils/react/sharedStore.js +1 -1
  548. package/dist/utils/react/useBufferedValue.js +1 -1
  549. package/dist/utils/react/useCombinedRefs.js +1 -1
  550. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  551. package/dist/utils/react/useEventBus.js +1 -1
  552. package/dist/utils/react/useId.js +1 -1
  553. package/dist/utils/react/useIsDarwin.js +1 -1
  554. package/dist/utils/react/useKeySymbols.js +1 -1
  555. package/dist/utils/react/useLayoutEffect.js +1 -1
  556. package/dist/utils/react/useLocalStorage.js +1 -1
  557. package/dist/utils/react/useMergeStyles.js +1 -1
  558. package/dist/utils/react/usePopoverSync.js +1 -1
  559. package/dist/utils/react/useQaProps.js +1 -1
  560. package/dist/utils/react/useScheme.js +1 -1
  561. package/dist/utils/react/useViewportSize.js +1 -1
  562. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  563. package/dist/utils/selection.js +1 -1
  564. package/dist/utils/styles.js +1 -1
  565. package/dist/utils/tree.js +1 -1
  566. package/dist/utils/warnings.js +1 -1
  567. package/dist/version.js +3 -3
  568. package/docs/components/Block.md +3 -3
  569. package/docs/components/CollectionItem.md +3 -3
  570. package/docs/components/GridProvider.md +3 -3
  571. package/docs/components/Root.md +1 -1
  572. package/docs/components/actions/Action.md +3 -3
  573. package/docs/components/actions/Banner.md +3 -3
  574. package/docs/components/actions/Button.md +3 -3
  575. package/docs/components/actions/ButtonGroup.md +3 -3
  576. package/docs/components/actions/ButtonSplit.md +3 -3
  577. package/docs/components/actions/CommandMenu.md +3 -3
  578. package/docs/components/actions/ItemAction.md +3 -1
  579. package/docs/components/actions/ItemButton.md +15 -1
  580. package/docs/components/actions/Link.md +3 -3
  581. package/docs/components/actions/Menu.md +3 -3
  582. package/docs/components/actions/MenuTrigger.md +3 -3
  583. package/docs/components/actions/SubMenuTrigger.md +3 -3
  584. package/docs/components/actions/use-anchored-menu.md +3 -3
  585. package/docs/components/actions/use-context-menu.md +3 -3
  586. package/docs/components/content/ActiveZone.md +3 -3
  587. package/docs/components/content/Alert.md +3 -3
  588. package/docs/components/content/Avatar.md +3 -3
  589. package/docs/components/content/Card.md +3 -3
  590. package/docs/components/content/Content.md +3 -3
  591. package/docs/components/content/CopyPasteBlock.md +1 -1
  592. package/docs/components/content/CopySnippet.md +3 -3
  593. package/docs/components/content/Disclosure.md +3 -3
  594. package/docs/components/content/Divider.md +3 -3
  595. package/docs/components/content/Footer.md +3 -3
  596. package/docs/components/content/Header.md +3 -3
  597. package/docs/components/content/HotKeys.md +3 -3
  598. package/docs/components/content/InlineInput.md +3 -3
  599. package/docs/components/content/Item.md +3 -3
  600. package/docs/components/content/Layout.md +3 -3
  601. package/docs/components/content/Paragraph.md +3 -3
  602. package/docs/components/content/Placeholder.md +3 -3
  603. package/docs/components/content/Result.md +3 -3
  604. package/docs/components/content/Skeleton.md +3 -3
  605. package/docs/components/content/Title.md +3 -3
  606. package/docs/components/content/Tree.md +3 -3
  607. package/docs/components/data/DataTable.md +3 -3
  608. package/docs/components/data/ItemTable.md +3 -3
  609. package/docs/components/fields/Checkbox.md +3 -3
  610. package/docs/components/fields/ColorInput.md +3 -3
  611. package/docs/components/fields/ColorPicker.md +3 -3
  612. package/docs/components/fields/ColorSwatch.md +3 -3
  613. package/docs/components/fields/ColorSwatchGroup.md +3 -3
  614. package/docs/components/fields/ComboBox.md +3 -3
  615. package/docs/components/fields/CommandTextArea.md +3 -3
  616. package/docs/components/fields/DatePicker.md +3 -3
  617. package/docs/components/fields/FileInput.md +3 -3
  618. package/docs/components/fields/FilterListBox.md +3 -3
  619. package/docs/components/fields/FilterPicker.md +13 -3
  620. package/docs/components/fields/HueSlider.md +3 -3
  621. package/docs/components/fields/ListBox.md +3 -3
  622. package/docs/components/fields/NumberInput.md +3 -3
  623. package/docs/components/fields/PasswordInput.md +3 -3
  624. package/docs/components/fields/PeriodPicker.md +3 -3
  625. package/docs/components/fields/Picker.md +13 -3
  626. package/docs/components/fields/RadioGroup.md +3 -3
  627. package/docs/components/fields/SearchComboBox.md +3 -3
  628. package/docs/components/fields/SearchInput.md +3 -3
  629. package/docs/components/fields/Select.md +13 -3
  630. package/docs/components/fields/Slider.md +3 -3
  631. package/docs/components/fields/Switch.md +3 -3
  632. package/docs/components/fields/TextArea.md +3 -3
  633. package/docs/components/fields/TextInput.md +3 -3
  634. package/docs/components/fields/TextInputMapper.md +3 -3
  635. package/docs/components/form/Field.md +3 -3
  636. package/docs/components/form/Form.md +3 -3
  637. package/docs/components/layout/Board.md +3 -3
  638. package/docs/components/layout/Flex.md +3 -3
  639. package/docs/components/layout/Flow.md +3 -3
  640. package/docs/components/layout/Grid.md +3 -3
  641. package/docs/components/layout/Panel.md +3 -3
  642. package/docs/components/layout/Prefix.md +3 -3
  643. package/docs/components/layout/ResizablePanel.md +3 -3
  644. package/docs/components/layout/Space.md +3 -3
  645. package/docs/components/layout/Suffix.md +3 -3
  646. package/docs/components/navigation/Pagination.md +3 -3
  647. package/docs/components/navigation/Tabs.md +3 -3
  648. package/docs/components/organisms/StatsCard.md +3 -3
  649. package/docs/components/overlays/AlertDialog.md +3 -3
  650. package/docs/components/overlays/Dialog.md +2 -2
  651. package/docs/components/overlays/DialogContainer.md +2 -2
  652. package/docs/components/overlays/DialogForm.md +2 -2
  653. package/docs/components/overlays/DialogTrigger.md +2 -2
  654. package/docs/components/overlays/Tooltip.md +3 -3
  655. package/docs/components/overlays/TooltipProvider.md +3 -3
  656. package/docs/components/overlays/TooltipTrigger.md +3 -3
  657. package/docs/components/status/LoadingAnimation.md +3 -3
  658. package/docs/components/status/Spin.md +3 -3
  659. package/docs/tasty/ai-agents.md +8 -3
  660. package/docs/tasty/debug.md +2 -5
  661. package/docs/tasty/methodology.md +3 -3
  662. package/docs/tasty/pipeline.md +3 -0
  663. package/docs/tasty/runtime-benchmarks.md +105 -68
  664. package/docs/tasty/ssr.md +1 -1
  665. package/docs/tasty/styles.md +43 -11
  666. package/package.json +3 -3
  667. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +0 -2
  668. package/dist/components/portal/PortalProvider.d.ts +0 -2
package/dist/CHANGELOG.md CHANGED
@@ -1,5 +1,64 @@
1
1
  # @cube-dev/ui-kit
2
2
 
3
+ ## 0.179.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1401](https://github.com/cube-js/cube-ui-kit/pull/1401) [`63f447ce`](https://github.com/cube-js/cube-ui-kit/commit/63f447ce059617ce446b25e0c2d4519c9193b647) Thanks [@tenphi](https://github.com/tenphi)! - `Select`, `Picker` and `FilterPicker` now render their trailing controls — your `actions`, the clear button, the loading spinner and the dropdown caret — through the same actions slot `ItemButton` uses, instead of the bespoke run added alongside the `actions` prop. Closes #1398.
8
+
9
+ The visible result is meant to be nothing: the trigger renders pixel-identically across sizes, types, themes, validation states and the loading, placeholder, icon-only and clearable variants, in light and dark. What changes is the DOM and the behaviour that depends on it.
10
+
11
+ - **The clear button is no longer a `<button>` nested inside a `<button>`.** The whole trailing run is now a sibling of the trigger, laid over its end.
12
+ - **The caret still opens the popover** even though it sits in that run: the run is transparent to the pointer and only its interactive children take presses, so a press on the caret — or anywhere in the run's padding — hit-tests through to the trigger underneath. This is covered by a browser spec; jsdom implements neither `pointer-events` nor hit testing and would pass against a build where the caret is dead.
13
+ - **The trigger's markup no longer changes shape** as a clear button appears, a spinner replaces the caret, or actions come and go. The run is rendered even when it is empty — `rightIcon={null}` with no `actions` of your own empties it — and an empty run reserves nothing, so an icon-only trigger stays square.
14
+ - `rightIcon` keeps its own slot, so a render function resolved against the trigger's modifiers and any `RightIcon` styles keep working. It replaces the built-in control exactly as before; if you also pass `actions`, they render after it.
15
+
16
+ `ItemButton` and `Item` share the mechanism, so three things change for rows with actions:
17
+
18
+ - **Actions are centred on the row's height**, instead of on the size token. A row with an inline description, or one whose height the caller set, now keeps its actions on its centre line rather than pinned near the top. A row with a **block** description is unchanged: there the run stays on the first line beside the label. An action is still `$action-size` whatever the row's height, so a tall row does not get oversized buttons.
19
+ - **The actions run is transparent to the pointer**, so a press in its padding or in a gap between two actions activates the row instead of being swallowed. The actions themselves are unaffected.
20
+ - **A `suffix` next to actions no longer adds its inline padding**, matching what it already did next to a `rightIcon` — the actions column carries the spacing. The gap between a suffix and the first action narrows accordingly. Restore it with `styles={{ Suffix: { padding: '$inline-padding right' } }}` if a row was relying on it.
21
+ - **An icon-only row with actions keeps a two-square minimum width**, as one with a `rightIcon` already did — so a trigger whose caret moved into the run does not change size. Both of these apply only to a row whose actions are rendered as a sibling run (`ItemButton` and the field triggers); a row with in-grid actions — `Tabs`, `Tag`, tree and list rows — is laid out by `Item`'s own columns and is untouched.
22
+
23
+ `ItemButton` also keeps its wrapper element once a row has had actions, so a row whose actions depend on a permission or a loading flag no longer remounts its button when they disappear, and it gains an `actionsProps` prop for attributes on the run's container. Pass `actions={null}` to ask for the run before there is anything in it, and the button is not remounted when the actions arrive either — `undefined` still means no run at all.
24
+
25
+ A row inside that wrapper also stops remounting when its actions come and go for a second reason: `Item` resolves its auto-tooltip from whether the label is dynamic, which decides whether a tooltip provider wraps the element, and `actions` used to flip that answer. A wrapped row is now always treated as having a dynamic label, which is true — its label gets whatever width the actions run leaves it.
26
+
27
+ Sibling actions now follow the row's **pressed** colour as well as its resting and disabled ones, so a caret or an action beside a label no longer stays at its resting tint while the label darkens under the finger.
28
+
29
+ ### Patch Changes
30
+
31
+ - [#1405](https://github.com/cube-js/cube-ui-kit/pull/1405) [`af5c06af`](https://github.com/cube-js/cube-ui-kit/commit/af5c06afae53887d678828556e16bbe5fa8e0397) Thanks [@tenphi](https://github.com/tenphi)! - A control in a row's `actions` no longer answers to whatever opened around the row. An `ItemButton` — or a tab, or a `Select` / `Picker` / `FilterPicker` trigger — used as the trigger of a `DialogTrigger` or a `MenuTrigger` handed its own actions the trigger's press behaviour, because React Aria's `PressResponder` reaches every control below it. Pressing an action ran the action _and_ toggled the overlay; with the overlay already open the press was spent dismissing it instead, so the action never ran at all.
32
+
33
+ Both halves of the guard now live in the actions run itself, so every row that has actions gets them rather than only the three field triggers that had grown their own copy:
34
+
35
+ - **The run clears the press context it sits in**, so each action answers only to its own handler.
36
+ - **The run identifies itself to the overlay** as belonging to its row, so an overlay opened by that row reads a press on its own actions as its own rather than as a press outside. It is scoped to the row: pressing some other row's actions dismisses an open popover exactly as before.
37
+
38
+ - [#1403](https://github.com/cube-js/cube-ui-kit/pull/1403) [`0ff467be`](https://github.com/cube-js/cube-ui-kit/commit/0ff467bedbbbdad8b5209965a37ba672d6f516f0) Thanks [@tenphi](https://github.com/tenphi)! - `Tabs` now renders a tab's actions — your own, the overflow menu trigger, the close button — through the same actions run `ItemButton` and the field triggers use, instead of the copy `TabButton` carried of its own.
39
+
40
+ The tab bar is meant to look exactly as it did, and does: identical across the `default`, `file`, `narrow` and `radio` types, all three sizes, and the reorderable, editable, auto-hiding, disabled and no-actions variants. What changes is behaviour the copy had drifted on.
41
+
42
+ - **A press in the run no longer disappears.** The run used to be opaque to the pointer, so a click in its padding — or in the gap between the menu trigger and the close button — hit the run and did nothing. The shared run is transparent and only its controls take presses, so those clicks now select the tab underneath. The controls themselves are unaffected, and pressing one still does not select the tab.
43
+ - **Actions centre on the tab's height** rather than being pinned to its top, so a tab whose height a caller has set keeps its controls on the centre line.
44
+ - **The active tab keeps its actions visible** under `autoHideActions` because the component asks for that, not because a CSS rule spelled out `active` next to `:hover` and `:focus-within`.
45
+
46
+ `ItemActionsWrapper` gains a `preserveActionsSpace` option for this, matching the prop `Item` already had: the run keeps its width reserved while hidden, so a bar does not reflow as the pointer crosses it, and it stays mounted rather than transitioning in and out — an unmounted run cannot be measured, so a tab that starts hidden would have nothing to reserve.
47
+
48
+ A tab's actions container is now always present in the markup, empty when the tab has none.
49
+
50
+ - [#1400](https://github.com/cube-js/cube-ui-kit/pull/1400) [`0e1c9425`](https://github.com/cube-js/cube-ui-kit/commit/0e1c9425b40c839bc7f8513e074cf2769273b943) Thanks [@tenphi](https://github.com/tenphi)! - Update Tasty to 3.9.1 (from 3.7.0), and document `Tab.Action` with a story.
51
+
52
+ **Tasty 3.9.1 changes no rendered style, but it does change the CSS text.** Logical padding, margin and inset props are no longer folded into the physical shorthand: where 3.7.0 merged a `paddingBlock` / `paddingInline` pair into one `padding: <y> <x>` declaration per state, 3.9.1 emits separate `padding-block` and `padding-inline` declarations, each under its own state selector. Computed values come out the same — this was checked in real Chromium on the table cells that depend on it (`ItemTable`'s header, body and selection cells), and a canonical CSS diff across `Button`, `Item`, `ItemButton`, `Tabs`, `TextInput`, `Card`, `Tag`, `Badge` and typography is byte-identical. What changes is what an override has to beat: a rule that used to compete with a `padding` shorthand now competes with `padding-block` or `padding-inline`, and the documented priority ladder `padding < paddingBlock/paddingInline < paddingTop/...` is gone, because `paddingBlock` and `paddingInline` are ordinary CSS properties again rather than enhanced handlers.
53
+
54
+ **The replacement is a new family of logical style props**, each an enhanced handler that emits native logical CSS and lets the browser resolve `start` / `end` from `writingMode` and `direction`: `blockSize` / `inlineSize`, `blockPadding` / `inlinePadding`, `blockMargin` / `inlineMargin`, `blockInset` / `inlineInset`, `blockScrollMargin` / `inlineScrollMargin`, `blockScrollPadding` / `inlineScrollPadding`, and `blockBorder` / `inlineBorder`, alongside physical `scrollMargin` / `scrollPadding`. They take one value for both edges or two in start/end order, support `start` / `end` modifiers with comma-separated groups, and `blockSize` / `inlineSize` accept the same `min` / `max` / `fixed` syntax as `width`. Every component's Style Properties table has been regenerated to list them.
55
+
56
+ **`dotize` is gone from Tasty's public API** and is now internal to the kit. It was never re-exported, so nothing consumers import has changed; `Form.setFieldsValue({ user: { name: 'A' } })` still reaches a field registered as `name="user.name"`. The port was differential-tested against the 3.7.0 implementation across nested, empty, array-valued, numeric-key and non-object inputs at three prefixes.
57
+
58
+ **`Tab.Action` gains a story.** The component and its docs section shipped without one, so the tab `actions` slot had no rendered example and nothing in Chromatic's coverage. `Tabs` → `WithTabActions` shows a per-tab toggle action, and the docs section now renders it above its code sample. `ItemAction`'s own page also names `Tab` among its hosts and lists the `.Action` aliases, which it did not before.
59
+
60
+ **The Tasty lint plugin moves to 1.1.0** so the new props lint clean. On 1.0.5 every one of them — `blockPadding`, `inlinePadding`, `blockMargin`, `inlineInset`, `blockBorder`, `blockScrollPadding` — was reported as an unknown style property, which would have made the migration path above unusable. This is dev tooling only and does not affect the published package.
61
+
3
62
  ## 0.178.0
4
63
 
5
64
  ### Minor Changes
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { useEffect, useRef, useState } from "react";
3
3
 
4
4
  //#region src/_internal/hooks/use-debounced-value.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { deprecationWarning } from "../../utils/warnings.js";
3
3
  import React, { useEffect } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { useSyncRef } from "./use-sync-ref.js";
3
3
  import { useCallback } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { useRef } from "react";
3
3
 
4
4
  //#region src/_internal/hooks/use-is-first-render.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../utils/react/useLayoutEffect.js";
3
3
  import { useRef } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  //#region src/_internal/hooks/use-timer/timer.ts
3
3
  var Timer = class {
4
4
  callback;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { useEvent } from "../use-event.js";
3
3
  import { Timer } from "./timer.js";
4
4
  import { useEffect, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { useEvent } from "./use-event.js";
3
3
  import { warn } from "../../utils/warnings.js";
4
4
  import { useRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../utils/styles.js";
3
3
  import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { ItemAction } from "./actions/ItemAction/ItemAction.js";
3
3
  import { ItemBadge } from "./content/ItemBadge/ItemBadge.js";
4
4
  import { Item } from "react-stately";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { usePaletteVersion } from "../tokens/palette-config.js";
3
3
  import { getTokens } from "../tokens/all-tokens.js";
4
4
  import { useGlobalStyles, useRawCSS } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { useCombinedRefs } from "../utils/react/useCombinedRefs.js";
3
3
  import { filterBaseProps, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef, useCallback, useEffect, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { tasty } from "@tenphi/tasty";
3
3
 
4
4
  //#region src/components/HiddenInput.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../utils/styles.js";
3
3
  import { AMBIENT_PREDEFINED_STATES } from "../utils/react/useScheme.js";
4
4
  import { EventBusProvider } from "../utils/react/useEventBus.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useAction } from "../use-action.js";
4
4
  import { CONTAINER_STYLES, TEXT_STYLES, tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { _Item } from "../../content/Item/Item.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -4,7 +4,6 @@ import { DynamicIcon } from "../../../utils/react/resolveIcon.js";
4
4
  import "../../../utils/react/index.js";
5
5
  import { CubeActionProps } from "../Action/Action.js";
6
6
  import { Mods, Styles } from "@tenphi/tasty";
7
- import "react";
8
7
  import { OverlayProps } from "react-aria";
9
8
 
10
9
  //#region src/components/actions/Button/Button.d.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { getDisabledElementProps } from "../../../utils/react/disabledProps.js";
4
4
  import { mergeProps } from "../../../utils/react/mergeProps.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { useSlotProps } from "../../../utils/react/Slots.js";
3
3
  import { Space } from "../../layout/Space.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps } from "../../../utils/react/mergeProps.js";
4
4
  import { ButtonSplitContext } from "./context.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/actions/ButtonSplit/context.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { tasty } from "@tenphi/tasty";
3
3
 
4
4
  //#region src/components/actions/CommandMenu/styled.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
4
4
  import { CURRENT_CLEAR_STYLES, CURRENT_OUTLINE_STYLES, CURRENT_PRIMARY_STYLES, DANGER_CLEAR_STYLES, DANGER_OUTLINE_STYLES, DANGER_PRIMARY_STYLES, DEFAULT_CLEAR_STYLES, DEFAULT_OUTLINE_STYLES, DEFAULT_PRIMARY_STYLES, ITEM_ACTION_BASE_STYLES, NOTE_CLEAR_STYLES, NOTE_OUTLINE_STYLES, NOTE_PRIMARY_STYLES, SPECIAL_CLEAR_STYLES, SPECIAL_OUTLINE_STYLES, SPECIAL_PRIMARY_STYLES, SUCCESS_CLEAR_STYLES, SUCCESS_OUTLINE_STYLES, SUCCESS_PRIMARY_STYLES, WARNING_CLEAR_STYLES, WARNING_OUTLINE_STYLES, WARNING_PRIMARY_STYLES } from "../../../data/item-themes.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -0,0 +1,218 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.179.0 | Cube Dev Team */
2
+ import { DisplayTransition } from "../helpers/DisplayTransition/DisplayTransition.js";
3
+ import { ITEM_RESTING_COLOR_VARIANTS, ROW_STATE_ALIASES, resolveItemVariant } from "../../data/item-themes.js";
4
+ import { ItemActionProvider } from "./ItemActionContext.js";
5
+ import { tasty } from "@tenphi/tasty";
6
+ import { useLayoutEffect, useMemo, useRef, useState } from "react";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { useFocusWithin, useHover } from "react-aria";
9
+ import { ClearPressResponder } from "@react-aria/interactions";
10
+
11
+ //#region src/components/actions/ItemActionsWrapper.tsx
12
+ /**
13
+ * The sibling-actions layout shared by `ItemButton` and the field triggers
14
+ * (`Select` / `Picker` / `FilterPicker`).
15
+ *
16
+ * A row's actions cannot live inside the row when the row is itself a button:
17
+ * that nests a `<button>` in a `<button>`, and a press on an action activates
18
+ * the row. So the run is rendered as a SIBLING, laid over the row's trailing
19
+ * end, and the row reserves the space for it through `--actions-width` — which
20
+ * this file measures — and `Item`'s own `actions` placeholder column.
21
+ *
22
+ * The run is pointer-transparent; only its children take presses. That is what
23
+ * lets a picker put its non-interactive caret in the run and still have a click
24
+ * on the caret reach the trigger underneath, and it stops the run's padding and
25
+ * inter-action gaps from swallowing presses meant for the row.
26
+ *
27
+ * Being a sibling also puts the run OUTSIDE the row for anything that asks
28
+ * "did this press land on my trigger?" — an overlay opened by the row would
29
+ * read a press on its own actions as a press outside and dismiss itself,
30
+ * swallowing that press on the way. The run therefore marks itself with
31
+ * `data-trigger-action`, which `isOwnActionsPress` resolves back to the row it
32
+ * belongs to. See `actions-run.ts`.
33
+ */
34
+ const ItemActionsWrapperElement = tasty({
35
+ variants: ITEM_RESTING_COLOR_VARIANTS,
36
+ styles: {
37
+ ...ROW_STATE_ALIASES,
38
+ "@block-description": ":has(> [data-description=\"block\"])",
39
+ display: "grid",
40
+ position: "relative",
41
+ placeContent: "stretch",
42
+ placeItems: "stretch",
43
+ $size: {
44
+ "": "$size-md",
45
+ "size=xsmall": "$size-xs",
46
+ "size=small": "$size-sm",
47
+ "size=medium": "$size-md",
48
+ "size=large": "$size-lg",
49
+ "size=xlarge": "$size-xl"
50
+ },
51
+ Actions: {
52
+ $: ">",
53
+ position: "absolute",
54
+ inset: {
55
+ "": "1bw right dock",
56
+ "type=card": "(1bw + .5x) right dock",
57
+ "@block-description": "1bw 1bw auto auto",
58
+ "type=card & @block-description": "(1bw + .5x) (1bw + .5x) auto auto"
59
+ },
60
+ display: "flex",
61
+ gap: "1bw",
62
+ placeItems: "center",
63
+ placeContent: "center end",
64
+ pointerEvents: "none",
65
+ padding: "0 $side-padding",
66
+ height: {
67
+ "": "min 0",
68
+ "@block-description": "min ($size - 2bw)"
69
+ },
70
+ opacity: {
71
+ "": 1,
72
+ "!actions-shown": 0
73
+ },
74
+ translate: {
75
+ "": "0 0",
76
+ "!actions-shown & !preserve-actions-space": ".5x 0"
77
+ },
78
+ transition: "theme, translate",
79
+ "$action-size": "min(max((2x + 2bw), ($size - 1x - 2bw)), (3x - 2bw))",
80
+ "$side-padding": "(($size - $action-size - 2bw) / 2)"
81
+ },
82
+ ActionsChild: {
83
+ $: ">Actions>*",
84
+ pointerEvents: {
85
+ "": "auto",
86
+ "!actions-shown": "none"
87
+ }
88
+ },
89
+ ActionIcon: {
90
+ $: ">Actions>",
91
+ display: "grid",
92
+ placeItems: "center",
93
+ placeContent: "center",
94
+ flexShrink: 0,
95
+ width: "$action-size",
96
+ height: "$action-size",
97
+ pointerEvents: "none",
98
+ preset: {
99
+ "": "t3",
100
+ "size=xsmall": "t4",
101
+ "size=xlarge": "t2"
102
+ }
103
+ }
104
+ }
105
+ });
106
+ /**
107
+ * A non-interactive box inside an actions run — a dropdown caret, a loading
108
+ * spinner. It occupies an action's footprint so the run stays evenly spaced,
109
+ * and it lets presses through to the row behind it.
110
+ */
111
+ function ItemActionIcon(props) {
112
+ return /* @__PURE__ */ jsx("div", {
113
+ "data-element": "ActionIcon",
114
+ children: props.children
115
+ });
116
+ }
117
+ /**
118
+ * Wraps a row in the sibling-actions layout and publishes `--actions-width` so
119
+ * the row can reserve the space the run covers.
120
+ */
121
+ function ItemActionsWrapper(props) {
122
+ const { children, actions, type = "item", theme = "default", size = "medium", isDisabled, disableActionsFocus, autoHideActions = false, preserveActionsSpace = false, mods, styles, actionsProps } = props;
123
+ const actionsRef = useRef(null);
124
+ const [actionsWidth, setActionsWidth] = useState(0);
125
+ const [areActionsVisible, setAreActionsVisible] = useState(false);
126
+ useLayoutEffect(() => {
127
+ const el = actionsRef.current;
128
+ if (!el) return;
129
+ const width = el.childElementCount ? Math.round(el.offsetWidth) : 0;
130
+ if (width !== actionsWidth) setActionsWidth(width);
131
+ }, [
132
+ actions,
133
+ areActionsVisible,
134
+ actionsWidth
135
+ ]);
136
+ const [isFocusWithin, setIsFocusWithin] = useState(false);
137
+ const [hasPressed, setHasPressed] = useState(false);
138
+ const { hoverProps, isHovered } = useHover({});
139
+ const { focusWithinProps } = useFocusWithin({ onFocusWithinChange: setIsFocusWithin });
140
+ useLayoutEffect(() => {
141
+ const actionsEl = actionsRef.current;
142
+ if (!actionsEl || !autoHideActions) return;
143
+ const checkPressed = () => {
144
+ setHasPressed(actionsEl.querySelector("[data-pressed]") !== null);
145
+ };
146
+ const observer = new MutationObserver(checkPressed);
147
+ observer.observe(actionsEl, {
148
+ attributes: true,
149
+ attributeFilter: ["data-pressed"],
150
+ subtree: true
151
+ });
152
+ checkPressed();
153
+ return () => observer.disconnect();
154
+ }, [areActionsVisible, autoHideActions]);
155
+ const shouldShowActions = isHovered || isFocusWithin || hasPressed || !autoHideActions;
156
+ const finalMods = useMemo(() => {
157
+ return {
158
+ ...mods,
159
+ ...shouldShowActions ? { "actions-shown": true } : null,
160
+ ...preserveActionsSpace ? { "preserve-actions-space": true } : null,
161
+ disabled: isDisabled
162
+ };
163
+ }, [
164
+ mods,
165
+ shouldShowActions,
166
+ preserveActionsSpace,
167
+ isDisabled
168
+ ]);
169
+ return /* @__PURE__ */ jsxs(ItemActionsWrapperElement, {
170
+ ...hoverProps,
171
+ variant: resolveItemVariant(theme, type),
172
+ "data-size": size,
173
+ "data-type": type,
174
+ "data-theme": theme,
175
+ mods: finalMods,
176
+ styles,
177
+ style: {
178
+ "--actions-width": areActionsVisible || !autoHideActions || preserveActionsSpace ? `${actionsWidth}px` : "0px",
179
+ ...typeof size === "number" && { "--size": `${size}px` }
180
+ },
181
+ children: [children({ showActions: shouldShowActions }), /* @__PURE__ */ jsx(ClearPressResponder, { children: /* @__PURE__ */ jsx(ItemActionProvider, {
182
+ type,
183
+ theme,
184
+ disableActionsFocus,
185
+ isDisabled,
186
+ children: autoHideActions && !preserveActionsSpace ? /* @__PURE__ */ jsx(DisplayTransition, {
187
+ exposeUnmounted: true,
188
+ isShown: shouldShowActions,
189
+ onPhaseChange: (phase) => {
190
+ setAreActionsVisible(phase !== "unmounted");
191
+ },
192
+ children: ({ ref: transitionRef }) => {
193
+ return /* @__PURE__ */ jsx("div", {
194
+ ...focusWithinProps,
195
+ ...actionsProps,
196
+ ref: (node) => {
197
+ actionsRef.current = node;
198
+ transitionRef(node);
199
+ },
200
+ "data-element": "Actions",
201
+ "data-trigger-action": "",
202
+ children: actions
203
+ });
204
+ }
205
+ }) : /* @__PURE__ */ jsx("div", {
206
+ ref: actionsRef,
207
+ ...actionsProps,
208
+ "data-element": "Actions",
209
+ "data-trigger-action": "",
210
+ children: actions
211
+ })
212
+ }) })]
213
+ });
214
+ }
215
+
216
+ //#endregion
217
+ export { ItemActionIcon, ItemActionsWrapper };
218
+ //# sourceMappingURL=ItemActionsWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemActionsWrapper.js","names":[],"sources":["../../../src/components/actions/ItemActionsWrapper.tsx"],"sourcesContent":["import { ClearPressResponder } from '@react-aria/interactions';\nimport { Mods, Styles, tasty } from '@tenphi/tasty';\nimport {\n CSSProperties,\n HTMLAttributes,\n ReactNode,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useFocusWithin, useHover } from 'react-aria';\n\nimport {\n ITEM_RESTING_COLOR_VARIANTS,\n resolveItemVariant,\n ROW_STATE_ALIASES,\n} from '../../data/item-themes';\nimport { CubeItemProps } from '../content/Item/Item';\nimport { DisplayTransition } from '../helpers/DisplayTransition/DisplayTransition';\n\nimport { ItemActionProvider } from './ItemActionContext';\n\n/**\n * The sibling-actions layout shared by `ItemButton` and the field triggers\n * (`Select` / `Picker` / `FilterPicker`).\n *\n * A row's actions cannot live inside the row when the row is itself a button:\n * that nests a `<button>` in a `<button>`, and a press on an action activates\n * the row. So the run is rendered as a SIBLING, laid over the row's trailing\n * end, and the row reserves the space for it through `--actions-width` — which\n * this file measures — and `Item`'s own `actions` placeholder column.\n *\n * The run is pointer-transparent; only its children take presses. That is what\n * lets a picker put its non-interactive caret in the run and still have a click\n * on the caret reach the trigger underneath, and it stops the run's padding and\n * inter-action gaps from swallowing presses meant for the row.\n *\n * Being a sibling also puts the run OUTSIDE the row for anything that asks\n * \"did this press land on my trigger?\" — an overlay opened by the row would\n * read a press on its own actions as a press outside and dismiss itself,\n * swallowing that press on the way. The run therefore marks itself with\n * `data-trigger-action`, which `isOwnActionsPress` resolves back to the row it\n * belongs to. See `actions-run.ts`.\n */\nconst ItemActionsWrapperElement = tasty({\n // Actions default to the `current` type, which paints from the inherited\n // `currentcolor` — but they are rendered as a SIBLING of the row here, not\n // inside it, so without this they would inherit the page color instead of the\n // row's. Harmless on the default theme (the two match) and plainly wrong on\n // any other: a `special` row would hand its actions the page's dark text to\n // tint with, on a dark purple surface. The variant carries the row's resting\n // color down so `currentcolor` means the same thing it does inside an `Item`.\n variants: ITEM_RESTING_COLOR_VARIANTS,\n styles: {\n // The row is the wrapper's own child, so the wrapper can read the one\n // interaction the row expresses as a COLOR change rather than a fill change.\n // Without it the label darkened under the finger while the caret and the\n // actions laid over the same row — which paint from the color this element\n // hands down — stayed at their resting tint. The variants restate it,\n // because that is where the colors keyed on it live.\n ...ROW_STATE_ALIASES,\n\n // The one layout the row does not want its actions centred in. A block\n // description stacks under the label and can make the row arbitrarily tall;\n // there the actions belong in the first line, beside the label, which is\n // what anchoring them to a `$size`-tall box at the top achieves. Every other\n // row — including one with an INLINE description — is a single band, and\n // centring is both what it wants and what survives a caller overriding the\n // height. Read off the row rather than plumbed through as a prop, because\n // `Item` is what decides the placement and it defaults by type.\n '@block-description': ':has(> [data-description=\"block\"])',\n\n display: 'grid',\n position: 'relative',\n placeContent: 'stretch',\n placeItems: 'stretch',\n\n $size: {\n '': '$size-md',\n 'size=xsmall': '$size-xs',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n 'size=xlarge': '$size-xl',\n },\n\n Actions: {\n $: '>',\n position: 'absolute',\n // Both insets set, so the run's BOX spans the row and `placeItems: center`\n // puts the actions on its centre line. What sits in the box does not grow\n // with it — every child is a fixed `$action-size`, which is capped so a\n // large row does not get oversized buttons.\n inset: {\n '': '1bw right dock',\n 'type=card': '(1bw + .5x) right dock',\n '@block-description': '1bw 1bw auto auto',\n 'type=card & @block-description': '(1bw + .5x) (1bw + .5x) auto auto',\n },\n display: 'flex',\n gap: '1bw',\n placeItems: 'center',\n placeContent: 'center end',\n\n // The run lies OVER the row. Left opaque, its padding and the gaps between\n // its actions eat presses that belong to the row behind it, and a\n // non-interactive control inside it (a picker's caret) could never reach\n // its own trigger. The run itself is therefore transparent to the pointer\n // and its children opt back in — see `ActionsChild` — so a child that\n // wants to stay transparent, like that caret, only has to say so.\n pointerEvents: 'none',\n\n padding: '0 $side-padding',\n // Only where the run is top-anchored: there the box has no bottom to\n // measure from, so `$size` is what gives it one. Everywhere else the two\n // insets decide the height, and this floor would force the box back to\n // `$size` and re-anchor it at the top.\n height: {\n '': 'min 0',\n '@block-description': 'min ($size - 2bw)',\n },\n opacity: {\n '': 1,\n '!actions-shown': 0,\n },\n // The run slides in as it fades, but only where it was taking no space to\n // begin with. Where the space is reserved the run has a fixed place in the\n // layout, and sliding it would read as the actions drifting rather than\n // appearing.\n translate: {\n '': '0 0',\n '!actions-shown & !preserve-actions-space': '.5x 0',\n },\n transition: 'theme, translate',\n\n // Size for the action buttons\n '$action-size': 'min(max((2x + 2bw), ($size - 1x - 2bw)), (3x - 2bw))',\n // Side padding for the button\n '$side-padding': '(($size - $action-size - 2bw) / 2)',\n },\n\n // Whatever a caller put in the run: interactive again, so the transparency\n // above applies only to the space BETWEEN and AROUND the actions. `*`\n // because the run's content is the caller's — there is no element name to\n // key on.\n ActionsChild: {\n $: '>Actions>*',\n pointerEvents: {\n '': 'auto',\n '!actions-shown': 'none',\n },\n },\n\n // A non-interactive box in the run, the same size as an action so it lines\n // up with one. `$side-padding + $action-size / 2` collapses to\n // `($size - 2bw) / 2` — the centre of `Item`'s own `rightIcon` square — so a\n // caret moved out of that slot and into the run does not move on screen.\n ActionIcon: {\n $: '>Actions>',\n display: 'grid',\n placeItems: 'center',\n placeContent: 'center',\n flexShrink: 0,\n width: '$action-size',\n height: '$action-size',\n // The run's children are interactive by default; this one is not, and a\n // press on it belongs to the row underneath.\n pointerEvents: 'none',\n // `--icon-size` comes from the preset, and the run is outside the row that\n // sets one — so the box restates the ladder `Item` uses. The `m` weights a\n // non-`item` type picks carry the same icon size as their plain\n // counterparts, so weight is not a factor here.\n preset: {\n '': 't3',\n 'size=xsmall': 't4',\n 'size=xlarge': 't2',\n },\n },\n },\n});\n\n/**\n * A non-interactive box inside an actions run — a dropdown caret, a loading\n * spinner. It occupies an action's footprint so the run stays evenly spaced,\n * and it lets presses through to the row behind it.\n */\nexport function ItemActionIcon(props: { children: ReactNode }) {\n return <div data-element=\"ActionIcon\">{props.children}</div>;\n}\n\nexport interface ItemActionsWrapperProps {\n /**\n * The row or trigger the actions are laid over. Receives the resolved\n * visibility so it can reserve space for the run while it is shown.\n */\n children: (state: { showActions: boolean }) => ReactNode;\n /**\n * The run's content. Rendering the wrapper with an empty run is supported and\n * costs nothing — the measured width is 0 — which is how a trigger keeps its\n * markup stable across states that do and do not have trailing controls.\n */\n actions?: ReactNode;\n type?: string;\n theme?: string;\n /** `Item`'s size token, or a pixel number. */\n size?: CubeItemProps['size'];\n isDisabled?: boolean;\n disableActionsFocus?: boolean;\n /**\n * Hide the actions until the row is hovered, focused, or holds a pressed\n * control.\n * @default false\n */\n autoHideActions?: boolean;\n /**\n * Keep the run's width reserved while it is hidden, so the row does not\n * change size as the actions come and go. Only meaningful with\n * `autoHideActions`.\n *\n * It also keeps the run MOUNTED rather than transitioning it in and out:\n * an unmounted run cannot be measured, so a row that starts hidden would\n * have nothing to reserve.\n * @default false\n */\n preserveActionsSpace?: boolean;\n /** Extra modifiers for the wrapper, merged after the ones it derives itself. */\n mods?: Mods;\n /** Styles for the wrapper element — the one that is the row's layout box. */\n styles?: Styles;\n /** Extra props spread on the run's container, e.g. event handlers. */\n actionsProps?: HTMLAttributes<HTMLDivElement>;\n}\n\n/**\n * Wraps a row in the sibling-actions layout and publishes `--actions-width` so\n * the row can reserve the space the run covers.\n */\nexport function ItemActionsWrapper(props: ItemActionsWrapperProps) {\n const {\n children,\n actions,\n type = 'item',\n theme = 'default',\n size = 'medium',\n isDisabled,\n disableActionsFocus,\n autoHideActions = false,\n preserveActionsSpace = false,\n mods,\n styles,\n actionsProps,\n } = props;\n\n const actionsRef = useRef<HTMLDivElement>(null);\n const [actionsWidth, setActionsWidth] = useState(0);\n const [areActionsVisible, setAreActionsVisible] = useState(false);\n\n useLayoutEffect(() => {\n const el = actionsRef.current;\n\n if (!el) return;\n\n // An empty run still has the container's side padding, which would reserve\n // space inside the row for nothing. Nothing rendered means nothing to\n // reserve.\n const width = el.childElementCount ? Math.round(el.offsetWidth) : 0;\n\n if (width !== actionsWidth) {\n setActionsWidth(width);\n }\n }, [actions, areActionsVisible, actionsWidth]);\n\n const [isFocusWithin, setIsFocusWithin] = useState(false);\n const [hasPressed, setHasPressed] = useState(false);\n const { hoverProps, isHovered } = useHover({});\n const { focusWithinProps } = useFocusWithin({\n onFocusWithinChange: setIsFocusWithin,\n });\n\n // Watch for data-pressed attribute on any descendant element\n useLayoutEffect(() => {\n const actionsEl = actionsRef.current;\n\n if (!actionsEl || !autoHideActions) return;\n\n const checkPressed = () => {\n setHasPressed(actionsEl.querySelector('[data-pressed]') !== null);\n };\n\n const observer = new MutationObserver(checkPressed);\n\n observer.observe(actionsEl, {\n attributes: true,\n attributeFilter: ['data-pressed'],\n subtree: true,\n });\n\n checkPressed();\n\n return () => observer.disconnect();\n }, [areActionsVisible, autoHideActions]);\n\n const shouldShowActions =\n isHovered || isFocusWithin || hasPressed || !autoHideActions;\n\n // `disabled` is on the wrapper so its variant can paint the row's DISABLED\n // label color, not just the resting one. Actions default to the `current` type\n // and suppress their own fade when the disabled state is inherited — on the\n // grounds that the host already faded the color they paint from — so without\n // this the wrapper would hand them a full-strength color and a disabled button\n // would sit next to full-strength actions. See `ITEM_RESTING_COLOR_VARIANTS`.\n const finalMods = useMemo(() => {\n return {\n ...mods,\n ...(shouldShowActions ? { 'actions-shown': true } : null),\n ...(preserveActionsSpace ? { 'preserve-actions-space': true } : null),\n disabled: isDisabled,\n };\n }, [mods, shouldShowActions, preserveActionsSpace, isDisabled]);\n\n return (\n <ItemActionsWrapperElement\n {...hoverProps}\n // The same resolver `Item` uses, so the wrapper cannot land on a\n // different variant than the row it wraps.\n variant={resolveItemVariant(theme, type)}\n data-size={size}\n data-type={type}\n data-theme={theme}\n mods={finalMods}\n styles={styles}\n style={\n {\n '--actions-width':\n areActionsVisible || !autoHideActions || preserveActionsSpace\n ? `${actionsWidth}px`\n : '0px',\n ...(typeof size === 'number' && { '--size': `${size}px` }),\n } as CSSProperties\n }\n >\n {children({ showActions: shouldShowActions })}\n {/*\n The run is rendered under whatever press context the row sits in, and a\n `PressResponder` in that context reaches EVERY `usePress` below it — so\n an `ItemButton` / `TabButton` / picker trigger inside a `DialogTrigger`\n or a `MenuTrigger` handed its own actions the trigger's `onPress`, and\n pressing one toggled the overlay on top of running the action. The run\n belongs to the row, not to whatever opened around it: it clears the\n context so each action answers only to its own handler.\n */}\n <ClearPressResponder>\n <ItemActionProvider\n type={type}\n theme={theme}\n disableActionsFocus={disableActionsFocus}\n isDisabled={isDisabled}\n >\n {autoHideActions && !preserveActionsSpace ? (\n <DisplayTransition\n exposeUnmounted\n isShown={shouldShowActions}\n onPhaseChange={(phase) => {\n setAreActionsVisible(phase !== 'unmounted');\n }}\n >\n {({ ref: transitionRef }) => {\n return (\n <div\n {...focusWithinProps}\n {...actionsProps}\n ref={(node: any) => {\n actionsRef.current = node;\n transitionRef(node);\n }}\n data-element=\"Actions\"\n data-trigger-action=\"\"\n >\n {actions}\n </div>\n );\n }}\n </DisplayTransition>\n ) : (\n <div\n ref={actionsRef}\n {...actionsProps}\n data-element=\"Actions\"\n data-trigger-action=\"\"\n >\n {actions}\n </div>\n )}\n </ItemActionProvider>\n </ClearPressResponder>\n </ItemActionsWrapperElement>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,MAAM,4BAA4B,MAAM;CAQtC,UAAU;CACV,QAAQ;EAON,GAAG;EAUH,sBAAsB;EAEtB,SAAS;EACT,UAAU;EACV,cAAc;EACd,YAAY;EAEZ,OAAO;GACL,IAAI;GACJ,eAAe;GACf,cAAc;GACd,eAAe;GACf,cAAc;GACd,eAAe;GAChB;EAED,SAAS;GACP,GAAG;GACH,UAAU;GAKV,OAAO;IACL,IAAI;IACJ,aAAa;IACb,sBAAsB;IACtB,kCAAkC;IACnC;GACD,SAAS;GACT,KAAK;GACL,YAAY;GACZ,cAAc;GAQd,eAAe;GAEf,SAAS;GAKT,QAAQ;IACN,IAAI;IACJ,sBAAsB;IACvB;GACD,SAAS;IACP,IAAI;IACJ,kBAAkB;IACnB;GAKD,WAAW;IACT,IAAI;IACJ,4CAA4C;IAC7C;GACD,YAAY;GAGZ,gBAAgB;GAEhB,iBAAiB;GAClB;EAMD,cAAc;GACZ,GAAG;GACH,eAAe;IACb,IAAI;IACJ,kBAAkB;IACnB;GACF;EAMD,YAAY;GACV,GAAG;GACH,SAAS;GACT,YAAY;GACZ,cAAc;GACd,YAAY;GACZ,OAAO;GACP,QAAQ;GAGR,eAAe;GAKf,QAAQ;IACN,IAAI;IACJ,eAAe;IACf,eAAe;IAChB;GACF;EACF;CACF,CAAC;;;;;;AAOF,SAAgB,eAAe,OAAgC;AAC7D,QAAO,oBAAC;EAAI,gBAAa;YAAc,MAAM;GAAe;;;;;;AAkD9D,SAAgB,mBAAmB,OAAgC;CACjE,MAAM,EACJ,UACA,SACA,OAAO,QACP,QAAQ,WACR,OAAO,UACP,YACA,qBACA,kBAAkB,OAClB,uBAAuB,OACvB,MACA,QACA,iBACE;CAEJ,MAAM,aAAa,OAAuB,KAAK;CAC/C,MAAM,CAAC,cAAc,mBAAmB,SAAS,EAAE;CACnD,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,MAAM;AAEjE,uBAAsB;EACpB,MAAM,KAAK,WAAW;AAEtB,MAAI,CAAC,GAAI;EAKT,MAAM,QAAQ,GAAG,oBAAoB,KAAK,MAAM,GAAG,YAAY,GAAG;AAElE,MAAI,UAAU,aACZ,iBAAgB,MAAM;IAEvB;EAAC;EAAS;EAAmB;EAAa,CAAC;CAE9C,MAAM,CAAC,eAAe,oBAAoB,SAAS,MAAM;CACzD,MAAM,CAAC,YAAY,iBAAiB,SAAS,MAAM;CACnD,MAAM,EAAE,YAAY,cAAc,SAAS,EAAE,CAAC;CAC9C,MAAM,EAAE,qBAAqB,eAAe,EAC1C,qBAAqB,kBACtB,CAAC;AAGF,uBAAsB;EACpB,MAAM,YAAY,WAAW;AAE7B,MAAI,CAAC,aAAa,CAAC,gBAAiB;EAEpC,MAAM,qBAAqB;AACzB,iBAAc,UAAU,cAAc,iBAAiB,KAAK,KAAK;;EAGnE,MAAM,WAAW,IAAI,iBAAiB,aAAa;AAEnD,WAAS,QAAQ,WAAW;GAC1B,YAAY;GACZ,iBAAiB,CAAC,eAAe;GACjC,SAAS;GACV,CAAC;AAEF,gBAAc;AAEd,eAAa,SAAS,YAAY;IACjC,CAAC,mBAAmB,gBAAgB,CAAC;CAExC,MAAM,oBACJ,aAAa,iBAAiB,cAAc,CAAC;CAQ/C,MAAM,YAAY,cAAc;AAC9B,SAAO;GACL,GAAG;GACH,GAAI,oBAAoB,EAAE,iBAAiB,MAAM,GAAG;GACpD,GAAI,uBAAuB,EAAE,0BAA0B,MAAM,GAAG;GAChE,UAAU;GACX;IACA;EAAC;EAAM;EAAmB;EAAsB;EAAW,CAAC;AAE/D,QACE,qBAAC;EACC,GAAI;EAGJ,SAAS,mBAAmB,OAAO,KAAK;EACxC,aAAW;EACX,aAAW;EACX,cAAY;EACZ,MAAM;EACE;EACR,OACE;GACE,mBACE,qBAAqB,CAAC,mBAAmB,uBACrC,GAAG,aAAa,MAChB;GACN,GAAI,OAAO,SAAS,YAAY,EAAE,UAAU,GAAG,KAAK,KAAK;GAC1D;aAGF,SAAS,EAAE,aAAa,mBAAmB,CAAC,EAU7C,oBAAC,iCACC,oBAAC;GACO;GACC;GACc;GACT;aAEX,mBAAmB,CAAC,uBACnB,oBAAC;IACC;IACA,SAAS;IACT,gBAAgB,UAAU;AACxB,0BAAqB,UAAU,YAAY;;eAG3C,EAAE,KAAK,oBAAoB;AAC3B,YACE,oBAAC;MACC,GAAI;MACJ,GAAI;MACJ,MAAM,SAAc;AAClB,kBAAW,UAAU;AACrB,qBAAc,KAAK;;MAErB,gBAAa;MACb,uBAAoB;gBAEnB;OACG;;KAGQ,GAEpB,oBAAC;IACC,KAAK;IACL,GAAI;IACJ,gBAAa;IACb,uBAAoB;cAEnB;KACG;IAEW,GACD;GACI"}
@@ -8,14 +8,24 @@ import "../ItemAction/index.js";
8
8
  import "../../../index.js";
9
9
  import { Styles } from "@tenphi/tasty";
10
10
  import * as react from "react";
11
- import { ReactNode } from "react";
11
+ import { HTMLAttributes, ReactNode } from "react";
12
12
  import * as _react_types_shared0 from "@react-types/shared";
13
13
 
14
14
  //#region src/components/actions/ItemButton/ItemButton.d.ts
15
15
  interface CubeItemButtonProps extends Omit<CubeItemProps, 'size'>, Omit<CubeUseActionProps, 'as'> {
16
+ /**
17
+ * The row's trailing controls, rendered beside the button rather than inside
18
+ * it. Pass `null` to keep an empty run — the row reserves no space for it, and
19
+ * the button is not remounted when the actions arrive later.
20
+ */
16
21
  actions?: ReactNode;
17
22
  size?: Omit<CubeItemProps['size'], 'inline'>;
18
23
  wrapperStyles?: Styles;
24
+ /**
25
+ * Extra props spread on the actions run's container, e.g. event handlers.
26
+ * Only meaningful together with `actions`.
27
+ */
28
+ actionsProps?: HTMLAttributes<HTMLDivElement>;
19
29
  }
20
30
  declare const _ItemButton: react.ForwardRefExoticComponent<Omit<CubeItemButtonProps, "ref"> & react.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>> & {
21
31
  Action: react.ForwardRefExoticComponent<Omit<CubeItemActionProps, "ref"> & react.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>>;