@cube-dev/ui-kit 0.142.9 → 0.143.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 (456) hide show
  1. package/README.md +1 -1
  2. package/dist/CHANGELOG.md +29 -0
  3. package/dist/README.md +1 -1
  4. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  5. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  6. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  7. package/dist/_internal/hooks/use-event.js +1 -1
  8. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  9. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  10. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  11. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  12. package/dist/_internal/hooks/use-warn.js +1 -1
  13. package/dist/components/Block.js +1 -1
  14. package/dist/components/CollectionItem.js +1 -1
  15. package/dist/components/GlobalStyles.js +1 -1
  16. package/dist/components/GridProvider.js +1 -1
  17. package/dist/components/HiddenInput.js +1 -1
  18. package/dist/components/Root.js +1 -1
  19. package/dist/components/actions/Action/Action.js +1 -1
  20. package/dist/components/actions/Banner/Banner.js +1 -1
  21. package/dist/components/actions/Button/Button.js +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  24. package/dist/components/actions/ButtonSplit/context.js +1 -1
  25. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  26. package/dist/components/actions/CommandMenu/styled.js +1 -1
  27. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  28. package/dist/components/actions/ItemActionContext.js +1 -1
  29. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  30. package/dist/components/actions/Link/Link.js +1 -1
  31. package/dist/components/actions/Menu/Menu.js +1 -1
  32. package/dist/components/actions/Menu/MenuItem.js +1 -1
  33. package/dist/components/actions/Menu/MenuSection.js +1 -1
  34. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  36. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  37. package/dist/components/actions/Menu/context.js +1 -1
  38. package/dist/components/actions/Menu/styled.js +1 -1
  39. package/dist/components/actions/index.js +1 -1
  40. package/dist/components/actions/use-action.js +1 -1
  41. package/dist/components/actions/use-anchored-menu.js +1 -1
  42. package/dist/components/actions/use-context-menu.js +1 -1
  43. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  44. package/dist/components/content/Alert/Alert.js +1 -1
  45. package/dist/components/content/Alert/use-alert.js +1 -1
  46. package/dist/components/content/Avatar/Avatar.js +1 -1
  47. package/dist/components/content/Badge/Badge.js +1 -1
  48. package/dist/components/content/Card/Card.js +1 -1
  49. package/dist/components/content/Content.js +1 -1
  50. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  51. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  52. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  53. package/dist/components/content/Divider.js +1 -1
  54. package/dist/components/content/Footer.js +1 -1
  55. package/dist/components/content/Header.js +1 -1
  56. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  57. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  58. package/dist/components/content/Item/Item.js +11 -2
  59. package/dist/components/content/Item/Item.js.map +1 -1
  60. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  61. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  62. package/dist/components/content/Layout/GridLayout.js +1 -1
  63. package/dist/components/content/Layout/Layout.js +1 -1
  64. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  65. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  66. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  67. package/dist/components/content/Layout/LayoutContent.js +1 -1
  68. package/dist/components/content/Layout/LayoutContext.js +1 -1
  69. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  70. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  71. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  72. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutPane.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  75. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  76. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  77. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  78. package/dist/components/content/Layout/index.js +1 -1
  79. package/dist/components/content/Layout/utils.js +1 -1
  80. package/dist/components/content/Paragraph.js +1 -1
  81. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  82. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  83. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  84. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  85. package/dist/components/content/Result/Result.js +1 -1
  86. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  87. package/dist/components/content/Tag/Tag.js +1 -1
  88. package/dist/components/content/Text.js +1 -1
  89. package/dist/components/content/TextItem/TextItem.js +1 -1
  90. package/dist/components/content/Title.js +1 -1
  91. package/dist/components/content/Tree/Tree.js +1 -1
  92. package/dist/components/content/Tree/TreeNode.js +8 -2
  93. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  94. package/dist/components/content/Tree/styled.js +2 -1
  95. package/dist/components/content/Tree/styled.js.map +1 -1
  96. package/dist/components/content/Tree/tree-index.js +1 -1
  97. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  98. package/dist/components/content/Tree/use-load-data.js +1 -1
  99. package/dist/components/content/highlightText.js +1 -1
  100. package/dist/components/content/use-auto-tooltip.js +1 -1
  101. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  102. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  103. package/dist/components/fields/Checkbox/context.js +1 -1
  104. package/dist/components/fields/ComboBox/ComboBox.js +17 -213
  105. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  106. package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +99 -0
  107. package/dist/components/fields/CommandTextArea/CommandTextArea.js +402 -0
  108. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -0
  109. package/dist/components/fields/CommandTextArea/caretPosition.js +89 -0
  110. package/dist/components/fields/CommandTextArea/caretPosition.js.map +1 -0
  111. package/dist/components/fields/CommandTextArea/index.d.ts +2 -0
  112. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +68 -0
  113. package/dist/components/fields/CommandTextArea/useCaretAnchor.js.map +1 -0
  114. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  115. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  116. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  117. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  118. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  119. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  120. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  121. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  122. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  123. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  124. package/dist/components/fields/DatePicker/intl.js +1 -1
  125. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  126. package/dist/components/fields/DatePicker/props.js +1 -1
  127. package/dist/components/fields/DatePicker/utils.js +1 -1
  128. package/dist/components/fields/FileInput/FileInput.js +1 -1
  129. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  130. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  131. package/dist/components/fields/Input/Input.js +1 -1
  132. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  133. package/dist/components/fields/ListBox/ListBox.d.ts +5 -0
  134. package/dist/components/fields/ListBox/ListBox.js +10 -4
  135. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  136. package/dist/components/fields/ListBoxPopover/ListBoxPopover.d.ts +5 -0
  137. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +164 -0
  138. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -0
  139. package/dist/components/fields/ListBoxPopover/index.d.ts +4 -0
  140. package/dist/components/fields/ListBoxPopover/listNavigation.d.ts +24 -0
  141. package/dist/components/fields/ListBoxPopover/listNavigation.js +102 -0
  142. package/dist/components/fields/ListBoxPopover/listNavigation.js.map +1 -0
  143. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +2 -0
  144. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +53 -0
  145. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -0
  146. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  147. package/dist/components/fields/NumberInput/StepButton.js +8 -4
  148. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  149. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  150. package/dist/components/fields/Picker/Picker.js +1 -1
  151. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  152. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  153. package/dist/components/fields/RadioGroup/context.js +1 -1
  154. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  155. package/dist/components/fields/Select/Select.js +1 -1
  156. package/dist/components/fields/Slider/Gradation.js +1 -1
  157. package/dist/components/fields/Slider/HueSlider.js +1 -1
  158. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  159. package/dist/components/fields/Slider/Slider.js +1 -1
  160. package/dist/components/fields/Slider/SliderBase.js +1 -1
  161. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  162. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  163. package/dist/components/fields/Slider/elements.js +1 -1
  164. package/dist/components/fields/Slider/index.js +1 -1
  165. package/dist/components/fields/Switch/Switch.js +1 -1
  166. package/dist/components/fields/TextArea/TextArea.js +1 -1
  167. package/dist/components/fields/TextInput/TextInput.js +1 -1
  168. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  169. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  170. package/dist/components/fields/index.d.ts +2 -0
  171. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  172. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  173. package/dist/components/form/Form/Field.js +1 -1
  174. package/dist/components/form/Form/Form.js +1 -1
  175. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  176. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  177. package/dist/components/form/Form/SubmitError.js +1 -1
  178. package/dist/components/form/Form/index.js +1 -1
  179. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  180. package/dist/components/form/Form/use-field/use-field.js +1 -1
  181. package/dist/components/form/Form/use-form.js +1 -1
  182. package/dist/components/form/Form/validation.js +1 -1
  183. package/dist/components/form/Label.js +1 -1
  184. package/dist/components/form/wrapper.js +1 -1
  185. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  186. package/dist/components/helpers/IconSwitch/IconSwitch.js +2 -1
  187. package/dist/components/helpers/IconSwitch/IconSwitch.js.map +1 -1
  188. package/dist/components/layout/Flex.js +1 -1
  189. package/dist/components/layout/Flow.js +1 -1
  190. package/dist/components/layout/Grid.js +1 -1
  191. package/dist/components/layout/Panel.js +1 -1
  192. package/dist/components/layout/Prefix.js +1 -1
  193. package/dist/components/layout/ResizablePanel.js +1 -1
  194. package/dist/components/layout/Space.js +1 -1
  195. package/dist/components/layout/Suffix.js +1 -1
  196. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  197. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  198. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  199. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  200. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  201. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  202. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  203. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  204. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  205. package/dist/components/navigation/Tabs/styled.js +1 -1
  206. package/dist/components/navigation/Tabs/types.js +1 -1
  207. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  208. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  209. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  210. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  211. package/dist/components/other/Calendar/Calendar.js +1 -1
  212. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  213. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  214. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  215. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  216. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  217. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  218. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  219. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  220. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  221. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  222. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  223. package/dist/components/overlays/Dialog/context.js +1 -1
  224. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  225. package/dist/components/overlays/Modal/Modal.js +1 -1
  226. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  227. package/dist/components/overlays/Modal/Overlay.js +1 -1
  228. package/dist/components/overlays/Modal/Popover.js +1 -1
  229. package/dist/components/overlays/Modal/Tray.js +1 -1
  230. package/dist/components/overlays/Modal/Underlay.js +1 -1
  231. package/dist/components/overlays/Notifications/Notification.js +1 -1
  232. package/dist/components/overlays/Notifications/NotificationAction.d.ts +2 -1
  233. package/dist/components/overlays/Notifications/NotificationAction.js +4 -6
  234. package/dist/components/overlays/Notifications/NotificationAction.js.map +1 -1
  235. package/dist/components/overlays/Notifications/NotificationCard.js +34 -20
  236. package/dist/components/overlays/Notifications/NotificationCard.js.map +1 -1
  237. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  238. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  239. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  240. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  241. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  242. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  243. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  244. package/dist/components/overlays/Notifications/index.js +1 -1
  245. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  246. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  247. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  248. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  249. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  250. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  251. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  252. package/dist/components/overlays/Toast/index.js +1 -1
  253. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  254. package/dist/components/overlays/Toast/useToast.js +1 -1
  255. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  256. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  257. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  258. package/dist/components/overlays/Tooltip/context.js +1 -1
  259. package/dist/components/portal/Portal.js +1 -1
  260. package/dist/components/portal/PortalProvider.js +1 -1
  261. package/dist/components/portal/usePortal.js +1 -1
  262. package/dist/components/shared/DraggableCollection.js +1 -1
  263. package/dist/components/shared/InvalidIcon.js +1 -1
  264. package/dist/components/shared/ValidIcon.js +1 -1
  265. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  266. package/dist/components/status/Spin/Cube.js +1 -1
  267. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  268. package/dist/components/status/Spin/Spin.js +1 -1
  269. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  270. package/dist/data/item-themes.js +1 -1
  271. package/dist/data/themes.js +1 -1
  272. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  273. package/dist/icons/AdjustmentsIcon.js +1 -1
  274. package/dist/icons/AiIcon.js +1 -1
  275. package/dist/icons/AreaChartIcon.js +1 -1
  276. package/dist/icons/BackwardIcon.js +1 -1
  277. package/dist/icons/BarChartIcon.js +1 -1
  278. package/dist/icons/BellFilledIcon.js +1 -1
  279. package/dist/icons/BellIcon.js +1 -1
  280. package/dist/icons/BooleanIcon.js +1 -1
  281. package/dist/icons/CalendarEditIcon.js +1 -1
  282. package/dist/icons/CalendarIcon.js +1 -1
  283. package/dist/icons/CaretDownIcon.js +1 -1
  284. package/dist/icons/CaretUpIcon.js +1 -1
  285. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  286. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  287. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  288. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  289. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  290. package/dist/icons/ChartBarLineIcon.js +1 -1
  291. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  292. package/dist/icons/ChartBarStackedIcon.js +1 -1
  293. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  294. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  295. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  296. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  297. package/dist/icons/ChartBubbleIcon.js +1 -1
  298. package/dist/icons/ChartDonut2Icon.js +1 -1
  299. package/dist/icons/ChartFunnelIcon.js +1 -1
  300. package/dist/icons/ChartHeatmapIcon.js +1 -1
  301. package/dist/icons/ChartKPIIcon.js +1 -1
  302. package/dist/icons/ChartPie2Icon.js +1 -1
  303. package/dist/icons/ChartScatterIcon.js +1 -1
  304. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  305. package/dist/icons/CheckCircleIcon.js +1 -1
  306. package/dist/icons/CheckIcon.js +1 -1
  307. package/dist/icons/CircleFilledIcon.js +1 -1
  308. package/dist/icons/ClearIcon.js +1 -1
  309. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  310. package/dist/icons/CloseCircleIcon.js +1 -1
  311. package/dist/icons/CloseIcon.js +1 -1
  312. package/dist/icons/CodeIcon.js +1 -1
  313. package/dist/icons/ColumnTotalIcon.js +1 -1
  314. package/dist/icons/CopyIcon.js +1 -1
  315. package/dist/icons/CountIcon.js +1 -1
  316. package/dist/icons/CubeIcon.js +1 -1
  317. package/dist/icons/CubePauseIcon.js +1 -1
  318. package/dist/icons/CubePlayIcon.js +1 -1
  319. package/dist/icons/CurrencyDollarIcon.js +1 -1
  320. package/dist/icons/DangerIcon.js +1 -1
  321. package/dist/icons/DashboardIcon.js +1 -1
  322. package/dist/icons/DatabaseIcon.js +1 -1
  323. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  324. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  325. package/dist/icons/DirectionIcon.js +1 -1
  326. package/dist/icons/DonutIcon.js +1 -1
  327. package/dist/icons/DownIcon.js +1 -1
  328. package/dist/icons/EditIcon.js +1 -1
  329. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  330. package/dist/icons/ExclamationCircleIcon.js +1 -1
  331. package/dist/icons/ExclamationIcon.js +1 -1
  332. package/dist/icons/EyeIcon.js +1 -1
  333. package/dist/icons/EyeInvisibleIcon.js +1 -1
  334. package/dist/icons/FilterIcon.js +1 -1
  335. package/dist/icons/FolderFilledIcon.js +1 -1
  336. package/dist/icons/FolderIcon.js +1 -1
  337. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  338. package/dist/icons/FolderOpenIcon.js +1 -1
  339. package/dist/icons/ForwardIcon.js +1 -1
  340. package/dist/icons/GripVerticalIcon.js +1 -1
  341. package/dist/icons/HierarchyIcon.js +1 -1
  342. package/dist/icons/HierarchyOpenIcon.js +1 -1
  343. package/dist/icons/Icon.js +1 -1
  344. package/dist/icons/InfoCircleIcon.js +1 -1
  345. package/dist/icons/InfoIcon.js +1 -1
  346. package/dist/icons/KeyIcon.js +1 -1
  347. package/dist/icons/LeftIcon.js +1 -1
  348. package/dist/icons/LineChartIcon.js +1 -1
  349. package/dist/icons/LoadingIcon.js +1 -1
  350. package/dist/icons/LockFilledIcon.js +1 -1
  351. package/dist/icons/LockIcon.js +1 -1
  352. package/dist/icons/MoreIcon.js +1 -1
  353. package/dist/icons/NotAllowedIcon.js +1 -1
  354. package/dist/icons/Number123Icon.js +1 -1
  355. package/dist/icons/NumberIcon.js +1 -1
  356. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  357. package/dist/icons/PauseCircleIcon.js +1 -1
  358. package/dist/icons/PauseIcon.js +1 -1
  359. package/dist/icons/PercentageIcon.js +1 -1
  360. package/dist/icons/PieChartIcon.js +1 -1
  361. package/dist/icons/PlayCircleIcon.js +1 -1
  362. package/dist/icons/PlayIcon.js +1 -1
  363. package/dist/icons/PlusIcon.js +1 -1
  364. package/dist/icons/ProgressBarIcon.js +1 -1
  365. package/dist/icons/ReloadIcon.js +1 -1
  366. package/dist/icons/ReportIcon.js +1 -1
  367. package/dist/icons/ReturnIcon.js +1 -1
  368. package/dist/icons/RightIcon.js +1 -1
  369. package/dist/icons/RowTotalsIcon.js +1 -1
  370. package/dist/icons/SchemeIcon.js +1 -1
  371. package/dist/icons/SearchIcon.js +1 -1
  372. package/dist/icons/SemanticQueryIcon.js +1 -1
  373. package/dist/icons/SettingsIcon.js +1 -1
  374. package/dist/icons/ShieldFilledIcon.js +1 -1
  375. package/dist/icons/ShieldIcon.js +1 -1
  376. package/dist/icons/SlashIcon.js +1 -1
  377. package/dist/icons/SparklesIcon.js +1 -1
  378. package/dist/icons/SqlIcon.js +1 -1
  379. package/dist/icons/StatsIcon.js +1 -1
  380. package/dist/icons/StopIcon.js +1 -1
  381. package/dist/icons/StringIcon.js +1 -1
  382. package/dist/icons/SubtotalsIcon.js +1 -1
  383. package/dist/icons/SwitchIcon.js +1 -1
  384. package/dist/icons/TableIcon.js +1 -1
  385. package/dist/icons/ThumbsDownIcon.js +1 -1
  386. package/dist/icons/ThumbsUpIcon.js +1 -1
  387. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  388. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  389. package/dist/icons/ThunderboltIcon.js +1 -1
  390. package/dist/icons/TimeIcon.js +1 -1
  391. package/dist/icons/TrashIcon.js +1 -1
  392. package/dist/icons/UnlockIcon.js +1 -1
  393. package/dist/icons/UpIcon.js +1 -1
  394. package/dist/icons/UserGroupIcon.js +1 -1
  395. package/dist/icons/UserIcon.js +1 -1
  396. package/dist/icons/UserLockIcon.js +1 -1
  397. package/dist/icons/ViewIcon.js +1 -1
  398. package/dist/icons/WarningFilledIcon.js +1 -1
  399. package/dist/icons/WarningIcon.js +1 -1
  400. package/dist/icons/wrap-icon.js +1 -1
  401. package/dist/index.d.ts +2 -1
  402. package/dist/index.js +3 -2
  403. package/dist/index.js.map +1 -1
  404. package/dist/provider.js +1 -1
  405. package/dist/providers/TrackingProvider.js +1 -1
  406. package/dist/providers/navigationAdapter.default.js +1 -1
  407. package/dist/tokens/base.js +1 -1
  408. package/dist/tokens/colors.js +1 -1
  409. package/dist/tokens/index.js +1 -1
  410. package/dist/tokens/layout.js +1 -1
  411. package/dist/tokens/palette.js +1 -1
  412. package/dist/tokens/shadows.js +1 -1
  413. package/dist/tokens/sizes.js +1 -1
  414. package/dist/tokens/spacing.js +1 -1
  415. package/dist/tokens/typography.js +1 -1
  416. package/dist/utils/ResizeSensor.js +1 -1
  417. package/dist/utils/is-dev-env.js +1 -1
  418. package/dist/utils/modules.js +1 -1
  419. package/dist/utils/promise.js +1 -1
  420. package/dist/utils/raf.js +1 -1
  421. package/dist/utils/random.js +1 -1
  422. package/dist/utils/range.js +1 -1
  423. package/dist/utils/react/RenderCache.js +1 -1
  424. package/dist/utils/react/Slots.js +1 -1
  425. package/dist/utils/react/chain.js +1 -1
  426. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  427. package/dist/utils/react/index.js +1 -1
  428. package/dist/utils/react/interactions.js +1 -1
  429. package/dist/utils/react/isTextOnly.js +1 -1
  430. package/dist/utils/react/mapProps.js +1 -1
  431. package/dist/utils/react/mergeProps.js +1 -1
  432. package/dist/utils/react/nullableValue.js +1 -1
  433. package/dist/utils/react/resolveIcon.js +1 -1
  434. package/dist/utils/react/sharedStore.js +1 -1
  435. package/dist/utils/react/useCombinedRefs.js +1 -1
  436. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  437. package/dist/utils/react/useEventBus.js +1 -1
  438. package/dist/utils/react/useId.js +1 -1
  439. package/dist/utils/react/useIsDarwin.js +1 -1
  440. package/dist/utils/react/useKeySymbols.js +1 -1
  441. package/dist/utils/react/useLayoutEffect.js +1 -1
  442. package/dist/utils/react/useLocalStorage.js +1 -1
  443. package/dist/utils/react/useMergeStyles.js +1 -1
  444. package/dist/utils/react/usePopoverSync.js +1 -1
  445. package/dist/utils/react/useQaProps.js +1 -1
  446. package/dist/utils/react/useViewportSize.js +1 -1
  447. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  448. package/dist/utils/selection.js +1 -1
  449. package/dist/utils/styles.js +1 -1
  450. package/dist/utils/tree.js +1 -1
  451. package/dist/utils/warnings.js +1 -1
  452. package/dist/version.js +3 -3
  453. package/docs/components/fields/CommandTextArea.md +153 -0
  454. package/docs/tasty/dsl.md +110 -1
  455. package/docs/tasty/pipeline.md +40 -2
  456. package/package.json +7 -20
@@ -1 +1 @@
1
- {"version":3,"file":"Item.js","names":["HotKeys"],"sources":["../../../../src/components/content/Item/Item.tsx"],"sourcesContent":["import {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n Mods,\n Props,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n KeyboardEvent,\n MouseEvent,\n PointerEvent,\n ReactNode,\n RefObject,\n useMemo,\n} from 'react';\nimport { OverlayProps } from 'react-aria';\nimport { useHotkeys } from 'react-hotkeys-hook';\n\nimport { useWarn } from '../../../_internal/hooks/use-warn';\nimport {\n DANGER_CARD_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_ITEM_STYLES,\n DANGER_LINK_STYLES,\n DANGER_OUTLINE_2_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DEFAULT_CARD_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_ITEM_STYLES,\n DEFAULT_LINK_STYLES,\n DEFAULT_OUTLINE_2_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n ItemVariant,\n NOTE_CARD_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_ITEM_STYLES,\n NOTE_LINK_STYLES,\n NOTE_OUTLINE_2_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_ITEM_STYLES,\n SPECIAL_LINK_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SUCCESS_CARD_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_ITEM_STYLES,\n SUCCESS_LINK_STYLES,\n SUCCESS_OUTLINE_2_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n WARNING_CARD_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_ITEM_STYLES,\n WARNING_LINK_STYLES,\n WARNING_OUTLINE_2_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n} from '../../../data/item-themes';\nimport { CheckIcon } from '../../../icons/CheckIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { DynamicIcon, mergeProps, resolveIcon } from '../../../utils/react';\nimport { ItemAction } from '../../actions/ItemAction';\nimport { ItemActionProvider } from '../../actions/ItemActionContext';\nimport { IconSwitch } from '../../helpers/IconSwitch/IconSwitch';\nimport { CubeTooltipProviderProps } from '../../overlays/Tooltip/TooltipProvider';\nimport { highlightText } from '../highlightText';\nimport { HotKeys } from '../HotKeys';\nimport { ItemBadge } from '../ItemBadge';\nimport { useAutoTooltip } from '../use-auto-tooltip';\n\nconst ITEM_SIZE_VALUES = [\n 'xsmall',\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n 'inline',\n] as const;\n\n/** Known modifiers for Item component */\nexport type ItemMods = Mods<{\n 'has-icon'?: boolean;\n 'has-start-content'?: boolean;\n 'has-end-content'?: boolean;\n 'has-right-icon'?: boolean;\n 'has-label'?: boolean;\n 'has-prefix'?: boolean;\n 'has-suffix'?: boolean;\n 'has-description'?: boolean;\n 'has-actions'?: boolean;\n 'has-actions-content'?: boolean;\n 'auto-hide-actions'?: boolean;\n 'preserve-actions-space'?: boolean;\n checkmark?: boolean;\n disabled?: boolean;\n selected?: boolean;\n loading?: boolean;\n size?: string;\n description?: string;\n type?: string;\n theme?: string;\n shape?: string;\n}>;\n\nexport interface CubeItemProps extends BaseProps, ContainerStyleProps {\n icon?: DynamicIcon<ItemMods> | 'checkmark';\n rightIcon?: DynamicIcon<ItemMods>;\n prefix?: ReactNode;\n suffix?: ReactNode;\n description?: ReactNode;\n descriptionPlacement?: 'inline' | 'block';\n /**\n * When true, the item is rendered inside a wrapper element to separate the actions from the item.\n * @default false\n */\n insideWrapper?: boolean;\n /**\n * Whether the item is selected.\n * @default false\n */\n isSelected?: boolean;\n /**\n * Actions to render inline or placeholder mode for ItemButton wrapper.\n * - ReactNode: renders actions inline as part of the grid layout\n * - true: placeholder mode for ItemButton (enables --actions-width calculation)\n */\n actions?: ReactNode | true;\n /**\n * When true, actions are hidden by default and shown only on hover, focus, or focus-within.\n * Uses opacity transition for visual hiding while maintaining layout space.\n */\n autoHideActions?: boolean;\n /**\n * When true and insideWrapper is true, this controls the visibility of the actions.\n * @default false\n */\n showActions?: boolean;\n /**\n * When true, preserves the actions width when hidden (only changes opacity).\n * Only applies when autoHideActions is true.\n * @default false\n */\n preserveActionsSpace?: boolean;\n /**\n * When true, disables focus on action buttons by setting tabIndex={-1}.\n * @default true\n */\n disableActionsFocus?: boolean;\n size?:\n | 'xsmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'xlarge'\n | 'inline'\n | number\n | (string & {});\n type?:\n | 'item'\n | 'header'\n | 'primary'\n | 'outline'\n | 'outline-2'\n | 'clear'\n | 'link'\n | 'card'\n | (string & {});\n theme?:\n | 'default'\n | 'danger'\n | 'success'\n | 'special'\n | 'warning'\n | 'note'\n | (string & {});\n /** Keyboard shortcut that triggers the element when pressed */\n hotkeys?: 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 * HTML button type to avoid implicit form submission when used as `as=\"button\"`.\n * Kept separate from visual `type` prop.\n */\n htmlType?: 'button' | 'submit' | 'reset';\n labelProps?: Props;\n descriptionProps?: Props;\n keyboardShortcutProps?: Props;\n /**\n * The slot which the loading icon should replace in loading state.\n * - \"auto\": Smart selection - prefers icon if present, then rightIcon, fallback to icon\n * - Specific slot names: Always use that slot\n * @default \"auto\"\n */\n loadingSlot?: 'auto' | 'icon' | 'rightIcon' | 'prefix' | 'suffix';\n /**\n * When true, shows loading state by replacing the specified slot with LoadingIcon\n * and makes the component disabled.\n */\n isLoading?: boolean;\n /**\n * Shape of the item's border radius.\n * - `card` - Card shape with larger border radius (`1cr`)\n * - `button` - Button shape with default border radius (default)\n * - `sharp` - Sharp corners with no border radius (`0`)\n * - `pill` - Pill shape with fully rounded ends (`round`)\n * @default \"button\"\n */\n shape?: 'card' | 'button' | 'sharp' | 'pill';\n /**\n * @private\n * Default tooltip placement for the item.\n * @default \"top\"\n */\n defaultTooltipPlacement?: OverlayProps['placement'];\n /**\n * Ref to access the label element directly\n */\n labelRef?: RefObject<HTMLElement>;\n /**\n * Heading level for the Label element when type=\"header\" or type=\"card\".\n * Changes the Label's HTML tag to the corresponding heading (h1-h6).\n * @default 3\n */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /**\n * String to highlight within children.\n * Only works when children is a plain string.\n */\n highlight?: string;\n /**\n * Whether highlight matching is case-sensitive.\n * @default false\n */\n highlightCaseSensitive?: boolean;\n /**\n * Custom styles for highlighted text.\n */\n highlightStyles?: Styles;\n /**\n * Variant of the item.\n */\n variant?: ItemVariant;\n}\n\nconst DEFAULT_ICON_STYLES: Styles = {\n $: '>',\n display: 'grid',\n placeItems: 'center',\n placeContent: 'stretch',\n aspectRatio: '1 / 1',\n width: '($size - 2bw)',\n opacity: {\n '': 1,\n 'checkmark & selected': 1,\n 'checkmark & !selected': 0,\n 'checkmark & !selected & hovered': 0.4,\n },\n};\n\nconst ADDITION_STYLES: Styles = {\n $: '>',\n display: 'grid',\n flow: 'column',\n placeItems: 'center',\n placeContent: 'stretch',\n};\n\nconst ACTIONS_EVENT_HANDLERS = {\n onClick: (e: MouseEvent) => e.stopPropagation(),\n onPointerDown: (e: PointerEvent) => e.stopPropagation(),\n onPointerUp: (e: PointerEvent) => e.stopPropagation(),\n onMouseDown: (e: MouseEvent) => e.stopPropagation(),\n onMouseUp: (e: MouseEvent) => e.stopPropagation(),\n onKeyDown: (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.stopPropagation();\n }\n },\n};\n\nconst ItemElement = tasty({\n as: 'div',\n styles: {\n '@interacted':\n 'active | :hover | :focus | :focus-within | :has([data-pressed])',\n\n display: 'inline-grid',\n flow: 'column dense',\n gap: 0,\n outline: 0,\n placeItems: 'stretch',\n placeContent: 'stretch',\n gridTemplate: {\n '': '\"icon prefix label suffix rightIcon actions\" auto \"icon prefix label suffix rightIcon actions\" auto / max-content max-content 1sf max-content max-content max-content',\n 'description=inline':\n '\"icon prefix description suffix rightIcon actions\" auto / max-content max-content 1sf max-content max-content max-content',\n 'description=inline & has-label':\n '\"icon prefix label suffix rightIcon actions\" auto \"icon prefix description suffix rightIcon actions\" auto / max-content max-content 1sf max-content max-content max-content',\n 'description=block':\n '\"icon prefix label suffix rightIcon actions\" auto \"description description description description description description\" auto / max-content max-content 1sf max-content max-content max-content',\n },\n // Prevent items from shrinking inside vertical flex layouts (Menu, ListBox, etc)\n flexShrink: {\n '': 'initial',\n 'menuitem | listboxitem': 0,\n },\n position: 'relative',\n padding: {\n '': 0,\n 'type=card': '.5x',\n },\n margin: 0,\n radius: {\n '': true,\n 'shape=card': '1cr',\n 'shape=button': true,\n 'shape=sharp': '0',\n 'shape=pill': 'round',\n },\n height: {\n '': 'min $size',\n 'size=inline': '(1lh + 2bw)',\n },\n width: {\n '': 'min $size',\n 'has-icon & has-right-icon': 'min ($size * 2)',\n 'size=inline': 'min (1lh + 2bw)',\n },\n border: '#clear',\n fill: {\n '': '#dark.0',\n 'hovered | focused': '#dark.03',\n selected: '#dark.09',\n 'selected & (hovered | focused)': '#dark.12',\n pressed: '#dark.09',\n disabled: '#clear',\n },\n color: {\n '': '#dark-02',\n hovered: '#dark-02',\n pressed: '#dark',\n disabled: '#disabled-surface-text',\n },\n preset: {\n '': 't3',\n '!type=item': 't3m',\n 'size=xsmall': 't4',\n 'size=xlarge': 't2',\n 'size=inline': 'inherit',\n '!type=item & (size=medium | size=small | size=large)': 't3m',\n '!type=item & size=xlarge': 't2m',\n '(type=header | type=card) & (size=xsmall | size=small | size=medium)':\n 'h6',\n '(type=header | type=card) & size=large': 'h5',\n '(type=header | type=card) & size=xlarge': 'h4',\n },\n recipe: 'reset button',\n transition: 'theme',\n outlineOffset: 1,\n cursor: {\n '': 'inherit',\n ':is(a)': 'pointer',\n ':is(button) | listboxitem | menuitem': '$pointer',\n disabled: 'not-allowed',\n },\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 '$block-padding': {\n '': '.5x',\n 'size=xsmall | size=small': '.25x',\n 'size=inline': 0,\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(1x - 1bw)',\n\n '$label-padding-left': {\n '': '$inline-padding',\n 'has-start-content': '0',\n },\n '$label-padding-right': {\n '': '$inline-padding',\n 'has-end-content': '0',\n // Restore padding when actions are hidden AND no other visible end content\n '!inside-wrapper & !has-suffix & !has-right-icon & auto-hide-actions & !preserve-actions-space & !@interacted':\n '$inline-padding',\n 'inside-wrapper & !has-suffix & !has-right-icon & !preserve-actions-space & !actions-shown':\n '$inline-padding',\n },\n '$label-padding-bottom': {\n '': '$block-padding',\n 'description=inline': '0',\n },\n '$description-padding-left': {\n '': '$inline-padding',\n 'has-start-content': 0,\n 'description=block': '($inline-padding - $inline-compensation + 1bw)',\n 'description=block & !has-start-content': '$inline-padding',\n },\n '$description-padding-right': {\n '': '$inline-padding',\n 'has-end-content': 0,\n 'description=block': '($inline-padding - $inline-compensation + 1bw)',\n 'description=block & !has-end-content': '$inline-padding',\n },\n '$description-padding-bottom': {\n '': 0,\n 'has-label & description=inline': '$block-padding',\n 'has-label & description=block':\n 'max($block-padding, (($size - 4x) / 2) + $block-padding)',\n },\n\n Icon: { ...DEFAULT_ICON_STYLES, gridArea: 'icon' },\n\n RightIcon: { ...DEFAULT_ICON_STYLES, gridArea: 'rightIcon' },\n\n Label: {\n $: '>',\n margin: 0,\n gridArea: 'label',\n display: 'block',\n placeSelf: 'center start',\n boxSizing: 'border-box',\n placeContent: 'stretch',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '0 100%',\n preset: 'inherit',\n transition: 'padding',\n padding:\n '$block-padding $label-padding-right $label-padding-bottom $label-padding-left',\n },\n\n Description: {\n $: '>',\n gridArea: 'description',\n preset: {\n '': 't4',\n 'type=card | type=header': 't3',\n },\n placeSelf: 'center start',\n boxSizing: 'border-box',\n color: 'inherit',\n opacity: {\n '': 0.75,\n 'type=card | type=header': 1,\n },\n overflow: 'hidden',\n whiteSpace: {\n '': 'nowrap',\n 'type=card | type=header': 'normal',\n },\n textOverflow: 'ellipsis',\n width: 'initial 100% 100%',\n textAlign: 'left',\n padding:\n '0 $description-padding-right $description-padding-bottom $description-padding-left',\n },\n\n Prefix: {\n ...ADDITION_STYLES,\n gridArea: 'prefix',\n padding: {\n '': '$inline-padding left',\n 'has-icon': 0,\n },\n },\n\n Suffix: {\n ...ADDITION_STYLES,\n gridArea: 'suffix',\n padding: {\n '': '$inline-padding right',\n 'has-right-icon': 0,\n },\n },\n\n Actions: {\n $: '>',\n gridArea: 'actions',\n display: 'flex',\n gap: '1bw',\n placeItems: 'center',\n placeContent: 'end',\n placeSelf: 'stretch',\n padding: {\n '': '0 $side-padding',\n 'inside-wrapper & !actions-shown': 0,\n },\n boxSizing: 'border-box',\n height: 'min ($size - 2bw)',\n width: {\n '': 'fixed ($actions-width, 0px)',\n 'has-actions-content & !auto-hide-actions':\n 'max calc-size(max-content, size)',\n 'has-actions-content & auto-hide-actions & !preserve-actions-space':\n 'max 0px',\n 'has-actions-content & auto-hide-actions & (!preserve-actions-space & ((@interacted & !inside-wrapper) | (inside-wrapper & actions-shown)))':\n 'max calc-size(max-content, size)',\n 'has-actions-content & auto-hide-actions & preserve-actions-space':\n 'max calc-size(max-content, size)',\n },\n opacity: {\n '': 1,\n 'auto-hide-actions': 0,\n 'auto-hide-actions & ((@interacted & !inside-wrapper) | (inside-wrapper & actions-shown))': 1,\n },\n transition:\n 'width $transition ease-out, opacity $transition ease-out, padding $transition ease-out',\n interpolateSize: 'allow-keywords',\n\n // Size for the action buttons\n '$action-size': 'min(max((2x + 2bw), ($size - 1x - 2bw)), (3x - 2bw))',\n // Side padding for the button\n '$side-padding': '(($size - $action-size - 2bw) / 2)',\n },\n },\n variants: {\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 'default.item': DEFAULT_ITEM_STYLES,\n 'default.card': DEFAULT_CARD_STYLES,\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 'danger.item': DANGER_ITEM_STYLES,\n 'danger.card': DANGER_CARD_STYLES,\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 'success.item': SUCCESS_ITEM_STYLES,\n 'success.card': SUCCESS_CARD_STYLES,\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 'warning.item': WARNING_ITEM_STYLES,\n 'warning.card': WARNING_CARD_STYLES,\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 'note.item': NOTE_ITEM_STYLES,\n 'note.card': NOTE_CARD_STYLES,\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 'special.item': SPECIAL_ITEM_STYLES,\n },\n styleProps: CONTAINER_STYLES,\n});\n\nconst Item = <T extends HTMLElement = HTMLDivElement>(\n props: CubeItemProps,\n ref: ForwardedRef<T>,\n) => {\n let {\n children,\n size = 'medium',\n type = 'item',\n theme = 'default',\n mods,\n icon: iconProp,\n rightIcon: rightIconProp,\n prefix,\n suffix,\n description,\n descriptionPlacement,\n labelProps,\n descriptionProps,\n keyboardShortcutProps,\n styles,\n htmlType,\n isSelected,\n hotkeys,\n tooltip = true,\n isDisabled,\n style,\n loadingSlot = 'auto',\n isLoading = false,\n actions,\n autoHideActions = false,\n preserveActionsSpace = false,\n disableActionsFocus = false,\n shape,\n defaultTooltipPlacement = 'top',\n level = 3,\n highlight,\n highlightCaseSensitive = false,\n highlightStyles,\n insideWrapper = false,\n showActions = false,\n tokens,\n ...rest\n } = props;\n\n // Determine if Label will be rendered\n const hasLabel = !!(children || labelProps);\n\n // Set default descriptionPlacement based on type\n // For card/header types, use 'block' only when Label is rendered\n const finalDescriptionPlacement =\n descriptionPlacement ??\n ((type === 'card' || type === 'header') && hasLabel ? 'block' : 'inline');\n\n // Set default shape based on type\n const finalShape = shape ?? (type === 'card' ? 'card' : 'button');\n\n // Loading state makes the component disabled\n const finalIsDisabled =\n isDisabled === true || (isLoading && isDisabled !== false);\n\n // Validate type+theme combinations\n const STANDARD_THEMES = [\n 'default',\n 'success',\n 'danger',\n 'warning',\n 'note',\n 'special',\n ];\n const CARD_THEMES = ['default', 'success', 'danger', 'warning', 'note'];\n const HEADER_THEMES = ['default'];\n\n const isInvalidCombination =\n (type === 'header' && !HEADER_THEMES.includes(theme)) ||\n (type === 'card' && !CARD_THEMES.includes(theme)) ||\n (!['header', 'card'].includes(type) && !STANDARD_THEMES.includes(theme));\n\n useWarn(isInvalidCombination, {\n key: ['Item', 'invalid-type-theme', type, theme],\n args: [\n `Item: Invalid type+theme combination. type=\"${type}\" does not support theme=\"${theme}\".` +\n (type === 'header'\n ? ' The \"header\" type only supports theme: default.'\n : type === 'card'\n ? ' The \"card\" type only supports themes: default, success, danger, warning, note.'\n : ' Standard types support themes: default, success, danger, warning, note, special.'),\n ],\n });\n\n // Warn if link type is used with icons or loading state\n const hasLinkWithIcons = type === 'link' && (iconProp || rightIconProp);\n const hasLinkWithLoading = type === 'link' && isLoading;\n const hasLinkRestrictions = hasLinkWithIcons || hasLinkWithLoading;\n\n const linkRestrictionMessages: string[] = [];\n if (hasLinkWithIcons) {\n linkRestrictionMessages.push('icons (`icon` or `rightIcon` props)');\n }\n if (hasLinkWithLoading) {\n linkRestrictionMessages.push('loading state (`isLoading` prop)');\n }\n\n useWarn(hasLinkRestrictions, {\n key: ['Item', 'link-restrictions'],\n args: [\n `Item: The \"link\" type does not support ${linkRestrictionMessages.join(' or ')}. Remove these props when using type=\"link\".`,\n ],\n });\n\n // Determine if we should show a checkmark instead of icon\n const hasCheckmark = iconProp === 'checkmark';\n\n // Determine if size is custom (number or unrecognized string)\n const isCustomSize =\n typeof size === 'number' ||\n !(ITEM_SIZE_VALUES as readonly string[]).includes(size);\n const sizeTokenValue =\n typeof size === 'number' ? `${size}px` : isCustomSize ? size : undefined;\n\n // Base mods for icon resolution (without icon-dependent mods)\n const baseMods = useMemo<ItemMods>(\n () => ({\n disabled: finalIsDisabled,\n selected: isSelected === true,\n loading: isLoading,\n ...(!isCustomSize && { size: size as string }),\n type,\n theme,\n shape: finalShape,\n ...mods,\n }),\n [\n finalIsDisabled,\n isSelected,\n isLoading,\n size,\n isCustomSize,\n type,\n theme,\n finalShape,\n mods,\n ],\n );\n\n // Resolve dynamic icon props (skip resolution for 'checkmark' special value)\n const resolvedIcon = useMemo(() => {\n if (hasCheckmark) {\n return { content: null, hasSlot: true };\n }\n return resolveIcon(iconProp as DynamicIcon<ItemMods>, baseMods);\n }, [iconProp, baseMods, hasCheckmark]);\n\n const resolvedRightIcon = useMemo(\n () => resolveIcon(rightIconProp, baseMods),\n [rightIconProp, baseMods],\n );\n\n // Determine which slot to use for loading when \"auto\" is selected\n // Must be computed before hasIconSlot/hasRightIconSlot since they depend on it\n const resolvedLoadingSlot = useMemo(() => {\n if (loadingSlot !== 'auto') return loadingSlot;\n\n // Auto logic: prefer icon if present, then rightIcon, fallback to icon\n if (resolvedRightIcon.hasSlot && !resolvedIcon.hasSlot) return 'rightIcon';\n return 'icon'; // fallback\n }, [loadingSlot, resolvedIcon.hasSlot, resolvedRightIcon.hasSlot]);\n\n // Determine if icon slots should render (original slot OR loading state targets this slot)\n const hasIconSlot =\n resolvedIcon.hasSlot || (isLoading && resolvedLoadingSlot === 'icon');\n const hasRightIconSlot =\n resolvedRightIcon.hasSlot ||\n (isLoading && resolvedLoadingSlot === 'rightIcon');\n\n const showDescription = useMemo(() => {\n const copyProps = { ...descriptionProps };\n delete copyProps.id;\n return !!(description || Object.keys(copyProps).length > 0);\n }, [description, descriptionProps]);\n\n // Apply loading state to appropriate slots\n const finalIcon =\n isLoading && resolvedLoadingSlot === 'icon' ? (\n <LoadingIcon />\n ) : (\n resolvedIcon.content\n );\n const finalRightIcon =\n isLoading && resolvedLoadingSlot === 'rightIcon' ? (\n <LoadingIcon />\n ) : (\n resolvedRightIcon.content\n );\n\n // Generate stable keys for icon transitions based on icon type\n const iconKey = hasCheckmark\n ? 'checkmark'\n : isLoading && resolvedLoadingSlot === 'icon'\n ? 'loading'\n : isValidElement(finalIcon)\n ? (finalIcon.type as any)?.displayName ||\n (finalIcon.type as any)?.name ||\n 'icon'\n : finalIcon\n ? 'icon'\n : 'empty';\n\n const rightIconKey =\n isLoading && resolvedLoadingSlot === 'rightIcon'\n ? 'loading'\n : isValidElement(finalRightIcon)\n ? (finalRightIcon.type as any)?.displayName ||\n (finalRightIcon.type as any)?.name ||\n 'icon'\n : finalRightIcon\n ? 'icon'\n : 'empty';\n const finalPrefix =\n isLoading && resolvedLoadingSlot === 'prefix' ? <LoadingIcon /> : prefix;\n\n // Build final suffix: loading icon, custom suffix, or HotKeys hint\n const finalSuffix =\n isLoading && resolvedLoadingSlot === 'suffix' ? (\n <LoadingIcon />\n ) : (\n suffix ??\n (hotkeys ? (\n <HotKeys\n {...(keyboardShortcutProps as any)}\n type={type === 'primary' ? 'primary' : 'default'}\n styles={{ padding: '1x left', opacity: finalIsDisabled ? 0.5 : 1 }}\n >\n {hotkeys}\n </HotKeys>\n ) : undefined)\n );\n\n // Register global hotkey if provided\n useHotkeys(\n typeof hotkeys === 'string' ? hotkeys.toLowerCase() : '',\n () => {\n if (!hotkeys) return;\n if (finalIsDisabled) return;\n // Simulate a click on the element so all existing handlers run\n if (ref && typeof ref === 'object' && ref.current) {\n (ref.current as HTMLElement).click();\n }\n },\n {\n enableOnContentEditable: true,\n enabled: !!hotkeys,\n preventDefault: true,\n enableOnFormTags: true,\n },\n [hotkeys, finalIsDisabled],\n );\n\n const finalMods = useMemo<ItemMods>(() => {\n return {\n ...baseMods,\n 'has-icon': hasIconSlot,\n 'has-start-content': !!(hasIconSlot || finalPrefix),\n 'has-end-content': !!(hasRightIconSlot || finalSuffix || actions),\n 'has-right-icon': hasRightIconSlot,\n 'has-label': hasLabel,\n 'has-prefix': !!finalPrefix,\n 'has-suffix': !!finalSuffix,\n 'has-description': showDescription,\n 'has-actions': !!actions,\n 'has-actions-content': !!(actions && actions !== true),\n 'auto-hide-actions': autoHideActions === true,\n 'preserve-actions-space': preserveActionsSpace === true,\n 'inside-wrapper': insideWrapper,\n 'actions-shown': showActions && insideWrapper,\n checkmark: hasCheckmark,\n description: showDescription ? finalDescriptionPlacement : 'none',\n };\n }, [\n baseMods,\n hasIconSlot,\n hasRightIconSlot,\n finalPrefix,\n finalSuffix,\n showDescription,\n finalDescriptionPlacement,\n hasCheckmark,\n actions,\n autoHideActions,\n preserveActionsSpace,\n hasLabel,\n showActions,\n insideWrapper,\n ]);\n\n const {\n labelProps: finalLabelProps,\n labelRef,\n renderWithTooltip,\n } = useAutoTooltip({\n tooltip,\n children,\n labelProps,\n isDynamicLabel: !!actions,\n });\n\n // Process children with highlight if applicable\n const processedChildren = useMemo(() => {\n if (typeof children === 'string' && highlight) {\n return highlightText(\n children,\n highlight,\n highlightCaseSensitive,\n highlightStyles,\n );\n }\n return children;\n }, [children, highlight, highlightCaseSensitive, highlightStyles]);\n\n // Render function that creates the item element\n const renderItemElement = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n // Use callback ref to merge multiple refs without calling hooks\n const handleRef = (element: HTMLElement | null) => {\n // Set the component's forwarded ref\n if (typeof ref === 'function') {\n ref(element as T | null);\n } else if (ref) {\n (ref as any).current = element;\n }\n // Set the tooltip ref if provided\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n };\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 item still renders.\n const effectiveType =\n theme === 'special' && type === 'outline-2' ? 'outline' : type;\n\n return (\n <ItemElement\n ref={handleRef}\n variant={\n theme && effectiveType\n ? (`${effectiveType === 'header' ? 'default' : theme}.${effectiveType === 'header' ? 'item' : effectiveType}` as ItemVariant)\n : undefined\n }\n disabled={finalIsDisabled}\n aria-disabled={finalIsDisabled}\n aria-selected={isSelected}\n mods={finalMods}\n styles={styles}\n tokens={{\n ...tokens,\n ...(sizeTokenValue ? { $size: sizeTokenValue } : {}),\n }}\n type={htmlType as any}\n {...mergeProps(rest, tooltipTriggerProps || {})}\n style={style}\n >\n {hasIconSlot && (\n <div data-element=\"Icon\">\n <IconSwitch noWrapper contentKey={iconKey}>\n {hasCheckmark ? <CheckIcon /> : finalIcon}\n </IconSwitch>\n </div>\n )}\n {finalPrefix && <div data-element=\"Prefix\">{finalPrefix}</div>}\n {children || labelProps\n ? (() => {\n const LabelTag =\n type === 'header' || type === 'card'\n ? (`h${level}` as const)\n : 'div';\n return (\n <LabelTag\n data-element=\"Label\"\n {...finalLabelProps}\n ref={labelRef}\n >\n {processedChildren}\n </LabelTag>\n );\n })()\n : null}\n {showDescription ? (\n <div data-element=\"Description\" {...descriptionProps}>\n {description}\n </div>\n ) : null}\n {finalSuffix && <div data-element=\"Suffix\">{finalSuffix}</div>}\n {hasRightIconSlot && (\n <div data-element=\"RightIcon\">\n <IconSwitch noWrapper contentKey={rightIconKey}>\n {finalRightIcon}\n </IconSwitch>\n </div>\n )}\n {actions && (\n <div data-element=\"Actions\" {...ACTIONS_EVENT_HANDLERS}>\n {actions !== true ? (\n <ItemActionProvider\n type={type}\n theme={theme}\n disableActionsFocus={disableActionsFocus}\n isDisabled={finalIsDisabled}\n >\n {actions}\n </ItemActionProvider>\n ) : null}\n </div>\n )}\n </ItemElement>\n );\n };\n\n return renderWithTooltip(renderItemElement, defaultTooltipPlacement);\n};\n\nconst _Item = Object.assign(forwardRef(Item), {\n Action: ItemAction,\n Badge: ItemBadge,\n});\n\nexport { _Item as Item };\n\n/**\n * @deprecated Use `Item` instead. This export will be removed in a future version.\n */\nexport { _Item as ItemBase };\nexport type { CubeItemProps as CubeItemBaseProps };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Item.js","names":["HotKeys"],"sources":["../../../../src/components/content/Item/Item.tsx"],"sourcesContent":["import {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n Mods,\n Props,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n KeyboardEvent,\n MouseEvent,\n PointerEvent,\n ReactNode,\n RefObject,\n useMemo,\n} from 'react';\nimport { OverlayProps } from 'react-aria';\nimport { useHotkeys } from 'react-hotkeys-hook';\n\nimport { useWarn } from '../../../_internal/hooks/use-warn';\nimport {\n DANGER_CARD_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_ITEM_STYLES,\n DANGER_LINK_STYLES,\n DANGER_OUTLINE_2_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DEFAULT_CARD_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_ITEM_STYLES,\n DEFAULT_LINK_STYLES,\n DEFAULT_OUTLINE_2_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n ItemVariant,\n NOTE_CARD_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_ITEM_STYLES,\n NOTE_LINK_STYLES,\n NOTE_OUTLINE_2_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_ITEM_STYLES,\n SPECIAL_LINK_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SUCCESS_CARD_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_ITEM_STYLES,\n SUCCESS_LINK_STYLES,\n SUCCESS_OUTLINE_2_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n WARNING_CARD_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_ITEM_STYLES,\n WARNING_LINK_STYLES,\n WARNING_OUTLINE_2_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n} from '../../../data/item-themes';\nimport { CheckIcon } from '../../../icons/CheckIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { DynamicIcon, mergeProps, resolveIcon } from '../../../utils/react';\nimport { ItemAction } from '../../actions/ItemAction';\nimport { ItemActionProvider } from '../../actions/ItemActionContext';\nimport { IconSwitch } from '../../helpers/IconSwitch/IconSwitch';\nimport { CubeTooltipProviderProps } from '../../overlays/Tooltip/TooltipProvider';\nimport { highlightText } from '../highlightText';\nimport { HotKeys } from '../HotKeys';\nimport { ItemBadge } from '../ItemBadge';\nimport { useAutoTooltip } from '../use-auto-tooltip';\n\nconst ITEM_SIZE_VALUES = [\n 'xsmall',\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n 'inline',\n] as const;\n\n/** Known modifiers for Item component */\nexport type ItemMods = Mods<{\n 'has-icon'?: boolean;\n 'has-start-content'?: boolean;\n 'has-end-content'?: boolean;\n 'has-right-icon'?: boolean;\n 'has-label'?: boolean;\n 'has-prefix'?: boolean;\n 'has-suffix'?: boolean;\n 'has-description'?: boolean;\n 'has-actions'?: boolean;\n 'has-actions-content'?: boolean;\n 'auto-hide-actions'?: boolean;\n 'preserve-actions-space'?: boolean;\n checkmark?: boolean;\n disabled?: boolean;\n selected?: boolean;\n loading?: boolean;\n size?: string;\n description?: string;\n type?: string;\n theme?: string;\n shape?: string;\n}>;\n\nexport interface CubeItemProps extends BaseProps, ContainerStyleProps {\n icon?: DynamicIcon<ItemMods> | 'checkmark';\n rightIcon?: DynamicIcon<ItemMods>;\n prefix?: ReactNode;\n suffix?: ReactNode;\n description?: ReactNode;\n descriptionPlacement?: 'inline' | 'block';\n /**\n * When true, the item is rendered inside a wrapper element to separate the actions from the item.\n * @default false\n */\n insideWrapper?: boolean;\n /**\n * Whether the item is selected.\n * @default false\n */\n isSelected?: boolean;\n /**\n * Actions to render inline or placeholder mode for ItemButton wrapper.\n * - ReactNode: renders actions inline as part of the grid layout\n * - true: placeholder mode for ItemButton (enables --actions-width calculation)\n */\n actions?: ReactNode | true;\n /**\n * When true, actions are hidden by default and shown only on hover, focus, or focus-within.\n * Uses opacity transition for visual hiding while maintaining layout space.\n */\n autoHideActions?: boolean;\n /**\n * When true and insideWrapper is true, this controls the visibility of the actions.\n * @default false\n */\n showActions?: boolean;\n /**\n * When true, preserves the actions width when hidden (only changes opacity).\n * Only applies when autoHideActions is true.\n * @default false\n */\n preserveActionsSpace?: boolean;\n /**\n * When true, disables focus on action buttons by setting tabIndex={-1}.\n * @default true\n */\n disableActionsFocus?: boolean;\n size?:\n | 'xsmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'xlarge'\n | 'inline'\n | number\n | (string & {});\n type?:\n | 'item'\n | 'header'\n | 'primary'\n | 'outline'\n | 'outline-2'\n | 'clear'\n | 'link'\n | 'card'\n | (string & {});\n theme?:\n | 'default'\n | 'danger'\n | 'success'\n | 'special'\n | 'warning'\n | 'note'\n | (string & {});\n /** Keyboard shortcut that triggers the element when pressed */\n hotkeys?: 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 * HTML button type to avoid implicit form submission when used as `as=\"button\"`.\n * Kept separate from visual `type` prop.\n */\n htmlType?: 'button' | 'submit' | 'reset';\n labelProps?: Props;\n descriptionProps?: Props;\n keyboardShortcutProps?: Props;\n /**\n * The slot which the loading icon should replace in loading state.\n * - \"auto\": Smart selection - prefers icon if present, then rightIcon, fallback to icon\n * - Specific slot names: Always use that slot\n * @default \"auto\"\n */\n loadingSlot?: 'auto' | 'icon' | 'rightIcon' | 'prefix' | 'suffix';\n /**\n * When true, shows loading state by replacing the specified slot with LoadingIcon\n * and makes the component disabled.\n */\n isLoading?: boolean;\n /**\n * Shape of the item's border radius.\n * - `card` - Card shape with larger border radius (`1cr`)\n * - `button` - Button shape with default border radius (default)\n * - `sharp` - Sharp corners with no border radius (`0`)\n * - `pill` - Pill shape with fully rounded ends (`round`)\n * @default \"button\"\n */\n shape?: 'card' | 'button' | 'sharp' | 'pill';\n /**\n * @private\n * Default tooltip placement for the item.\n * @default \"top\"\n */\n defaultTooltipPlacement?: OverlayProps['placement'];\n /**\n * Ref to access the label element directly\n */\n labelRef?: RefObject<HTMLElement>;\n /**\n * Heading level for the Label element when type=\"header\" or type=\"card\".\n * Changes the Label's HTML tag to the corresponding heading (h1-h6).\n * @default 3\n */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /**\n * String to highlight within children.\n * Only works when children is a plain string.\n */\n highlight?: string;\n /**\n * Whether highlight matching is case-sensitive.\n * @default false\n */\n highlightCaseSensitive?: boolean;\n /**\n * Custom styles for highlighted text.\n */\n highlightStyles?: Styles;\n /**\n * Variant of the item.\n */\n variant?: ItemVariant;\n}\n\nconst DEFAULT_ICON_STYLES: Styles = {\n $: '>',\n display: 'grid',\n placeItems: 'center',\n placeContent: 'stretch',\n aspectRatio: '1 / 1',\n width: '($size - 2bw)',\n opacity: {\n '': 1,\n 'checkmark & selected': 1,\n 'checkmark & !selected': 0,\n 'checkmark & !selected & hovered': 0.4,\n },\n};\n\nconst ADDITION_STYLES: Styles = {\n $: '>',\n display: 'grid',\n flow: 'column',\n placeItems: 'center',\n placeContent: 'stretch',\n};\n\nconst ACTIONS_EVENT_HANDLERS = {\n onClick: (e: MouseEvent) => e.stopPropagation(),\n onPointerDown: (e: PointerEvent) => e.stopPropagation(),\n onPointerUp: (e: PointerEvent) => e.stopPropagation(),\n onMouseDown: (e: MouseEvent) => e.stopPropagation(),\n onMouseUp: (e: MouseEvent) => e.stopPropagation(),\n onKeyDown: (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.stopPropagation();\n }\n },\n};\n\nconst ItemElement = tasty({\n as: 'div',\n styles: {\n '@interacted':\n 'active | :hover | :focus | :focus-within | :has([data-pressed])',\n\n display: 'inline-grid',\n flow: 'column dense',\n gap: 0,\n outline: 0,\n placeItems: 'stretch',\n placeContent: 'stretch',\n gridTemplate: {\n '': '\"icon prefix label suffix rightIcon actions\" auto \"icon prefix label suffix rightIcon actions\" auto / max-content max-content 1sf max-content max-content max-content',\n 'description=inline':\n '\"icon prefix description suffix rightIcon actions\" auto / max-content max-content 1sf max-content max-content max-content',\n 'description=inline & has-label':\n '\"icon prefix label suffix rightIcon actions\" auto \"icon prefix description suffix rightIcon actions\" auto / max-content max-content 1sf max-content max-content max-content',\n 'description=block':\n '\"icon prefix label suffix rightIcon actions\" auto \"description description description description description description\" auto / max-content max-content 1sf max-content max-content max-content',\n },\n // Prevent items from shrinking inside vertical flex layouts (Menu, ListBox, etc)\n flexShrink: {\n '': 'initial',\n 'menuitem | listboxitem': 0,\n },\n position: 'relative',\n padding: {\n '': 0,\n 'type=card': '.5x',\n },\n margin: 0,\n radius: {\n '': true,\n 'shape=card': '1cr',\n 'shape=button': true,\n 'shape=sharp': '0',\n 'shape=pill': 'round',\n },\n height: {\n '': 'min $size',\n 'size=inline': '(1lh + 2bw)',\n },\n width: {\n '': 'min $size',\n 'has-icon & has-right-icon': 'min ($size * 2)',\n 'size=inline': 'min (1lh + 2bw)',\n },\n border: '#clear',\n fill: {\n '': '#dark.0',\n 'hovered | focused': '#dark.03',\n selected: '#dark.09',\n 'selected & (hovered | focused)': '#dark.12',\n pressed: '#dark.09',\n disabled: '#clear',\n },\n color: {\n '': '#dark-02',\n hovered: '#dark-02',\n pressed: '#dark',\n disabled: '#disabled-surface-text',\n },\n preset: {\n '': 't3',\n '!type=item': 't3m',\n 'size=xsmall': 't4',\n 'size=xlarge': 't2',\n 'size=inline': 'inherit',\n '!type=item & (size=medium | size=small | size=large)': 't3m',\n '!type=item & size=xlarge': 't2m',\n '(type=header | type=card) & (size=xsmall | size=small | size=medium)':\n 'h6',\n '(type=header | type=card) & size=large': 'h5',\n '(type=header | type=card) & size=xlarge': 'h4',\n },\n recipe: 'reset button',\n transition: 'theme',\n outlineOffset: 1,\n cursor: {\n '': 'inherit',\n ':is(a)': 'pointer',\n ':is(button) | listboxitem | menuitem': '$pointer',\n disabled: 'not-allowed',\n },\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 '$block-padding': {\n '': '.5x',\n 'size=xsmall | size=small': '.25x',\n 'size=inline': 0,\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(1x - 1bw)',\n\n '$label-padding-left': {\n '': '$inline-padding',\n 'has-start-content': '0',\n },\n '$label-padding-right': {\n '': '$inline-padding',\n 'has-end-content': '0',\n // Restore padding when actions are hidden AND no other visible end content\n '!inside-wrapper & !has-suffix & !has-right-icon & auto-hide-actions & !preserve-actions-space & !@interacted':\n '$inline-padding',\n 'inside-wrapper & !has-suffix & !has-right-icon & !preserve-actions-space & !actions-shown':\n '$inline-padding',\n },\n '$label-padding-bottom': {\n '': '$block-padding',\n 'description=inline': '0',\n },\n '$description-padding-left': {\n '': '$inline-padding',\n 'has-start-content': 0,\n 'description=block': '($inline-padding - $inline-compensation + 1bw)',\n 'description=block & !has-start-content': '$inline-padding',\n },\n '$description-padding-right': {\n '': '$inline-padding',\n 'has-end-content': 0,\n 'description=block': '($inline-padding - $inline-compensation + 1bw)',\n 'description=block & !has-end-content': '$inline-padding',\n },\n '$description-padding-bottom': {\n '': 0,\n 'has-label & description=inline': '$block-padding',\n 'has-label & description=block':\n 'max($block-padding, (($size - 4x) / 2) + $block-padding)',\n },\n\n Icon: { ...DEFAULT_ICON_STYLES, gridArea: 'icon' },\n\n RightIcon: { ...DEFAULT_ICON_STYLES, gridArea: 'rightIcon' },\n\n Label: {\n $: '>',\n margin: 0,\n gridArea: 'label',\n display: 'block',\n placeSelf: 'center start',\n boxSizing: 'border-box',\n placeContent: 'stretch',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '0 100%',\n preset: 'inherit',\n transition: 'padding',\n padding:\n '$block-padding $label-padding-right $label-padding-bottom $label-padding-left',\n },\n\n Description: {\n $: '>',\n gridArea: 'description',\n preset: {\n '': 't4',\n 'type=card | type=header': 't3',\n },\n placeSelf: 'center start',\n boxSizing: 'border-box',\n color: 'inherit',\n opacity: {\n '': 0.75,\n 'type=card | type=header': 1,\n },\n overflow: 'hidden',\n whiteSpace: {\n '': 'nowrap',\n 'type=card | type=header': 'normal',\n },\n textOverflow: 'ellipsis',\n width: 'initial 100% 100%',\n textAlign: 'left',\n padding:\n '0 $description-padding-right $description-padding-bottom $description-padding-left',\n },\n\n Prefix: {\n ...ADDITION_STYLES,\n gridArea: 'prefix',\n padding: {\n '': '$inline-padding left',\n 'has-icon': 0,\n },\n },\n\n Suffix: {\n ...ADDITION_STYLES,\n gridArea: 'suffix',\n padding: {\n '': '$inline-padding right',\n 'has-right-icon': 0,\n },\n },\n\n Actions: {\n $: '>',\n gridArea: 'actions',\n display: 'flex',\n gap: '1bw',\n placeItems: 'center',\n placeContent: 'end',\n placeSelf: 'stretch',\n padding: {\n '': '0 $side-padding',\n 'inside-wrapper & !actions-shown': 0,\n },\n boxSizing: 'border-box',\n height: 'min ($size - 2bw)',\n width: {\n '': 'fixed ($actions-width, 0px)',\n 'has-actions-content & !auto-hide-actions':\n 'max calc-size(max-content, size)',\n 'has-actions-content & auto-hide-actions & !preserve-actions-space':\n 'max 0px',\n 'has-actions-content & auto-hide-actions & (!preserve-actions-space & ((@interacted & !inside-wrapper) | (inside-wrapper & actions-shown)))':\n 'max calc-size(max-content, size)',\n 'has-actions-content & auto-hide-actions & preserve-actions-space':\n 'max calc-size(max-content, size)',\n },\n opacity: {\n '': 1,\n 'auto-hide-actions': 0,\n 'auto-hide-actions & ((@interacted & !inside-wrapper) | (inside-wrapper & actions-shown))': 1,\n },\n transition:\n 'width $transition ease-out, opacity $transition ease-out, padding $transition ease-out',\n interpolateSize: 'allow-keywords',\n\n // Size for the action buttons\n '$action-size': 'min(max((2x + 2bw), ($size - 1x - 2bw)), (3x - 2bw))',\n // Side padding for the button\n '$side-padding': '(($size - $action-size - 2bw) / 2)',\n },\n },\n variants: {\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 'default.item': DEFAULT_ITEM_STYLES,\n 'default.card': DEFAULT_CARD_STYLES,\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 'danger.item': DANGER_ITEM_STYLES,\n 'danger.card': DANGER_CARD_STYLES,\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 'success.item': SUCCESS_ITEM_STYLES,\n 'success.card': SUCCESS_CARD_STYLES,\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 'warning.item': WARNING_ITEM_STYLES,\n 'warning.card': WARNING_CARD_STYLES,\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 'note.item': NOTE_ITEM_STYLES,\n 'note.card': NOTE_CARD_STYLES,\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 'special.item': SPECIAL_ITEM_STYLES,\n },\n styleProps: CONTAINER_STYLES,\n});\n\nconst Item = <T extends HTMLElement = HTMLDivElement>(\n props: CubeItemProps,\n ref: ForwardedRef<T>,\n) => {\n let {\n children,\n size = 'medium',\n type = 'item',\n theme = 'default',\n mods,\n icon: iconProp,\n rightIcon: rightIconProp,\n prefix,\n suffix,\n description,\n descriptionPlacement,\n labelProps,\n descriptionProps,\n keyboardShortcutProps,\n styles,\n htmlType,\n isSelected,\n hotkeys,\n tooltip = true,\n isDisabled,\n style,\n loadingSlot = 'auto',\n isLoading = false,\n actions,\n autoHideActions = false,\n preserveActionsSpace = false,\n disableActionsFocus = false,\n shape,\n defaultTooltipPlacement = 'top',\n level = 3,\n highlight,\n highlightCaseSensitive = false,\n highlightStyles,\n insideWrapper = false,\n showActions = false,\n tokens,\n ...rest\n } = props;\n\n // Determine if Label will be rendered\n const hasLabel = !!(children || labelProps);\n\n // Set default descriptionPlacement based on type\n // For card/header types, use 'block' only when Label is rendered\n const finalDescriptionPlacement =\n descriptionPlacement ??\n ((type === 'card' || type === 'header') && hasLabel ? 'block' : 'inline');\n\n // Set default shape based on type\n const finalShape = shape ?? (type === 'card' ? 'card' : 'button');\n\n // Loading state makes the component disabled\n const finalIsDisabled =\n isDisabled === true || (isLoading && isDisabled !== false);\n\n // Validate type+theme combinations\n const STANDARD_THEMES = [\n 'default',\n 'success',\n 'danger',\n 'warning',\n 'note',\n 'special',\n ];\n const CARD_THEMES = ['default', 'success', 'danger', 'warning', 'note'];\n const HEADER_THEMES = ['default'];\n\n const isInvalidCombination =\n (type === 'header' && !HEADER_THEMES.includes(theme)) ||\n (type === 'card' && !CARD_THEMES.includes(theme)) ||\n (!['header', 'card'].includes(type) && !STANDARD_THEMES.includes(theme));\n\n useWarn(isInvalidCombination, {\n key: ['Item', 'invalid-type-theme', type, theme],\n args: [\n `Item: Invalid type+theme combination. type=\"${type}\" does not support theme=\"${theme}\".` +\n (type === 'header'\n ? ' The \"header\" type only supports theme: default.'\n : type === 'card'\n ? ' The \"card\" type only supports themes: default, success, danger, warning, note.'\n : ' Standard types support themes: default, success, danger, warning, note, special.'),\n ],\n });\n\n // Warn if link type is used with icons or loading state\n const hasLinkWithIcons = type === 'link' && (iconProp || rightIconProp);\n const hasLinkWithLoading = type === 'link' && isLoading;\n const hasLinkRestrictions = hasLinkWithIcons || hasLinkWithLoading;\n\n const linkRestrictionMessages: string[] = [];\n if (hasLinkWithIcons) {\n linkRestrictionMessages.push('icons (`icon` or `rightIcon` props)');\n }\n if (hasLinkWithLoading) {\n linkRestrictionMessages.push('loading state (`isLoading` prop)');\n }\n\n useWarn(hasLinkRestrictions, {\n key: ['Item', 'link-restrictions'],\n args: [\n `Item: The \"link\" type does not support ${linkRestrictionMessages.join(' or ')}. Remove these props when using type=\"link\".`,\n ],\n });\n\n // Determine if we should show a checkmark instead of icon\n const hasCheckmark = iconProp === 'checkmark';\n\n // Determine if size is custom (number or unrecognized string)\n const isCustomSize =\n typeof size === 'number' ||\n !(ITEM_SIZE_VALUES as readonly string[]).includes(size);\n const sizeTokenValue =\n typeof size === 'number' ? `${size}px` : isCustomSize ? size : undefined;\n\n // Base mods for icon resolution (without icon-dependent mods)\n const baseMods = useMemo<ItemMods>(\n () => ({\n disabled: finalIsDisabled,\n selected: isSelected === true,\n loading: isLoading,\n ...(!isCustomSize && { size: size as string }),\n type,\n theme,\n shape: finalShape,\n ...mods,\n }),\n [\n finalIsDisabled,\n isSelected,\n isLoading,\n size,\n isCustomSize,\n type,\n theme,\n finalShape,\n mods,\n ],\n );\n\n // Resolve dynamic icon props (skip resolution for 'checkmark' special value)\n const resolvedIcon = useMemo(() => {\n if (hasCheckmark) {\n return { content: null, hasSlot: true };\n }\n return resolveIcon(iconProp as DynamicIcon<ItemMods>, baseMods);\n }, [iconProp, baseMods, hasCheckmark]);\n\n const resolvedRightIcon = useMemo(\n () => resolveIcon(rightIconProp, baseMods),\n [rightIconProp, baseMods],\n );\n\n // Determine which slot to use for loading when \"auto\" is selected\n // Must be computed before hasIconSlot/hasRightIconSlot since they depend on it\n const resolvedLoadingSlot = useMemo(() => {\n if (loadingSlot !== 'auto') return loadingSlot;\n\n // Auto logic: prefer icon if present, then rightIcon, fallback to icon\n if (resolvedRightIcon.hasSlot && !resolvedIcon.hasSlot) return 'rightIcon';\n return 'icon'; // fallback\n }, [loadingSlot, resolvedIcon.hasSlot, resolvedRightIcon.hasSlot]);\n\n // Determine if icon slots should render (original slot OR loading state targets this slot)\n const hasIconSlot =\n resolvedIcon.hasSlot || (isLoading && resolvedLoadingSlot === 'icon');\n const hasRightIconSlot =\n resolvedRightIcon.hasSlot ||\n (isLoading && resolvedLoadingSlot === 'rightIcon');\n\n const showDescription = useMemo(() => {\n const copyProps = { ...descriptionProps };\n delete copyProps.id;\n return !!(description || Object.keys(copyProps).length > 0);\n }, [description, descriptionProps]);\n\n // Apply loading state to appropriate slots\n const finalIcon =\n isLoading && resolvedLoadingSlot === 'icon' ? (\n <LoadingIcon />\n ) : (\n resolvedIcon.content\n );\n const finalRightIcon =\n isLoading && resolvedLoadingSlot === 'rightIcon' ? (\n <LoadingIcon />\n ) : (\n resolvedRightIcon.content\n );\n\n // Generate stable keys for icon transitions based on icon type\n const iconKey = hasCheckmark\n ? 'checkmark'\n : isLoading && resolvedLoadingSlot === 'icon'\n ? 'loading'\n : isValidElement(finalIcon)\n ? (finalIcon.type as any)?.displayName ||\n (finalIcon.type as any)?.name ||\n 'icon'\n : finalIcon\n ? 'icon'\n : 'empty';\n\n const rightIconKey =\n isLoading && resolvedLoadingSlot === 'rightIcon'\n ? 'loading'\n : isValidElement(finalRightIcon)\n ? (finalRightIcon.type as any)?.displayName ||\n (finalRightIcon.type as any)?.name ||\n 'icon'\n : finalRightIcon\n ? 'icon'\n : 'empty';\n const finalPrefix =\n isLoading && resolvedLoadingSlot === 'prefix' ? <LoadingIcon /> : prefix;\n\n // Build final suffix: loading icon, custom suffix, or HotKeys hint\n const finalSuffix =\n isLoading && resolvedLoadingSlot === 'suffix' ? (\n <LoadingIcon />\n ) : (\n suffix ??\n (hotkeys ? (\n <HotKeys\n {...(keyboardShortcutProps as any)}\n type={type === 'primary' ? 'primary' : 'default'}\n styles={{ padding: '1x left', opacity: finalIsDisabled ? 0.5 : 1 }}\n >\n {hotkeys}\n </HotKeys>\n ) : undefined)\n );\n\n // Register global hotkey if provided\n useHotkeys(\n typeof hotkeys === 'string' ? hotkeys.toLowerCase() : '',\n () => {\n if (!hotkeys) return;\n if (finalIsDisabled) return;\n // Simulate a click on the element so all existing handlers run\n if (ref && typeof ref === 'object' && ref.current) {\n (ref.current as HTMLElement).click();\n }\n },\n {\n enableOnContentEditable: true,\n enabled: !!hotkeys,\n preventDefault: true,\n enableOnFormTags: true,\n },\n [hotkeys, finalIsDisabled],\n );\n\n const finalMods = useMemo<ItemMods>(() => {\n return {\n ...baseMods,\n 'has-icon': hasIconSlot,\n 'has-start-content': !!(hasIconSlot || finalPrefix),\n 'has-end-content': !!(hasRightIconSlot || finalSuffix || actions),\n 'has-right-icon': hasRightIconSlot,\n 'has-label': hasLabel,\n 'has-prefix': !!finalPrefix,\n 'has-suffix': !!finalSuffix,\n 'has-description': showDescription,\n 'has-actions': !!actions,\n 'has-actions-content': !!(actions && actions !== true),\n 'auto-hide-actions': autoHideActions === true,\n 'preserve-actions-space': preserveActionsSpace === true,\n 'inside-wrapper': insideWrapper,\n 'actions-shown': showActions && insideWrapper,\n checkmark: hasCheckmark,\n description: showDescription ? finalDescriptionPlacement : 'none',\n };\n }, [\n baseMods,\n hasIconSlot,\n hasRightIconSlot,\n finalPrefix,\n finalSuffix,\n showDescription,\n finalDescriptionPlacement,\n hasCheckmark,\n actions,\n autoHideActions,\n preserveActionsSpace,\n hasLabel,\n showActions,\n insideWrapper,\n ]);\n\n const {\n labelProps: finalLabelProps,\n labelRef,\n renderWithTooltip,\n } = useAutoTooltip({\n tooltip,\n children,\n labelProps,\n isDynamicLabel: !!actions,\n });\n\n // Process children with highlight if applicable\n const processedChildren = useMemo(() => {\n if (typeof children === 'string' && highlight) {\n return highlightText(\n children,\n highlight,\n highlightCaseSensitive,\n highlightStyles,\n );\n }\n return children;\n }, [children, highlight, highlightCaseSensitive, highlightStyles]);\n\n // Process description with highlight if applicable\n const processedDescription = useMemo(() => {\n if (typeof description === 'string' && highlight) {\n return highlightText(\n description,\n highlight,\n highlightCaseSensitive,\n highlightStyles,\n );\n }\n return description;\n }, [description, highlight, highlightCaseSensitive, highlightStyles]);\n\n // Render function that creates the item element\n const renderItemElement = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n // Use callback ref to merge multiple refs without calling hooks\n const handleRef = (element: HTMLElement | null) => {\n // Set the component's forwarded ref\n if (typeof ref === 'function') {\n ref(element as T | null);\n } else if (ref) {\n (ref as any).current = element;\n }\n // Set the tooltip ref if provided\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n };\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 item still renders.\n const effectiveType =\n theme === 'special' && type === 'outline-2' ? 'outline' : type;\n\n return (\n <ItemElement\n ref={handleRef}\n variant={\n theme && effectiveType\n ? (`${effectiveType === 'header' ? 'default' : theme}.${effectiveType === 'header' ? 'item' : effectiveType}` as ItemVariant)\n : undefined\n }\n disabled={finalIsDisabled}\n aria-disabled={finalIsDisabled}\n aria-selected={isSelected}\n mods={finalMods}\n styles={styles}\n tokens={{\n ...tokens,\n ...(sizeTokenValue ? { $size: sizeTokenValue } : {}),\n }}\n type={htmlType as any}\n {...mergeProps(rest, tooltipTriggerProps || {})}\n style={style}\n >\n {hasIconSlot && (\n <div data-element=\"Icon\">\n <IconSwitch noWrapper contentKey={iconKey}>\n {hasCheckmark ? <CheckIcon /> : finalIcon}\n </IconSwitch>\n </div>\n )}\n {finalPrefix && <div data-element=\"Prefix\">{finalPrefix}</div>}\n {children || labelProps\n ? (() => {\n const LabelTag =\n type === 'header' || type === 'card'\n ? (`h${level}` as const)\n : 'div';\n return (\n <LabelTag\n data-element=\"Label\"\n {...finalLabelProps}\n ref={labelRef}\n >\n {processedChildren}\n </LabelTag>\n );\n })()\n : null}\n {showDescription ? (\n <div data-element=\"Description\" {...descriptionProps}>\n {processedDescription}\n </div>\n ) : null}\n {finalSuffix && <div data-element=\"Suffix\">{finalSuffix}</div>}\n {hasRightIconSlot && (\n <div data-element=\"RightIcon\">\n <IconSwitch noWrapper contentKey={rightIconKey}>\n {finalRightIcon}\n </IconSwitch>\n </div>\n )}\n {actions && (\n <div data-element=\"Actions\" {...ACTIONS_EVENT_HANDLERS}>\n {actions !== true ? (\n <ItemActionProvider\n type={type}\n theme={theme}\n disableActionsFocus={disableActionsFocus}\n isDisabled={finalIsDisabled}\n >\n {actions}\n </ItemActionProvider>\n ) : null}\n </div>\n )}\n </ItemElement>\n );\n };\n\n return renderWithTooltip(renderItemElement, defaultTooltipPlacement);\n};\n\nconst _Item = Object.assign(forwardRef(Item), {\n Action: ItemAction,\n Badge: ItemBadge,\n});\n\nexport { _Item as Item };\n\n/**\n * @deprecated Use `Item` instead. This export will be removed in a future version.\n */\nexport { _Item as ItemBase };\nexport type { CubeItemProps as CubeItemBaseProps };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
4
4
  import { DANGER_CLEAR_STYLES, DANGER_OUTLINE_STYLES, DANGER_PRIMARY_STYLES, DEFAULT_CLEAR_STYLES, DEFAULT_OUTLINE_STYLES, DEFAULT_PRIMARY_STYLES, ITEM_ACTION_BASE_STYLES, SPECIAL_CLEAR_STYLES, SPECIAL_OUTLINE_STYLES, SPECIAL_PRIMARY_STYLES, SUCCESS_CLEAR_STYLES, SUCCESS_OUTLINE_STYLES, SUCCESS_PRIMARY_STYLES } from "../../../data/item-themes.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
3
3
  import { _Item } from "../Item/Item.js";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _Layout } from "./Layout.js";
3
3
  import { _LayoutContent } from "./LayoutContent.js";
4
4
  import { _LayoutBlock } from "./LayoutBlock.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { Alert } from "../Alert/Alert.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _LayoutContent } from "./LayoutContent.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _LayoutContainer } from "./LayoutContainer.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { LayoutContextReset } from "./LayoutContext.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { LayoutContextReset } from "./LayoutContext.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { createContext, useContext, useMemo, useRef, useState } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _LayoutContent } from "./LayoutContent.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _LayoutContent } from "./LayoutContent.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef, useMemo } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _LayoutContent } from "./LayoutContent.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useAutoTooltip } from "../use-auto-tooltip.js";
3
3
  import { SlashIcon } from "../../../icons/SlashIcon.js";
4
4
  import { Button } from "../../actions/Button/Button.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
4
4
  import { _Item } from "../Item/Item.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _LayoutContent } from "./LayoutContent.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { useCallback, useEffect, useRef, useState } from "react";
3
3
 
4
4
  //#region src/components/content/Layout/hooks/useTinyScrollbar.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { LayoutActionsContext, LayoutContextReset, LayoutPanelContext, LayoutRefsContext, LayoutStateContext, useLayoutActionsContext, useLayoutPanelContext, useLayoutRefsContext, useLayoutStateContext } from "./LayoutContext.js";
3
3
  import { _Layout } from "./Layout.js";
4
4
  import { _LayoutContent } from "./LayoutContent.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  //#region src/components/content/Layout/utils.ts
3
3
  /**
4
4
  * Clamps a size value within min/max constraints.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { _Text } from "./Text.js";
4
4
  import { CONTAINER_STYLES, TEXT_STYLES } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { CONTAINER_STYLES, filterBaseProps, keyframes, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { RendererPrism, ensureYamlSqlExtensions } from "./prismSetup.js";
3
3
  import { CONTAINER_STYLES, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { Prism as RendererPrism } from "prism-react-renderer";
3
3
 
4
4
  //#region src/components/content/PrismCode/prismSetup.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _PrismCode } from "../PrismCode/PrismCode.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { diffLines } from "diff";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps } from "../../../utils/react/mergeProps.js";
4
4
  import { wrapNodeIfPlain } from "../../../utils/react/wrapNodeIfPlain.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { Space } from "../../layout/Space.js";
3
3
  import { Grid } from "../../layout/Grid.js";
4
4
  import { Flow } from "../../layout/Flow.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _Item } from "../Item/Item.js";
3
3
  import { CloseIcon } from "../../../icons/CloseIcon.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useSlotProps } from "../../utils/react/Slots.js";
4
4
  import { BASE_STYLES, COLOR_STYLES, TEXT_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { TEXT_PROP_MAP, _Text } from "../Text.js";
4
4
  import { highlightText } from "../highlightText.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useSlotProps } from "../../utils/react/Slots.js";
4
4
  import { TEXT_PROP_MAP } from "./Text.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -62,6 +62,12 @@ function TreeNodeInner(props) {
62
62
  const handleCheckboxChange = useEvent(() => {
63
63
  onToggleChecked(String(node.key));
64
64
  });
65
+ const handleWrapperClick = useEvent((e) => {
66
+ e.stopPropagation();
67
+ if (isDisabled || data.isCheckboxDisabled) return;
68
+ if (e.target.closest("[data-qa=\"CheckboxWrapper\"]")) return;
69
+ onToggleChecked(String(node.key));
70
+ });
65
71
  const handleKeyDown = useEvent((e) => {
66
72
  if (e.key === " " && isRowCheckable && !isDisabled && !data.isCheckboxDisabled) {
67
73
  e.preventDefault();
@@ -135,7 +141,7 @@ function TreeNodeInner(props) {
135
141
  const checkboxNode = isRowCheckable ? /* @__PURE__ */ jsx(TreeNodeCheckboxWrapper, {
136
142
  "data-element": "Checkbox",
137
143
  role: "presentation",
138
- onClick: stopPropagation,
144
+ onClick: handleWrapperClick,
139
145
  onKeyDown: stopPropagation,
140
146
  children: /* @__PURE__ */ jsx(__Checkbox, {
141
147
  isSelected: isChecked,
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNode.js","names":["Menu","mergeProps","Checkbox","MenuTrigger"],"sources":["../../../../src/components/content/Tree/TreeNode.tsx"],"sourcesContent":["import { Children, memo, useMemo, useRef, useState } from 'react';\nimport { useHover, useTreeItem } from 'react-aria';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { DirectionIcon, LoadingIcon, MoreIcon } from '../../../icons';\nimport { mergeProps, mergeRefs } from '../../../utils/react';\nimport { CubeItemActionProps, ItemAction } from '../../actions/ItemAction';\nimport { CubeMenuProps, Menu, MenuTrigger } from '../../actions/Menu';\nimport { useContextMenu } from '../../actions/use-context-menu';\nimport { Checkbox } from '../../fields/Checkbox/Checkbox';\n\nimport {\n TreeNodeCheckboxWrapper,\n TreeNodeRow,\n TreeNodeToggle,\n TreeNodeTogglePlaceholder,\n TreeRowItem,\n} from './styled';\n\nimport type { Key, Node } from '@react-types/shared';\nimport type { Styles } from '@tenphi/tasty';\nimport type {\n CSSProperties,\n KeyboardEvent,\n ReactNode,\n Ref,\n SyntheticEvent,\n} from 'react';\nimport type { TreeState } from 'react-stately';\nimport type {\n CubeTreeNodeData,\n TreeContextMenu,\n TreeItemProps,\n TreeNodeState,\n} from './types';\n\nconst stopPropagation = (e: SyntheticEvent) => {\n e.stopPropagation();\n};\n\n/** Check whether a `menu` ReactNode actually contains anything. */\nfunction isMenuEmpty(menu: ReactNode): boolean {\n if (menu === null || menu === undefined || menu === false) return true;\n return Children.toArray(menu).length === 0;\n}\n\nexport interface TreeNodeProps {\n node: Node<CubeTreeNodeData>;\n /** The original `CubeTreeNodeData` for this row, looked up by key. */\n data: CubeTreeNodeData;\n state: TreeState<CubeTreeNodeData>;\n\n /** Whether the tree as a whole renders checkboxes. */\n isCheckable: boolean;\n /** Whether this row is currently expanded. */\n isExpanded: boolean;\n /** Whether the row is in an indeterminate (half-checked) state. */\n isIndeterminate: boolean;\n /** Whether the row is fully checked. */\n isChecked: boolean;\n /** Whether `loadData` is currently fetching this row's children. */\n isLoading: boolean;\n\n /** Toggle this row's checkbox (cascades). */\n onToggleChecked: (key: string) => void;\n\n /** Row size passed to the underlying Item. */\n size?: string;\n\n /** Per-node Item customization (static object or callback). */\n itemProps?:\n | TreeItemProps\n | ((data: CubeTreeNodeData, state: TreeNodeState) => TreeItemProps);\n\n /** Styles applied to the visible row (`TreeRowItem`). */\n rowStyles?: Styles;\n\n /** Inline style for virtualizer absolute positioning. */\n virtualStyle?: CSSProperties;\n /** Ref callback from `@tanstack/react-virtual` to measure row height. */\n virtualRef?: (element: HTMLElement | null) => void;\n /** Virtual index for `data-index` attribute. */\n virtualIndex?: number;\n\n /** Tree-wide menu default (resolved against `data.menu`). */\n menu?:\n | ReactNode\n | ((data: CubeTreeNodeData, state: TreeNodeState) => ReactNode | null);\n /** Tree-wide `contextMenu` default. */\n contextMenu?: TreeContextMenu;\n /** Tree-wide `onAction` callback. */\n onAction?: (action: string, key: Key) => void;\n /** Forwarded to every per-row `MenuTrigger`. */\n menuTriggerProps?: Partial<CubeItemActionProps>;\n /** Forwarded to every per-row `Menu`. */\n menuProps?: Partial<CubeMenuProps<object>>;\n}\n\nfunction TreeNodeInner(props: TreeNodeProps) {\n const {\n node,\n data,\n state,\n isCheckable,\n isExpanded,\n isIndeterminate,\n isChecked,\n isLoading,\n onToggleChecked,\n size,\n itemProps,\n rowStyles,\n virtualStyle,\n virtualRef,\n virtualIndex,\n menu: treeMenu,\n contextMenu: treeContextMenu,\n onAction: treeOnAction,\n menuTriggerProps,\n menuProps,\n } = props;\n\n const rowRef = useRef<HTMLDivElement>(null);\n\n const { rowProps, gridCellProps, expandButtonProps, isPressed } = useTreeItem(\n { node },\n state,\n rowRef,\n );\n\n const isDisabled = state.disabledKeys.has(node.key);\n const isSelected = state.selectionManager.isSelected(node.key);\n\n // `useTreeItem` doesn't track hover; we need it for the `hovered` mod.\n const { hoverProps, isHovered } = useHover({ isDisabled });\n // React Aria's treegrid uses roving tabindex, so no `data-focused`\n // attribute lands on the row — mirror it as a mod manually.\n const isFocused =\n state.selectionManager.isFocused &&\n state.selectionManager.focusedKey === node.key;\n // For lazy rows with no children yet, still render a toggle unless\n // explicitly marked as leaf.\n const isLeaf =\n data.isLeaf === true || (data.isLeaf !== false && !node.hasChildNodes);\n const isRowCheckable = isCheckable && data.isCheckable !== false;\n\n const nodeState: TreeNodeState = {\n isExpanded,\n isSelected,\n isChecked,\n isIndeterminate,\n isLeaf,\n };\n\n // ---- Menu resolution (per-node override > tree-level) --------------------\n\n const effectiveMenuChildren: ReactNode =\n data.menu === null\n ? null\n : data.menu !== undefined\n ? data.menu\n : typeof treeMenu === 'function'\n ? treeMenu(data, nodeState)\n : treeMenu ?? null;\n const hasMenu = !isMenuEmpty(effectiveMenuChildren);\n\n const effectiveContextMenu: TreeContextMenu =\n data.contextMenu ?? treeContextMenu ?? false;\n // The menu is exposed only when the consumer opts in via\n // `contextMenu`. When `contextMenu` is `false` (default) we render\n // nothing, even if `menu` is provided — this matches the plan and\n // keeps default rows visually clean.\n const menuExposed =\n hasMenu &&\n (effectiveContextMenu === true || effectiveContextMenu === 'context-only');\n const contextMenuOnly = effectiveContextMenu === 'context-only';\n\n // Controlled state for menu trigger (enables keyboard opening with Shift+F10)\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n const handleMenuAction = useEvent((action: Key) => {\n // Strip the \".$\" prefix that React adds via Children.toArray/map.\n const actionStr = String(action);\n const normalizedAction = actionStr.startsWith('.$')\n ? actionStr.slice(2)\n : actionStr;\n data.onAction?.(normalizedAction);\n treeOnAction?.(normalizedAction, node.key);\n // Forward to the consumer-supplied `menuProps.onAction` so users\n // who pass extra `Menu` props through `menuProps` still receive\n // the action stream alongside the tree-level callback.\n menuProps?.onAction?.(normalizedAction);\n });\n\n const rowContextMenu = useContextMenu<HTMLDivElement, CubeMenuProps<object>>(\n Menu,\n { placement: 'bottom start' },\n {\n ...menuProps,\n onAction: handleMenuAction,\n children: effectiveMenuChildren,\n },\n );\n\n // ---- Checkbox ------------------------------------------------------------\n\n const handleCheckboxChange = useEvent(() => {\n onToggleChecked(String(node.key));\n });\n\n // ---- Keyboard ------------------------------------------------------------\n\n // Composed keydown handler. Runs BEFORE `rowProps.onKeyDown` from\n // `useTreeItem` so we can short-circuit the default react-aria\n // behavior for our own shortcuts (Shift+F10 menu open, Space\n // checkbox toggle). Returns `true` when the event was handled and\n // react-aria's keydown must NOT run; returns `false` to chain to\n // react-aria's handler.\n const handleKeyDown = useEvent((e: KeyboardEvent) => {\n // Space toggles the checkbox first when checkable. We DON'T claim\n // the event (return `false`) so react-aria's onKeyDown still runs\n // afterwards and the focused row also selects — matching the\n // pre-refactor behavior when handlers were chained via\n // `mergeProps`. `preventDefault` is kept to suppress page scroll.\n if (\n e.key === ' ' &&\n isRowCheckable &&\n !isDisabled &&\n !data.isCheckboxDisabled\n ) {\n e.preventDefault();\n onToggleChecked(String(node.key));\n return false;\n }\n\n // Shift+F10 opens the row menu (standard accessibility shortcut).\n if (e.key === 'F10' && e.shiftKey && menuExposed) {\n e.preventDefault();\n e.stopPropagation();\n if (contextMenuOnly) {\n rowContextMenu.open();\n } else {\n setIsMenuOpen(true);\n }\n return true;\n }\n\n return false;\n });\n\n // Wrapper that delegates to react-aria's default keydown only when\n // our handler did not claim the event. Replaces (rather than\n // chains with) `rowProps.onKeyDown` so the order of handlers is\n // strictly: our shortcuts → react-aria default.\n const composedKeyDown = useEvent((e: KeyboardEvent<HTMLDivElement>) => {\n if (handleKeyDown(e)) return;\n rowProps.onKeyDown?.(e as unknown as globalThis.KeyboardEvent);\n });\n\n // ---- Mods ----------------------------------------------------------------\n\n const sharedMods = useMemo(\n () => ({\n checked: isChecked,\n indeterminate: isIndeterminate,\n expanded: isExpanded,\n loading: isLoading,\n leaf: isLeaf,\n 'has-checkbox': isRowCheckable,\n 'has-menu': menuExposed,\n }),\n [\n isChecked,\n isIndeterminate,\n isExpanded,\n isLoading,\n isLeaf,\n isRowCheckable,\n menuExposed,\n ],\n );\n\n const rowMods = useMemo(\n () => ({ ...sharedMods, disabled: isDisabled }),\n [sharedMods, isDisabled],\n );\n\n const itemMods = useMemo(\n () => ({\n ...sharedMods,\n focused: isFocused,\n hovered: isHovered,\n pressed: isPressed,\n }),\n [sharedMods, isFocused, isHovered, isPressed],\n );\n\n const rowStyle = useMemo<CSSProperties>(\n () => ({\n ['--tree-level' as keyof CSSProperties]: String(node.level ?? 0),\n ...virtualStyle,\n }),\n [node.level, virtualStyle],\n );\n\n // Only emit `aria-checked` when the tree is in checkable mode.\n const ariaChecked: 'mixed' | 'true' | 'false' | undefined = isRowCheckable\n ? isIndeterminate\n ? 'mixed'\n : isChecked\n ? 'true'\n : 'false'\n : undefined;\n\n // ---- Compose row props ---------------------------------------------------\n\n // Merge react-aria + hover props but EXCLUDE `onKeyDown` from the\n // chain — `composedKeyDown` already wraps `rowProps.onKeyDown` and\n // must run first so our Shift+F10 / Space-checkbox shortcuts can\n // short-circuit the default react-aria behavior.\n const finalRowProps = {\n ...mergeProps(rowProps, hoverProps),\n 'aria-checked': ariaChecked,\n onKeyDown: composedKeyDown,\n };\n\n // ---- Toggle (chevron) and checkbox slots --------------------------------\n\n // Leaf rows get a placeholder so sibling indents align.\n const toggleNode = isLeaf ? (\n <TreeNodeTogglePlaceholder aria-hidden data-element=\"Toggle\" />\n ) : (\n <TreeNodeToggle {...expandButtonProps} tabIndex={-1} data-element=\"Toggle\">\n {isLoading ? (\n <LoadingIcon />\n ) : (\n <DirectionIcon to={isExpanded ? 'bottom' : 'right'} />\n )}\n </TreeNodeToggle>\n );\n\n const checkboxNode = isRowCheckable ? (\n <TreeNodeCheckboxWrapper\n data-element=\"Checkbox\"\n role=\"presentation\"\n onClick={stopPropagation}\n onKeyDown={stopPropagation}\n >\n <Checkbox\n isSelected={isChecked}\n isIndeterminate={isIndeterminate}\n isDisabled={isDisabled || data.isCheckboxDisabled}\n aria-label={\n typeof data.title === 'string' ? data.title : String(node.key)\n }\n // @ts-expect-error AriaCheckboxProps loses `onChange` where InputDOMProps overlaps (react-types).\n onChange={handleCheckboxChange}\n />\n </TreeNodeCheckboxWrapper>\n ) : null;\n\n // ---- Resolve user-supplied per-node Item props --------------------------\n\n const resolvedItemProps =\n typeof itemProps === 'function' ? itemProps(data, nodeState) : itemProps;\n const {\n prefix: userPrefix,\n actions: userActions,\n ...restUserProps\n } = resolvedItemProps ?? {};\n\n const composedPrefix =\n checkboxNode || userPrefix ? (\n <>\n {checkboxNode}\n {userPrefix}\n </>\n ) : null;\n\n // ---- Built-in overflow `⋮` action ---------------------------------------\n\n const menuAction =\n menuExposed && !contextMenuOnly ? (\n <MenuTrigger isOpen={isMenuOpen} onOpenChange={setIsMenuOpen}>\n <ItemAction\n tabIndex={-1}\n icon={<MoreIcon />}\n aria-label=\"Actions\"\n {...menuTriggerProps}\n />\n <Menu {...menuProps} onAction={handleMenuAction}>\n {effectiveMenuChildren}\n </Menu>\n </MenuTrigger>\n ) : null;\n\n // Compose with user-supplied actions (user actions render first).\n const composedActions =\n userActions || menuAction ? (\n <>\n {userActions}\n {menuAction}\n </>\n ) : undefined;\n\n // ---- Refs / context-menu wiring -----------------------------------------\n\n // When the context menu is enabled for this row, attach the hook's\n // `targetRef` to the row so right-clicks land on the correct anchor.\n const refs = useMemo(() => {\n const list: Ref<HTMLDivElement>[] = [rowRef];\n if (virtualRef) list.push(virtualRef);\n if (menuExposed) list.push(rowContextMenu.targetRef);\n return mergeRefs(...list);\n }, [virtualRef, menuExposed, rowContextMenu.targetRef]);\n\n return (\n <TreeNodeRow\n {...finalRowProps}\n ref={refs}\n mods={rowMods}\n style={rowStyle}\n data-element=\"Row\"\n data-qa-key={String(node.key)}\n data-index={virtualIndex}\n >\n <TreeRowItem\n {...gridCellProps}\n {...restUserProps}\n size={size}\n isSelected={isSelected}\n isDisabled={isDisabled}\n mods={itemMods}\n icon={toggleNode}\n prefix={composedPrefix}\n actions={composedActions}\n styles={rowStyles}\n >\n {data.title}\n </TreeRowItem>\n {menuExposed && rowContextMenu.rendered}\n </TreeNodeRow>\n );\n}\n\nexport const TreeNode = memo(TreeNodeInner);\n"],"mappings":"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"}
1
+ {"version":3,"file":"TreeNode.js","names":["Menu","mergeProps","Checkbox","MenuTrigger"],"sources":["../../../../src/components/content/Tree/TreeNode.tsx"],"sourcesContent":["import { Children, memo, useMemo, useRef, useState } from 'react';\nimport { useHover, useTreeItem } from 'react-aria';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { DirectionIcon, LoadingIcon, MoreIcon } from '../../../icons';\nimport { mergeProps, mergeRefs } from '../../../utils/react';\nimport { CubeItemActionProps, ItemAction } from '../../actions/ItemAction';\nimport { CubeMenuProps, Menu, MenuTrigger } from '../../actions/Menu';\nimport { useContextMenu } from '../../actions/use-context-menu';\nimport { Checkbox } from '../../fields/Checkbox/Checkbox';\n\nimport {\n TreeNodeCheckboxWrapper,\n TreeNodeRow,\n TreeNodeToggle,\n TreeNodeTogglePlaceholder,\n TreeRowItem,\n} from './styled';\n\nimport type { Key, Node } from '@react-types/shared';\nimport type { Styles } from '@tenphi/tasty';\nimport type {\n CSSProperties,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n Ref,\n SyntheticEvent,\n} from 'react';\nimport type { TreeState } from 'react-stately';\nimport type {\n CubeTreeNodeData,\n TreeContextMenu,\n TreeItemProps,\n TreeNodeState,\n} from './types';\n\nconst stopPropagation = (e: SyntheticEvent) => {\n e.stopPropagation();\n};\n\n/** Check whether a `menu` ReactNode actually contains anything. */\nfunction isMenuEmpty(menu: ReactNode): boolean {\n if (menu === null || menu === undefined || menu === false) return true;\n return Children.toArray(menu).length === 0;\n}\n\nexport interface TreeNodeProps {\n node: Node<CubeTreeNodeData>;\n /** The original `CubeTreeNodeData` for this row, looked up by key. */\n data: CubeTreeNodeData;\n state: TreeState<CubeTreeNodeData>;\n\n /** Whether the tree as a whole renders checkboxes. */\n isCheckable: boolean;\n /** Whether this row is currently expanded. */\n isExpanded: boolean;\n /** Whether the row is in an indeterminate (half-checked) state. */\n isIndeterminate: boolean;\n /** Whether the row is fully checked. */\n isChecked: boolean;\n /** Whether `loadData` is currently fetching this row's children. */\n isLoading: boolean;\n\n /** Toggle this row's checkbox (cascades). */\n onToggleChecked: (key: string) => void;\n\n /** Row size passed to the underlying Item. */\n size?: string;\n\n /** Per-node Item customization (static object or callback). */\n itemProps?:\n | TreeItemProps\n | ((data: CubeTreeNodeData, state: TreeNodeState) => TreeItemProps);\n\n /** Styles applied to the visible row (`TreeRowItem`). */\n rowStyles?: Styles;\n\n /** Inline style for virtualizer absolute positioning. */\n virtualStyle?: CSSProperties;\n /** Ref callback from `@tanstack/react-virtual` to measure row height. */\n virtualRef?: (element: HTMLElement | null) => void;\n /** Virtual index for `data-index` attribute. */\n virtualIndex?: number;\n\n /** Tree-wide menu default (resolved against `data.menu`). */\n menu?:\n | ReactNode\n | ((data: CubeTreeNodeData, state: TreeNodeState) => ReactNode | null);\n /** Tree-wide `contextMenu` default. */\n contextMenu?: TreeContextMenu;\n /** Tree-wide `onAction` callback. */\n onAction?: (action: string, key: Key) => void;\n /** Forwarded to every per-row `MenuTrigger`. */\n menuTriggerProps?: Partial<CubeItemActionProps>;\n /** Forwarded to every per-row `Menu`. */\n menuProps?: Partial<CubeMenuProps<object>>;\n}\n\nfunction TreeNodeInner(props: TreeNodeProps) {\n const {\n node,\n data,\n state,\n isCheckable,\n isExpanded,\n isIndeterminate,\n isChecked,\n isLoading,\n onToggleChecked,\n size,\n itemProps,\n rowStyles,\n virtualStyle,\n virtualRef,\n virtualIndex,\n menu: treeMenu,\n contextMenu: treeContextMenu,\n onAction: treeOnAction,\n menuTriggerProps,\n menuProps,\n } = props;\n\n const rowRef = useRef<HTMLDivElement>(null);\n\n const { rowProps, gridCellProps, expandButtonProps, isPressed } = useTreeItem(\n { node },\n state,\n rowRef,\n );\n\n const isDisabled = state.disabledKeys.has(node.key);\n const isSelected = state.selectionManager.isSelected(node.key);\n\n // `useTreeItem` doesn't track hover; we need it for the `hovered` mod.\n const { hoverProps, isHovered } = useHover({ isDisabled });\n // React Aria's treegrid uses roving tabindex, so no `data-focused`\n // attribute lands on the row — mirror it as a mod manually.\n const isFocused =\n state.selectionManager.isFocused &&\n state.selectionManager.focusedKey === node.key;\n // For lazy rows with no children yet, still render a toggle unless\n // explicitly marked as leaf.\n const isLeaf =\n data.isLeaf === true || (data.isLeaf !== false && !node.hasChildNodes);\n const isRowCheckable = isCheckable && data.isCheckable !== false;\n\n const nodeState: TreeNodeState = {\n isExpanded,\n isSelected,\n isChecked,\n isIndeterminate,\n isLeaf,\n };\n\n // ---- Menu resolution (per-node override > tree-level) --------------------\n\n const effectiveMenuChildren: ReactNode =\n data.menu === null\n ? null\n : data.menu !== undefined\n ? data.menu\n : typeof treeMenu === 'function'\n ? treeMenu(data, nodeState)\n : treeMenu ?? null;\n const hasMenu = !isMenuEmpty(effectiveMenuChildren);\n\n const effectiveContextMenu: TreeContextMenu =\n data.contextMenu ?? treeContextMenu ?? false;\n // The menu is exposed only when the consumer opts in via\n // `contextMenu`. When `contextMenu` is `false` (default) we render\n // nothing, even if `menu` is provided — this matches the plan and\n // keeps default rows visually clean.\n const menuExposed =\n hasMenu &&\n (effectiveContextMenu === true || effectiveContextMenu === 'context-only');\n const contextMenuOnly = effectiveContextMenu === 'context-only';\n\n // Controlled state for menu trigger (enables keyboard opening with Shift+F10)\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n const handleMenuAction = useEvent((action: Key) => {\n // Strip the \".$\" prefix that React adds via Children.toArray/map.\n const actionStr = String(action);\n const normalizedAction = actionStr.startsWith('.$')\n ? actionStr.slice(2)\n : actionStr;\n data.onAction?.(normalizedAction);\n treeOnAction?.(normalizedAction, node.key);\n // Forward to the consumer-supplied `menuProps.onAction` so users\n // who pass extra `Menu` props through `menuProps` still receive\n // the action stream alongside the tree-level callback.\n menuProps?.onAction?.(normalizedAction);\n });\n\n const rowContextMenu = useContextMenu<HTMLDivElement, CubeMenuProps<object>>(\n Menu,\n { placement: 'bottom start' },\n {\n ...menuProps,\n onAction: handleMenuAction,\n children: effectiveMenuChildren,\n },\n );\n\n // ---- Checkbox ------------------------------------------------------------\n\n const handleCheckboxChange = useEvent(() => {\n onToggleChecked(String(node.key));\n });\n\n const handleWrapperClick = useEvent((e: MouseEvent<HTMLElement>) => {\n e.stopPropagation();\n if (isDisabled || data.isCheckboxDisabled) return;\n // The inner <Checkbox> label toggles on direct click; skip to avoid a double toggle.\n if ((e.target as HTMLElement).closest('[data-qa=\"CheckboxWrapper\"]'))\n return;\n onToggleChecked(String(node.key));\n });\n\n // ---- Keyboard ------------------------------------------------------------\n\n // Composed keydown handler. Runs BEFORE `rowProps.onKeyDown` from\n // `useTreeItem` so we can short-circuit the default react-aria\n // behavior for our own shortcuts (Shift+F10 menu open, Space\n // checkbox toggle). Returns `true` when the event was handled and\n // react-aria's keydown must NOT run; returns `false` to chain to\n // react-aria's handler.\n const handleKeyDown = useEvent((e: KeyboardEvent) => {\n // Space toggles the checkbox first when checkable. We DON'T claim\n // the event (return `false`) so react-aria's onKeyDown still runs\n // afterwards and the focused row also selects — matching the\n // pre-refactor behavior when handlers were chained via\n // `mergeProps`. `preventDefault` is kept to suppress page scroll.\n if (\n e.key === ' ' &&\n isRowCheckable &&\n !isDisabled &&\n !data.isCheckboxDisabled\n ) {\n e.preventDefault();\n onToggleChecked(String(node.key));\n return false;\n }\n\n // Shift+F10 opens the row menu (standard accessibility shortcut).\n if (e.key === 'F10' && e.shiftKey && menuExposed) {\n e.preventDefault();\n e.stopPropagation();\n if (contextMenuOnly) {\n rowContextMenu.open();\n } else {\n setIsMenuOpen(true);\n }\n return true;\n }\n\n return false;\n });\n\n // Wrapper that delegates to react-aria's default keydown only when\n // our handler did not claim the event. Replaces (rather than\n // chains with) `rowProps.onKeyDown` so the order of handlers is\n // strictly: our shortcuts → react-aria default.\n const composedKeyDown = useEvent((e: KeyboardEvent<HTMLDivElement>) => {\n if (handleKeyDown(e)) return;\n rowProps.onKeyDown?.(e as unknown as globalThis.KeyboardEvent);\n });\n\n // ---- Mods ----------------------------------------------------------------\n\n const sharedMods = useMemo(\n () => ({\n checked: isChecked,\n indeterminate: isIndeterminate,\n expanded: isExpanded,\n loading: isLoading,\n leaf: isLeaf,\n 'has-checkbox': isRowCheckable,\n 'has-menu': menuExposed,\n }),\n [\n isChecked,\n isIndeterminate,\n isExpanded,\n isLoading,\n isLeaf,\n isRowCheckable,\n menuExposed,\n ],\n );\n\n const rowMods = useMemo(\n () => ({ ...sharedMods, disabled: isDisabled }),\n [sharedMods, isDisabled],\n );\n\n const itemMods = useMemo(\n () => ({\n ...sharedMods,\n focused: isFocused,\n hovered: isHovered,\n pressed: isPressed,\n }),\n [sharedMods, isFocused, isHovered, isPressed],\n );\n\n const rowStyle = useMemo<CSSProperties>(\n () => ({\n ['--tree-level' as keyof CSSProperties]: String(node.level ?? 0),\n ...virtualStyle,\n }),\n [node.level, virtualStyle],\n );\n\n // Only emit `aria-checked` when the tree is in checkable mode.\n const ariaChecked: 'mixed' | 'true' | 'false' | undefined = isRowCheckable\n ? isIndeterminate\n ? 'mixed'\n : isChecked\n ? 'true'\n : 'false'\n : undefined;\n\n // ---- Compose row props ---------------------------------------------------\n\n // Merge react-aria + hover props but EXCLUDE `onKeyDown` from the\n // chain — `composedKeyDown` already wraps `rowProps.onKeyDown` and\n // must run first so our Shift+F10 / Space-checkbox shortcuts can\n // short-circuit the default react-aria behavior.\n const finalRowProps = {\n ...mergeProps(rowProps, hoverProps),\n 'aria-checked': ariaChecked,\n onKeyDown: composedKeyDown,\n };\n\n // ---- Toggle (chevron) and checkbox slots --------------------------------\n\n // Leaf rows get a placeholder so sibling indents align.\n const toggleNode = isLeaf ? (\n <TreeNodeTogglePlaceholder aria-hidden data-element=\"Toggle\" />\n ) : (\n <TreeNodeToggle {...expandButtonProps} tabIndex={-1} data-element=\"Toggle\">\n {isLoading ? (\n <LoadingIcon />\n ) : (\n <DirectionIcon to={isExpanded ? 'bottom' : 'right'} />\n )}\n </TreeNodeToggle>\n );\n\n const checkboxNode = isRowCheckable ? (\n <TreeNodeCheckboxWrapper\n data-element=\"Checkbox\"\n role=\"presentation\"\n onClick={handleWrapperClick}\n onKeyDown={stopPropagation}\n >\n <Checkbox\n isSelected={isChecked}\n isIndeterminate={isIndeterminate}\n isDisabled={isDisabled || data.isCheckboxDisabled}\n aria-label={\n typeof data.title === 'string' ? data.title : String(node.key)\n }\n // @ts-expect-error AriaCheckboxProps loses `onChange` where InputDOMProps overlaps (react-types).\n onChange={handleCheckboxChange}\n />\n </TreeNodeCheckboxWrapper>\n ) : null;\n\n // ---- Resolve user-supplied per-node Item props --------------------------\n\n const resolvedItemProps =\n typeof itemProps === 'function' ? itemProps(data, nodeState) : itemProps;\n const {\n prefix: userPrefix,\n actions: userActions,\n ...restUserProps\n } = resolvedItemProps ?? {};\n\n const composedPrefix =\n checkboxNode || userPrefix ? (\n <>\n {checkboxNode}\n {userPrefix}\n </>\n ) : null;\n\n // ---- Built-in overflow `⋮` action ---------------------------------------\n\n const menuAction =\n menuExposed && !contextMenuOnly ? (\n <MenuTrigger isOpen={isMenuOpen} onOpenChange={setIsMenuOpen}>\n <ItemAction\n tabIndex={-1}\n icon={<MoreIcon />}\n aria-label=\"Actions\"\n {...menuTriggerProps}\n />\n <Menu {...menuProps} onAction={handleMenuAction}>\n {effectiveMenuChildren}\n </Menu>\n </MenuTrigger>\n ) : null;\n\n // Compose with user-supplied actions (user actions render first).\n const composedActions =\n userActions || menuAction ? (\n <>\n {userActions}\n {menuAction}\n </>\n ) : undefined;\n\n // ---- Refs / context-menu wiring -----------------------------------------\n\n // When the context menu is enabled for this row, attach the hook's\n // `targetRef` to the row so right-clicks land on the correct anchor.\n const refs = useMemo(() => {\n const list: Ref<HTMLDivElement>[] = [rowRef];\n if (virtualRef) list.push(virtualRef);\n if (menuExposed) list.push(rowContextMenu.targetRef);\n return mergeRefs(...list);\n }, [virtualRef, menuExposed, rowContextMenu.targetRef]);\n\n return (\n <TreeNodeRow\n {...finalRowProps}\n ref={refs}\n mods={rowMods}\n style={rowStyle}\n data-element=\"Row\"\n data-qa-key={String(node.key)}\n data-index={virtualIndex}\n >\n <TreeRowItem\n {...gridCellProps}\n {...restUserProps}\n size={size}\n isSelected={isSelected}\n isDisabled={isDisabled}\n mods={itemMods}\n icon={toggleNode}\n prefix={composedPrefix}\n actions={composedActions}\n styles={rowStyles}\n >\n {data.title}\n </TreeRowItem>\n {menuExposed && rowContextMenu.rendered}\n </TreeNodeRow>\n );\n}\n\nexport const TreeNode = memo(TreeNodeInner);\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.142.9 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.143.0 | Cube Dev Team */
2
2
  import { _Item } from "../Item/Item.js";
3
3
  import { Action } from "../../actions/Action/Action.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -130,6 +130,7 @@ const TreeNodeCheckboxWrapper = tasty({
130
130
  display: "grid",
131
131
  placeItems: "center",
132
132
  placeContent: "center",
133
+ placeSelf: "stretch",
133
134
  padding: "0 1x"
134
135
  }
135
136
  });