@cube-dev/ui-kit 0.128.0 → 0.130.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 (445) hide show
  1. package/dist/CHANGELOG.md +51 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.js +2 -2
  20. package/dist/components/actions/Button/Button.js.map +1 -1
  21. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  22. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  23. package/dist/components/actions/ButtonSplit/context.js +1 -1
  24. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  25. package/dist/components/actions/CommandMenu/styled.js +1 -1
  26. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  27. package/dist/components/actions/ItemActionContext.js +1 -1
  28. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  29. package/dist/components/actions/Link/Link.js +1 -1
  30. package/dist/components/actions/Menu/Menu.js +1 -1
  31. package/dist/components/actions/Menu/MenuItem.js +1 -1
  32. package/dist/components/actions/Menu/MenuSection.js +1 -1
  33. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  36. package/dist/components/actions/Menu/context.js +1 -1
  37. package/dist/components/actions/Menu/styled.js +1 -1
  38. package/dist/components/actions/index.js +1 -1
  39. package/dist/components/actions/use-action.js +1 -1
  40. package/dist/components/actions/use-anchored-menu.js +1 -1
  41. package/dist/components/actions/use-context-menu.js +1 -1
  42. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  43. package/dist/components/content/Alert/Alert.js +1 -1
  44. package/dist/components/content/Alert/use-alert.js +1 -1
  45. package/dist/components/content/Avatar/Avatar.js +1 -1
  46. package/dist/components/content/Badge/Badge.js +1 -1
  47. package/dist/components/content/Card/Card.js +1 -1
  48. package/dist/components/content/Content.js +1 -1
  49. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  50. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  51. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  52. package/dist/components/content/Divider.js +1 -1
  53. package/dist/components/content/Footer.js +1 -1
  54. package/dist/components/content/Header.js +1 -1
  55. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  56. package/dist/components/content/Item/Item.js +1 -1
  57. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  58. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  59. package/dist/components/content/Layout/GridLayout.js +1 -1
  60. package/dist/components/content/Layout/Layout.js +1 -1
  61. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  62. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  63. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  64. package/dist/components/content/Layout/LayoutContent.js +1 -1
  65. package/dist/components/content/Layout/LayoutContext.js +1 -1
  66. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  67. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  68. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  69. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  70. package/dist/components/content/Layout/LayoutPane.js +1 -1
  71. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  72. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  74. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  75. package/dist/components/content/Layout/index.js +1 -1
  76. package/dist/components/content/Layout/utils.js +1 -1
  77. package/dist/components/content/Paragraph.js +1 -1
  78. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  79. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  80. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  81. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  82. package/dist/components/content/Result/Result.js +1 -1
  83. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  84. package/dist/components/content/Tag/Tag.js +1 -1
  85. package/dist/components/content/Text.js +1 -1
  86. package/dist/components/content/TextItem/TextItem.js +1 -1
  87. package/dist/components/content/Title.js +1 -1
  88. package/dist/components/content/Tree/Tree.d.ts +27 -0
  89. package/dist/components/content/Tree/Tree.js +308 -0
  90. package/dist/components/content/Tree/Tree.js.map +1 -0
  91. package/dist/components/content/Tree/TreeNode.js +132 -0
  92. package/dist/components/content/Tree/TreeNode.js.map +1 -0
  93. package/dist/components/content/Tree/index.d.ts +3 -0
  94. package/dist/components/content/Tree/styled.js +145 -0
  95. package/dist/components/content/Tree/styled.js.map +1 -0
  96. package/dist/components/content/Tree/tree-index.js +26 -0
  97. package/dist/components/content/Tree/tree-index.js.map +1 -0
  98. package/dist/components/content/Tree/types.d.ts +174 -0
  99. package/dist/components/content/Tree/use-checkbox-tree.js +231 -0
  100. package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -0
  101. package/dist/components/content/Tree/use-load-data.js +75 -0
  102. package/dist/components/content/Tree/use-load-data.js.map +1 -0
  103. package/dist/components/content/highlightText.js +1 -1
  104. package/dist/components/content/use-auto-tooltip.js +1 -1
  105. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  106. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  107. package/dist/components/fields/Checkbox/context.js +1 -1
  108. package/dist/components/fields/ComboBox/ComboBox.js +2 -8
  109. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  110. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  111. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  112. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  113. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  114. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  115. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  116. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  117. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  118. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  119. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  120. package/dist/components/fields/DatePicker/intl.js +1 -1
  121. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  122. package/dist/components/fields/DatePicker/props.js +1 -1
  123. package/dist/components/fields/DatePicker/utils.js +1 -1
  124. package/dist/components/fields/FileInput/FileInput.js +1 -1
  125. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  126. package/dist/components/fields/FilterPicker/FilterPicker.js +3 -11
  127. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  128. package/dist/components/fields/Input/Input.js +1 -1
  129. package/dist/components/fields/ListBox/ListBox.js +1 -1
  130. package/dist/components/fields/NumberInput/NumberInput.js +2 -2
  131. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  132. package/dist/components/fields/PasswordInput/PasswordInput.js +2 -2
  133. package/dist/components/fields/Picker/Picker.js +2 -11
  134. package/dist/components/fields/Picker/Picker.js.map +1 -1
  135. package/dist/components/fields/RadioGroup/Radio.js +2 -2
  136. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  137. package/dist/components/fields/RadioGroup/context.js +1 -1
  138. package/dist/components/fields/SearchInput/SearchInput.js +2 -2
  139. package/dist/components/fields/Select/Select.d.ts +0 -2
  140. package/dist/components/fields/Select/Select.js +3 -11
  141. package/dist/components/fields/Select/Select.js.map +1 -1
  142. package/dist/components/fields/Slider/Gradation.js +1 -1
  143. package/dist/components/fields/Slider/HueSlider.js +1 -1
  144. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  145. package/dist/components/fields/Slider/Slider.js +1 -1
  146. package/dist/components/fields/Slider/SliderBase.js +1 -1
  147. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  148. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  149. package/dist/components/fields/Slider/elements.js +1 -1
  150. package/dist/components/fields/Slider/index.js +1 -1
  151. package/dist/components/fields/Switch/Switch.js +1 -1
  152. package/dist/components/fields/TextArea/TextArea.js +2 -2
  153. package/dist/components/fields/TextInput/TextInput.js +2 -2
  154. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  155. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  156. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  157. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  158. package/dist/components/form/Form/Field.js +1 -1
  159. package/dist/components/form/Form/Form.js +1 -1
  160. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  161. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  162. package/dist/components/form/Form/SubmitError.js +1 -1
  163. package/dist/components/form/Form/index.js +1 -1
  164. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  165. package/dist/components/form/Form/use-field/use-field.js +1 -1
  166. package/dist/components/form/Form/use-form.js +1 -1
  167. package/dist/components/form/Form/validation.js +1 -1
  168. package/dist/components/form/Label.js +1 -1
  169. package/dist/components/form/wrapper.js +1 -1
  170. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +5 -4
  171. package/dist/components/helpers/DisplayTransition/DisplayTransition.js.map +1 -1
  172. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  173. package/dist/components/layout/Flex.js +1 -1
  174. package/dist/components/layout/Flow.js +1 -1
  175. package/dist/components/layout/Grid.js +1 -1
  176. package/dist/components/layout/Panel.js +1 -1
  177. package/dist/components/layout/Prefix.js +1 -1
  178. package/dist/components/layout/ResizablePanel.js +1 -1
  179. package/dist/components/layout/Space.js +1 -1
  180. package/dist/components/layout/Suffix.js +1 -1
  181. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  182. package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
  183. package/dist/components/navigation/Tabs/TabButton.js +28 -14
  184. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  185. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  186. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  187. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  188. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  189. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  190. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  191. package/dist/components/navigation/Tabs/styled.js +1 -1
  192. package/dist/components/navigation/Tabs/types.js +1 -1
  193. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  194. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  195. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  196. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  197. package/dist/components/other/Calendar/Calendar.js +1 -1
  198. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  199. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  200. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  201. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  202. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  203. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  204. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  205. package/dist/components/overlays/Dialog/Dialog.js +4 -18
  206. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  207. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  208. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  209. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -2
  210. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  211. package/dist/components/overlays/Dialog/context.js +1 -1
  212. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  213. package/dist/components/overlays/Modal/Modal.js +7 -7
  214. package/dist/components/overlays/Modal/Modal.js.map +1 -1
  215. package/dist/components/overlays/Modal/OpenTransitionContext.js +12 -0
  216. package/dist/components/overlays/Modal/OpenTransitionContext.js.map +1 -0
  217. package/dist/components/overlays/Modal/Overlay.js +48 -21
  218. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  219. package/dist/components/overlays/Modal/Popover.js +10 -14
  220. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  221. package/dist/components/overlays/Modal/Tray.js +7 -7
  222. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  223. package/dist/components/overlays/Modal/Underlay.js +1 -1
  224. package/dist/components/overlays/Modal/types.d.ts +1 -1
  225. package/dist/components/overlays/Notifications/Notification.js +1 -1
  226. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  227. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  228. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  229. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  230. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  231. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  232. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  233. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  234. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  235. package/dist/components/overlays/Notifications/index.js +1 -1
  236. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  237. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  238. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  239. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  240. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  241. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  242. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  243. package/dist/components/overlays/Toast/index.js +1 -1
  244. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  245. package/dist/components/overlays/Toast/useToast.js +1 -1
  246. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  247. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  248. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  249. package/dist/components/overlays/Tooltip/context.js +1 -1
  250. package/dist/components/portal/Portal.js +1 -1
  251. package/dist/components/portal/PortalProvider.js +1 -1
  252. package/dist/components/portal/usePortal.js +1 -1
  253. package/dist/components/shared/InvalidIcon.js +1 -1
  254. package/dist/components/shared/ValidIcon.js +1 -1
  255. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  256. package/dist/components/status/Spin/Cube.js +1 -1
  257. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  258. package/dist/components/status/Spin/Spin.js +1 -1
  259. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  260. package/dist/data/item-themes.js +1 -1
  261. package/dist/data/themes.js +1 -1
  262. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  263. package/dist/icons/AdjustmentsIcon.js +1 -1
  264. package/dist/icons/AiIcon.js +1 -1
  265. package/dist/icons/AreaChartIcon.js +1 -1
  266. package/dist/icons/BackwardIcon.js +1 -1
  267. package/dist/icons/BarChartIcon.js +1 -1
  268. package/dist/icons/BellFilledIcon.js +1 -1
  269. package/dist/icons/BellIcon.js +1 -1
  270. package/dist/icons/BooleanIcon.js +1 -1
  271. package/dist/icons/CalendarEditIcon.js +1 -1
  272. package/dist/icons/CalendarIcon.js +1 -1
  273. package/dist/icons/CaretDownIcon.js +1 -1
  274. package/dist/icons/CaretUpIcon.js +1 -1
  275. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  276. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  277. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  278. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  279. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  280. package/dist/icons/ChartBarLineIcon.js +1 -1
  281. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  282. package/dist/icons/ChartBarStackedIcon.js +1 -1
  283. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  284. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  285. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  286. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  287. package/dist/icons/ChartBubbleIcon.js +1 -1
  288. package/dist/icons/ChartDonut2Icon.js +1 -1
  289. package/dist/icons/ChartFunnelIcon.js +1 -1
  290. package/dist/icons/ChartHeatmapIcon.js +1 -1
  291. package/dist/icons/ChartKPIIcon.js +1 -1
  292. package/dist/icons/ChartPie2Icon.js +1 -1
  293. package/dist/icons/ChartScatterIcon.js +1 -1
  294. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  295. package/dist/icons/CheckCircleIcon.js +1 -1
  296. package/dist/icons/CheckIcon.js +1 -1
  297. package/dist/icons/CircleFilledIcon.js +1 -1
  298. package/dist/icons/ClearIcon.js +1 -1
  299. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  300. package/dist/icons/CloseCircleIcon.js +1 -1
  301. package/dist/icons/CloseIcon.js +1 -1
  302. package/dist/icons/CodeIcon.js +1 -1
  303. package/dist/icons/ColumnTotalIcon.js +1 -1
  304. package/dist/icons/CopyIcon.js +1 -1
  305. package/dist/icons/CountIcon.js +1 -1
  306. package/dist/icons/CubeIcon.js +1 -1
  307. package/dist/icons/CubePauseIcon.js +1 -1
  308. package/dist/icons/CubePlayIcon.js +1 -1
  309. package/dist/icons/CurrencyDollarIcon.js +1 -1
  310. package/dist/icons/DangerIcon.js +1 -1
  311. package/dist/icons/DashboardIcon.js +1 -1
  312. package/dist/icons/DatabaseIcon.js +1 -1
  313. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  314. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  315. package/dist/icons/DirectionIcon.js +1 -1
  316. package/dist/icons/DonutIcon.js +1 -1
  317. package/dist/icons/DownIcon.js +1 -1
  318. package/dist/icons/EditIcon.js +1 -1
  319. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  320. package/dist/icons/ExclamationCircleIcon.js +1 -1
  321. package/dist/icons/ExclamationIcon.js +1 -1
  322. package/dist/icons/EyeIcon.js +1 -1
  323. package/dist/icons/EyeInvisibleIcon.js +1 -1
  324. package/dist/icons/FilterIcon.js +1 -1
  325. package/dist/icons/FolderFilledIcon.js +1 -1
  326. package/dist/icons/FolderIcon.js +1 -1
  327. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  328. package/dist/icons/FolderOpenIcon.js +1 -1
  329. package/dist/icons/ForwardIcon.js +1 -1
  330. package/dist/icons/HierarchyIcon.js +1 -1
  331. package/dist/icons/HierarchyOpenIcon.js +1 -1
  332. package/dist/icons/Icon.js +1 -1
  333. package/dist/icons/InfoCircleIcon.js +1 -1
  334. package/dist/icons/InfoIcon.js +1 -1
  335. package/dist/icons/KeyIcon.js +1 -1
  336. package/dist/icons/LeftIcon.js +1 -1
  337. package/dist/icons/LineChartIcon.js +1 -1
  338. package/dist/icons/LoadingIcon.js +1 -1
  339. package/dist/icons/LockFilledIcon.js +1 -1
  340. package/dist/icons/LockIcon.js +1 -1
  341. package/dist/icons/MoreIcon.js +1 -1
  342. package/dist/icons/NotAllowedIcon.js +1 -1
  343. package/dist/icons/Number123Icon.js +1 -1
  344. package/dist/icons/NumberIcon.js +1 -1
  345. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  346. package/dist/icons/PauseCircleIcon.js +1 -1
  347. package/dist/icons/PauseIcon.js +1 -1
  348. package/dist/icons/PercentageIcon.js +1 -1
  349. package/dist/icons/PieChartIcon.js +1 -1
  350. package/dist/icons/PlayCircleIcon.js +1 -1
  351. package/dist/icons/PlayIcon.js +1 -1
  352. package/dist/icons/PlusIcon.js +1 -1
  353. package/dist/icons/ProgressBarIcon.js +1 -1
  354. package/dist/icons/ReloadIcon.js +1 -1
  355. package/dist/icons/ReportIcon.js +1 -1
  356. package/dist/icons/ReturnIcon.js +1 -1
  357. package/dist/icons/RightIcon.js +1 -1
  358. package/dist/icons/RowTotalsIcon.js +1 -1
  359. package/dist/icons/SchemeIcon.js +1 -1
  360. package/dist/icons/SearchIcon.js +1 -1
  361. package/dist/icons/SemanticQueryIcon.js +1 -1
  362. package/dist/icons/SettingsIcon.js +1 -1
  363. package/dist/icons/ShieldFilledIcon.js +1 -1
  364. package/dist/icons/ShieldIcon.js +1 -1
  365. package/dist/icons/SlashIcon.js +1 -1
  366. package/dist/icons/SparklesIcon.js +1 -1
  367. package/dist/icons/SqlIcon.js +1 -1
  368. package/dist/icons/StatsIcon.js +1 -1
  369. package/dist/icons/StopIcon.js +1 -1
  370. package/dist/icons/StringIcon.js +1 -1
  371. package/dist/icons/SubtotalsIcon.js +1 -1
  372. package/dist/icons/SwitchIcon.js +1 -1
  373. package/dist/icons/TableIcon.js +1 -1
  374. package/dist/icons/ThumbsDownIcon.js +1 -1
  375. package/dist/icons/ThumbsUpIcon.js +1 -1
  376. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  377. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  378. package/dist/icons/ThunderboltIcon.js +1 -1
  379. package/dist/icons/TimeIcon.js +1 -1
  380. package/dist/icons/TrashIcon.js +1 -1
  381. package/dist/icons/UnlockIcon.js +1 -1
  382. package/dist/icons/UpIcon.js +1 -1
  383. package/dist/icons/UserGroupIcon.js +1 -1
  384. package/dist/icons/UserIcon.js +1 -1
  385. package/dist/icons/UserLockIcon.js +1 -1
  386. package/dist/icons/ViewIcon.js +1 -1
  387. package/dist/icons/WarningFilledIcon.js +1 -1
  388. package/dist/icons/WarningIcon.js +1 -1
  389. package/dist/icons/wrap-icon.js +1 -1
  390. package/dist/index.d.ts +5 -2
  391. package/dist/index.js +6 -5
  392. package/dist/index.js.map +1 -1
  393. package/dist/provider.js +1 -1
  394. package/dist/providers/TrackingProvider.js +1 -1
  395. package/dist/providers/navigationAdapter.default.js +1 -1
  396. package/dist/tokens/base.js +1 -1
  397. package/dist/tokens/colors.js +1 -1
  398. package/dist/tokens/index.d.ts +1 -1
  399. package/dist/tokens/index.js +1 -1
  400. package/dist/tokens/layout.js +1 -1
  401. package/dist/tokens/shadows.js +1 -1
  402. package/dist/tokens/sizes.js +1 -1
  403. package/dist/tokens/spacing.js +1 -1
  404. package/dist/tokens/typography.js +1 -1
  405. package/dist/utils/ResizeSensor.js +1 -1
  406. package/dist/utils/is-dev-env.js +1 -1
  407. package/dist/utils/modules.js +1 -1
  408. package/dist/utils/promise.js +1 -1
  409. package/dist/utils/raf.js +1 -1
  410. package/dist/utils/random.js +1 -1
  411. package/dist/utils/range.js +1 -1
  412. package/dist/utils/react/RenderCache.js +1 -1
  413. package/dist/utils/react/Slots.js +1 -1
  414. package/dist/utils/react/chain.js +1 -1
  415. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  416. package/dist/utils/react/index.js +1 -1
  417. package/dist/utils/react/interactions.js +1 -1
  418. package/dist/utils/react/isTextOnly.js +1 -1
  419. package/dist/utils/react/mapProps.js +1 -1
  420. package/dist/utils/react/mergeProps.js +1 -1
  421. package/dist/utils/react/nullableValue.js +1 -1
  422. package/dist/utils/react/resolveIcon.js +1 -1
  423. package/dist/utils/react/sharedStore.js +1 -1
  424. package/dist/utils/react/useCombinedRefs.js +1 -1
  425. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  426. package/dist/utils/react/useEventBus.js +1 -1
  427. package/dist/utils/react/useId.js +1 -1
  428. package/dist/utils/react/useIsDarwin.js +1 -1
  429. package/dist/utils/react/useKeySymbols.js +1 -1
  430. package/dist/utils/react/useLayoutEffect.js +1 -1
  431. package/dist/utils/react/useLocalStorage.js +1 -1
  432. package/dist/utils/react/useMergeStyles.js +1 -1
  433. package/dist/utils/react/useQaProps.js +1 -1
  434. package/dist/utils/react/useViewportSize.js +1 -1
  435. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  436. package/dist/utils/selection.js +1 -1
  437. package/dist/utils/styles.js +1 -1
  438. package/dist/utils/tree.js +1 -1
  439. package/dist/utils/warnings.js +1 -1
  440. package/dist/version.js +2 -2
  441. package/docs/components/content/Tree.md +299 -0
  442. package/docs/tasty/dsl.md +1 -0
  443. package/package.json +2 -4
  444. package/dist/components/overlays/Modal/OpenTransition.js +0 -39
  445. package/dist/components/overlays/Modal/OpenTransition.js.map +0 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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_NEUTRAL_STYLES, DANGER_PRIMARY_STYLES, DANGER_SECONDARY_STYLES, DEFAULT_CLEAR_STYLES, DEFAULT_NEUTRAL_STYLES, DEFAULT_PRIMARY_STYLES, DEFAULT_SECONDARY_STYLES, ITEM_ACTION_BASE_STYLES, SPECIAL_CLEAR_STYLES, SPECIAL_NEUTRAL_STYLES, SPECIAL_PRIMARY_STYLES, SPECIAL_SECONDARY_STYLES, SUCCESS_CLEAR_STYLES, SUCCESS_NEUTRAL_STYLES, SUCCESS_PRIMARY_STYLES, SUCCESS_SECONDARY_STYLES } from "../../../data/item-themes.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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.128.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.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";
@@ -0,0 +1,27 @@
1
+
2
+ import { CubeTreeProps } from "./types.js";
3
+ import * as react from "react";
4
+
5
+ //#region src/components/content/Tree/Tree.d.ts
6
+ /**
7
+ * Hierarchical data display with optional checkboxes, single/multi
8
+ * selection, async lazy loading, and keyboard navigation.
9
+ *
10
+ * Built on `useTree` / `useTreeState` (React Aria + React Stately) and
11
+ * styled with Tasty.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * <Tree
16
+ * treeData={data}
17
+ * isCheckable
18
+ * selectionMode="none"
19
+ * defaultExpandedKeys={['root']}
20
+ * onCheck={(keys) => console.log(keys)}
21
+ * />
22
+ * ```
23
+ */
24
+ declare const Tree: react.ForwardRefExoticComponent<CubeTreeProps & react.RefAttributes<HTMLDivElement>>;
25
+ //#endregion
26
+ export { Tree };
27
+ //# sourceMappingURL=Tree.d.ts.map
@@ -0,0 +1,308 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.130.0 | Cube Dev Team */
2
+ import { extractStyles } from "../../../utils/styles.js";
3
+ import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
+ import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
5
+ import { useEvent } from "../../../_internal/hooks/use-event.js";
6
+ import { SIZES, SIZE_NAME_TO_KEY } from "../../../tokens/sizes.js";
7
+ import { TreeElement } from "./styled.js";
8
+ import { buildTreeIndex } from "./tree-index.js";
9
+ import { TreeNode } from "./TreeNode.js";
10
+ import { useCheckboxTree } from "./use-checkbox-tree.js";
11
+ import { useLoadData } from "./use-load-data.js";
12
+ import { OUTER_STYLES } from "@tenphi/tasty";
13
+ import { forwardRef, useLayoutEffect, useMemo, useRef } from "react";
14
+ import { jsx } from "react/jsx-runtime";
15
+ import { useTree } from "react-aria";
16
+ import { Item, useTreeState } from "react-stately";
17
+ import { useVirtualizer } from "@tanstack/react-virtual";
18
+
19
+ //#region src/components/content/Tree/Tree.tsx
20
+ /**
21
+ * Render an `<Item>` for React Stately's collection builder.
22
+ *
23
+ * The visible content is rendered by `TreeNode` via `nodesByKey`,
24
+ * so `<Item>`'s body is only used by Stately for the collection
25
+ * (`textValue` for keyboard nav, `childItems` for nested traversal).
26
+ */
27
+ function renderItem(node) {
28
+ return /* @__PURE__ */ jsx(Item, {
29
+ textValue: typeof node.title === "string" ? node.title : String(node.key),
30
+ childItems: node.children,
31
+ children: node.title
32
+ }, node.key);
33
+ }
34
+ function collectDisabledKeys(treeData, treeIsDisabled) {
35
+ const keys = [];
36
+ const visit = (nodes) => {
37
+ for (const node of nodes) {
38
+ if (treeIsDisabled || node.isDisabled) keys.push(node.key);
39
+ if (node.children) visit(node.children);
40
+ }
41
+ };
42
+ visit(treeData);
43
+ return keys;
44
+ }
45
+ /** Expand the supplied keys with all of their ancestor keys. */
46
+ function expandWithParents(keys, parentOf) {
47
+ if (!keys || keys.length === 0) return keys;
48
+ const set = new Set(keys);
49
+ for (const key of keys) {
50
+ let parent = parentOf.get(key);
51
+ while (parent) {
52
+ set.add(parent);
53
+ parent = parentOf.get(parent);
54
+ }
55
+ }
56
+ return Array.from(set);
57
+ }
58
+ /**
59
+ * Diff two key sets to find the single key that was added or removed.
60
+ * Returns `null` when both sets are equal.
61
+ */
62
+ function findToggledKey(previous, next) {
63
+ for (const k of next) if (!previous.has(k)) return {
64
+ key: k,
65
+ added: true
66
+ };
67
+ for (const k of previous) if (!next.has(k)) return {
68
+ key: k,
69
+ added: false
70
+ };
71
+ return null;
72
+ }
73
+ function resolveSelectionMode(selectionMode, isSelectable) {
74
+ if (selectionMode != null) return selectionMode;
75
+ if (isSelectable === false) return "none";
76
+ return "single";
77
+ }
78
+ function TreeBase(props, ref) {
79
+ const { treeData, isCheckable = false, isSelectable, selectionMode: selectionModeProp, size = "medium", isDisabled = false, defaultExpandedKeys, expandedKeys, autoExpandParent = false, defaultCheckedKeys, checkedKeys, defaultSelectedKeys, selectedKeys, height, loadData, onExpand, onCheck, onSelect, itemProps, rowStyles, ariaLabel, qa, ...otherProps } = props;
80
+ const baseStyles = extractStyles(otherProps, OUTER_STYLES);
81
+ const treeRef = useRef(null);
82
+ const treeIndex = useMemo(() => buildTreeIndex(treeData), [treeData]);
83
+ const nodesByKey = treeIndex.byKey;
84
+ const parentOf = treeIndex.parentOf;
85
+ const disabledKeys = useMemo(() => collectDisabledKeys(treeData, isDisabled), [treeData, isDisabled]);
86
+ const selectionMode = resolveSelectionMode(selectionModeProp, isSelectable);
87
+ const effectiveExpandedKeys = useMemo(() => autoExpandParent ? expandWithParents(expandedKeys, parentOf) : expandedKeys, [
88
+ autoExpandParent,
89
+ expandedKeys,
90
+ parentOf
91
+ ]);
92
+ const effectiveDefaultExpandedKeys = useMemo(() => autoExpandParent ? expandWithParents(defaultExpandedKeys, parentOf) : defaultExpandedKeys, [
93
+ autoExpandParent,
94
+ defaultExpandedKeys,
95
+ parentOf
96
+ ]);
97
+ const checkbox = useCheckboxTree({
98
+ treeData,
99
+ index: treeIndex,
100
+ isCheckable,
101
+ defaultCheckedKeys,
102
+ checkedKeys,
103
+ onCheck
104
+ });
105
+ const loadDataController = useLoadData({
106
+ nodesByKey,
107
+ loadData,
108
+ initialExpandedKeys: effectiveExpandedKeys ?? effectiveDefaultExpandedKeys
109
+ });
110
+ /**
111
+ * In controlled mode, `previous` is read from `effectiveExpandedKeys`;
112
+ * in uncontrolled mode this ref is the only source. Initialized from
113
+ * the *effective* (ancestor-expanded) keys so the first toggle diffs
114
+ * correctly.
115
+ */
116
+ const previousExpandedRef = useRef(new Set(effectiveExpandedKeys ?? effectiveDefaultExpandedKeys ?? []));
117
+ const handleExpandedChange = useEvent((nextSet) => {
118
+ loadDataController.onExpandedChanged(nextSet);
119
+ const previous = expandedKeys !== void 0 ? new Set(effectiveExpandedKeys ?? []) : previousExpandedRef.current;
120
+ previousExpandedRef.current = new Set(nextSet);
121
+ if (!onExpand) return;
122
+ const toggled = findToggledKey(previous, nextSet);
123
+ if (!toggled) return;
124
+ const node = nodesByKey.get(String(toggled.key));
125
+ if (!node) return;
126
+ const info = {
127
+ expanded: toggled.added,
128
+ node
129
+ };
130
+ onExpand(Array.from(nextSet), info);
131
+ });
132
+ /**
133
+ * Same pattern as `previousExpandedRef`: in controlled mode we read
134
+ * from `selectedKeys`; in uncontrolled mode this ref tracks state.
135
+ */
136
+ const previousSelectionRef = useRef(new Set(selectedKeys ?? defaultSelectedKeys ?? []));
137
+ /**
138
+ * `useEvent` captures the closure lazily, so `state` (declared below
139
+ * `ariaProps` / `useTreeState`) is safely accessible at call time.
140
+ */
141
+ const handleSelectionChange = useEvent((selection) => {
142
+ if (!onSelect) return;
143
+ let arr;
144
+ if (selection === "all") {
145
+ arr = [];
146
+ for (const key of state.collection.getKeys()) {
147
+ const node = state.collection.getItem(key);
148
+ if (node && node.type === "item") arr.push(key);
149
+ }
150
+ } else arr = Array.from(selection);
151
+ const nextSet = new Set(arr);
152
+ const previous = selectedKeys !== void 0 ? new Set(selectedKeys ?? []) : previousSelectionRef.current;
153
+ previousSelectionRef.current = nextSet;
154
+ const toggled = findToggledKey(previous, nextSet);
155
+ if (!toggled) return;
156
+ const node = nodesByKey.get(String(toggled.key));
157
+ if (!node) return;
158
+ const selectedNodes = arr.map((k) => nodesByKey.get(String(k))).filter((n) => !!n);
159
+ const info = {
160
+ selected: toggled.added,
161
+ node,
162
+ selectedNodes
163
+ };
164
+ onSelect(arr, info);
165
+ });
166
+ const hasOnSelect = onSelect != null;
167
+ const ariaProps = useMemo(() => ({
168
+ selectionMode,
169
+ selectedKeys,
170
+ defaultSelectedKeys,
171
+ onSelectionChange: hasOnSelect && selectionMode !== "none" ? handleSelectionChange : void 0,
172
+ expandedKeys: effectiveExpandedKeys,
173
+ defaultExpandedKeys: effectiveDefaultExpandedKeys,
174
+ onExpandedChange: handleExpandedChange,
175
+ disabledKeys,
176
+ disabledBehavior: "all",
177
+ items: treeData,
178
+ children: renderItem,
179
+ "aria-label": ariaLabel ?? "Tree"
180
+ }), [
181
+ selectionMode,
182
+ selectedKeys,
183
+ defaultSelectedKeys,
184
+ hasOnSelect,
185
+ handleSelectionChange,
186
+ effectiveExpandedKeys,
187
+ effectiveDefaultExpandedKeys,
188
+ handleExpandedChange,
189
+ disabledKeys,
190
+ treeData,
191
+ ariaLabel
192
+ ]);
193
+ const baseState = useTreeState(ariaProps);
194
+ const state = useMemo(() => {
195
+ const collection = baseState.collection;
196
+ if (typeof collection.getChildren === "function") return baseState;
197
+ const patched = Object.create(collection);
198
+ patched.getChildren = (key) => {
199
+ const node = collection.getItem(key);
200
+ return node ? Array.from(node.childNodes) : [];
201
+ };
202
+ return {
203
+ ...baseState,
204
+ collection: patched
205
+ };
206
+ }, [baseState]);
207
+ const { gridProps } = useTree(ariaProps, state, treeRef);
208
+ const visibleNodes = useMemo(() => {
209
+ const out = [];
210
+ for (const key of state.collection.getKeys()) {
211
+ const node = state.collection.getItem(key);
212
+ if (node && node.type === "item") out.push(node);
213
+ }
214
+ return out;
215
+ }, [state.collection]);
216
+ const visibleNodesRef = useRef(visibleNodes);
217
+ visibleNodesRef.current = visibleNodes;
218
+ const rowVirtualizer = useVirtualizer({
219
+ count: visibleNodes.length,
220
+ getScrollElement: () => treeRef.current,
221
+ getItemKey: (index) => {
222
+ return visibleNodesRef.current[index]?.key ?? index;
223
+ },
224
+ estimateSize: () => SIZES[SIZE_NAME_TO_KEY[size]],
225
+ gap: 1,
226
+ overscan: 10
227
+ });
228
+ const containerStyle = useMemo(() => {
229
+ const style = {
230
+ position: "relative",
231
+ height: `${rowVirtualizer.getTotalSize()}px`
232
+ };
233
+ if (height != null) style["--tree-height"] = `${height}px`;
234
+ return style;
235
+ }, [rowVirtualizer.getTotalSize(), height]);
236
+ useLayoutEffect(() => {
237
+ const focusedKey = state.selectionManager.focusedKey;
238
+ if (focusedKey == null) return;
239
+ const scrollElement = treeRef.current;
240
+ if (!scrollElement) return;
241
+ const row = scrollElement.querySelector(`[data-qa-key="${CSS.escape(String(focusedKey))}"]`);
242
+ if (!row || typeof row.scrollIntoView !== "function") return;
243
+ row.scrollIntoView({ block: "nearest" });
244
+ }, [state.selectionManager.focusedKey]);
245
+ const mods = useMemo(() => ({ "has-height": height != null }), [height]);
246
+ return /* @__PURE__ */ jsx(TreeElement, {
247
+ ...mergeProps$1(gridProps, { ref: useMemo(() => mergeRefs(ref, treeRef), [ref, treeRef]) }),
248
+ qa: qa ?? "Tree",
249
+ mods,
250
+ styles: baseStyles,
251
+ style: containerStyle,
252
+ children: rowVirtualizer.getVirtualItems().map((virtualItem) => {
253
+ const node = visibleNodes[virtualItem.index];
254
+ if (!node) return null;
255
+ const keyStr = String(node.key);
256
+ const data = nodesByKey.get(keyStr);
257
+ if (!data) return null;
258
+ return /* @__PURE__ */ jsx(TreeNode, {
259
+ node,
260
+ data,
261
+ state,
262
+ isCheckable,
263
+ isExpanded: state.expandedKeys.has(node.key),
264
+ isChecked: checkbox.checkedSet.has(keyStr),
265
+ isIndeterminate: checkbox.halfCheckedSet.has(keyStr),
266
+ isLoading: loadDataController.loadingKeys.has(keyStr),
267
+ size,
268
+ itemProps,
269
+ rowStyles,
270
+ virtualStyle: {
271
+ position: "absolute",
272
+ top: 0,
273
+ left: 0,
274
+ right: 0,
275
+ transform: `translateY(${virtualItem.start}px)`
276
+ },
277
+ virtualRef: rowVirtualizer.measureElement,
278
+ virtualIndex: virtualItem.index,
279
+ onToggleChecked: checkbox.toggle
280
+ }, node.key);
281
+ })
282
+ });
283
+ }
284
+ const _Tree = forwardRef(TreeBase);
285
+ _Tree.displayName = "Tree";
286
+ /**
287
+ * Hierarchical data display with optional checkboxes, single/multi
288
+ * selection, async lazy loading, and keyboard navigation.
289
+ *
290
+ * Built on `useTree` / `useTreeState` (React Aria + React Stately) and
291
+ * styled with Tasty.
292
+ *
293
+ * @example
294
+ * ```tsx
295
+ * <Tree
296
+ * treeData={data}
297
+ * isCheckable
298
+ * selectionMode="none"
299
+ * defaultExpandedKeys={['root']}
300
+ * onCheck={(keys) => console.log(keys)}
301
+ * />
302
+ * ```
303
+ */
304
+ const Tree = _Tree;
305
+
306
+ //#endregion
307
+ export { Tree };
308
+ //# sourceMappingURL=Tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tree.js","names":["mergeProps"],"sources":["../../../../src/components/content/Tree/Tree.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { OUTER_STYLES } from '@tenphi/tasty';\nimport { forwardRef, useLayoutEffect, useMemo, useRef } from 'react';\nimport { useTree } from 'react-aria';\nimport { Item, useTreeState } from 'react-stately';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { SIZE_NAME_TO_KEY, SIZES } from '../../../tokens/sizes';\nimport { mergeProps, mergeRefs } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\n\nimport { TreeElement } from './styled';\nimport { buildTreeIndex } from './tree-index';\nimport { TreeNode } from './TreeNode';\nimport { useCheckboxTree } from './use-checkbox-tree';\nimport { useLoadData } from './use-load-data';\n\nimport type { Key, Node, Selection } from '@react-types/shared';\nimport type {\n CSSProperties,\n ForwardedRef,\n ReactElement,\n ReactNode,\n} from 'react';\nimport type {\n CubeTreeNodeData,\n CubeTreeProps,\n TreeOnExpandInfo,\n TreeOnSelectInfo,\n TreeSelectionMode,\n} from './types';\n\n/**\n * Render an `<Item>` for React Stately's collection builder.\n *\n * The visible content is rendered by `TreeNode` via `nodesByKey`,\n * so `<Item>`'s body is only used by Stately for the collection\n * (`textValue` for keyboard nav, `childItems` for nested traversal).\n */\nfunction renderItem(node: CubeTreeNodeData): ReactElement {\n const textValue =\n typeof node.title === 'string' ? node.title : String(node.key);\n return (\n <Item\n key={node.key}\n textValue={textValue}\n childItems={node.children as CubeTreeNodeData[] | undefined}\n >\n {node.title as ReactNode}\n </Item>\n );\n}\n\nfunction collectDisabledKeys(\n treeData: CubeTreeNodeData[],\n treeIsDisabled: boolean,\n): string[] {\n const keys: string[] = [];\n const visit = (nodes: CubeTreeNodeData[]) => {\n for (const node of nodes) {\n if (treeIsDisabled || node.isDisabled) keys.push(node.key);\n if (node.children) visit(node.children);\n }\n };\n visit(treeData);\n return keys;\n}\n\n/** Expand the supplied keys with all of their ancestor keys. */\nfunction expandWithParents(\n keys: string[] | undefined,\n parentOf: Map<string, string | null>,\n): string[] | undefined {\n if (!keys || keys.length === 0) return keys;\n const set = new Set<string>(keys);\n for (const key of keys) {\n let parent = parentOf.get(key);\n while (parent) {\n set.add(parent);\n parent = parentOf.get(parent);\n }\n }\n return Array.from(set);\n}\n\n/**\n * Diff two key sets to find the single key that was added or removed.\n * Returns `null` when both sets are equal.\n */\nfunction findToggledKey(\n previous: Set<Key>,\n next: Set<Key>,\n): { key: Key; added: boolean } | null {\n for (const k of next) {\n if (!previous.has(k)) return { key: k, added: true };\n }\n for (const k of previous) {\n if (!next.has(k)) return { key: k, added: false };\n }\n return null;\n}\n\nfunction resolveSelectionMode(\n selectionMode: TreeSelectionMode | undefined,\n isSelectable: boolean | undefined,\n): TreeSelectionMode {\n if (selectionMode != null) return selectionMode;\n if (isSelectable === false) return 'none';\n return 'single';\n}\n\nfunction TreeBase(props: CubeTreeProps, ref: ForwardedRef<HTMLDivElement>) {\n const {\n treeData,\n isCheckable = false,\n isSelectable,\n selectionMode: selectionModeProp,\n size = 'medium',\n isDisabled = false,\n defaultExpandedKeys,\n expandedKeys,\n autoExpandParent = false,\n defaultCheckedKeys,\n checkedKeys,\n defaultSelectedKeys,\n selectedKeys,\n height,\n loadData,\n onExpand,\n onCheck,\n onSelect,\n itemProps,\n rowStyles,\n ariaLabel,\n qa,\n ...otherProps\n } = props;\n\n const baseStyles = extractStyles(otherProps, OUTER_STYLES);\n\n const treeRef = useRef<HTMLDivElement>(null);\n\n const treeIndex = useMemo(() => buildTreeIndex(treeData), [treeData]);\n const nodesByKey = treeIndex.byKey;\n const parentOf = treeIndex.parentOf;\n\n const disabledKeys = useMemo(\n () => collectDisabledKeys(treeData, isDisabled),\n [treeData, isDisabled],\n );\n\n const selectionMode = resolveSelectionMode(selectionModeProp, isSelectable);\n\n const effectiveExpandedKeys = useMemo(\n () =>\n autoExpandParent\n ? expandWithParents(expandedKeys, parentOf)\n : expandedKeys,\n [autoExpandParent, expandedKeys, parentOf],\n );\n\n const effectiveDefaultExpandedKeys = useMemo(\n () =>\n autoExpandParent\n ? expandWithParents(defaultExpandedKeys, parentOf)\n : defaultExpandedKeys,\n [autoExpandParent, defaultExpandedKeys, parentOf],\n );\n\n const checkbox = useCheckboxTree({\n treeData,\n index: treeIndex,\n isCheckable,\n defaultCheckedKeys,\n checkedKeys,\n onCheck,\n });\n\n const loadDataController = useLoadData({\n nodesByKey,\n loadData,\n initialExpandedKeys: effectiveExpandedKeys ?? effectiveDefaultExpandedKeys,\n });\n\n /**\n * In controlled mode, `previous` is read from `effectiveExpandedKeys`;\n * in uncontrolled mode this ref is the only source. Initialized from\n * the *effective* (ancestor-expanded) keys so the first toggle diffs\n * correctly.\n */\n const previousExpandedRef = useRef<Set<Key>>(\n new Set<Key>(effectiveExpandedKeys ?? effectiveDefaultExpandedKeys ?? []),\n );\n\n const handleExpandedChange = useEvent((nextSet: Set<Key>) => {\n loadDataController.onExpandedChanged(nextSet);\n\n const previous =\n expandedKeys !== undefined\n ? new Set<Key>(effectiveExpandedKeys ?? [])\n : previousExpandedRef.current;\n previousExpandedRef.current = new Set<Key>(nextSet);\n\n if (!onExpand) return;\n\n const toggled = findToggledKey(previous, nextSet);\n if (!toggled) return;\n\n const node = nodesByKey.get(String(toggled.key));\n if (!node) return;\n\n const info: TreeOnExpandInfo = {\n expanded: toggled.added,\n node,\n };\n onExpand(Array.from(nextSet), info);\n });\n\n /**\n * Same pattern as `previousExpandedRef`: in controlled mode we read\n * from `selectedKeys`; in uncontrolled mode this ref tracks state.\n */\n const previousSelectionRef = useRef<Set<Key>>(\n new Set<Key>(selectedKeys ?? defaultSelectedKeys ?? []),\n );\n\n /**\n * `useEvent` captures the closure lazily, so `state` (declared below\n * `ariaProps` / `useTreeState`) is safely accessible at call time.\n */\n const handleSelectionChange = useEvent((selection: Selection) => {\n if (!onSelect) return;\n let arr: Key[];\n if (selection === 'all') {\n // `nodesByKey` contains the full tree; use the collection's visible\n // keys so we don't leak keys under collapsed parents.\n arr = [];\n for (const key of state.collection.getKeys()) {\n const node = state.collection.getItem(key);\n if (node && node.type === 'item') arr.push(key);\n }\n } else {\n arr = Array.from(selection);\n }\n\n const nextSet = new Set<Key>(arr);\n const previous =\n selectedKeys !== undefined\n ? new Set<Key>(selectedKeys ?? [])\n : previousSelectionRef.current;\n previousSelectionRef.current = nextSet;\n\n const toggled = findToggledKey(previous, nextSet);\n if (!toggled) return;\n\n const node = nodesByKey.get(String(toggled.key));\n if (!node) return;\n\n const selectedNodes = arr\n .map((k) => nodesByKey.get(String(k)))\n .filter((n): n is CubeTreeNodeData => !!n);\n\n const info: TreeOnSelectInfo = {\n selected: toggled.added,\n node,\n selectedNodes,\n };\n\n onSelect(arr, info);\n });\n\n const hasOnSelect = onSelect != null;\n\n const ariaProps = useMemo(\n () => ({\n selectionMode,\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange:\n hasOnSelect && selectionMode !== 'none'\n ? handleSelectionChange\n : undefined,\n expandedKeys: effectiveExpandedKeys,\n defaultExpandedKeys: effectiveDefaultExpandedKeys,\n onExpandedChange: handleExpandedChange,\n disabledKeys,\n disabledBehavior: 'all' as const,\n items: treeData,\n children: renderItem as any,\n 'aria-label': ariaLabel ?? 'Tree',\n }),\n [\n selectionMode,\n selectedKeys,\n defaultSelectedKeys,\n hasOnSelect,\n handleSelectionChange,\n effectiveExpandedKeys,\n effectiveDefaultExpandedKeys,\n handleExpandedChange,\n disabledKeys,\n treeData,\n ariaLabel,\n ],\n );\n\n const baseState = useTreeState<CubeTreeNodeData>(ariaProps);\n\n // The legacy `TreeCollection` from `useTreeState` lacks `getChildren`,\n // but `useTree` calls it for nested rows. Derive a patched state.\n // TODO: Remove this patch when upgrading to a react-stately version\n // that ships `getChildren` on TreeCollection natively.\n const state = useMemo(() => {\n const collection = baseState.collection;\n if (typeof (collection as any).getChildren === 'function') {\n return baseState;\n }\n const patched = Object.create(collection);\n patched.getChildren = (key: Key): Iterable<Node<CubeTreeNodeData>> => {\n const node = collection.getItem(key);\n return node ? Array.from(node.childNodes) : [];\n };\n return { ...baseState, collection: patched };\n }, [baseState]);\n\n const { gridProps } = useTree(ariaProps, state, treeRef);\n\n const visibleNodes: Node<CubeTreeNodeData>[] = useMemo(() => {\n const out: Node<CubeTreeNodeData>[] = [];\n for (const key of state.collection.getKeys()) {\n const node = state.collection.getItem(key);\n if (node && node.type === 'item') out.push(node);\n }\n return out;\n }, [state.collection]);\n\n const visibleNodesRef = useRef(visibleNodes);\n visibleNodesRef.current = visibleNodes;\n\n // ----- Virtualization -----\n const rowVirtualizer = useVirtualizer({\n count: visibleNodes.length,\n getScrollElement: () => treeRef.current,\n getItemKey: (index: number) => {\n const node = visibleNodesRef.current[index];\n return node?.key ?? index;\n },\n estimateSize: () => SIZES[SIZE_NAME_TO_KEY[size]],\n gap: 1,\n overscan: 10,\n });\n\n const containerStyle = useMemo<CSSProperties>(() => {\n const style: CSSProperties = {\n position: 'relative',\n height: `${rowVirtualizer.getTotalSize()}px`,\n };\n if (height != null) {\n (style as any)['--tree-height'] = `${height}px`;\n }\n return style;\n }, [rowVirtualizer.getTotalSize(), height]);\n\n // Keep focused node visible during keyboard navigation.\n useLayoutEffect(() => {\n const focusedKey = state.selectionManager.focusedKey;\n if (focusedKey == null) return;\n\n const scrollElement = treeRef.current;\n if (!scrollElement) return;\n\n const row = scrollElement.querySelector(\n `[data-qa-key=\"${CSS.escape(String(focusedKey))}\"]`,\n ) as HTMLElement | null;\n if (!row || typeof row.scrollIntoView !== 'function') return;\n\n row.scrollIntoView({ block: 'nearest' });\n }, [state.selectionManager.focusedKey]);\n\n const mods = useMemo(\n () => ({\n 'has-height': height != null,\n }),\n [height],\n );\n\n // Both `useTree` and the consumer need the same DOM node.\n const mergedRef = useMemo(() => mergeRefs(ref, treeRef), [ref, treeRef]);\n\n const elementProps = mergeProps(gridProps, {\n ref: mergedRef,\n });\n\n return (\n <TreeElement\n {...elementProps}\n qa={qa ?? 'Tree'}\n mods={mods}\n styles={baseStyles}\n style={containerStyle}\n >\n {rowVirtualizer.getVirtualItems().map((virtualItem) => {\n const node = visibleNodes[virtualItem.index];\n if (!node) return null;\n const keyStr = String(node.key);\n const data = nodesByKey.get(keyStr);\n if (!data) return null;\n return (\n <TreeNode\n key={node.key}\n node={node}\n data={data}\n state={state}\n isCheckable={isCheckable}\n isExpanded={state.expandedKeys.has(node.key)}\n isChecked={checkbox.checkedSet.has(keyStr)}\n isIndeterminate={checkbox.halfCheckedSet.has(keyStr)}\n isLoading={loadDataController.loadingKeys.has(keyStr)}\n size={size}\n itemProps={itemProps}\n rowStyles={rowStyles}\n virtualStyle={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n transform: `translateY(${virtualItem.start}px)`,\n }}\n virtualRef={rowVirtualizer.measureElement}\n virtualIndex={virtualItem.index}\n onToggleChecked={checkbox.toggle}\n />\n );\n })}\n </TreeElement>\n );\n}\n\nconst _Tree = forwardRef(TreeBase);\n_Tree.displayName = 'Tree';\n\n/**\n * Hierarchical data display with optional checkboxes, single/multi\n * selection, async lazy loading, and keyboard navigation.\n *\n * Built on `useTree` / `useTreeState` (React Aria + React Stately) and\n * styled with Tasty.\n *\n * @example\n * ```tsx\n * <Tree\n * treeData={data}\n * isCheckable\n * selectionMode=\"none\"\n * defaultExpandedKeys={['root']}\n * onCheck={(keys) => console.log(keys)}\n * />\n * ```\n */\nexport const Tree = _Tree;\n"],"mappings":"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"}