@cube-dev/ui-kit 0.195.0 → 0.197.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 (705) hide show
  1. package/dist/CHANGELOG.md +180 -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.d.ts +6 -0
  16. package/dist/components/Root.js +125 -102
  17. package/dist/components/Root.js.map +1 -1
  18. package/dist/components/actions/Action/Action.js +1 -1
  19. package/dist/components/actions/Banner/Banner.js +1 -1
  20. package/dist/components/actions/Button/Button.js +11 -5
  21. package/dist/components/actions/Button/Button.js.map +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.d.ts +9 -4
  24. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  25. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
  26. package/dist/components/actions/ButtonSplit/context.js +1 -1
  27. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  28. package/dist/components/actions/CommandMenu/styled.js +1 -1
  29. package/dist/components/actions/ItemAction/ItemAction.js +27 -25
  30. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  31. package/dist/components/actions/ItemActionContext.js +1 -1
  32. package/dist/components/actions/ItemActionsWrapper.js +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 +7 -4
  37. package/dist/components/actions/Menu/MenuCollectionItem.js.map +1 -1
  38. package/dist/components/actions/Menu/MenuItem.js +69 -60
  39. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  40. package/dist/components/actions/Menu/MenuSection.js +1 -1
  41. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  42. package/dist/components/actions/Menu/SubMenuTrigger.js +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 +1 -4
  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 +15 -14
  50. package/dist/components/actions/use-action.js.map +1 -1
  51. package/dist/components/actions/use-anchored-menu.js +1 -1
  52. package/dist/components/actions/use-context-menu.js +1 -1
  53. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  54. package/dist/components/content/Alert/Alert.js +1 -1
  55. package/dist/components/content/Alert/use-alert.js +1 -1
  56. package/dist/components/content/Avatar/Avatar.js +1 -1
  57. package/dist/components/content/Badge/Badge.js +1 -1
  58. package/dist/components/content/Card/Card.js +1 -1
  59. package/dist/components/content/Content.js +1 -1
  60. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  61. package/dist/components/content/CopySnippet/CopySnippet.d.ts +16 -16
  62. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  63. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  64. package/dist/components/content/Divider.js +1 -1
  65. package/dist/components/content/Footer.js +1 -1
  66. package/dist/components/content/Header.js +1 -1
  67. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  68. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  69. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  70. package/dist/components/content/Item/Item.js +16 -4
  71. package/dist/components/content/Item/Item.js.map +1 -1
  72. package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
  73. package/dist/components/content/ItemBadge/ItemBadge.js +7 -3
  74. package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
  75. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  76. package/dist/components/content/Layout/GridLayout.js +1 -1
  77. package/dist/components/content/Layout/Layout.js +29 -15
  78. package/dist/components/content/Layout/Layout.js.map +1 -1
  79. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  80. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  81. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  82. package/dist/components/content/Layout/LayoutContent.js +1 -1
  83. package/dist/components/content/Layout/LayoutContext.js +20 -10
  84. package/dist/components/content/Layout/LayoutContext.js.map +1 -1
  85. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  86. package/dist/components/content/Layout/LayoutFooter.js +12 -9
  87. package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
  88. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  89. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  90. package/dist/components/content/Layout/LayoutPane.js +1 -1
  91. package/dist/components/content/Layout/LayoutPanel.d.ts +7 -3
  92. package/dist/components/content/Layout/LayoutPanel.js +75 -3
  93. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  94. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  95. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  96. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  97. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  98. package/dist/components/content/Layout/index.js +1 -1
  99. package/dist/components/content/Layout/utils.js +1 -1
  100. package/dist/components/content/Paragraph.js +1 -1
  101. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  102. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  103. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  104. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  105. package/dist/components/content/Result/Result.js +1 -1
  106. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  107. package/dist/components/content/Tag/Tag.js +1 -1
  108. package/dist/components/content/Text.js +1 -1
  109. package/dist/components/content/TextItem/TextItem.js +1 -1
  110. package/dist/components/content/Title.js +1 -1
  111. package/dist/components/content/Tree/Tree.js +1 -1
  112. package/dist/components/content/Tree/TreeNode.js +2 -1
  113. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  114. package/dist/components/content/Tree/styled.js +1 -1
  115. package/dist/components/content/Tree/tree-index.js +1 -1
  116. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  117. package/dist/components/content/Tree/use-load-data.js +1 -1
  118. package/dist/components/content/highlightText.js +1 -1
  119. package/dist/components/content/use-auto-tooltip.js +3 -3
  120. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  121. package/dist/components/data/DataTable/DataTable.js +1 -1
  122. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  123. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  124. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  125. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  126. package/dist/components/data/ItemTable/ItemTableToolbar.js +2 -1
  127. package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
  128. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  129. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  130. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  131. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  132. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  133. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  134. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  135. package/dist/components/data/TableBase/RowCollection.js +1 -1
  136. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  137. package/dist/components/data/TableBase/TableRow.js +1 -1
  138. package/dist/components/data/TableBase/TableView.js +3 -1
  139. package/dist/components/data/TableBase/TableView.js.map +1 -1
  140. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  141. package/dist/components/data/TableBase/column-header.js +1 -1
  142. package/dist/components/data/TableBase/column-menu.js +1 -1
  143. package/dist/components/data/TableBase/column-styles.js +1 -1
  144. package/dist/components/data/TableBase/column-tint.js +1 -1
  145. package/dist/components/data/TableBase/row-menu.js +1 -1
  146. package/dist/components/data/TableBase/styled.js +1 -1
  147. package/dist/components/data/TableBase/table-tree.js +1 -1
  148. package/dist/components/data/TableBase/types.js +1 -1
  149. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  150. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  151. package/dist/components/data/TableBase/use-column-order.js +1 -1
  152. package/dist/components/data/TableBase/use-column-window.js +1 -1
  153. package/dist/components/data/TableBase/use-container-width.js +1 -1
  154. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  155. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  156. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  157. package/dist/components/data/TableBase/use-table-search.js +1 -1
  158. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  159. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  160. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  161. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  162. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
  163. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  164. package/dist/components/fields/Checkbox/Checkbox.js +2 -2
  165. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  166. package/dist/components/fields/Checkbox/CheckboxGroup.js +5 -5
  167. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  168. package/dist/components/fields/Checkbox/context.js +1 -1
  169. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  170. package/dist/components/fields/ColorPicker/ColorPicker.js +3 -1
  171. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  172. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  173. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +2 -1
  174. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
  175. package/dist/components/fields/ComboBox/ComboBox.d.ts +27 -7
  176. package/dist/components/fields/ComboBox/ComboBox.js +1095 -619
  177. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  178. package/dist/components/fields/ComboBox/comboBoxOptions.js +84 -0
  179. package/dist/components/fields/ComboBox/comboBoxOptions.js.map +1 -0
  180. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  181. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  182. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  183. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  184. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  185. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  186. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  187. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  188. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  189. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  190. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  191. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  192. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  193. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  194. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  195. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  196. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  197. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  198. package/dist/components/fields/DatePicker/parseDate.d.ts +7 -0
  199. package/dist/components/fields/DatePicker/parseDate.js +17 -3
  200. package/dist/components/fields/DatePicker/parseDate.js.map +1 -1
  201. package/dist/components/fields/DatePicker/period.js +1 -1
  202. package/dist/components/fields/DatePicker/props.js +1 -1
  203. package/dist/components/fields/DatePicker/utils.js +1 -1
  204. package/dist/components/fields/FileInput/FileInput.js +1 -1
  205. package/dist/components/fields/FilterListBox/FilterListBox.js +2 -1
  206. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  207. package/dist/components/fields/FilterPicker/FilterPicker.js +15 -6
  208. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  209. package/dist/components/fields/Input/Input.d.ts +2 -2
  210. package/dist/components/fields/Input/Input.js +2 -2
  211. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  212. package/dist/components/fields/ListBox/ListBox.d.ts +10 -4
  213. package/dist/components/fields/ListBox/ListBox.js +298 -146
  214. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  215. package/dist/components/fields/ListBox/optionId.js +1 -1
  216. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +150 -139
  217. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  218. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  219. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  220. package/dist/components/fields/NumberInput/NumberInput.d.ts +6 -1
  221. package/dist/components/fields/NumberInput/NumberInput.js +136 -128
  222. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  223. package/dist/components/fields/NumberInput/StepButton.js +38 -48
  224. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  225. package/dist/components/fields/PasswordInput/PasswordInput.d.ts +1 -2
  226. package/dist/components/fields/PasswordInput/PasswordInput.js +77 -111
  227. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  228. package/dist/components/fields/Picker/Picker.d.ts +1 -1
  229. package/dist/components/fields/Picker/Picker.js +22 -8
  230. package/dist/components/fields/Picker/Picker.js.map +1 -1
  231. package/dist/components/fields/RadioGroup/Radio.d.ts +12 -12
  232. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  233. package/dist/components/fields/RadioGroup/RadioGroup.js +2 -2
  234. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  235. package/dist/components/fields/RadioGroup/context.js +1 -1
  236. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -6
  237. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  238. package/dist/components/fields/SearchInput/SearchInput.d.ts +8 -3
  239. package/dist/components/fields/SearchInput/SearchInput.js +22 -34
  240. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  241. package/dist/components/fields/Select/Select.d.ts +12 -1
  242. package/dist/components/fields/Select/Select.js +365 -207
  243. package/dist/components/fields/Select/Select.js.map +1 -1
  244. package/dist/components/fields/Slider/Gradation.js +1 -1
  245. package/dist/components/fields/Slider/HueSlider.js +1 -1
  246. package/dist/components/fields/Slider/RangeSlider.js +3 -4
  247. package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
  248. package/dist/components/fields/Slider/Slider.js +1 -1
  249. package/dist/components/fields/Slider/SliderBase.js +1 -1
  250. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  251. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  252. package/dist/components/fields/Slider/elements.js +1 -1
  253. package/dist/components/fields/Slider/index.js +1 -1
  254. package/dist/components/fields/Switch/Switch.js +1 -1
  255. package/dist/components/fields/TagInput/TagInput.js +2 -2
  256. package/dist/components/fields/TagInput/TagInput.js.map +1 -1
  257. package/dist/components/fields/TagInput/TagList.js +1 -1
  258. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  259. package/dist/components/fields/TagInput/useTagError.js +1 -1
  260. package/dist/components/fields/TextArea/TextArea.d.ts +0 -1
  261. package/dist/components/fields/TextArea/TextArea.js +49 -63
  262. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  263. package/dist/components/fields/TextInput/TextInput.d.ts +1 -1
  264. package/dist/components/fields/TextInput/TextInput.js +42 -46
  265. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  266. package/dist/components/fields/TextInput/TextInputBase.d.ts +6 -2
  267. package/dist/components/fields/TextInput/TextInputBase.js +32 -10
  268. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  269. package/dist/components/fields/TextInput/displayed-validation.js +50 -0
  270. package/dist/components/fields/TextInput/displayed-validation.js.map +1 -0
  271. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  272. package/dist/components/fields/TextInputMapper/TextInputMapper.js +20 -17
  273. package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
  274. package/dist/components/fields/TriggerActions.js +1 -1
  275. package/dist/components/fields/color/ColorPanel.js +3 -1
  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/index.d.ts +2 -2
  281. package/dist/components/fields/option-origin-press.js +78 -0
  282. package/dist/components/fields/option-origin-press.js.map +1 -0
  283. package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +10 -8
  284. package/dist/components/form/FieldWrapper/FieldWrapper.js +214 -159
  285. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  286. package/dist/components/form/FieldWrapper/field-description.js +3 -3
  287. package/dist/components/form/FieldWrapper/field-description.js.map +1 -1
  288. package/dist/components/form/FieldWrapper/types.d.ts +4 -3
  289. package/dist/components/form/Form/Field.js +1 -1
  290. package/dist/components/form/Form/Form.js +1 -1
  291. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  292. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  293. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  294. package/dist/components/form/Form/SubmitError.js +1 -1
  295. package/dist/components/form/Form/backend.js +1 -1
  296. package/dist/components/form/Form/index.js +1 -1
  297. package/dist/components/form/Form/modern/actions.js +1 -1
  298. package/dist/components/form/Form/modern/context.js +1 -1
  299. package/dist/components/form/Form/modern/controller.js +1 -1
  300. package/dist/components/form/Form/modern/field-binding.js +1 -1
  301. package/dist/components/form/Form/modern/field.js +1 -1
  302. package/dist/components/form/Form/modern/react.js +1 -1
  303. package/dist/components/form/Form/modern/store.js +1 -1
  304. package/dist/components/form/Form/modern/validation.js +1 -1
  305. package/dist/components/form/Form/modern/values.js +1 -1
  306. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  307. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  308. package/dist/components/form/Form/use-field/use-field-props.js +21 -33
  309. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  310. package/dist/components/form/Form/use-field/use-field.js +1 -1
  311. package/dist/components/form/Form/use-form.js +1 -1
  312. package/dist/components/form/Form/validation.js +1 -1
  313. package/dist/components/form/Label.js +1 -1
  314. package/dist/components/form/field-chrome.js +4 -34
  315. package/dist/components/form/field-chrome.js.map +1 -1
  316. package/dist/components/form/legacy-tooltip.js +1 -1
  317. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  318. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  319. package/dist/components/form/validation/use-validation-props.js +1 -1
  320. package/dist/components/form/wrapper.d.ts +6 -17
  321. package/dist/components/form/wrapper.js +6 -14
  322. package/dist/components/form/wrapper.js.map +1 -1
  323. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  324. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  325. package/dist/components/layout/Flex.js +1 -1
  326. package/dist/components/layout/Flow.js +1 -1
  327. package/dist/components/layout/Grid.js +1 -1
  328. package/dist/components/layout/Panel.js +1 -1
  329. package/dist/components/layout/Prefix.js +1 -1
  330. package/dist/components/layout/ResizablePanel.js +1 -1
  331. package/dist/components/layout/Space.js +1 -1
  332. package/dist/components/layout/Suffix.js +1 -1
  333. package/dist/components/navigation/Pagination/Pagination.js +3 -1
  334. package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
  335. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  336. package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
  337. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  338. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  339. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  340. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  341. package/dist/components/navigation/Tabs/TabPicker.js +2 -1
  342. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  343. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  344. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  345. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  346. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  347. package/dist/components/navigation/Tabs/styled.js +1 -1
  348. package/dist/components/navigation/Tabs/types.js +1 -1
  349. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  350. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  351. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  352. package/dist/components/other/Calendar/Calendar.js +1 -1
  353. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  354. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  355. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  356. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  357. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  358. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  359. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  360. package/dist/components/other/Calendar/styled.js +1 -1
  361. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  362. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  363. package/dist/components/overlays/AlertDialog/AlertDialog.d.ts +6 -1
  364. package/dist/components/overlays/AlertDialog/AlertDialog.js +3 -2
  365. package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
  366. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +3 -2
  367. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
  368. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  369. package/dist/components/overlays/Dialog/Dialog.js +28 -14
  370. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  371. package/dist/components/overlays/Dialog/DialogContainer.d.ts +4 -2
  372. package/dist/components/overlays/Dialog/DialogContainer.js +40 -34
  373. package/dist/components/overlays/Dialog/DialogContainer.js.map +1 -1
  374. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  375. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +7 -3
  376. package/dist/components/overlays/Dialog/DialogTrigger.js +149 -132
  377. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  378. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  379. package/dist/components/overlays/Dialog/context.js +1 -1
  380. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  381. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  382. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  383. package/dist/components/overlays/Dialog/use-dialog-open-sync.js +83 -0
  384. package/dist/components/overlays/Dialog/use-dialog-open-sync.js.map +1 -0
  385. package/dist/components/overlays/Modal/Modal.js +1 -1
  386. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  387. package/dist/components/overlays/Modal/Overlay.js +9 -3
  388. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  389. package/dist/components/overlays/Modal/Popover.d.ts +1 -1
  390. package/dist/components/overlays/Modal/Popover.js +31 -29
  391. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  392. package/dist/components/overlays/Modal/Tray.js +69 -60
  393. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  394. package/dist/components/overlays/Modal/Underlay.js +1 -1
  395. package/dist/components/overlays/Modal/index.d.ts +1 -1
  396. package/dist/components/overlays/Modal/modal-containment.js +1 -1
  397. package/dist/components/overlays/Notifications/Notification.js +1 -1
  398. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  399. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  400. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  401. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  402. package/dist/components/overlays/Notifications/OverlayContainer.js +18 -32
  403. package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
  404. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  405. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  406. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  407. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  408. package/dist/components/overlays/Notifications/index.js +1 -1
  409. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  410. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  411. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  412. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  413. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  414. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  415. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  416. package/dist/components/overlays/Toast/index.js +1 -1
  417. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  418. package/dist/components/overlays/Toast/useToast.js +1 -1
  419. package/dist/components/overlays/Tooltip/Tooltip.d.ts +8 -0
  420. package/dist/components/overlays/Tooltip/Tooltip.js +16 -22
  421. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  422. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  423. package/dist/components/overlays/Tooltip/TooltipTrigger.d.ts +1 -1
  424. package/dist/components/overlays/Tooltip/TooltipTrigger.js +163 -113
  425. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  426. package/dist/components/overlays/Tooltip/context.js +1 -1
  427. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  428. package/dist/components/overlays/Tooltip/split-trigger-props.js +6 -5
  429. package/dist/components/overlays/Tooltip/split-trigger-props.js.map +1 -1
  430. package/dist/components/portal/Portal.js +1 -1
  431. package/dist/components/portal/PortalProvider.js +1 -1
  432. package/dist/components/portal/usePortal.js +1 -1
  433. package/dist/components/shared/DraggableCollection.js +1 -1
  434. package/dist/components/shared/InvalidIcon.js +1 -1
  435. package/dist/components/shared/ValidIcon.js +1 -1
  436. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  437. package/dist/components/status/Spin/Cube.js +1 -1
  438. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  439. package/dist/components/status/Spin/Spin.js +1 -1
  440. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  441. package/dist/data/item-themes.js +1 -1
  442. package/dist/data/themes.js +1 -1
  443. package/dist/eslint-plugin/defaults.generated.js +11 -17
  444. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  445. package/dist/eslint-plugin/index.js +1 -1
  446. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  447. package/dist/i18n/I18nProvider.js +1 -1
  448. package/dist/i18n/createFormatter.js +1 -1
  449. package/dist/i18n/index.js +1 -1
  450. package/dist/i18n/instance.js +1 -1
  451. package/dist/i18n/locales/de-DE/uikit.js +6 -4
  452. package/dist/i18n/locales/en-US/uikit.js +6 -4
  453. package/dist/i18n/locales/en-US/uikit.json.d.ts +3 -1
  454. package/dist/i18n/locales/es-ES/uikit.js +6 -4
  455. package/dist/i18n/locales/es-MX/uikit.js +6 -4
  456. package/dist/i18n/locales/fr-FR/uikit.js +6 -4
  457. package/dist/i18n/locales/it-IT/uikit.js +6 -4
  458. package/dist/i18n/locales/ja-JP/uikit.js +6 -4
  459. package/dist/i18n/locales/nb-NO/uikit.js +6 -4
  460. package/dist/i18n/locales/pt-BR/uikit.js +6 -4
  461. package/dist/i18n/locales/pt-PT/uikit.js +6 -4
  462. package/dist/i18n/locales/sv-SE/uikit.js +6 -4
  463. package/dist/i18n/locales/vi-VN/uikit.js +6 -4
  464. package/dist/i18n/locales.js +1 -1
  465. package/dist/i18n/namespace.js +1 -1
  466. package/dist/i18n/useFormatter.js +1 -1
  467. package/dist/i18n/useI18n.js +1 -1
  468. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  469. package/dist/icons/AdjustmentsIcon.js +1 -1
  470. package/dist/icons/AiIcon.js +1 -1
  471. package/dist/icons/AreaChartIcon.js +1 -1
  472. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  473. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  474. package/dist/icons/BackwardIcon.js +1 -1
  475. package/dist/icons/BarChartIcon.js +1 -1
  476. package/dist/icons/BellFilledIcon.js +1 -1
  477. package/dist/icons/BellIcon.js +1 -1
  478. package/dist/icons/BooleanIcon.js +1 -1
  479. package/dist/icons/CalendarEditIcon.js +1 -1
  480. package/dist/icons/CalendarIcon.js +1 -1
  481. package/dist/icons/CaretDownIcon.js +1 -1
  482. package/dist/icons/CaretUpIcon.js +1 -1
  483. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  484. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  485. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  486. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  487. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  488. package/dist/icons/ChartBarLineIcon.js +1 -1
  489. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  490. package/dist/icons/ChartBarStackedIcon.js +1 -1
  491. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  492. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  493. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  494. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  495. package/dist/icons/ChartBubbleIcon.js +1 -1
  496. package/dist/icons/ChartDonut2Icon.js +1 -1
  497. package/dist/icons/ChartFunnelIcon.js +1 -1
  498. package/dist/icons/ChartHeatmapIcon.js +1 -1
  499. package/dist/icons/ChartKPIIcon.js +1 -1
  500. package/dist/icons/ChartPie2Icon.js +1 -1
  501. package/dist/icons/ChartScatterIcon.js +1 -1
  502. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  503. package/dist/icons/CheckCircleIcon.js +1 -1
  504. package/dist/icons/CheckIcon.js +1 -1
  505. package/dist/icons/CircleFilledIcon.js +1 -1
  506. package/dist/icons/ClearIcon.js +1 -1
  507. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  508. package/dist/icons/CloseCircleIcon.js +1 -1
  509. package/dist/icons/CloseIcon.js +1 -1
  510. package/dist/icons/CodeIcon.js +1 -1
  511. package/dist/icons/ColumnTotalIcon.js +1 -1
  512. package/dist/icons/CopyIcon.js +1 -1
  513. package/dist/icons/CountIcon.js +1 -1
  514. package/dist/icons/CubeIcon.js +1 -1
  515. package/dist/icons/CubePauseIcon.js +1 -1
  516. package/dist/icons/CubePlayIcon.js +1 -1
  517. package/dist/icons/CurrencyDollarIcon.js +1 -1
  518. package/dist/icons/DangerIcon.js +1 -1
  519. package/dist/icons/DashboardIcon.js +1 -1
  520. package/dist/icons/DatabaseIcon.js +1 -1
  521. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  522. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  523. package/dist/icons/DirectionIcon.js +1 -1
  524. package/dist/icons/DonutIcon.js +1 -1
  525. package/dist/icons/DownIcon.js +1 -1
  526. package/dist/icons/EditIcon.js +1 -1
  527. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  528. package/dist/icons/ExclamationCircleIcon.js +1 -1
  529. package/dist/icons/ExclamationIcon.js +1 -1
  530. package/dist/icons/EyeIcon.js +1 -1
  531. package/dist/icons/EyeInvisibleIcon.js +1 -1
  532. package/dist/icons/FilterIcon.js +1 -1
  533. package/dist/icons/FolderFilledIcon.js +1 -1
  534. package/dist/icons/FolderIcon.js +1 -1
  535. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  536. package/dist/icons/FolderOpenIcon.js +1 -1
  537. package/dist/icons/ForwardIcon.js +1 -1
  538. package/dist/icons/GripVerticalIcon.js +1 -1
  539. package/dist/icons/HierarchyIcon.js +1 -1
  540. package/dist/icons/HierarchyOpenIcon.js +1 -1
  541. package/dist/icons/Icon.js +1 -1
  542. package/dist/icons/InfoCircleIcon.js +1 -1
  543. package/dist/icons/InfoIcon.js +1 -1
  544. package/dist/icons/KeyIcon.js +1 -1
  545. package/dist/icons/LeftIcon.js +1 -1
  546. package/dist/icons/LineChartIcon.js +1 -1
  547. package/dist/icons/LoadingIcon.js +1 -1
  548. package/dist/icons/LockFilledIcon.js +1 -1
  549. package/dist/icons/LockIcon.js +1 -1
  550. package/dist/icons/MoreIcon.js +1 -1
  551. package/dist/icons/NotAllowedIcon.js +1 -1
  552. package/dist/icons/Number123Icon.js +1 -1
  553. package/dist/icons/NumberIcon.js +1 -1
  554. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  555. package/dist/icons/PauseCircleIcon.js +1 -1
  556. package/dist/icons/PauseIcon.js +1 -1
  557. package/dist/icons/PercentageIcon.js +1 -1
  558. package/dist/icons/PieChartIcon.js +1 -1
  559. package/dist/icons/PipetteIcon.js +1 -1
  560. package/dist/icons/PlayCircleIcon.js +1 -1
  561. package/dist/icons/PlayIcon.js +1 -1
  562. package/dist/icons/PlusIcon.js +1 -1
  563. package/dist/icons/ProgressBarIcon.js +1 -1
  564. package/dist/icons/ReloadIcon.js +1 -1
  565. package/dist/icons/ReportIcon.js +1 -1
  566. package/dist/icons/ReturnIcon.js +1 -1
  567. package/dist/icons/RightIcon.js +1 -1
  568. package/dist/icons/RowTotalsIcon.js +1 -1
  569. package/dist/icons/SchemeIcon.js +1 -1
  570. package/dist/icons/SearchIcon.js +1 -1
  571. package/dist/icons/SemanticQueryIcon.js +1 -1
  572. package/dist/icons/SettingsIcon.js +1 -1
  573. package/dist/icons/ShieldFilledIcon.js +1 -1
  574. package/dist/icons/ShieldIcon.js +1 -1
  575. package/dist/icons/SlashIcon.js +1 -1
  576. package/dist/icons/SparklesIcon.js +1 -1
  577. package/dist/icons/SqlIcon.js +1 -1
  578. package/dist/icons/StatsIcon.js +1 -1
  579. package/dist/icons/StopIcon.js +1 -1
  580. package/dist/icons/StringIcon.js +1 -1
  581. package/dist/icons/SubtotalsIcon.js +1 -1
  582. package/dist/icons/SwitchIcon.js +1 -1
  583. package/dist/icons/TableIcon.js +1 -1
  584. package/dist/icons/ThumbsDownIcon.js +1 -1
  585. package/dist/icons/ThumbsUpIcon.js +1 -1
  586. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  587. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  588. package/dist/icons/ThunderboltIcon.js +1 -1
  589. package/dist/icons/TimeIcon.js +1 -1
  590. package/dist/icons/TrashIcon.js +1 -1
  591. package/dist/icons/UnlockIcon.js +1 -1
  592. package/dist/icons/UpIcon.js +1 -1
  593. package/dist/icons/UserGroupIcon.js +1 -1
  594. package/dist/icons/UserIcon.js +1 -1
  595. package/dist/icons/UserLockIcon.js +1 -1
  596. package/dist/icons/ViewIcon.js +1 -1
  597. package/dist/icons/WarningFilledIcon.js +1 -1
  598. package/dist/icons/WarningIcon.js +1 -1
  599. package/dist/icons/wrap-icon.js +1 -1
  600. package/dist/index.d.ts +1 -1
  601. package/dist/index.js +2 -2
  602. package/dist/probe/canonicalize.js +1 -1
  603. package/dist/probe/css.js +1 -1
  604. package/dist/probe/index.js +1 -1
  605. package/dist/provider.js +1 -1
  606. package/dist/providers/TrackingProvider.js +1 -1
  607. package/dist/providers/navigation-url.js +15 -3
  608. package/dist/providers/navigation-url.js.map +1 -1
  609. package/dist/providers/navigationAdapter.default.js +1 -1
  610. package/dist/providers/use-navigation.js +1 -1
  611. package/dist/shared/form.d.ts +11 -12
  612. package/dist/tokens/all-tokens.js +1 -1
  613. package/dist/tokens/base.js +1 -1
  614. package/dist/tokens/color-seed.js +1 -1
  615. package/dist/tokens/color-theme.js +1 -1
  616. package/dist/tokens/colors.js +1 -1
  617. package/dist/tokens/layout.js +1 -1
  618. package/dist/tokens/lazy-styles.js +1 -1
  619. package/dist/tokens/legacy-color.js +1 -1
  620. package/dist/tokens/palette-config.js +1 -1
  621. package/dist/tokens/palette.js +1 -1
  622. package/dist/tokens/resolve.js +1 -1
  623. package/dist/tokens/shadows.js +1 -1
  624. package/dist/tokens/sizes.js +1 -1
  625. package/dist/tokens/spacing.js +1 -1
  626. package/dist/tokens/typography.js +1 -1
  627. package/dist/utils/ResizeSensor.js +1 -1
  628. package/dist/utils/colors.js +1 -1
  629. package/dist/utils/dotize.js +1 -1
  630. package/dist/utils/is-dev-env.js +1 -1
  631. package/dist/utils/modules.js +1 -1
  632. package/dist/utils/promise.js +1 -1
  633. package/dist/utils/raf.js +1 -1
  634. package/dist/utils/random.js +1 -1
  635. package/dist/utils/range.js +1 -1
  636. package/dist/utils/react/RenderCache.js +1 -1
  637. package/dist/utils/react/Slots.js +1 -1
  638. package/dist/utils/react/chain.js +1 -1
  639. package/dist/utils/react/disabledProps.js +1 -1
  640. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  641. package/dist/utils/react/index.js +1 -1
  642. package/dist/utils/react/interactions.js +1 -1
  643. package/dist/utils/react/isTextOnly.js +1 -1
  644. package/dist/utils/react/mapProps.js +1 -1
  645. package/dist/utils/react/mergeProps.js +1 -1
  646. package/dist/utils/react/nullableValue.js +18 -9
  647. package/dist/utils/react/nullableValue.js.map +1 -1
  648. package/dist/utils/react/overlayKeyPropagation.js +1 -1
  649. package/dist/utils/react/programmaticFocus.js +1 -1
  650. package/dist/utils/react/resolveIcon.js +1 -1
  651. package/dist/utils/react/sharedStore.js +1 -1
  652. package/dist/utils/react/useBufferedValue.js +1 -1
  653. package/dist/utils/react/useCombinedRefs.js +1 -1
  654. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  655. package/dist/utils/react/useEventBus.js +1 -1
  656. package/dist/utils/react/useId.js +1 -1
  657. package/dist/utils/react/useIsDarwin.js +1 -1
  658. package/dist/utils/react/useKeySymbols.js +1 -1
  659. package/dist/utils/react/useLayoutEffect.js +1 -1
  660. package/dist/utils/react/useLocalStorage.js +1 -1
  661. package/dist/utils/react/useMergeStyles.js +1 -1
  662. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  663. package/dist/utils/react/usePopoverSync.js +1 -1
  664. package/dist/utils/react/useQaProps.js +1 -1
  665. package/dist/utils/react/useScheme.js +1 -1
  666. package/dist/utils/react/useViewportSize.js +1 -1
  667. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  668. package/dist/utils/selection.js +1 -1
  669. package/dist/utils/styles.js +1 -1
  670. package/dist/utils/tree.js +1 -1
  671. package/dist/utils/warnings.js +1 -1
  672. package/dist/version.js +2 -2
  673. package/docs/ComplexLayout.md +1 -1
  674. package/docs/CreateComponent.md +6 -0
  675. package/docs/FieldProperties.md +31 -6
  676. package/docs/Theming.md +2 -1
  677. package/docs/Usage.md +6 -0
  678. package/docs/components/Root.md +1 -1
  679. package/docs/components/actions/Button.md +8 -2
  680. package/docs/components/actions/ButtonSplit.md +27 -1
  681. package/docs/components/actions/Link.md +1 -1
  682. package/docs/components/actions/Menu.md +4 -2
  683. package/docs/components/content/InfoBadge.md +2 -0
  684. package/docs/components/content/ItemBadge.md +4 -0
  685. package/docs/components/content/Layout.md +41 -6
  686. package/docs/components/fields/ComboBox.md +30 -19
  687. package/docs/components/fields/FilterListBox.md +2 -2
  688. package/docs/components/fields/FilterPicker.md +2 -2
  689. package/docs/components/fields/ListBox.md +14 -10
  690. package/docs/components/fields/NumberInput.md +20 -11
  691. package/docs/components/fields/PasswordInput.md +6 -7
  692. package/docs/components/fields/Picker.md +6 -5
  693. package/docs/components/fields/RadioGroup.md +1 -1
  694. package/docs/components/fields/SearchInput.md +7 -6
  695. package/docs/components/fields/Select.md +14 -8
  696. package/docs/components/fields/TagInput.md +8 -1
  697. package/docs/components/fields/TextArea.md +4 -3
  698. package/docs/components/fields/TextInput.md +13 -6
  699. package/docs/components/overlays/AlertDialog.md +7 -1
  700. package/docs/components/overlays/Dialog.md +5 -5
  701. package/docs/components/overlays/DialogContainer.md +26 -10
  702. package/docs/components/overlays/DialogTrigger.md +6 -6
  703. package/docs/components/overlays/Tooltip.md +17 -6
  704. package/docs/components/overlays/TooltipTrigger.md +2 -0
  705. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Root.js","names":["BASE_STYLES","BaseProps","BLOCK_STYLES","configure","filterBaseProps","setGlobalPredefinedStates","tasty","TastyBatchProvider","useEffect","useMemo","useRef","useState","ModalProvider","I18nProvider","Provider","NavigationAdapter","TrackingProps","TrackingProvider","PaletteConfig","setPaletteConfig","EventBusProvider","AMBIENT_PREDEFINED_STATES","extractStyles","TASTY_VERSION","VERSION","GlobalStyles","AlertDialogApiProvider","OverlayProvider","PortalProvider","i18n","I18nInstance","batchInjection","units","x","r","cr","bw","ow","recipes","reset","margin","padding","border","outline","boxSizing","button","appearance","touchAction","textDecoration","fill","color","cursor","disabled","input","wordSpacing","caretColor","shadow","preset","hide","RootElement","id","styles","display","STYLES","CubeRootProps","tokens","key","palette","bodyStyles","fontDisplay","fonts","publicUrl","navigation","font","monospaceFont","applyLegacyTokens","tracking","cursorStrategy","locale","Root","allProps","$","_c","children","t0","_applyLegacyTokens","t1","style","props","undefined","ref","rootRef","setRootRef","t2","current","t3","Symbol","for","T0","T1","T2","T3","t4","event","T4","t7","eventProps","t8","t9","t10","t11","t12","t5","t6","t13","t14","t15","t16"],"sources":["../../src/components/Root.tsx"],"sourcesContent":["import {\n BASE_STYLES,\n BaseProps,\n BLOCK_STYLES,\n configure,\n filterBaseProps,\n setGlobalPredefinedStates,\n tasty,\n TastyBatchProvider,\n} from '@tenphi/tasty';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { ModalProvider } from 'react-aria';\n\nimport { I18nProvider } from '../i18n';\nimport { Provider } from '../provider';\nimport { NavigationAdapter } from '../providers/navigation.types';\nimport { TrackingProps, TrackingProvider } from '../providers/TrackingProvider';\nimport { PaletteConfig, setPaletteConfig } from '../tokens/palette-config';\nimport { EventBusProvider } from '../utils/react/useEventBus';\nimport { AMBIENT_PREDEFINED_STATES } from '../utils/react/useScheme';\nimport { extractStyles } from '../utils/styles';\nimport { TASTY_VERSION, VERSION } from '../version';\n\nimport { GlobalStyles } from './GlobalStyles';\nimport { AlertDialogApiProvider } from './overlays/AlertDialog/AlertDialogApiProvider';\nimport { OverlayProvider } from './overlays/Notifications/OverlayProvider';\nimport { PortalProvider } from './portal';\n\nimport type { i18n as I18nInstance } from 'i18next';\n\n// Color-scheme aliases for the Glaze-generated palette (see `src/tokens/palette.ts`).\n// Attribute opt-in wins over system preference:\n// <html data-scheme=\"dark\"> → forces the dark scheme\n// <html data-contrast=\"high\"> → forces the high-contrast scheme\n// Otherwise falls back to the user's `prefers-color-scheme` / `prefers-contrast`.\n//\n// The strings live in `useScheme.ts`, which also reads the same two conditions\n// from JS (`useScheme()` / `useHighContrast()`) — one definition, so the CSS and\n// the JS answers cannot drift apart.\nsetGlobalPredefinedStates(AMBIENT_PREDEFINED_STATES);\n\nconfigure({\n // Collapse the kit's stylesheet writes into one style invalidation per commit\n // instead of one per component. Only takes effect inside a\n // `<TastyBatchProvider>` window, and windows have to be opened per portal\n // boundary because a commit that mounts a portal does not re-render `<Root>`.\n // The kit opens three: here, in `<Portal>` (tooltips) and in `<Overlay>`\n // (popovers, modals, trays — i.e. Dialog and Menu). Writes in any commit\n // without a window go straight through exactly as before, so a\n // `useLayoutEffect` can never measure an element whose rules have not landed.\n batchInjection: true,\n units: {\n x: 'var(--gap)',\n r: 'var(--radius)',\n cr: 'var(--card-radius)',\n bw: 'var(--border-width)',\n ow: 'var(--outline-width)',\n },\n recipes: {\n reset: {\n margin: 0,\n padding: 0,\n border: 0,\n outline: 0,\n boxSizing: 'border-box',\n },\n button: {\n appearance: 'none',\n touchAction: 'manipulation',\n textDecoration: 'none',\n '-webkit-tap-highlight-color': 'transparent',\n fill: '#clear',\n color: 'inherit',\n cursor: {\n '': 'default',\n ':is(a)': 'pointer',\n ':is(button)': '$pointer',\n disabled: 'not-allowed',\n },\n },\n input: {\n appearance: 'none',\n wordSpacing: 'initial',\n color: 'inherit',\n fill: '#clear',\n },\n 'input-autofill': {\n '@autofill': ':-webkit-autofill | :autofill',\n appearance: {\n '@autofill': 'none',\n },\n '-webkit-text-fill-color': {\n '': 'currentColor',\n '@autofill': '#primary-text',\n },\n caretColor: {\n '@autofill': '#primary-text',\n },\n shadow: {\n '@autofill': '0 0 0 9999rem #surface inset',\n },\n preset: {\n '@autofill': 'inherit',\n },\n '-webkit-opacity': {\n '': false,\n '[disabled]': '1',\n },\n },\n 'input-placeholder': {\n '-webkit-text-fill-color': '#placeholder',\n color: '#placeholder',\n },\n 'input-search-cancel-button': {\n hide: true,\n appearance: 'none',\n },\n },\n});\n\nconst RootElement = tasty({\n id: 'cube-ui-kit-root',\n styles: {\n display: 'contents',\n color: '#dark-02',\n preset: 't3',\n },\n});\n\nconst STYLES = [...BASE_STYLES, ...BLOCK_STYLES];\n\nexport interface CubeRootProps extends BaseProps {\n tokens?: { [key: string]: string };\n /**\n * Tune the generated color palette. Every zone — `accent`, `base` and each status\n * theme — takes the same seed: a color, or `{ hue, saturation }`. Plus the global\n * `surfaceMode`, `pastel` and `contrastLevel`. Omitted fields take their default, so\n * this prop describes the whole palette and dropping a field from it drops the\n * customization.\n *\n * Removing the prop entirely is the one thing that does *not* reset the\n * palette, so `<Root>` with no `palette` cannot clobber a host's imperative\n * `setPaletteConfig()` call. Pass `{}` to ask for the default.\n *\n * The palette is global process state, so this is a declarative wrapper over\n * `setPaletteConfig()`; both drive the same store, and the last write wins.\n * See `Getting Started/Theming` in Storybook.\n */\n palette?: PaletteConfig;\n bodyStyles?: { [key: string]: string };\n fontDisplay?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n fonts?: boolean;\n publicUrl?: string;\n navigation?: NavigationAdapter;\n font?: string;\n monospaceFont?: string;\n /** @deprecated Tokens are now always applied via GlobalStyles */\n applyLegacyTokens?: boolean;\n tracking?: TrackingProps;\n cursorStrategy?: 'web' | 'native';\n /**\n * i18next instance for this tree. During SSR, pass a request-local instance\n * created with `createUIKitI18n(locale)`.\n */\n i18n?: I18nInstance;\n /** Override the React Aria formatting locale. */\n locale?: string;\n}\n\nexport function Root(allProps: CubeRootProps) {\n let {\n children,\n /** Raw css styles for body element */\n bodyStyles,\n fontDisplay = 'swap',\n fonts,\n publicUrl,\n navigation,\n font,\n monospaceFont,\n applyLegacyTokens: _applyLegacyTokens, // deprecated, ignored\n tracking,\n cursorStrategy = 'web',\n style,\n tokens,\n palette,\n i18n,\n locale,\n ...props\n } = allProps;\n\n // Applied during render, not in an effect, so the first paint already uses the\n // tuned palette instead of flashing the default. `setPaletteConfig` is a no-op\n // when the resolved config is unchanged, so an inline object literal and\n // StrictMode's double render both cost nothing. `GlobalStyles` is rendered\n // below in the same pass and reads the new version directly.\n useMemo(() => {\n if (palette) setPaletteConfig(palette);\n }, [palette]);\n\n const ref = useRef(null);\n\n const [rootRef, setRootRef] = useState();\n\n useEffect(() => {\n if (!rootRef) {\n // @ts-ignore\n setRootRef(ref?.current);\n }\n }, []);\n\n const styles = extractStyles(props, STYLES);\n\n return (\n <TastyBatchProvider>\n <I18nProvider i18n={i18n} locale={locale}>\n <Provider navigation={navigation} root={rootRef}>\n <TrackingProvider event={tracking?.event}>\n <RootElement\n ref={ref}\n data-uikit={VERSION}\n data-tasty={TASTY_VERSION}\n data-font-display={fontDisplay}\n {...filterBaseProps(props, { eventProps: true })}\n styles={styles}\n style={{\n '--pointer': cursorStrategy === 'web' ? 'pointer' : 'default',\n ...style,\n }}\n tokens={tokens}\n >\n <GlobalStyles\n bodyStyles={bodyStyles}\n publicUrl={publicUrl}\n fonts={fonts}\n font={font}\n monospaceFont={monospaceFont}\n fontDisplay={fontDisplay}\n />\n <ModalProvider>\n <PortalProvider value={ref}>\n <EventBusProvider>\n <OverlayProvider>\n <AlertDialogApiProvider>\n {children}\n </AlertDialogApiProvider>\n </OverlayProvider>\n </EventBusProvider>\n </PortalProvider>\n </ModalProvider>\n </RootElement>\n </TrackingProvider>\n </Provider>\n </I18nProvider>\n </TastyBatchProvider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuCAK,0BAA0BgB,0BAA0B;AAEpDlB,UAAU;CASR4B,gBAAgB;CAChBC,OAAO;EACLC,GAAG;EACHC,GAAG;EACHC,IAAI;EACJC,IAAI;EACJC,IAAI;EACL;CACDC,SAAS;EACPC,OAAO;GACLC,QAAQ;GACRC,SAAS;GACTC,QAAQ;GACRC,SAAS;GACTC,WAAW;GACZ;EACDC,QAAQ;GACNC,YAAY;GACZC,aAAa;GACbC,gBAAgB;GAChB,+BAA+B;GAC/BC,MAAM;GACNC,OAAO;GACPC,QAAQ;IACN,IAAI;IACJ,UAAU;IACV,eAAe;IACfC,UAAU;IACZ;GACD;EACDC,OAAO;GACLP,YAAY;GACZQ,aAAa;GACbJ,OAAO;GACPD,MAAM;GACP;EACD,kBAAkB;GAChB,aAAa;GACbH,YAAY,EACV,aAAa,QACd;GACD,2BAA2B;IACzB,IAAI;IACJ,aAAa;IACd;GACDS,YAAY,EACV,aAAa,iBACd;GACDC,QAAQ,EACN,aAAa,gCACd;GACDC,QAAQ,EACN,aAAa,WACd;GACD,mBAAmB;IACjB,IAAI;IACJ,cAAc;IAChB;GACD;EACD,qBAAqB;GACnB,2BAA2B;GAC3BP,OAAO;GACR;EACD,8BAA8B;GAC5BQ,MAAM;GACNZ,YAAY;GACd;EACF;CACD,CAAC;AAEF,MAAMa,cAAcrD,MAAM;CACxBsD,IAAI;CACJC,QAAQ;EACNC,SAAS;EACTZ,OAAO;EACPO,QAAQ;EACV;CACD,CAAC;AAEF,MAAMM,SAAS,CAAC,GAAG/D,aAAa,GAAGE,aAAa;AAwChD,SAAO6E,KAAAC,UAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CACL,MAAA,EAAAC,UAAAf,YAAAC,aAAAe,IAAAd,OAAAC,WAAAC,YAAAC,MAAAC,eAAAC,mBAAAU,oBAAAT,UAAAC,gBAAAS,IAAAC,OAAAtB,QAAAE,SAAAtC,MAAAiD,QAAA,GAAAU,UAmBIR;CAfF,MAAAX,cAAAe,OAAAK,SAAA,SAAAL;CAQA,MAAAP,iBAAAS,OAAAG,SAAA,QAAAH;AAeA,KAAInB,QAAShD,kBAAiBgD,QAAQ;CAGxC,MAAAuB,MAAYhF,OAAO,KAAK;CAExB,MAAA,CAAAiF,SAAAC,cAA8BjF,UAAU;CAAC,IAAAkF;AAAA,KAAAZ,EAAA,OAAAU,SAAA;AAE/BE,aAAA;AACR,OAAI,CAACF,QAEHC,YAAWF,KAAGI,QAAU;;AAE3Bb,IAAA,KAAAU;AAAAV,IAAA,KAAAY;OAAAA,MAAAZ,EAAA;CAAA,IAAAc;AAAA,KAAAd,EAAA,OAAAe,OAAAC,IAAA,4BAAA,EAAA;AAAEF,OAAA,EAAE;AAAAd,IAAA,KAAAc;OAAAA,MAAAd,EAAA;AALLzE,WAAUqF,IAKPE,GAAG;CAEN,MAAAlC,SAAevC,cAAckE,OAAOzB,OAAO;CAGxC,MAAAmC,KAAA3F;CACE,MAAA4F,KAAAtF;CACE,MAAAuF,KAAAtF;CACE,MAAAuF,KAAApF;CAAwB,MAAAqF,KAAA1B,UAAQ2B;CAC9B,MAAAC,KAAA7C;CAEanC,MAAAA,KAAAA;CACAD,MAAAA,KAAAA;CAER,MAAAkF,KAAArG,gBAAgBoF,OAAO,EAAAkB,YAAc,MAAM,CAAC;CAGjC,MAAAC,KAAA9B,mBAAmB,QAAnB,YAAA;CAAgD,IAAA+B;AAAA,KAAA3B,EAAA,OAAAM,SAAAN,EAAA,OAAA0B,IAAA;AADxDC,OAAA;GAAA,aACQD;GAAgD,GAC1DpB;GACJ;AAAAN,IAAA,KAAAM;AAAAN,IAAA,KAAA0B;AAAA1B,IAAA,KAAA2B;OAAAA,MAAA3B,EAAA;CAAA,IAAA4B;AAAA,KAAA5B,EAAA,OAAAb,cAAAa,EAAA,OAAAR,QAAAQ,EAAA,OAAAZ,eAAAY,EAAA,OAAAX,SAAAW,EAAA,QAAAP,iBAAAO,EAAA,QAAAV,WAAA;AAGDsC,QAAA,oBAAC;GACazC;GACDG;GACJD;GACDG;GACSC;GACFL;IACb;AAAAY,IAAA,KAAAb;AAAAa,IAAA,KAAAR;AAAAQ,IAAA,KAAAZ;AAAAY,IAAA,KAAAX;AAAAW,IAAA,MAAAP;AAAAO,IAAA,MAAAV;AAAAU,IAAA,MAAA4B;OAAAA,OAAA5B,EAAA;CAAA,IAAA6B;AAAA,KAAA7B,EAAA,QAAAE,UAAA;AACF2B,QAAA,oBAAC,2BACC,oBAAC;GAAsBpB,OAAAA;aACrB,oBAAC,8BACC,oBAAC,6BACC,oBAAC,0BACEP,WAEL,GACF,GACF;IACF,GAAgB;AAAAF,IAAA,MAAAE;AAAAF,IAAA,MAAA6B;OAAAA,OAAA7B,EAAA;CAAA,IAAA8B;AAAA,KAAA9B,EAAA,QAAAuB,MAAAvB,EAAA,QAAAZ,eAAAY,EAAA,QAAApB,UAAAoB,EAAA,QAAA4B,OAAA5B,EAAA,QAAA6B,OAAA7B,EAAA,QAAA+B,MAAA/B,EAAA,QAAAgC,MAAAhC,EAAA,QAAAwB,MAAAxB,EAAA,QAAA2B,MAAA3B,EAAA,QAAAhB,QAAA;AA/BlB8C,QAAA,qBAAC;GACMrB;GACOlE,cAAAA;GACAD,cAAAA;GACO8C,qBAAAA;GAAW,GAC1BoC;GACI5C;GACD,OAAA+C;GAIC3C;cAER4C,KAQAC;IAWY;AAAA7B,IAAA,MAAAuB;AAAAvB,IAAA,MAAAZ;AAAAY,IAAA,MAAApB;AAAAoB,IAAA,MAAA4B;AAAA5B,IAAA,MAAA6B;AAAA7B,IAAA,MAAA+B;AAAA/B,IAAA,MAAAgC;AAAAhC,IAAA,MAAAwB;AAAAxB,IAAA,MAAA2B;AAAA3B,IAAA,MAAAhB;AAAAgB,IAAA,MAAA8B;OAAAA,OAAA9B,EAAA;CAAA,IAAAiC;AAAA,KAAAjC,EAAA,QAAAoB,MAAApB,EAAA,QAAA8B,OAAA9B,EAAA,QAAAqB,IAAA;AAjChBY,QAAA,oBAAC;GAAwB,OAAAZ;aACvBS;IAiCiB;AAAA9B,IAAA,MAAAoB;AAAApB,IAAA,MAAA8B;AAAA9B,IAAA,MAAAqB;AAAArB,IAAA,MAAAiC;OAAAA,OAAAjC,EAAA;CAAA,IAAAkC;AAAA,KAAAlC,EAAA,QAAAmB,MAAAnB,EAAA,QAAAT,cAAAS,EAAA,QAAAU,WAAAV,EAAA,QAAAiC,KAAA;AAnCrBC,QAAA,oBAAC;GAAqB3C;GAAkBmB,MAAAA;aACtCuB;IAmCS;AAAAjC,IAAA,MAAAmB;AAAAnB,IAAA,MAAAT;AAAAS,IAAA,MAAAU;AAAAV,IAAA,MAAAiC;AAAAjC,IAAA,MAAAkC;OAAAA,OAAAlC,EAAA;CAAA,IAAAmC;AAAA,KAAAnC,EAAA,QAAAkB,MAAAlB,EAAA,QAAApD,QAAAoD,EAAA,QAAAH,UAAAG,EAAA,QAAAkC,KAAA;AArCbC,QAAA,oBAAC;GAAmBvF;GAAciD;aAChCqC;IAqCa;AAAAlC,IAAA,MAAAkB;AAAAlB,IAAA,MAAApD;AAAAoD,IAAA,MAAAH;AAAAG,IAAA,MAAAkC;AAAAlC,IAAA,MAAAmC;OAAAA,OAAAnC,EAAA;CAAA,IAAAoC;AAAA,KAAApC,EAAA,QAAAiB,MAAAjB,EAAA,QAAAmC,KAAA;AAvCjBC,QAAA,oBAAC,gBACCD,MAuCmB;AAAAnC,IAAA,MAAAiB;AAAAjB,IAAA,MAAAmC;AAAAnC,IAAA,MAAAoC;OAAAA,OAAApC,EAAA;AAAA,QAxCrBoC"}
1
+ {"version":3,"file":"Root.js","names":["BASE_STYLES","BaseProps","BLOCK_STYLES","configure","filterBaseProps","setGlobalPredefinedStates","tasty","TastyBatchProvider","useEffect","useLayoutEffect","useRef","useState","ModalProvider","I18nProvider","Provider","NavigationAdapter","TrackingProps","TrackingProvider","PaletteConfig","setPaletteConfig","EventBusProvider","AMBIENT_PREDEFINED_STATES","extractStyles","TASTY_VERSION","VERSION","GlobalStyles","AlertDialogApiProvider","OverlayProvider","PortalProvider","i18n","I18nInstance","batchInjection","units","x","r","cr","bw","ow","recipes","reset","margin","padding","border","outline","boxSizing","button","appearance","touchAction","textDecoration","fill","color","cursor","disabled","input","wordSpacing","caretColor","shadow","preset","hide","RootElement","id","styles","display","STYLES","CubeRootProps","tokens","key","palette","bodyStyles","fontDisplay","fonts","publicUrl","navigation","font","monospaceFont","applyLegacyTokens","tracking","cursorStrategy","locale","Root","allProps","$","_c","children","t0","_applyLegacyTokens","t1","style","props","undefined","t2","t3","t4","ref","rootRef","setRootRef","t5","current","t6","Symbol","for","T0","T1","T2","T3","t7","event","T4","t10","eventProps","t11","t12","t13","t14","t15","t8","t9","t16","t17","t18","t19"],"sources":["../../src/components/Root.tsx"],"sourcesContent":["import {\n BASE_STYLES,\n BaseProps,\n BLOCK_STYLES,\n configure,\n filterBaseProps,\n setGlobalPredefinedStates,\n tasty,\n TastyBatchProvider,\n} from '@tenphi/tasty';\nimport { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { ModalProvider } from 'react-aria';\n\nimport { I18nProvider } from '../i18n';\nimport { Provider } from '../provider';\nimport { NavigationAdapter } from '../providers/navigation.types';\nimport { TrackingProps, TrackingProvider } from '../providers/TrackingProvider';\nimport { PaletteConfig, setPaletteConfig } from '../tokens/palette-config';\nimport { EventBusProvider } from '../utils/react/useEventBus';\nimport { AMBIENT_PREDEFINED_STATES } from '../utils/react/useScheme';\nimport { extractStyles } from '../utils/styles';\nimport { TASTY_VERSION, VERSION } from '../version';\n\nimport { GlobalStyles } from './GlobalStyles';\nimport { AlertDialogApiProvider } from './overlays/AlertDialog/AlertDialogApiProvider';\nimport { OverlayProvider } from './overlays/Notifications/OverlayProvider';\nimport { PortalProvider } from './portal';\n\nimport type { i18n as I18nInstance } from 'i18next';\n\n// Color-scheme aliases for the Glaze-generated palette (see `src/tokens/palette.ts`).\n// Attribute opt-in wins over system preference:\n// <html data-scheme=\"dark\"> → forces the dark scheme\n// <html data-contrast=\"high\"> → forces the high-contrast scheme\n// Otherwise falls back to the user's `prefers-color-scheme` / `prefers-contrast`.\n//\n// The strings live in `useScheme.ts`, which also reads the same two conditions\n// from JS (`useScheme()` / `useHighContrast()`) — one definition, so the CSS and\n// the JS answers cannot drift apart.\nsetGlobalPredefinedStates(AMBIENT_PREDEFINED_STATES);\n\nconfigure({\n // Collapse the kit's stylesheet writes into one style invalidation per commit\n // instead of one per component. Only takes effect inside a\n // `<TastyBatchProvider>` window, and windows have to be opened per portal\n // boundary because a commit that mounts a portal does not re-render `<Root>`.\n // The kit opens three: here, in `<Portal>` (tooltips) and in `<Overlay>`\n // (popovers, modals, trays — i.e. Dialog and Menu). Writes in any commit\n // without a window go straight through exactly as before, so a\n // `useLayoutEffect` can never measure an element whose rules have not landed.\n batchInjection: true,\n units: {\n x: 'var(--gap)',\n r: 'var(--radius)',\n cr: 'var(--card-radius)',\n bw: 'var(--border-width)',\n ow: 'var(--outline-width)',\n },\n recipes: {\n reset: {\n margin: 0,\n padding: 0,\n border: 0,\n outline: 0,\n boxSizing: 'border-box',\n },\n button: {\n appearance: 'none',\n touchAction: 'manipulation',\n textDecoration: 'none',\n '-webkit-tap-highlight-color': 'transparent',\n fill: '#clear',\n color: 'inherit',\n cursor: {\n '': 'default',\n ':is(a)': 'pointer',\n ':is(button)': '$pointer',\n disabled: 'not-allowed',\n },\n },\n input: {\n appearance: 'none',\n wordSpacing: 'initial',\n color: 'inherit',\n fill: '#clear',\n },\n 'input-autofill': {\n '@autofill': ':-webkit-autofill | :autofill',\n appearance: {\n '@autofill': 'none',\n },\n '-webkit-text-fill-color': {\n '': 'currentColor',\n '@autofill': '#primary-text',\n },\n caretColor: {\n '@autofill': '#primary-text',\n },\n shadow: {\n '@autofill': '0 0 0 9999rem #surface inset',\n },\n preset: {\n '@autofill': 'inherit',\n },\n '-webkit-opacity': {\n '': false,\n '[disabled]': '1',\n },\n },\n 'input-placeholder': {\n '-webkit-text-fill-color': '#placeholder',\n color: '#placeholder',\n },\n 'input-search-cancel-button': {\n hide: true,\n appearance: 'none',\n },\n },\n});\n\nconst RootElement = tasty({\n id: 'cube-ui-kit-root',\n styles: {\n display: 'contents',\n color: '#dark-02',\n preset: 't3',\n },\n});\n\nconst STYLES = [...BASE_STYLES, ...BLOCK_STYLES];\n\nexport interface CubeRootProps extends BaseProps {\n tokens?: { [key: string]: string };\n /**\n * Tune the generated color palette. Every zone — `accent`, `base` and each status\n * theme — takes the same seed: a color, or `{ hue, saturation }`. Plus the global\n * `surfaceMode`, `pastel` and `contrastLevel`. Omitted fields take their default, so\n * this prop describes the whole palette and dropping a field from it drops the\n * customization.\n *\n * Removing the prop entirely is the one thing that does *not* reset the\n * palette, so `<Root>` with no `palette` cannot clobber a host's imperative\n * `setPaletteConfig()` call. Pass `{}` to ask for the default.\n *\n * The first mount applies it during render, so the first paint is already\n * tuned; a later change applies in a layout effect, before paint.\n *\n * The palette is global process state, so this is a declarative wrapper over\n * `setPaletteConfig()`; both drive the same store, and the last write wins.\n * Root's layout effect runs after its descendants' in the same commit, so a\n * descendant's `setPaletteConfig()` from a layout effect in that commit loses\n * to the prop; write from a passive effect or an event handler instead.\n * See `Getting Started/Theming` in Storybook.\n */\n palette?: PaletteConfig;\n bodyStyles?: { [key: string]: string };\n fontDisplay?: 'auto' | 'block' | 'swap' | 'fallback' | 'optional';\n fonts?: boolean;\n publicUrl?: string;\n navigation?: NavigationAdapter;\n font?: string;\n monospaceFont?: string;\n /** @deprecated Tokens are now always applied via GlobalStyles */\n applyLegacyTokens?: boolean;\n tracking?: TrackingProps;\n cursorStrategy?: 'web' | 'native';\n /**\n * i18next instance for this tree. During SSR, pass a request-local instance\n * created with `createUIKitI18n(locale)`.\n */\n i18n?: I18nInstance;\n /** Override the React Aria formatting locale. */\n locale?: string;\n}\n\nexport function Root(allProps: CubeRootProps) {\n let {\n children,\n /** Raw css styles for body element */\n bodyStyles,\n fontDisplay = 'swap',\n fonts,\n publicUrl,\n navigation,\n font,\n monospaceFont,\n applyLegacyTokens: _applyLegacyTokens, // deprecated, ignored\n tracking,\n cursorStrategy = 'web',\n style,\n tokens,\n palette,\n i18n,\n locale,\n ...props\n } = allProps;\n\n // The first mount applies the palette during render, so the first paint and\n // SSR output already use it and `GlobalStyles` below reads it directly. A lazy\n // initializer runs once per mount, which React Compiler preserves; a `useMemo`\n // compiles to a call on every render. A later change waits for the layout\n // effect: a write notifies every palette subscriber, and React rejects\n // updating another component while this one renders. Updates from a layout\n // effect still land before paint. `setPaletteConfig` is a no-op when the\n // resolved config is unchanged, so the effect's mount pass, an inline object\n // literal and StrictMode's double calls cost nothing.\n //\n // A `<Root>` that mounts while another tree already subscribes, with a\n // different palette, still notifies that tree during its first render.\n useState(() => {\n if (palette) setPaletteConfig(palette);\n });\n\n useLayoutEffect(() => {\n if (palette) setPaletteConfig(palette);\n }, [palette]);\n\n const ref = useRef(null);\n\n const [rootRef, setRootRef] = useState();\n\n useEffect(() => {\n if (!rootRef) {\n // @ts-ignore\n setRootRef(ref?.current);\n }\n }, []);\n\n const styles = extractStyles(props, STYLES);\n\n return (\n <TastyBatchProvider>\n <I18nProvider i18n={i18n} locale={locale}>\n <Provider navigation={navigation} root={rootRef}>\n <TrackingProvider event={tracking?.event}>\n <RootElement\n ref={ref}\n data-uikit={VERSION}\n data-tasty={TASTY_VERSION}\n data-font-display={fontDisplay}\n {...filterBaseProps(props, { eventProps: true })}\n styles={styles}\n style={{\n '--pointer': cursorStrategy === 'web' ? 'pointer' : 'default',\n ...style,\n }}\n tokens={tokens}\n >\n <GlobalStyles\n bodyStyles={bodyStyles}\n publicUrl={publicUrl}\n fonts={fonts}\n font={font}\n monospaceFont={monospaceFont}\n fontDisplay={fontDisplay}\n />\n <ModalProvider>\n <PortalProvider value={ref}>\n <EventBusProvider>\n <OverlayProvider>\n <AlertDialogApiProvider>\n {children}\n </AlertDialogApiProvider>\n </OverlayProvider>\n </EventBusProvider>\n </PortalProvider>\n </ModalProvider>\n </RootElement>\n </TrackingProvider>\n </Provider>\n </I18nProvider>\n </TastyBatchProvider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAuCAK,0BAA0BgB,0BAA0B;AAEpDlB,UAAU;CASR4B,gBAAgB;CAChBC,OAAO;EACLC,GAAG;EACHC,GAAG;EACHC,IAAI;EACJC,IAAI;EACJC,IAAI;EACL;CACDC,SAAS;EACPC,OAAO;GACLC,QAAQ;GACRC,SAAS;GACTC,QAAQ;GACRC,SAAS;GACTC,WAAW;GACZ;EACDC,QAAQ;GACNC,YAAY;GACZC,aAAa;GACbC,gBAAgB;GAChB,+BAA+B;GAC/BC,MAAM;GACNC,OAAO;GACPC,QAAQ;IACN,IAAI;IACJ,UAAU;IACV,eAAe;IACfC,UAAU;IACZ;GACD;EACDC,OAAO;GACLP,YAAY;GACZQ,aAAa;GACbJ,OAAO;GACPD,MAAM;GACP;EACD,kBAAkB;GAChB,aAAa;GACbH,YAAY,EACV,aAAa,QACd;GACD,2BAA2B;IACzB,IAAI;IACJ,aAAa;IACd;GACDS,YAAY,EACV,aAAa,iBACd;GACDC,QAAQ,EACN,aAAa,gCACd;GACDC,QAAQ,EACN,aAAa,WACd;GACD,mBAAmB;IACjB,IAAI;IACJ,cAAc;IAChB;GACD;EACD,qBAAqB;GACnB,2BAA2B;GAC3BP,OAAO;GACR;EACD,8BAA8B;GAC5BQ,MAAM;GACNZ,YAAY;GACd;EACF;CACD,CAAC;AAEF,MAAMa,cAAcrD,MAAM;CACxBsD,IAAI;CACJC,QAAQ;EACNC,SAAS;EACTZ,OAAO;EACPO,QAAQ;EACV;CACD,CAAC;AAEF,MAAMM,SAAS,CAAC,GAAG/D,aAAa,GAAGE,aAAa;AA8ChD,SAAO6E,KAAAC,UAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CACL,MAAA,EAAAC,UAAAf,YAAAC,aAAAe,IAAAd,OAAAC,WAAAC,YAAAC,MAAAC,eAAAC,mBAAAU,oBAAAT,UAAAC,gBAAAS,IAAAC,OAAAtB,QAAAE,SAAAtC,MAAAiD,QAAA,GAAAU,UAmBIR;CAfF,MAAAX,cAAAe,OAAAK,SAAA,SAAAL;CAQA,MAAAP,iBAAAS,OAAAG,SAAA,QAAAH;CAAsB,IAAAI;AAAA,KAAAT,EAAA,OAAAd,SAAA;AAqBfuB,aAAA;AACP,OAAIvB,QAAShD,kBAAiBgD,QAAQ;;AACvCc,IAAA,KAAAd;AAAAc,IAAA,KAAAS;OAAAA,MAAAT,EAAA;AAFDtE,UAAS+E,GAEP;CAAA,IAAAC;CAAA,IAAAC;AAAA,KAAAX,EAAA,OAAAd,SAAA;AAEcwB,aAAA;AACd,OAAIxB,QAAShD,kBAAiBgD,QAAQ;;AACrCyB,OAAA,CAACzB,QAAQ;AAAAc,IAAA,KAAAd;AAAAc,IAAA,KAAAU;AAAAV,IAAA,KAAAW;QAAA;AAAAD,OAAAV,EAAA;AAAAW,OAAAX,EAAA;;AAFZxE,iBAAgBkF,IAEbC,GAAU;CAEb,MAAAC,MAAYnF,OAAO,KAAK;CAExB,MAAA,CAAAoF,SAAAC,cAA8BpF,UAAU;CAAC,IAAAqF;AAAA,KAAAf,EAAA,OAAAa,SAAA;AAE/BE,aAAA;AACR,OAAI,CAACF,QAEHC,YAAWF,KAAGI,QAAU;;AAE3BhB,IAAA,KAAAa;AAAAb,IAAA,KAAAe;OAAAA,MAAAf,EAAA;CAAA,IAAAiB;AAAA,KAAAjB,EAAA,OAAAkB,OAAAC,IAAA,4BAAA,EAAA;AAAEF,OAAA,EAAE;AAAAjB,IAAA,KAAAiB;OAAAA,MAAAjB,EAAA;AALLzE,WAAUwF,IAKPE,GAAG;CAEN,MAAArC,SAAevC,cAAckE,OAAOzB,OAAO;CAGxC,MAAAsC,KAAA9F;CACE,MAAA+F,KAAAzF;CACE,MAAA0F,KAAAzF;CACE,MAAA0F,KAAAvF;CAAwB,MAAAwF,KAAA7B,UAAQ8B;CAC9B,MAAAC,KAAAhD;CAEanC,MAAAA,KAAAA;CACAD,MAAAA,KAAAA;CAER,MAAAqF,MAAAxG,gBAAgBoF,OAAO,EAAAqB,YAAc,MAAM,CAAC;CAGjC,MAAAC,MAAAjC,mBAAmB,QAAnB,YAAA;CAAgD,IAAAkC;AAAA,KAAA9B,EAAA,OAAAM,SAAAN,EAAA,OAAA6B,KAAA;AADxDC,QAAA;GAAA,aACQD;GAAgD,GAC1DvB;GACJ;AAAAN,IAAA,KAAAM;AAAAN,IAAA,KAAA6B;AAAA7B,IAAA,MAAA8B;OAAAA,OAAA9B,EAAA;CAAA,IAAA+B;AAAA,KAAA/B,EAAA,QAAAb,cAAAa,EAAA,QAAAR,QAAAQ,EAAA,QAAAZ,eAAAY,EAAA,QAAAX,SAAAW,EAAA,QAAAP,iBAAAO,EAAA,QAAAV,WAAA;AAGDyC,QAAA,oBAAC;GACa5C;GACDG;GACJD;GACDG;GACSC;GACFL;IACb;AAAAY,IAAA,MAAAb;AAAAa,IAAA,MAAAR;AAAAQ,IAAA,MAAAZ;AAAAY,IAAA,MAAAX;AAAAW,IAAA,MAAAP;AAAAO,IAAA,MAAAV;AAAAU,IAAA,MAAA+B;OAAAA,OAAA/B,EAAA;CAAA,IAAAgC;AAAA,KAAAhC,EAAA,QAAAE,UAAA;AACF8B,QAAA,oBAAC,2BACC,oBAAC;GAAsBpB,OAAAA;aACrB,oBAAC,8BACC,oBAAC,6BACC,oBAAC,0BACEV,WAEL,GACF,GACF;IACF,GAAgB;AAAAF,IAAA,MAAAE;AAAAF,IAAA,MAAAgC;OAAAA,OAAAhC,EAAA;CAAA,IAAAiC;AAAA,KAAAjC,EAAA,QAAA0B,MAAA1B,EAAA,QAAAZ,eAAAY,EAAA,QAAApB,UAAAoB,EAAA,QAAA2B,OAAA3B,EAAA,QAAA8B,OAAA9B,EAAA,QAAA+B,OAAA/B,EAAA,QAAAgC,OAAAhC,EAAA,QAAAkC,MAAAlC,EAAA,QAAAmC,MAAAnC,EAAA,QAAAhB,QAAA;AA/BlBiD,QAAA,qBAAC;GACMrB;GACOrE,cAAAA;GACAD,cAAAA;GACO8C,qBAAAA;GAAW,GAC1BuC;GACI/C;GACD,OAAAkD;GAIC9C;cAER+C,KAQAC;IAWY;AAAAhC,IAAA,MAAA0B;AAAA1B,IAAA,MAAAZ;AAAAY,IAAA,MAAApB;AAAAoB,IAAA,MAAA2B;AAAA3B,IAAA,MAAA8B;AAAA9B,IAAA,MAAA+B;AAAA/B,IAAA,MAAAgC;AAAAhC,IAAA,MAAAkC;AAAAlC,IAAA,MAAAmC;AAAAnC,IAAA,MAAAhB;AAAAgB,IAAA,MAAAiC;OAAAA,OAAAjC,EAAA;CAAA,IAAAoC;AAAA,KAAApC,EAAA,QAAAuB,MAAAvB,EAAA,QAAAiC,OAAAjC,EAAA,QAAAwB,IAAA;AAjChBY,QAAA,oBAAC;GAAwB,OAAAZ;aACvBS;IAiCiB;AAAAjC,IAAA,MAAAuB;AAAAvB,IAAA,MAAAiC;AAAAjC,IAAA,MAAAwB;AAAAxB,IAAA,MAAAoC;OAAAA,OAAApC,EAAA;CAAA,IAAAqC;AAAA,KAAArC,EAAA,QAAAsB,MAAAtB,EAAA,QAAAT,cAAAS,EAAA,QAAAa,WAAAb,EAAA,QAAAoC,KAAA;AAnCrBC,QAAA,oBAAC;GAAqB9C;GAAkBsB,MAAAA;aACtCuB;IAmCS;AAAApC,IAAA,MAAAsB;AAAAtB,IAAA,MAAAT;AAAAS,IAAA,MAAAa;AAAAb,IAAA,MAAAoC;AAAApC,IAAA,MAAAqC;OAAAA,OAAArC,EAAA;CAAA,IAAAsC;AAAA,KAAAtC,EAAA,QAAAqB,MAAArB,EAAA,QAAApD,QAAAoD,EAAA,QAAAH,UAAAG,EAAA,QAAAqC,KAAA;AArCbC,QAAA,oBAAC;GAAmB1F;GAAciD;aAChCwC;IAqCa;AAAArC,IAAA,MAAAqB;AAAArB,IAAA,MAAApD;AAAAoD,IAAA,MAAAH;AAAAG,IAAA,MAAAqC;AAAArC,IAAA,MAAAsC;OAAAA,OAAAtC,EAAA;CAAA,IAAAuC;AAAA,KAAAvC,EAAA,QAAAoB,MAAApB,EAAA,QAAAsC,KAAA;AAvCjBC,QAAA,oBAAC,gBACCD,MAuCmB;AAAAtC,IAAA,MAAAoB;AAAApB,IAAA,MAAAsC;AAAAtC,IAAA,MAAAuC;OAAAA,OAAAvC,EAAA;AAAA,QAxCrBuC"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useAction } from "../use-action.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { _Item } from "../../content/Item/Item.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps } from "../../../utils/react/mergeProps.js";
4
4
  import { getDisabledElementProps, omitActivationEventProps } from "../../../utils/react/disabledProps.js";
@@ -11,6 +11,7 @@ import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransi
11
11
  import { useAutoTooltip } from "../../content/use-auto-tooltip.js";
12
12
  import { CURRENT_CLEAR_STYLES, CURRENT_LINK_STYLES, CURRENT_OUTLINE_2_STYLES, CURRENT_OUTLINE_STYLES, CURRENT_PRIMARY_STYLES, DANGER_CLEAR_STYLES, DANGER_LINK_STYLES, DANGER_OUTLINE_2_STYLES, DANGER_OUTLINE_STYLES, DANGER_PRIMARY_STYLES, DEFAULT_CLEAR_STYLES, DEFAULT_LINK_STYLES, DEFAULT_OUTLINE_2_STYLES, DEFAULT_OUTLINE_STYLES, DEFAULT_PRIMARY_STYLES, NOTE_CLEAR_STYLES, NOTE_LINK_STYLES, NOTE_OUTLINE_2_STYLES, NOTE_OUTLINE_STYLES, NOTE_PRIMARY_STYLES, SPECIAL_CLEAR_STYLES, SPECIAL_LINK_STYLES, SPECIAL_OUTLINE_STYLES, SPECIAL_PRIMARY_STYLES, SUCCESS_CLEAR_STYLES, SUCCESS_LINK_STYLES, SUCCESS_OUTLINE_2_STYLES, SUCCESS_OUTLINE_STYLES, SUCCESS_PRIMARY_STYLES, WARNING_CLEAR_STYLES, WARNING_LINK_STYLES, WARNING_OUTLINE_2_STYLES, WARNING_OUTLINE_STYLES, WARNING_PRIMARY_STYLES } from "../../../data/item-themes.js";
13
13
  import { LoadingIcon } from "../../../icons/LoadingIcon.js";
14
+ import { mergeTooltipFocusProps } from "../../overlays/Tooltip/split-trigger-props.js";
14
15
  import { useAction } from "../use-action.js";
15
16
  import { IconSwitch } from "../../helpers/IconSwitch/IconSwitch.js";
16
17
  import { useButtonSplitContext } from "../ButtonSplit/context.js";
@@ -207,7 +208,8 @@ const Button = forwardRef(function Button(allProps, ref) {
207
208
  let { type, size: sizeProp, label, children, theme = splitContext?.theme ?? "default", icon: iconProp, rightIcon: rightIconProp, mods, download, tooltip = true, defaultTooltipPlacement = "top", onPress: userOnPress, tokens, ...props } = allProps;
208
209
  type = type ?? splitContext?.type;
209
210
  const size = sizeProp ?? splitContext?.size ?? (type === "link" ? "inline" : "medium");
210
- const isDisabled = splitContext?.isDisabled || props.isDisabled || props.isLoading;
211
+ const isExplicitlyDisabled = splitContext?.isDisabled || props.isDisabled;
212
+ const isDisabled = isExplicitlyDisabled || props.isLoading;
211
213
  const isLoading = props.isLoading;
212
214
  const isSelected = props.isSelected;
213
215
  const dismissParentPopover = useDismissParentPopover();
@@ -291,14 +293,16 @@ const Button = forwardRef(function Button(allProps, ref) {
291
293
  isIconShown,
292
294
  isRightIconShown
293
295
  ]);
294
- const { labelProps: finalLabelProps, labelRef, renderWithTooltip, isTooltipActive } = useAutoTooltip({
296
+ const { labelProps: finalLabelProps, labelRef, renderWithTooltip, isTooltipActive, isAutoTooltipEnabled } = useAutoTooltip({
295
297
  tooltip,
296
298
  children,
297
299
  labelProps: void 0
298
300
  });
301
+ const hasOwnTooltip = isTooltipActive && !isAutoTooltipEnabled;
302
+ const isOnlyLoading = !!isLoading && !isExplicitlyDisabled;
299
303
  const { isNativelyDisabled, isInert, inertProps } = getDisabledElementProps({
300
304
  isDisabled: isDisabledElement,
301
- keepEvents: isTooltipActive,
305
+ keepEvents: hasOwnTooltip || isOnlyLoading,
302
306
  as: typeof actionProps.as === "string" ? actionProps.as : void 0
303
307
  });
304
308
  const elementProps = isInert ? omitActivationEventProps(actionProps) : actionProps;
@@ -316,7 +320,9 @@ const Button = forwardRef(function Button(allProps, ref) {
316
320
  const ariaPressed = allProps["aria-pressed"] ?? (isSelected != null && actionProps.as !== "a" && allProps.role == null ? isSelected : void 0);
317
321
  return /* @__PURE__ */ jsxs(ButtonElement, {
318
322
  download,
319
- ...mergeProps(elementProps, tooltipTriggerProps || {}, inertProps),
323
+ "aria-busy": isLoading || void 0,
324
+ ...mergeProps(mergeTooltipFocusProps(elementProps, tooltipTriggerProps), inertProps),
325
+ ...isOnlyLoading && !hasOwnTooltip ? { tabIndex: -1 } : null,
320
326
  "aria-pressed": ariaPressed,
321
327
  ref: handleRef,
322
328
  mods: {
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","names":["FocusableRef","PressEvent","CONTAINER_STYLES","Mods","Styles","tasty","TEXT_STYLES","Children","forwardRef","HTMLAttributes","isValidElement","ReactNode","RefObject","useMemo","useRef","useState","Placement","useEvent","useIsFirstRender","useWarn","CURRENT_CLEAR_STYLES","CURRENT_LINK_STYLES","CURRENT_OUTLINE_2_STYLES","CURRENT_OUTLINE_STYLES","CURRENT_PRIMARY_STYLES","DANGER_CLEAR_STYLES","DANGER_LINK_STYLES","DANGER_OUTLINE_2_STYLES","DANGER_OUTLINE_STYLES","DANGER_PRIMARY_STYLES","DEFAULT_CLEAR_STYLES","DEFAULT_LINK_STYLES","DEFAULT_OUTLINE_2_STYLES","DEFAULT_OUTLINE_STYLES","DEFAULT_PRIMARY_STYLES","NOTE_CLEAR_STYLES","NOTE_LINK_STYLES","NOTE_OUTLINE_2_STYLES","NOTE_OUTLINE_STYLES","NOTE_PRIMARY_STYLES","SPECIAL_CLEAR_STYLES","SPECIAL_LINK_STYLES","SPECIAL_OUTLINE_STYLES","SPECIAL_PRIMARY_STYLES","SUCCESS_CLEAR_STYLES","SUCCESS_LINK_STYLES","SUCCESS_OUTLINE_2_STYLES","SUCCESS_OUTLINE_STYLES","SUCCESS_PRIMARY_STYLES","WARNING_CLEAR_STYLES","WARNING_LINK_STYLES","WARNING_OUTLINE_2_STYLES","WARNING_OUTLINE_STYLES","WARNING_PRIMARY_STYLES","LoadingIcon","DynamicIcon","getDisabledElementProps","mergeProps","omitActivationEventProps","resolveIcon","useDismissParentPopover","extractStyles","useAutoTooltip","DisplayTransition","IconSwitch","CubeTooltipProviderProps","CubeActionProps","useButtonSplitContext","useAction","BUTTON_SIZE_VALUES","const","ButtonMods","pressed","loading","selected","CubeButtonProps","icon","rightIcon","isLoading","isSelected","type","theme","size","tooltip","Omit","auto","defaultTooltipPlacement","ButtonVariant","STYLE_PROPS","DEFAULT_ICON_STYLES","$","position","display","placeItems","placeContent","placeSelf","width","height","pointerEvents","transition","DEFAULT_BUTTON_STYLES","recipe","flow","gap","preset","outlineOffset","padding","whiteSpace","radius","margin","zIndex","verticalAlign","$size","Icon","opacity","translate","RightIcon","Label","boxSizing","overflow","textOverflow","textAlign","ButtonElement","qa","styles","variants","Button","allProps","ref","HTMLElement","splitContext","sizeProp","label","children","iconProp","rightIconProp","mods","download","onPress","userOnPress","tokens","props","isDisabled","dismissParentPopover","buttonElementRef","wrappedOnPress","e","el","current","hasAttribute","closest","actionProps","isPressed","isDisabledElement","baseMods","resolvedIcon","resolvedRightIcon","hasLeftSlot","hasSlot","hasRightSlot","content","iconKey","displayName","name","rightIconKey","specifiedLabel","key","args","hasLeftIcon","hasChildren","singleIcon","hasIcons","rawChildren","toArray","some","child","isIconShown","setIsIconShown","isRightIconShown","setIsRightIconShown","isFirstRender","modifiers","labelProps","finalLabelProps","labelRef","renderWithTooltip","isTooltipActive","undefined","isNativelyDisabled","isInert","inertProps","keepEvents","as","elementProps","renderButtonElement","tooltipTriggerProps","tooltipRef","handleRef","element","domRef","isCustomSize","includes","sizeTokenValue","effectiveType","ariaPressed","role"],"sources":["../../../../src/components/actions/Button/Button.tsx"],"sourcesContent":["import { FocusableRef, PressEvent } from '@react-types/shared';\nimport {\n CONTAINER_STYLES,\n Mods,\n Styles,\n tasty,\n TEXT_STYLES,\n} from '@tenphi/tasty';\nimport {\n Children,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n ReactNode,\n RefObject,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Placement } from 'react-aria';\n\nimport { useEvent } from '../../../_internal';\nimport { useIsFirstRender } from '../../../_internal/hooks/use-is-first-render';\nimport { useWarn } from '../../../_internal/hooks/use-warn';\nimport {\n CURRENT_CLEAR_STYLES,\n CURRENT_LINK_STYLES,\n CURRENT_OUTLINE_2_STYLES,\n CURRENT_OUTLINE_STYLES,\n CURRENT_PRIMARY_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_LINK_STYLES,\n DANGER_OUTLINE_2_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_LINK_STYLES,\n DEFAULT_OUTLINE_2_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_LINK_STYLES,\n NOTE_OUTLINE_2_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_LINK_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_LINK_STYLES,\n SUCCESS_OUTLINE_2_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_LINK_STYLES,\n WARNING_OUTLINE_2_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n} from '../../../data/item-themes';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport {\n DynamicIcon,\n getDisabledElementProps,\n mergeProps,\n omitActivationEventProps,\n resolveIcon,\n useDismissParentPopover,\n} from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { useAutoTooltip } from '../../content/use-auto-tooltip';\nimport { DisplayTransition } from '../../helpers/DisplayTransition';\nimport { IconSwitch } from '../../helpers/IconSwitch/IconSwitch';\nimport { CubeTooltipProviderProps } from '../../overlays/Tooltip/TooltipProvider';\nimport { CubeActionProps } from '../Action/Action';\nimport { useButtonSplitContext } from '../ButtonSplit/context';\nimport { useAction } from '../use-action';\n\nconst BUTTON_SIZE_VALUES = [\n 'xsmall',\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n 'inline',\n] as const;\n\n/** Known modifiers for Button component */\nexport type ButtonMods = Mods<{\n pressed?: boolean;\n loading?: boolean;\n selected?: boolean;\n 'has-icons'?: boolean;\n 'has-icon'?: boolean;\n 'has-right-icon'?: boolean;\n 'single-icon'?: boolean;\n 'text-only'?: boolean;\n 'raw-children'?: boolean;\n}>;\n\nexport interface CubeButtonProps extends CubeActionProps {\n icon?: DynamicIcon<ButtonMods>;\n rightIcon?: DynamicIcon<ButtonMods>;\n isLoading?: boolean;\n isSelected?: boolean;\n type?:\n | 'primary'\n | 'danger'\n | 'link'\n | 'clear'\n | 'outline'\n | 'outline-2'\n | (string & {});\n theme?:\n | 'default'\n | 'danger'\n | 'success'\n | 'warning'\n | 'note'\n | 'special'\n | 'current'\n | (string & {});\n size?:\n | 'xsmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'xlarge'\n | 'inline'\n | number\n | (string & {});\n /**\n * Tooltip content and configuration:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows children as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n */\n tooltip?:\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n /**\n * @private\n * Default tooltip placement for the button.\n * @default \"top\"\n */\n defaultTooltipPlacement?: Placement;\n}\n\nexport type ButtonVariant =\n // The `current` theme mixes every color from the inherited `currentcolor`\n // instead of a brand ramp — see the CURRENT THEME section of `item-themes`.\n | 'current.primary'\n | 'current.outline'\n | 'current.outline-2'\n | 'current.clear'\n | 'current.link'\n | 'default.primary'\n | 'default.outline'\n | 'default.outline-2'\n | 'default.clear'\n | 'default.link'\n | 'danger.primary'\n | 'danger.outline'\n | 'danger.outline-2'\n | 'danger.clear'\n | 'danger.link'\n | 'success.primary'\n | 'success.outline'\n | 'success.outline-2'\n | 'success.clear'\n | 'success.link'\n | 'warning.primary'\n | 'warning.outline'\n | 'warning.outline-2'\n | 'warning.clear'\n | 'warning.link'\n | 'note.primary'\n | 'note.outline'\n | 'note.outline-2'\n | 'note.clear'\n | 'note.link'\n | 'special.primary'\n | 'special.outline'\n | 'special.clear'\n | 'special.link';\n\nconst STYLE_PROPS = [...CONTAINER_STYLES, ...TEXT_STYLES];\n\nconst DEFAULT_ICON_STYLES: Styles = {\n $: '>',\n position: 'relative',\n display: 'grid',\n placeItems: 'center',\n placeContent: 'center',\n placeSelf: 'stretch',\n // overflow: 'hidden',\n width: 'fixed ($size - 2bw)',\n height: 'fixed ($size - 2bw)',\n pointerEvents: 'none',\n transition: 'theme, width, height, translate',\n};\n\nexport const DEFAULT_BUTTON_STYLES: Styles = {\n recipe: 'reset button',\n display: 'inline-grid',\n flow: 'column dense',\n gap: 0,\n placeItems: {\n '': 'stretch',\n 'raw-children': 'center stretch',\n },\n placeContent: 'center',\n position: 'relative',\n preset: {\n '': 't3m',\n 'size=xsmall': 't4',\n 'size=xlarge': 't2m',\n 'type=link': 'strong',\n },\n outlineOffset: 1,\n padding: {\n '': 0,\n 'raw-children & !has-icons':\n '$block-padding $inline-padding $block-padding $inline-padding',\n 'type=link': '0',\n },\n width: {\n '': 'min $size',\n 'has-icon & has-right-icon': 'min ($size * 2 - 2bw)',\n 'single-icon': 'fixed $size',\n 'type=link': 'min 1ch',\n },\n height: {\n '': 'fixed $size',\n 'type=link': 'initial',\n },\n whiteSpace: 'nowrap',\n radius: {\n '': true,\n 'type=link & !focused': 0,\n '@parent(button-split, >) & !:last-child': '1r left',\n '@parent(button-split, >) & !:first-child': '1r right',\n '@parent(button-split, >) & !:first-child & !:last-child': 0,\n },\n margin: {\n '': 0,\n '@parent(button-split, >) & !:first-child & (type=outline | type=outline-2 | type=primary)':\n '-1bw left',\n },\n zIndex: {\n '@parent(button-split, >) & :hover': 1,\n '@parent(button-split, >) & :focus-visible': 2,\n },\n transition: 'theme, grid-template, padding',\n verticalAlign: 'bottom',\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 'size=inline': '(1lh + 2bw)',\n },\n '$inline-padding': {\n '': 'max($min-inline-padding, (($size - 1lh - 2bw) / 2 + $inline-compensation))',\n },\n '$block-padding': {\n '': '.5x',\n 'size=xsmall | size=small': '.25x',\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(1x - 1bw)',\n '$left-padding': {\n '': '$inline-padding',\n 'is-icon-shown': '0px',\n },\n '$right-padding': {\n '': '$inline-padding',\n 'is-right-icon-shown': '0px',\n },\n\n // Icon sub-element (recommended format)\n Icon: {\n ...DEFAULT_ICON_STYLES,\n width: {\n '': 'fixed 0px',\n 'is-icon-shown': 'fixed ($size - 2bw)',\n },\n opacity: {\n '': 0,\n 'is-icon-shown': 1,\n },\n translate: {\n '': '($size * 1 / 4) 0',\n 'is-icon-shown': '0 0',\n },\n },\n\n // RightIcon sub-element (recommended format)\n RightIcon: {\n ...DEFAULT_ICON_STYLES,\n width: {\n '': 'fixed 0px',\n 'is-right-icon-shown': 'fixed ($size - 2bw)',\n },\n opacity: {\n '': 0,\n 'is-right-icon-shown': 1,\n },\n translate: {\n '': '($size * -1 / 4) 0',\n 'is-right-icon-shown': '0 0',\n },\n },\n\n // Label sub-element (recommended format)\n Label: {\n $: '>',\n display: 'block',\n placeSelf: 'center stretch',\n boxSizing: 'border-box',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '0 100%',\n textAlign: 'center',\n transition: 'theme, padding',\n padding: {\n '': '$block-padding $right-padding $block-padding $left-padding',\n 'type=link': '0',\n },\n },\n} as const;\n\nconst ButtonElement = tasty({\n qa: 'Button',\n styles: DEFAULT_BUTTON_STYLES,\n variants: {\n // Current theme — colors mixed from the inherited `currentcolor`\n 'current.primary': CURRENT_PRIMARY_STYLES,\n 'current.outline': CURRENT_OUTLINE_STYLES,\n 'current.outline-2': CURRENT_OUTLINE_2_STYLES,\n 'current.clear': CURRENT_CLEAR_STYLES,\n 'current.link': CURRENT_LINK_STYLES,\n\n // Default theme\n 'default.primary': DEFAULT_PRIMARY_STYLES,\n 'default.outline': DEFAULT_OUTLINE_STYLES,\n 'default.outline-2': DEFAULT_OUTLINE_2_STYLES,\n 'default.clear': DEFAULT_CLEAR_STYLES,\n 'default.link': DEFAULT_LINK_STYLES,\n\n // Danger theme\n 'danger.primary': DANGER_PRIMARY_STYLES,\n 'danger.outline': DANGER_OUTLINE_STYLES,\n 'danger.outline-2': DANGER_OUTLINE_2_STYLES,\n 'danger.clear': DANGER_CLEAR_STYLES,\n 'danger.link': DANGER_LINK_STYLES,\n\n // Success theme\n 'success.primary': SUCCESS_PRIMARY_STYLES,\n 'success.outline': SUCCESS_OUTLINE_STYLES,\n 'success.outline-2': SUCCESS_OUTLINE_2_STYLES,\n 'success.clear': SUCCESS_CLEAR_STYLES,\n 'success.link': SUCCESS_LINK_STYLES,\n\n // Warning theme\n 'warning.primary': WARNING_PRIMARY_STYLES,\n 'warning.outline': WARNING_OUTLINE_STYLES,\n 'warning.outline-2': WARNING_OUTLINE_2_STYLES,\n 'warning.clear': WARNING_CLEAR_STYLES,\n 'warning.link': WARNING_LINK_STYLES,\n\n // Note theme\n 'note.primary': NOTE_PRIMARY_STYLES,\n 'note.outline': NOTE_OUTLINE_STYLES,\n 'note.outline-2': NOTE_OUTLINE_2_STYLES,\n 'note.clear': NOTE_CLEAR_STYLES,\n 'note.link': NOTE_LINK_STYLES,\n\n // Special theme\n 'special.primary': SPECIAL_PRIMARY_STYLES,\n 'special.outline': SPECIAL_OUTLINE_STYLES,\n 'special.clear': SPECIAL_CLEAR_STYLES,\n 'special.link': SPECIAL_LINK_STYLES,\n },\n});\n\nexport const Button = forwardRef(function Button(\n allProps: CubeButtonProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const splitContext = useButtonSplitContext();\n\n let {\n type,\n size: sizeProp,\n label,\n children,\n theme = splitContext?.theme ?? 'default',\n icon: iconProp,\n rightIcon: rightIconProp,\n mods,\n download,\n tooltip = true,\n defaultTooltipPlacement = 'top',\n onPress: userOnPress,\n tokens,\n ...props\n } = allProps;\n\n type = type ?? splitContext?.type;\n const size =\n sizeProp ?? splitContext?.size ?? (type === 'link' ? 'inline' : 'medium');\n\n const isDisabled =\n splitContext?.isDisabled || props.isDisabled || props.isLoading;\n const isLoading = props.isLoading;\n const isSelected = props.isSelected;\n\n // Default: pressing a Button inside an open popover closes that popover.\n // Opt-outs (handled inline below):\n // - `data-popover-trigger` (auto, applied by MenuTrigger/DialogTrigger\n // type='popover' so triggers don't dismiss the popover they live in)\n // - `data-popover-keep` on self or any ancestor (manual opt-out for\n // toggles, custom inline editors, etc.)\n // - `data-popover-keep-on-press` on self or any ancestor: the same opt-out\n // for presses only. Unlike `data-popover-keep`, it does not stop a click\n // in the subtree from closing a nested popover (a field's listbox).\n // Modals/trays don't subscribe at all, so this is a no-op there.\n const dismissParentPopover = useDismissParentPopover();\n const buttonElementRef = useRef<HTMLElement | null>(null);\n\n const wrappedOnPress = useEvent((e: PressEvent) => {\n userOnPress?.(e);\n const el = buttonElementRef.current;\n if (!el) return;\n if (el.hasAttribute('data-popover-trigger')) return;\n if (el.closest('[data-popover-keep], [data-popover-keep-on-press]')) {\n return;\n }\n dismissParentPopover(el);\n });\n\n const { actionProps, isPressed } = useAction(\n {\n ...allProps,\n isDisabled,\n onPress: wrappedOnPress,\n ...(label ? { label } : {}),\n },\n ref,\n );\n\n const styles = extractStyles(props, STYLE_PROPS);\n const isDisabledElement = actionProps.isDisabled;\n\n delete actionProps.isDisabled;\n\n // Base mods for icon resolution (without icon-dependent mods)\n const baseMods = useMemo<ButtonMods>(\n () => ({\n pressed: isPressed && !isDisabled,\n loading: isLoading,\n selected: isSelected,\n ...mods,\n }),\n [isPressed, isDisabled, isLoading, isSelected, mods],\n );\n\n // Resolve dynamic icon props\n const resolvedIcon = useMemo(\n () => resolveIcon(iconProp, baseMods),\n [iconProp, baseMods],\n );\n const resolvedRightIcon = useMemo(\n () => resolveIcon(rightIconProp, baseMods),\n [rightIconProp, baseMods],\n );\n\n const hasLeftSlot = resolvedIcon.hasSlot;\n const hasRightSlot = resolvedRightIcon.hasSlot;\n\n const icon: ReactNode = resolvedIcon.content;\n const rightIcon: ReactNode = resolvedRightIcon.content;\n\n // Generate stable keys for icon transitions based on icon type\n const iconKey = isLoading\n ? 'loading'\n : isValidElement(icon)\n ? (icon.type as any)?.displayName || (icon.type as any)?.name || 'icon'\n : icon\n ? 'icon'\n : 'empty';\n\n const rightIconKey = isValidElement(rightIcon)\n ? (rightIcon.type as any)?.displayName ||\n (rightIcon.type as any)?.name ||\n 'icon'\n : rightIcon\n ? 'icon'\n : 'empty';\n\n children = children || hasLeftSlot || hasRightSlot ? children : label;\n\n const specifiedLabel =\n label ?? props['aria-label'] ?? props['aria-labelledby'];\n\n // Warn about accessibility issues when button has no accessible label\n useWarn(!children && hasLeftSlot && !specifiedLabel, {\n key: ['button-icon-no-label', hasLeftSlot],\n args: [\n 'accessibility issue:',\n 'If you provide `icon` property for a Button and do not provide any children then you should specify the `aria-label` property to make sure the Button element stays accessible.',\n ],\n });\n\n useWarn(!children && !hasLeftSlot && !specifiedLabel, {\n key: ['button-no-content-no-label', hasLeftSlot],\n args: [\n 'accessibility issue:',\n 'If you provide no children for a Button then you should specify the `aria-label` property to make sure the Button element stays accessible.',\n ],\n });\n\n if (!children && !specifiedLabel) {\n label = 'Unnamed'; // fix to avoid warning in production\n }\n\n const hasLeftIcon = !!(hasLeftSlot || isLoading);\n const hasChildren = children != null;\n const singleIcon = !!(\n ((hasLeftIcon && !hasRightSlot) || (hasRightSlot && !hasLeftIcon)) &&\n !hasChildren\n );\n\n const hasIcons = hasLeftIcon || hasRightSlot;\n const rawChildren = !!(\n hasChildren &&\n typeof children !== 'string' &&\n !Children.toArray(children).some((child) => typeof child === 'string')\n );\n\n const [isIconShown, setIsIconShown] = useState(hasLeftIcon);\n const [isRightIconShown, setIsRightIconShown] = useState(hasRightSlot);\n const isFirstRender = useIsFirstRender();\n\n const modifiers = useMemo<ButtonMods>(\n () => ({\n ...baseMods,\n 'has-icons': hasIcons,\n 'has-icon': hasLeftIcon,\n 'is-icon-shown': isIconShown,\n 'has-right-icon': hasRightSlot,\n 'is-right-icon-shown': isRightIconShown,\n 'single-icon': singleIcon,\n 'text-only': !!(hasChildren && typeof children === 'string' && !hasIcons),\n 'raw-children': rawChildren,\n 'has-content': children != null,\n }),\n [\n baseMods,\n children,\n hasLeftIcon,\n hasRightSlot,\n singleIcon,\n hasIcons,\n hasChildren,\n rawChildren,\n isIconShown,\n isRightIconShown,\n ],\n );\n\n const {\n labelProps: finalLabelProps,\n labelRef,\n renderWithTooltip,\n isTooltipActive,\n } = useAutoTooltip({\n tooltip,\n children,\n labelProps: undefined,\n });\n\n // A disabled button still has to be able to show its tooltip — that is\n // usually where the reason for being unavailable is written. The native\n // `disabled` attribute would make the browser drop the hover that opens it,\n // so when a tooltip is present the button is marked `aria-disabled` and kept\n // inert instead. The attribute is skipped for links too, where it is not\n // valid markup and `aria-disabled` is the only thing announcing the state.\n const { isNativelyDisabled, isInert, inertProps } = getDisabledElementProps({\n isDisabled: isDisabledElement,\n keepEvents: isTooltipActive,\n as: typeof actionProps.as === 'string' ? actionProps.as : undefined,\n });\n\n // Without the native attribute, handlers a parent passed in (a `MenuTrigger`'s\n // `onKeyDown`) would still activate the button.\n const elementProps = isInert\n ? omitActivationEventProps(actionProps)\n : actionProps;\n\n // Render function that creates the button element\n const renderButtonElement = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ): ReactNode => {\n // Use callback ref to merge multiple refs without calling hooks\n const handleRef = (element: HTMLElement | null) => {\n // Set the component's forwarded ref from useAction\n const domRef = actionProps.ref as any;\n if (typeof domRef === 'function') {\n domRef(element);\n } else if (domRef) {\n domRef.current = element;\n }\n // Set the tooltip ref if provided\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n // Track the rendered DOM node so the dismiss wrapper around `onPress`\n // can read it synchronously without coupling to `useAction`'s ref shape.\n buttonElementRef.current = element;\n };\n\n // Determine if size is custom (number or unrecognized string)\n const isCustomSize =\n typeof size === 'number' ||\n (size != null &&\n !(BUTTON_SIZE_VALUES as readonly string[]).includes(size));\n const sizeTokenValue =\n typeof size === 'number' ? `${size}px` : isCustomSize ? size : undefined;\n\n // The `special` theme has no `outline-2` variant (it paints over\n // `#special-surface`, not `#surface-2`/`#surface-3`); fall back to\n // `outline` so the button still renders.\n const effectiveType =\n theme === 'special' && type === 'outline-2' ? 'outline' : type;\n\n // `isSelected` is a toggle state, so mirror it into `aria-pressed` — the\n // behaviour Button.docs.mdx has always described. An explicit\n // `aria-pressed` from the call site still wins.\n //\n // Skipped when the button renders as a link (`to`), where `aria-pressed` is\n // not a valid attribute, and when the call site sets its own `role` — a\n // button acting as a tab or an option needs `aria-selected`/`aria-current`\n // instead, and only the call site knows which.\n //\n // Applied *after* the spread: react-aria's `useButton` always returns an\n // `aria-pressed` key (undefined when the caller passed none), so anything\n // set before the spread is overwritten by it.\n const ariaPressed =\n allProps['aria-pressed'] ??\n (isSelected != null && actionProps.as !== 'a' && allProps.role == null\n ? isSelected\n : undefined);\n\n return (\n <ButtonElement\n download={download}\n {...mergeProps(elementProps, tooltipTriggerProps || {}, inertProps)}\n aria-pressed={ariaPressed}\n ref={handleRef}\n mods={{ ...actionProps.mods, ...modifiers }}\n disabled={isNativelyDisabled}\n variant={`${theme}.${effectiveType ?? 'outline'}` as ButtonVariant}\n data-theme={theme}\n data-type={effectiveType ?? 'outline'}\n data-size={size}\n data-popover-dismiss=\"\"\n styles={styles}\n tokens={{\n ...tokens,\n ...(sizeTokenValue ? { $size: sizeTokenValue } : {}),\n }}\n >\n <DisplayTransition\n isShown={hasLeftIcon}\n animateOnMount={!isFirstRender}\n onToggle={setIsIconShown}\n >\n {({ ref }) => (\n <div ref={ref} data-element=\"Icon\" aria-hidden=\"true\">\n <IconSwitch noWrapper contentKey={iconKey}>\n {isLoading ? <LoadingIcon /> : icon}\n </IconSwitch>\n </div>\n )}\n </DisplayTransition>\n {hasChildren &&\n (rawChildren ? (\n children\n ) : (\n <div data-element=\"Label\" {...finalLabelProps} ref={labelRef}>\n {children}\n </div>\n ))}\n <DisplayTransition\n isShown={hasRightSlot}\n animateOnMount={!isFirstRender}\n onToggle={setIsRightIconShown}\n >\n {({ ref }) => (\n <div ref={ref} data-element=\"RightIcon\" aria-hidden=\"true\">\n <IconSwitch noWrapper contentKey={rightIconKey}>\n {rightIcon}\n </IconSwitch>\n </div>\n )}\n </DisplayTransition>\n </ButtonElement>\n );\n };\n\n return renderWithTooltip(renderButtonElement, defaultTooltipPlacement);\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"Button.js","names":["FocusableRef","PressEvent","CONTAINER_STYLES","Mods","Styles","tasty","TEXT_STYLES","Children","forwardRef","HTMLAttributes","isValidElement","ReactNode","RefObject","useMemo","useRef","useState","Placement","useEvent","useIsFirstRender","useWarn","CURRENT_CLEAR_STYLES","CURRENT_LINK_STYLES","CURRENT_OUTLINE_2_STYLES","CURRENT_OUTLINE_STYLES","CURRENT_PRIMARY_STYLES","DANGER_CLEAR_STYLES","DANGER_LINK_STYLES","DANGER_OUTLINE_2_STYLES","DANGER_OUTLINE_STYLES","DANGER_PRIMARY_STYLES","DEFAULT_CLEAR_STYLES","DEFAULT_LINK_STYLES","DEFAULT_OUTLINE_2_STYLES","DEFAULT_OUTLINE_STYLES","DEFAULT_PRIMARY_STYLES","NOTE_CLEAR_STYLES","NOTE_LINK_STYLES","NOTE_OUTLINE_2_STYLES","NOTE_OUTLINE_STYLES","NOTE_PRIMARY_STYLES","SPECIAL_CLEAR_STYLES","SPECIAL_LINK_STYLES","SPECIAL_OUTLINE_STYLES","SPECIAL_PRIMARY_STYLES","SUCCESS_CLEAR_STYLES","SUCCESS_LINK_STYLES","SUCCESS_OUTLINE_2_STYLES","SUCCESS_OUTLINE_STYLES","SUCCESS_PRIMARY_STYLES","WARNING_CLEAR_STYLES","WARNING_LINK_STYLES","WARNING_OUTLINE_2_STYLES","WARNING_OUTLINE_STYLES","WARNING_PRIMARY_STYLES","LoadingIcon","DynamicIcon","getDisabledElementProps","mergeProps","omitActivationEventProps","resolveIcon","useDismissParentPopover","extractStyles","useAutoTooltip","DisplayTransition","IconSwitch","mergeTooltipFocusProps","CubeTooltipProviderProps","CubeActionProps","useButtonSplitContext","useAction","BUTTON_SIZE_VALUES","const","ButtonMods","pressed","loading","selected","CubeButtonProps","icon","rightIcon","isLoading","isSelected","type","theme","size","tooltip","Omit","auto","defaultTooltipPlacement","ButtonVariant","STYLE_PROPS","DEFAULT_ICON_STYLES","$","position","display","placeItems","placeContent","placeSelf","width","height","pointerEvents","transition","DEFAULT_BUTTON_STYLES","recipe","flow","gap","preset","outlineOffset","padding","whiteSpace","radius","margin","zIndex","verticalAlign","$size","Icon","opacity","translate","RightIcon","Label","boxSizing","overflow","textOverflow","textAlign","ButtonElement","qa","styles","variants","Button","allProps","ref","HTMLElement","splitContext","sizeProp","label","children","iconProp","rightIconProp","mods","download","onPress","userOnPress","tokens","props","isExplicitlyDisabled","isDisabled","dismissParentPopover","buttonElementRef","wrappedOnPress","e","el","current","hasAttribute","closest","actionProps","isPressed","isDisabledElement","baseMods","resolvedIcon","resolvedRightIcon","hasLeftSlot","hasSlot","hasRightSlot","content","iconKey","displayName","name","rightIconKey","specifiedLabel","key","args","hasLeftIcon","hasChildren","singleIcon","hasIcons","rawChildren","toArray","some","child","isIconShown","setIsIconShown","isRightIconShown","setIsRightIconShown","isFirstRender","modifiers","labelProps","finalLabelProps","labelRef","renderWithTooltip","isTooltipActive","isAutoTooltipEnabled","undefined","hasOwnTooltip","isOnlyLoading","isNativelyDisabled","isInert","inertProps","keepEvents","as","elementProps","renderButtonElement","tooltipTriggerProps","tooltipRef","handleRef","element","domRef","isCustomSize","includes","sizeTokenValue","effectiveType","ariaPressed","role","tabIndex"],"sources":["../../../../src/components/actions/Button/Button.tsx"],"sourcesContent":["import { FocusableRef, PressEvent } from '@react-types/shared';\nimport {\n CONTAINER_STYLES,\n Mods,\n Styles,\n tasty,\n TEXT_STYLES,\n} from '@tenphi/tasty';\nimport {\n Children,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n ReactNode,\n RefObject,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Placement } from 'react-aria';\n\nimport { useEvent } from '../../../_internal';\nimport { useIsFirstRender } from '../../../_internal/hooks/use-is-first-render';\nimport { useWarn } from '../../../_internal/hooks/use-warn';\nimport {\n CURRENT_CLEAR_STYLES,\n CURRENT_LINK_STYLES,\n CURRENT_OUTLINE_2_STYLES,\n CURRENT_OUTLINE_STYLES,\n CURRENT_PRIMARY_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_LINK_STYLES,\n DANGER_OUTLINE_2_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_LINK_STYLES,\n DEFAULT_OUTLINE_2_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_LINK_STYLES,\n NOTE_OUTLINE_2_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_LINK_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_LINK_STYLES,\n SUCCESS_OUTLINE_2_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_LINK_STYLES,\n WARNING_OUTLINE_2_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n} from '../../../data/item-themes';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport {\n DynamicIcon,\n getDisabledElementProps,\n mergeProps,\n omitActivationEventProps,\n resolveIcon,\n useDismissParentPopover,\n} from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { useAutoTooltip } from '../../content/use-auto-tooltip';\nimport { DisplayTransition } from '../../helpers/DisplayTransition';\nimport { IconSwitch } from '../../helpers/IconSwitch/IconSwitch';\nimport { mergeTooltipFocusProps } from '../../overlays/Tooltip/split-trigger-props';\nimport { CubeTooltipProviderProps } from '../../overlays/Tooltip/TooltipProvider';\nimport { CubeActionProps } from '../Action/Action';\nimport { useButtonSplitContext } from '../ButtonSplit/context';\nimport { useAction } from '../use-action';\n\nconst BUTTON_SIZE_VALUES = [\n 'xsmall',\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n 'inline',\n] as const;\n\n/** Known modifiers for Button component */\nexport type ButtonMods = Mods<{\n pressed?: boolean;\n loading?: boolean;\n selected?: boolean;\n 'has-icons'?: boolean;\n 'has-icon'?: boolean;\n 'has-right-icon'?: boolean;\n 'single-icon'?: boolean;\n 'text-only'?: boolean;\n 'raw-children'?: boolean;\n}>;\n\nexport interface CubeButtonProps extends CubeActionProps {\n icon?: DynamicIcon<ButtonMods>;\n rightIcon?: DynamicIcon<ButtonMods>;\n isLoading?: boolean;\n isSelected?: boolean;\n type?:\n | 'primary'\n | 'danger'\n | 'link'\n | 'clear'\n | 'outline'\n | 'outline-2'\n | (string & {});\n theme?:\n | 'default'\n | 'danger'\n | 'success'\n | 'warning'\n | 'note'\n | 'special'\n | 'current'\n | (string & {});\n size?:\n | 'xsmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'xlarge'\n | 'inline'\n | number\n | (string & {});\n /**\n * Tooltip content and configuration:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows children as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n */\n tooltip?:\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n /**\n * @private\n * Default tooltip placement for the button.\n * @default \"top\"\n */\n defaultTooltipPlacement?: Placement;\n}\n\nexport type ButtonVariant =\n // The `current` theme mixes every color from the inherited `currentcolor`\n // instead of a brand ramp — see the CURRENT THEME section of `item-themes`.\n | 'current.primary'\n | 'current.outline'\n | 'current.outline-2'\n | 'current.clear'\n | 'current.link'\n | 'default.primary'\n | 'default.outline'\n | 'default.outline-2'\n | 'default.clear'\n | 'default.link'\n | 'danger.primary'\n | 'danger.outline'\n | 'danger.outline-2'\n | 'danger.clear'\n | 'danger.link'\n | 'success.primary'\n | 'success.outline'\n | 'success.outline-2'\n | 'success.clear'\n | 'success.link'\n | 'warning.primary'\n | 'warning.outline'\n | 'warning.outline-2'\n | 'warning.clear'\n | 'warning.link'\n | 'note.primary'\n | 'note.outline'\n | 'note.outline-2'\n | 'note.clear'\n | 'note.link'\n | 'special.primary'\n | 'special.outline'\n | 'special.clear'\n | 'special.link';\n\nconst STYLE_PROPS = [...CONTAINER_STYLES, ...TEXT_STYLES];\n\nconst DEFAULT_ICON_STYLES: Styles = {\n $: '>',\n position: 'relative',\n display: 'grid',\n placeItems: 'center',\n placeContent: 'center',\n placeSelf: 'stretch',\n // overflow: 'hidden',\n width: 'fixed ($size - 2bw)',\n height: 'fixed ($size - 2bw)',\n pointerEvents: 'none',\n transition: 'theme, width, height, translate',\n};\n\nexport const DEFAULT_BUTTON_STYLES: Styles = {\n recipe: 'reset button',\n display: 'inline-grid',\n flow: 'column dense',\n gap: 0,\n placeItems: {\n '': 'stretch',\n 'raw-children': 'center stretch',\n },\n placeContent: 'center',\n position: 'relative',\n preset: {\n '': 't3m',\n 'size=xsmall': 't4',\n 'size=xlarge': 't2m',\n 'type=link': 'strong',\n },\n outlineOffset: 1,\n padding: {\n '': 0,\n 'raw-children & !has-icons':\n '$block-padding $inline-padding $block-padding $inline-padding',\n 'type=link': '0',\n },\n width: {\n '': 'min $size',\n 'has-icon & has-right-icon': 'min ($size * 2 - 2bw)',\n 'single-icon': 'fixed $size',\n 'type=link': 'min 1ch',\n },\n height: {\n '': 'fixed $size',\n 'type=link': 'initial',\n },\n whiteSpace: 'nowrap',\n radius: {\n '': true,\n 'type=link & !focused': 0,\n '@parent(button-split, >) & !:last-child': '1r left',\n '@parent(button-split, >) & !:first-child': '1r right',\n '@parent(button-split, >) & !:first-child & !:last-child': 0,\n },\n margin: {\n '': 0,\n '@parent(button-split, >) & !:first-child & (type=outline | type=outline-2 | type=primary)':\n '-1bw left',\n },\n zIndex: {\n '@parent(button-split, >) & :hover': 1,\n '@parent(button-split, >) & :focus-visible': 2,\n },\n transition: 'theme, grid-template, padding',\n verticalAlign: 'bottom',\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 'size=inline': '(1lh + 2bw)',\n },\n '$inline-padding': {\n '': 'max($min-inline-padding, (($size - 1lh - 2bw) / 2 + $inline-compensation))',\n },\n '$block-padding': {\n '': '.5x',\n 'size=xsmall | size=small': '.25x',\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(1x - 1bw)',\n '$left-padding': {\n '': '$inline-padding',\n 'is-icon-shown': '0px',\n },\n '$right-padding': {\n '': '$inline-padding',\n 'is-right-icon-shown': '0px',\n },\n\n // Icon sub-element (recommended format)\n Icon: {\n ...DEFAULT_ICON_STYLES,\n width: {\n '': 'fixed 0px',\n 'is-icon-shown': 'fixed ($size - 2bw)',\n },\n opacity: {\n '': 0,\n 'is-icon-shown': 1,\n },\n translate: {\n '': '($size * 1 / 4) 0',\n 'is-icon-shown': '0 0',\n },\n },\n\n // RightIcon sub-element (recommended format)\n RightIcon: {\n ...DEFAULT_ICON_STYLES,\n width: {\n '': 'fixed 0px',\n 'is-right-icon-shown': 'fixed ($size - 2bw)',\n },\n opacity: {\n '': 0,\n 'is-right-icon-shown': 1,\n },\n translate: {\n '': '($size * -1 / 4) 0',\n 'is-right-icon-shown': '0 0',\n },\n },\n\n // Label sub-element (recommended format)\n Label: {\n $: '>',\n display: 'block',\n placeSelf: 'center stretch',\n boxSizing: 'border-box',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '0 100%',\n textAlign: 'center',\n transition: 'theme, padding',\n padding: {\n '': '$block-padding $right-padding $block-padding $left-padding',\n 'type=link': '0',\n },\n },\n} as const;\n\nconst ButtonElement = tasty({\n qa: 'Button',\n styles: DEFAULT_BUTTON_STYLES,\n variants: {\n // Current theme — colors mixed from the inherited `currentcolor`\n 'current.primary': CURRENT_PRIMARY_STYLES,\n 'current.outline': CURRENT_OUTLINE_STYLES,\n 'current.outline-2': CURRENT_OUTLINE_2_STYLES,\n 'current.clear': CURRENT_CLEAR_STYLES,\n 'current.link': CURRENT_LINK_STYLES,\n\n // Default theme\n 'default.primary': DEFAULT_PRIMARY_STYLES,\n 'default.outline': DEFAULT_OUTLINE_STYLES,\n 'default.outline-2': DEFAULT_OUTLINE_2_STYLES,\n 'default.clear': DEFAULT_CLEAR_STYLES,\n 'default.link': DEFAULT_LINK_STYLES,\n\n // Danger theme\n 'danger.primary': DANGER_PRIMARY_STYLES,\n 'danger.outline': DANGER_OUTLINE_STYLES,\n 'danger.outline-2': DANGER_OUTLINE_2_STYLES,\n 'danger.clear': DANGER_CLEAR_STYLES,\n 'danger.link': DANGER_LINK_STYLES,\n\n // Success theme\n 'success.primary': SUCCESS_PRIMARY_STYLES,\n 'success.outline': SUCCESS_OUTLINE_STYLES,\n 'success.outline-2': SUCCESS_OUTLINE_2_STYLES,\n 'success.clear': SUCCESS_CLEAR_STYLES,\n 'success.link': SUCCESS_LINK_STYLES,\n\n // Warning theme\n 'warning.primary': WARNING_PRIMARY_STYLES,\n 'warning.outline': WARNING_OUTLINE_STYLES,\n 'warning.outline-2': WARNING_OUTLINE_2_STYLES,\n 'warning.clear': WARNING_CLEAR_STYLES,\n 'warning.link': WARNING_LINK_STYLES,\n\n // Note theme\n 'note.primary': NOTE_PRIMARY_STYLES,\n 'note.outline': NOTE_OUTLINE_STYLES,\n 'note.outline-2': NOTE_OUTLINE_2_STYLES,\n 'note.clear': NOTE_CLEAR_STYLES,\n 'note.link': NOTE_LINK_STYLES,\n\n // Special theme\n 'special.primary': SPECIAL_PRIMARY_STYLES,\n 'special.outline': SPECIAL_OUTLINE_STYLES,\n 'special.clear': SPECIAL_CLEAR_STYLES,\n 'special.link': SPECIAL_LINK_STYLES,\n },\n});\n\nexport const Button = forwardRef(function Button(\n allProps: CubeButtonProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const splitContext = useButtonSplitContext();\n\n let {\n type,\n size: sizeProp,\n label,\n children,\n theme = splitContext?.theme ?? 'default',\n icon: iconProp,\n rightIcon: rightIconProp,\n mods,\n download,\n tooltip = true,\n defaultTooltipPlacement = 'top',\n onPress: userOnPress,\n tokens,\n ...props\n } = allProps;\n\n type = type ?? splitContext?.type;\n const size =\n sizeProp ?? splitContext?.size ?? (type === 'link' ? 'inline' : 'medium');\n\n const isExplicitlyDisabled = splitContext?.isDisabled || props.isDisabled;\n const isDisabled = isExplicitlyDisabled || props.isLoading;\n const isLoading = props.isLoading;\n const isSelected = props.isSelected;\n\n // Default: pressing a Button inside an open popover closes that popover.\n // Opt-outs (handled inline below):\n // - `data-popover-trigger` (auto, applied by MenuTrigger/DialogTrigger\n // type='popover' so triggers don't dismiss the popover they live in)\n // - `data-popover-keep` on self or any ancestor (manual opt-out for\n // toggles, custom inline editors, etc.)\n // - `data-popover-keep-on-press` on self or any ancestor: the same opt-out\n // for presses only. Unlike `data-popover-keep`, it does not stop a click\n // in the subtree from closing a nested popover (a field's listbox).\n // Modals/trays don't subscribe at all, so this is a no-op there.\n const dismissParentPopover = useDismissParentPopover();\n const buttonElementRef = useRef<HTMLElement | null>(null);\n\n const wrappedOnPress = useEvent((e: PressEvent) => {\n userOnPress?.(e);\n const el = buttonElementRef.current;\n if (!el) return;\n if (el.hasAttribute('data-popover-trigger')) return;\n if (el.closest('[data-popover-keep], [data-popover-keep-on-press]')) {\n return;\n }\n dismissParentPopover(el);\n });\n\n const { actionProps, isPressed } = useAction(\n {\n ...allProps,\n isDisabled,\n onPress: wrappedOnPress,\n ...(label ? { label } : {}),\n },\n ref,\n );\n\n const styles = extractStyles(props, STYLE_PROPS);\n const isDisabledElement = actionProps.isDisabled;\n\n delete actionProps.isDisabled;\n\n // Base mods for icon resolution (without icon-dependent mods)\n const baseMods = useMemo<ButtonMods>(\n () => ({\n pressed: isPressed && !isDisabled,\n loading: isLoading,\n selected: isSelected,\n ...mods,\n }),\n [isPressed, isDisabled, isLoading, isSelected, mods],\n );\n\n // Resolve dynamic icon props\n const resolvedIcon = useMemo(\n () => resolveIcon(iconProp, baseMods),\n [iconProp, baseMods],\n );\n const resolvedRightIcon = useMemo(\n () => resolveIcon(rightIconProp, baseMods),\n [rightIconProp, baseMods],\n );\n\n const hasLeftSlot = resolvedIcon.hasSlot;\n const hasRightSlot = resolvedRightIcon.hasSlot;\n\n const icon: ReactNode = resolvedIcon.content;\n const rightIcon: ReactNode = resolvedRightIcon.content;\n\n // Generate stable keys for icon transitions based on icon type\n const iconKey = isLoading\n ? 'loading'\n : isValidElement(icon)\n ? (icon.type as any)?.displayName || (icon.type as any)?.name || 'icon'\n : icon\n ? 'icon'\n : 'empty';\n\n const rightIconKey = isValidElement(rightIcon)\n ? (rightIcon.type as any)?.displayName ||\n (rightIcon.type as any)?.name ||\n 'icon'\n : rightIcon\n ? 'icon'\n : 'empty';\n\n children = children || hasLeftSlot || hasRightSlot ? children : label;\n\n const specifiedLabel =\n label ?? props['aria-label'] ?? props['aria-labelledby'];\n\n // Warn about accessibility issues when button has no accessible label\n useWarn(!children && hasLeftSlot && !specifiedLabel, {\n key: ['button-icon-no-label', hasLeftSlot],\n args: [\n 'accessibility issue:',\n 'If you provide `icon` property for a Button and do not provide any children then you should specify the `aria-label` property to make sure the Button element stays accessible.',\n ],\n });\n\n useWarn(!children && !hasLeftSlot && !specifiedLabel, {\n key: ['button-no-content-no-label', hasLeftSlot],\n args: [\n 'accessibility issue:',\n 'If you provide no children for a Button then you should specify the `aria-label` property to make sure the Button element stays accessible.',\n ],\n });\n\n if (!children && !specifiedLabel) {\n label = 'Unnamed'; // fix to avoid warning in production\n }\n\n const hasLeftIcon = !!(hasLeftSlot || isLoading);\n const hasChildren = children != null;\n const singleIcon = !!(\n ((hasLeftIcon && !hasRightSlot) || (hasRightSlot && !hasLeftIcon)) &&\n !hasChildren\n );\n\n const hasIcons = hasLeftIcon || hasRightSlot;\n const rawChildren = !!(\n hasChildren &&\n typeof children !== 'string' &&\n !Children.toArray(children).some((child) => typeof child === 'string')\n );\n\n const [isIconShown, setIsIconShown] = useState(hasLeftIcon);\n const [isRightIconShown, setIsRightIconShown] = useState(hasRightSlot);\n const isFirstRender = useIsFirstRender();\n\n const modifiers = useMemo<ButtonMods>(\n () => ({\n ...baseMods,\n 'has-icons': hasIcons,\n 'has-icon': hasLeftIcon,\n 'is-icon-shown': isIconShown,\n 'has-right-icon': hasRightSlot,\n 'is-right-icon-shown': isRightIconShown,\n 'single-icon': singleIcon,\n 'text-only': !!(hasChildren && typeof children === 'string' && !hasIcons),\n 'raw-children': rawChildren,\n 'has-content': children != null,\n }),\n [\n baseMods,\n children,\n hasLeftIcon,\n hasRightSlot,\n singleIcon,\n hasIcons,\n hasChildren,\n rawChildren,\n isIconShown,\n isRightIconShown,\n ],\n );\n\n const {\n labelProps: finalLabelProps,\n labelRef,\n renderWithTooltip,\n isTooltipActive,\n isAutoTooltipEnabled,\n } = useAutoTooltip({\n tooltip,\n children,\n labelProps: undefined,\n });\n\n // A tooltip the caller wrote, as opposed to the automatic one that shows a\n // label cut off by the layout.\n const hasOwnTooltip = isTooltipActive && !isAutoTooltipEnabled;\n // Loading without being disabled: busy, but not unavailable.\n const isOnlyLoading = !!isLoading && !isExplicitlyDisabled;\n\n // A disabled button still has to be able to show its tooltip — that is\n // usually where the reason for being unavailable is written. The native\n // `disabled` attribute would make the browser drop the hover that opens it,\n // so when a tooltip is present the button is marked `aria-disabled` and kept\n // inert instead. Only the caller's tooltip counts: the automatic one turns\n // on with the layout, and would make the button a Tab stop only while its\n // label is cut off.\n //\n // A button that is only loading keeps the focus it has, so a keyboard press\n // that starts the work does not drop it to the page, but Tab skips it, as it\n // would a disabled one, unless the caller's tooltip is there to be read. One\n // that is also `isDisabled` stays natively disabled: `SubmitButton` sets both\n // while a submission runs, and the frozen legacy Form contract pins that\n // button as `disabled`.\n //\n // The attribute is skipped for links too, where it is not valid markup and\n // `aria-disabled` is the only thing announcing the state.\n const { isNativelyDisabled, isInert, inertProps } = getDisabledElementProps({\n isDisabled: isDisabledElement,\n keepEvents: hasOwnTooltip || isOnlyLoading,\n as: typeof actionProps.as === 'string' ? actionProps.as : undefined,\n });\n\n // Without the native attribute, handlers a parent passed in (a `MenuTrigger`'s\n // `onKeyDown`) would still activate the button.\n const elementProps = isInert\n ? omitActivationEventProps(actionProps)\n : actionProps;\n\n // Render function that creates the button element\n const renderButtonElement = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ): ReactNode => {\n // Use callback ref to merge multiple refs without calling hooks\n const handleRef = (element: HTMLElement | null) => {\n // Set the component's forwarded ref from useAction\n const domRef = actionProps.ref as any;\n if (typeof domRef === 'function') {\n domRef(element);\n } else if (domRef) {\n domRef.current = element;\n }\n // Set the tooltip ref if provided\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n // Track the rendered DOM node so the dismiss wrapper around `onPress`\n // can read it synchronously without coupling to `useAction`'s ref shape.\n buttonElementRef.current = element;\n };\n\n // Determine if size is custom (number or unrecognized string)\n const isCustomSize =\n typeof size === 'number' ||\n (size != null &&\n !(BUTTON_SIZE_VALUES as readonly string[]).includes(size));\n const sizeTokenValue =\n typeof size === 'number' ? `${size}px` : isCustomSize ? size : undefined;\n\n // The `special` theme has no `outline-2` variant (it paints over\n // `#special-surface`, not `#surface-2`/`#surface-3`); fall back to\n // `outline` so the button still renders.\n const effectiveType =\n theme === 'special' && type === 'outline-2' ? 'outline' : type;\n\n // `isSelected` is a toggle state, so mirror it into `aria-pressed` — the\n // behaviour Button.docs.mdx has always described. An explicit\n // `aria-pressed` from the call site still wins.\n //\n // Skipped when the button renders as a link (`to`), where `aria-pressed` is\n // not a valid attribute, and when the call site sets its own `role` — a\n // button acting as a tab or an option needs `aria-selected`/`aria-current`\n // instead, and only the call site knows which.\n //\n // Applied *after* the spread: react-aria's `useButton` always returns an\n // `aria-pressed` key (undefined when the caller passed none), so anything\n // set before the spread is overwritten by it.\n const ariaPressed =\n allProps['aria-pressed'] ??\n (isSelected != null && actionProps.as !== 'a' && allProps.role == null\n ? isSelected\n : undefined);\n\n return (\n <ButtonElement\n download={download}\n aria-busy={isLoading || undefined}\n // The tooltip joins the button's own description rather than\n // replacing it while open.\n {...mergeProps(\n mergeTooltipFocusProps(elementProps, tooltipTriggerProps),\n inertProps,\n )}\n {...(isOnlyLoading && !hasOwnTooltip ? { tabIndex: -1 } : null)}\n aria-pressed={ariaPressed}\n ref={handleRef}\n mods={{ ...actionProps.mods, ...modifiers }}\n disabled={isNativelyDisabled}\n variant={`${theme}.${effectiveType ?? 'outline'}` as ButtonVariant}\n data-theme={theme}\n data-type={effectiveType ?? 'outline'}\n data-size={size}\n data-popover-dismiss=\"\"\n styles={styles}\n tokens={{\n ...tokens,\n ...(sizeTokenValue ? { $size: sizeTokenValue } : {}),\n }}\n >\n <DisplayTransition\n isShown={hasLeftIcon}\n animateOnMount={!isFirstRender}\n onToggle={setIsIconShown}\n >\n {({ ref }) => (\n <div ref={ref} data-element=\"Icon\" aria-hidden=\"true\">\n <IconSwitch noWrapper contentKey={iconKey}>\n {isLoading ? <LoadingIcon /> : icon}\n </IconSwitch>\n </div>\n )}\n </DisplayTransition>\n {hasChildren &&\n (rawChildren ? (\n children\n ) : (\n <div data-element=\"Label\" {...finalLabelProps} ref={labelRef}>\n {children}\n </div>\n ))}\n <DisplayTransition\n isShown={hasRightSlot}\n animateOnMount={!isFirstRender}\n onToggle={setIsRightIconShown}\n >\n {({ ref }) => (\n <div ref={ref} data-element=\"RightIcon\" aria-hidden=\"true\">\n <IconSwitch noWrapper contentKey={rightIconKey}>\n {rightIcon}\n </IconSwitch>\n </div>\n )}\n </DisplayTransition>\n </ButtonElement>\n );\n };\n\n return renderWithTooltip(renderButtonElement, defaultTooltipPlacement);\n});\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { useSlotProps } from "../../../utils/react/Slots.js";
3
3
  import { Space } from "../../layout/Space.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -22,13 +22,18 @@ interface CubeButtonSplitProps extends BaseProps, ContainerStyleProps {
22
22
  onAction?: (key: string) => void;
23
23
  /** Called when the selected action changes via the trigger menu. */
24
24
  onActionChange?: (key: string) => void;
25
- /** Button type applied to both action and trigger buttons in strict mode. */
25
+ /**
26
+ * Default type for every Button in the split: both buttons in strict mode,
27
+ * the child Buttons in custom mode. A Button's own `type` wins. Buttons in a
28
+ * popover, dialog or menu opened from the split do not inherit it, nor
29
+ * `theme`, `size` or `isDisabled`.
30
+ */
26
31
  type?: CubeButtonProps['type'];
27
- /** Button theme applied to both action and trigger buttons in strict mode. */
32
+ /** Default theme for every Button in the split. A Button's own `theme` wins. */
28
33
  theme?: CubeButtonProps['theme'];
29
- /** Button size applied to both action and trigger buttons in strict mode. */
34
+ /** Default size for every Button in the split. A Button's own `size` wins. */
30
35
  size?: CubeButtonProps['size'];
31
- /** Disables both buttons in strict mode. */
36
+ /** Disables every Button in the split, even one passing `isDisabled={false}`. */
32
37
  isDisabled?: boolean;
33
38
  /** Additional props for the action button in strict mode. */
34
39
  actionProps?: Partial<CubeButtonProps>;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { extractStyles, mergeStyleLayers } from "../../../utils/styles.js";
3
3
  import { mergeProps } from "../../../utils/react/mergeProps.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonSplit.js","names":["CONTAINER_STYLES","filterBaseProps","tasty","forwardRef","ReactNode","useMemo","useState","useI18n","DirectionIcon","mergeProps","extractStyles","mergeStyleLayers","Button","Menu","ButtonSplitContext","BaseProps","ContainerStyleProps","Styles","CubeCollectionItemProps","CubeButtonProps","CubeMenuProps","ButtonSplitAction","Omit","key","label","CubeButtonSplitProps","actions","actionKey","defaultActionKey","onAction","onActionChange","type","theme","size","isDisabled","actionProps","Partial","triggerProps","menuProps","styles","children","STYLE_PROPS","ButtonSplitElement","as","qa","display","position","verticalAlign","ButtonSplit","HTMLDivElement","props","ref","$","_c","controlledActionKey","role","rest","t","isControlled","undefined","t0","uncontrolledKey","setUncontrolledKey","currentKey","t1","find","a","currentAction","t2","handleActionPress","t3","keys","newKey","handleSelectionChange","containerStyles","mergedStyles","t4","contextValue","isCustomMode","t5","T0","t6","eventProps","t7","t8","icon","tooltip","onPress","_temp","map","_temp2","t9","t10","Provider","displayName","pressed","textValue","itemProps"],"sources":["../../../../src/components/actions/ButtonSplit/ButtonSplit.tsx"],"sourcesContent":["import { CONTAINER_STYLES, filterBaseProps, tasty } from '@tenphi/tasty';\nimport { forwardRef, ReactNode, useMemo, useState } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { DirectionIcon } from '../../../icons/DirectionIcon';\nimport { mergeProps } from '../../../utils/react';\nimport { extractStyles, mergeStyleLayers } from '../../../utils/styles';\nimport { Button } from '../Button/Button';\nimport { Menu } from '../Menu/Menu';\n\nimport { ButtonSplitContext } from './context';\n\nimport type { BaseProps, ContainerStyleProps, Styles } from '@tenphi/tasty';\nimport type { CubeCollectionItemProps } from '../../CollectionItem';\nimport type { CubeButtonProps } from '../Button/Button';\nimport type { CubeMenuProps } from '../Menu/Menu';\n\nexport interface ButtonSplitAction\n extends Omit<\n CubeCollectionItemProps<object>,\n 'children' | 'onAction' | 'wrapper'\n > {\n key: string;\n label: ReactNode;\n}\n\nexport interface CubeButtonSplitProps extends BaseProps, ContainerStyleProps {\n /** Actions for strict mode. When provided, renders action + trigger buttons automatically. */\n actions?: ButtonSplitAction[];\n /** Currently selected action key (controlled). */\n actionKey?: string;\n /** Initially selected action key (uncontrolled). */\n defaultActionKey?: string;\n /** Called when the action button is pressed. Receives the current action key. */\n onAction?: (key: string) => void;\n /** Called when the selected action changes via the trigger menu. */\n onActionChange?: (key: string) => void;\n\n /** Button type applied to both action and trigger buttons in strict mode. */\n type?: CubeButtonProps['type'];\n /** Button theme applied to both action and trigger buttons in strict mode. */\n theme?: CubeButtonProps['theme'];\n /** Button size applied to both action and trigger buttons in strict mode. */\n size?: CubeButtonProps['size'];\n /** Disables both buttons in strict mode. */\n isDisabled?: boolean;\n\n /** Additional props for the action button in strict mode. */\n actionProps?: Partial<CubeButtonProps>;\n /** Additional props for the trigger button in strict mode. */\n triggerProps?: Partial<CubeButtonProps>;\n /** Additional props for the dropdown menu in strict mode. */\n menuProps?: Partial<CubeMenuProps<object>>;\n\n /** Custom styles for the wrapper element. */\n styles?: Styles;\n\n /** Custom mode: render arbitrary Button children. */\n children?: ReactNode;\n}\n\nconst STYLE_PROPS = CONTAINER_STYLES;\n\nconst ButtonSplitElement = tasty({\n as: 'div',\n qa: 'ButtonSplit',\n styles: {\n display: 'inline-flex',\n position: 'relative',\n verticalAlign: 'bottom',\n },\n});\n\nexport const ButtonSplit = forwardRef<HTMLDivElement, CubeButtonSplitProps>(\n function ButtonSplit(props, ref) {\n const {\n actions,\n actionKey: controlledActionKey,\n defaultActionKey,\n onAction,\n onActionChange,\n type,\n theme,\n size,\n isDisabled,\n actionProps,\n triggerProps,\n menuProps,\n styles,\n children,\n role,\n ...rest\n } = props;\n\n const { t } = useI18n();\n const isControlled = controlledActionKey !== undefined;\n const [uncontrolledKey, setUncontrolledKey] = useState(\n () => defaultActionKey ?? actions?.[0]?.key,\n );\n\n const currentKey = isControlled ? controlledActionKey : uncontrolledKey;\n\n const currentAction =\n actions?.find((a) => a.key === currentKey) ?? actions?.[0];\n\n const handleActionPress = () => {\n if (currentKey) {\n onAction?.(currentKey);\n }\n };\n\n const handleSelectionChange = (keys: string[]) => {\n const newKey = keys[0];\n\n if (newKey) {\n if (!isControlled) {\n setUncontrolledKey(newKey);\n }\n\n onActionChange?.(newKey);\n }\n };\n\n const containerStyles = extractStyles(rest, STYLE_PROPS);\n\n const mergedStyles = mergeStyleLayers(containerStyles, styles);\n\n const contextValue = useMemo(\n () => ({\n currentKey,\n onAction,\n onActionChange,\n type,\n theme,\n size,\n isDisabled,\n }),\n [currentKey, onAction, onActionChange, type, theme, size, isDisabled],\n );\n\n const isCustomMode = children != null;\n\n return (\n <ButtonSplitContext.Provider value={contextValue}>\n <ButtonSplitElement\n {...filterBaseProps(rest, { eventProps: true })}\n ref={ref}\n data-button-split\n styles={mergedStyles}\n qa={rest.qa}\n // Custom mode renders peer buttons with no visible group label, which\n // is exactly when a caller needs `aria-label` to land on something the\n // AT will announce. `role` comes from `BaseProps`, so a caller that\n // wants something else — including `presentation` to opt out — just\n // passes it. Strict mode keeps its previous shape.\n role={role ?? (isCustomMode ? 'group' : undefined)}\n >\n {isCustomMode ? (\n children\n ) : actions ? (\n <>\n <Button\n type={type}\n theme={theme}\n size={size}\n isDisabled={isDisabled}\n icon={currentAction?.icon}\n tooltip={currentAction?.tooltip}\n {...mergeProps(actionProps, { onPress: handleActionPress })}\n >\n {currentAction?.label}\n </Button>\n <Menu.Trigger placement=\"bottom end\">\n <Button\n type={type}\n theme={theme}\n size={size}\n isDisabled={isDisabled}\n aria-label={t('buttonSplit.moreOptions', 'More options')}\n icon={({ pressed }) => (\n <DirectionIcon to={pressed ? 'up' : 'down'} />\n )}\n {...triggerProps}\n />\n <Menu\n selectionMode=\"single\"\n selectedKeys={currentKey ? [currentKey] : []}\n onSelectionChange={handleSelectionChange}\n {...menuProps}\n >\n {actions.map(({ key, label, textValue, ...itemProps }) => (\n <Menu.Item\n key={key}\n textValue={\n textValue ?? (typeof label === 'string' ? label : key)\n }\n {...itemProps}\n >\n {label}\n </Menu.Item>\n ))}\n </Menu>\n </Menu.Trigger>\n </>\n ) : null}\n </ButtonSplitElement>\n </ButtonSplitContext.Provider>\n );\n },\n);\n\nButtonSplit.displayName = 'ButtonSplit';\n"],"mappings":"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"}
1
+ {"version":3,"file":"ButtonSplit.js","names":["CONTAINER_STYLES","filterBaseProps","tasty","forwardRef","ReactNode","useMemo","useState","useI18n","DirectionIcon","mergeProps","extractStyles","mergeStyleLayers","Button","Menu","ButtonSplitContext","BaseProps","ContainerStyleProps","Styles","CubeCollectionItemProps","CubeButtonProps","CubeMenuProps","ButtonSplitAction","Omit","key","label","CubeButtonSplitProps","actions","actionKey","defaultActionKey","onAction","onActionChange","type","theme","size","isDisabled","actionProps","Partial","triggerProps","menuProps","styles","children","STYLE_PROPS","ButtonSplitElement","as","qa","display","position","verticalAlign","ButtonSplit","HTMLDivElement","props","ref","$","_c","controlledActionKey","role","rest","t","isControlled","undefined","t0","uncontrolledKey","setUncontrolledKey","currentKey","t1","find","a","currentAction","t2","handleActionPress","t3","keys","newKey","handleSelectionChange","containerStyles","mergedStyles","t4","contextValue","isCustomMode","t5","T0","t6","eventProps","t7","t8","icon","tooltip","onPress","_temp","map","_temp2","t9","t10","Provider","displayName","pressed","textValue","itemProps"],"sources":["../../../../src/components/actions/ButtonSplit/ButtonSplit.tsx"],"sourcesContent":["import { CONTAINER_STYLES, filterBaseProps, tasty } from '@tenphi/tasty';\nimport { forwardRef, ReactNode, useMemo, useState } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { DirectionIcon } from '../../../icons/DirectionIcon';\nimport { mergeProps } from '../../../utils/react';\nimport { extractStyles, mergeStyleLayers } from '../../../utils/styles';\nimport { Button } from '../Button/Button';\nimport { Menu } from '../Menu/Menu';\n\nimport { ButtonSplitContext } from './context';\n\nimport type { BaseProps, ContainerStyleProps, Styles } from '@tenphi/tasty';\nimport type { CubeCollectionItemProps } from '../../CollectionItem';\nimport type { CubeButtonProps } from '../Button/Button';\nimport type { CubeMenuProps } from '../Menu/Menu';\n\nexport interface ButtonSplitAction\n extends Omit<\n CubeCollectionItemProps<object>,\n 'children' | 'onAction' | 'wrapper'\n > {\n key: string;\n label: ReactNode;\n}\n\nexport interface CubeButtonSplitProps extends BaseProps, ContainerStyleProps {\n /** Actions for strict mode. When provided, renders action + trigger buttons automatically. */\n actions?: ButtonSplitAction[];\n /** Currently selected action key (controlled). */\n actionKey?: string;\n /** Initially selected action key (uncontrolled). */\n defaultActionKey?: string;\n /** Called when the action button is pressed. Receives the current action key. */\n onAction?: (key: string) => void;\n /** Called when the selected action changes via the trigger menu. */\n onActionChange?: (key: string) => void;\n\n /**\n * Default type for every Button in the split: both buttons in strict mode,\n * the child Buttons in custom mode. A Button's own `type` wins. Buttons in a\n * popover, dialog or menu opened from the split do not inherit it, nor\n * `theme`, `size` or `isDisabled`.\n */\n type?: CubeButtonProps['type'];\n /** Default theme for every Button in the split. A Button's own `theme` wins. */\n theme?: CubeButtonProps['theme'];\n /** Default size for every Button in the split. A Button's own `size` wins. */\n size?: CubeButtonProps['size'];\n /** Disables every Button in the split, even one passing `isDisabled={false}`. */\n isDisabled?: boolean;\n\n /** Additional props for the action button in strict mode. */\n actionProps?: Partial<CubeButtonProps>;\n /** Additional props for the trigger button in strict mode. */\n triggerProps?: Partial<CubeButtonProps>;\n /** Additional props for the dropdown menu in strict mode. */\n menuProps?: Partial<CubeMenuProps<object>>;\n\n /** Custom styles for the wrapper element. */\n styles?: Styles;\n\n /** Custom mode: render arbitrary Button children. */\n children?: ReactNode;\n}\n\nconst STYLE_PROPS = CONTAINER_STYLES;\n\nconst ButtonSplitElement = tasty({\n as: 'div',\n qa: 'ButtonSplit',\n styles: {\n display: 'inline-flex',\n position: 'relative',\n verticalAlign: 'bottom',\n },\n});\n\nexport const ButtonSplit = forwardRef<HTMLDivElement, CubeButtonSplitProps>(\n function ButtonSplit(props, ref) {\n const {\n actions,\n actionKey: controlledActionKey,\n defaultActionKey,\n onAction,\n onActionChange,\n type,\n theme,\n size,\n isDisabled,\n actionProps,\n triggerProps,\n menuProps,\n styles,\n children,\n role,\n ...rest\n } = props;\n\n const { t } = useI18n();\n const isControlled = controlledActionKey !== undefined;\n const [uncontrolledKey, setUncontrolledKey] = useState(\n () => defaultActionKey ?? actions?.[0]?.key,\n );\n\n const currentKey = isControlled ? controlledActionKey : uncontrolledKey;\n\n const currentAction =\n actions?.find((a) => a.key === currentKey) ?? actions?.[0];\n\n const handleActionPress = () => {\n if (currentKey) {\n onAction?.(currentKey);\n }\n };\n\n const handleSelectionChange = (keys: string[]) => {\n const newKey = keys[0];\n\n if (newKey) {\n if (!isControlled) {\n setUncontrolledKey(newKey);\n }\n\n onActionChange?.(newKey);\n }\n };\n\n const containerStyles = extractStyles(rest, STYLE_PROPS);\n\n const mergedStyles = mergeStyleLayers(containerStyles, styles);\n\n const contextValue = useMemo(\n () => ({\n currentKey,\n onAction,\n onActionChange,\n type,\n theme,\n size,\n isDisabled,\n }),\n [currentKey, onAction, onActionChange, type, theme, size, isDisabled],\n );\n\n const isCustomMode = children != null;\n\n return (\n <ButtonSplitContext.Provider value={contextValue}>\n <ButtonSplitElement\n {...filterBaseProps(rest, { eventProps: true })}\n ref={ref}\n data-button-split\n styles={mergedStyles}\n qa={rest.qa}\n // Custom mode renders peer buttons with no visible group label, which\n // is exactly when a caller needs `aria-label` to land on something the\n // AT will announce. `role` comes from `BaseProps`, so a caller that\n // wants something else — including `presentation` to opt out — just\n // passes it. Strict mode keeps its previous shape.\n role={role ?? (isCustomMode ? 'group' : undefined)}\n >\n {isCustomMode ? (\n children\n ) : actions ? (\n <>\n <Button\n type={type}\n theme={theme}\n size={size}\n isDisabled={isDisabled}\n icon={currentAction?.icon}\n tooltip={currentAction?.tooltip}\n {...mergeProps(actionProps, { onPress: handleActionPress })}\n >\n {currentAction?.label}\n </Button>\n <Menu.Trigger placement=\"bottom end\">\n <Button\n type={type}\n theme={theme}\n size={size}\n isDisabled={isDisabled}\n aria-label={t('buttonSplit.moreOptions', 'More options')}\n icon={({ pressed }) => (\n <DirectionIcon to={pressed ? 'up' : 'down'} />\n )}\n {...triggerProps}\n />\n <Menu\n selectionMode=\"single\"\n selectedKeys={currentKey ? [currentKey] : []}\n onSelectionChange={handleSelectionChange}\n {...menuProps}\n >\n {actions.map(({ key, label, textValue, ...itemProps }) => (\n <Menu.Item\n key={key}\n textValue={\n textValue ?? (typeof label === 'string' ? label : key)\n }\n {...itemProps}\n >\n {label}\n </Menu.Item>\n ))}\n </Menu>\n </Menu.Trigger>\n </>\n ) : null}\n </ButtonSplitElement>\n </ButtonSplitContext.Provider>\n );\n },\n);\n\nButtonSplit.displayName = 'ButtonSplit';\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.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.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { extractStyles, mergeStyleLayers } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { LoadingIcon } from "../../../icons/LoadingIcon.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { tasty } from "@tenphi/tasty";
3
3
 
4
4
  //#region src/components/actions/CommandMenu/styled.tsx
@@ -1,10 +1,11 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { getDisabledElementProps, omitActivationEventProps } from "../../../utils/react/disabledProps.js";
4
4
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
5
5
  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";
6
6
  import { CheckIcon } from "../../../icons/CheckIcon.js";
7
7
  import { LoadingIcon } from "../../../icons/LoadingIcon.js";
8
+ import { mergeTooltipFocusProps } from "../../overlays/Tooltip/split-trigger-props.js";
8
9
  import { useItemActionContext } from "../ItemActionContext.js";
9
10
  import { useAction } from "../use-action.js";
10
11
  import { c } from "react/compiler-runtime";
@@ -74,7 +75,7 @@ const ItemActionElement = tasty({
74
75
  }
75
76
  });
76
77
  const ItemAction = forwardRef(function ItemAction(allProps, ref) {
77
- const $ = c(50);
78
+ const $ = c(51);
78
79
  const { type: contextType, disableActionsFocus, menuItemAction, isDisabled: contextIsDisabled } = useItemActionContext();
79
80
  let children;
80
81
  let icon;
@@ -175,25 +176,25 @@ const ItemAction = forwardRef(function ItemAction(allProps, ref) {
175
176
  const { actionProps: t10 } = useAction(t9, ref);
176
177
  let t11;
177
178
  let t12;
178
- if ($[30] !== children || $[31] !== disableActionsFocus || $[32] !== finalIcon || $[33] !== isDisabled || $[34] !== isDisabledInherited || $[35] !== isLoading || $[36] !== menuItemAction || $[37] !== rest.role || $[38] !== rest.tabIndex || $[39] !== styles || $[40] !== t10 || $[41] !== theme || $[42] !== tooltip || $[43] !== type) {
179
+ if ($[30] !== children || $[31] !== disableActionsFocus || $[32] !== finalIcon || $[33] !== isDisabled || $[34] !== isDisabledInherited || $[35] !== isLoading || $[36] !== menuItemAction || $[37] !== rest.excludeFromTabOrder || $[38] !== rest.role || $[39] !== rest.tabIndex || $[40] !== styles || $[41] !== t10 || $[42] !== theme || $[43] !== tooltip || $[44] !== type) {
179
180
  t12 = Symbol.for("react.early_return_sentinel");
180
181
  bb0: {
181
182
  const { isDisabled: _isDisabled, ...actionProps } = t10;
182
- const finalTabIndex = disableActionsFocus || isLoading ? -1 : rest.tabIndex;
183
+ const finalTabIndex = disableActionsFocus || isLoading ? -1 : rest.tabIndex ?? (rest.excludeFromTabOrder ? -1 : void 0);
183
184
  const tooltipContent = typeof tooltip === "string" ? tooltip : typeof tooltip === "object" && tooltip.title ? tooltip.title : void 0;
184
185
  let t13;
185
- if ($[46] !== tooltip) {
186
+ if ($[47] !== tooltip) {
186
187
  t13 = typeof tooltip === "object" ? tooltip : {};
187
- $[46] = tooltip;
188
- $[47] = t13;
189
- } else t13 = $[47];
188
+ $[47] = tooltip;
189
+ $[48] = t13;
190
+ } else t13 = $[48];
190
191
  let tooltipProps;
191
- if ($[48] !== t13) {
192
+ if ($[49] !== t13) {
192
193
  const { title: _title, ...t14 } = t13;
193
194
  tooltipProps = t14;
194
- $[48] = t13;
195
- $[49] = tooltipProps;
196
- } else tooltipProps = $[49];
195
+ $[49] = t13;
196
+ $[50] = tooltipProps;
197
+ } else tooltipProps = $[50];
197
198
  const hasTooltip = !children && !!tooltipContent;
198
199
  const { isNativelyDisabled, isInert, inertProps } = getDisabledElementProps({
199
200
  isDisabled,
@@ -204,12 +205,12 @@ const ItemAction = forwardRef(function ItemAction(allProps, ref) {
204
205
  const finalType = type;
205
206
  const renderButton = (tooltipTriggerProps, tooltipRef) => {
206
207
  return /* @__PURE__ */ jsxs(ItemActionElement, {
207
- ...tooltipRef ? mergeProps(elementProps, tooltipTriggerProps || {}, inertProps, { ref: (element) => {
208
+ ...tooltipRef ? mergeProps(mergeTooltipFocusProps(elementProps, tooltipTriggerProps), inertProps, { ref: (element) => {
208
209
  if (tooltipRef) tooltipRef.current = element;
209
210
  const actionRef = actionProps.ref;
210
211
  if (actionRef) if (typeof actionRef === "function") actionRef(element);
211
212
  else actionRef.current = element;
212
- } }) : mergeProps(elementProps, tooltipTriggerProps || {}, inertProps),
213
+ } }) : mergeProps(mergeTooltipFocusProps(elementProps, tooltipTriggerProps), inertProps),
213
214
  disabled: isNativelyDisabled,
214
215
  variant: `${theme}.${finalType}`,
215
216
  "data-theme": theme,
@@ -241,18 +242,19 @@ const ItemAction = forwardRef(function ItemAction(allProps, ref) {
241
242
  $[34] = isDisabledInherited;
242
243
  $[35] = isLoading;
243
244
  $[36] = menuItemAction;
244
- $[37] = rest.role;
245
- $[38] = rest.tabIndex;
246
- $[39] = styles;
247
- $[40] = t10;
248
- $[41] = theme;
249
- $[42] = tooltip;
250
- $[43] = type;
251
- $[44] = t11;
252
- $[45] = t12;
245
+ $[37] = rest.excludeFromTabOrder;
246
+ $[38] = rest.role;
247
+ $[39] = rest.tabIndex;
248
+ $[40] = styles;
249
+ $[41] = t10;
250
+ $[42] = theme;
251
+ $[43] = tooltip;
252
+ $[44] = type;
253
+ $[45] = t11;
254
+ $[46] = t12;
253
255
  } else {
254
- t11 = $[44];
255
- t12 = $[45];
256
+ t11 = $[45];
257
+ t12 = $[46];
256
258
  }
257
259
  if (t12 !== Symbol.for("react.early_return_sentinel")) return t12;
258
260
  return t11;