@cube-dev/ui-kit 0.132.0 → 0.133.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 (442) hide show
  1. package/dist/CHANGELOG.md +14 -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 +1 -1
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  24. package/dist/components/actions/CommandMenu/styled.js +1 -1
  25. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  28. package/dist/components/actions/Link/Link.js +1 -1
  29. package/dist/components/actions/Menu/Menu.js +1 -1
  30. package/dist/components/actions/Menu/MenuItem.js +1 -1
  31. package/dist/components/actions/Menu/MenuSection.js +1 -1
  32. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  35. package/dist/components/actions/Menu/context.js +1 -1
  36. package/dist/components/actions/Menu/styled.js +1 -1
  37. package/dist/components/actions/index.js +1 -1
  38. package/dist/components/actions/use-action.js +1 -1
  39. package/dist/components/actions/use-anchored-menu.js +1 -1
  40. package/dist/components/actions/use-context-menu.js +1 -1
  41. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  42. package/dist/components/content/Alert/Alert.js +1 -1
  43. package/dist/components/content/Alert/use-alert.js +1 -1
  44. package/dist/components/content/Avatar/Avatar.js +1 -1
  45. package/dist/components/content/Badge/Badge.js +1 -1
  46. package/dist/components/content/Card/Card.js +1 -1
  47. package/dist/components/content/Content.js +1 -1
  48. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  49. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  50. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  51. package/dist/components/content/Divider.js +1 -1
  52. package/dist/components/content/Footer.js +1 -1
  53. package/dist/components/content/Header.js +1 -1
  54. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  55. package/dist/components/content/Item/Item.js +1 -1
  56. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  57. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  58. package/dist/components/content/Layout/GridLayout.js +1 -1
  59. package/dist/components/content/Layout/Layout.js +1 -1
  60. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  61. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  62. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  63. package/dist/components/content/Layout/LayoutContent.js +1 -1
  64. package/dist/components/content/Layout/LayoutContext.js +1 -1
  65. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  66. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  67. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  68. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  69. package/dist/components/content/Layout/LayoutPane.js +1 -1
  70. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  71. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  72. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  73. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  74. package/dist/components/content/Layout/index.js +1 -1
  75. package/dist/components/content/Layout/utils.js +1 -1
  76. package/dist/components/content/Paragraph.js +1 -1
  77. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  78. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  79. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  80. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  81. package/dist/components/content/Result/Result.js +1 -1
  82. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  83. package/dist/components/content/Tag/Tag.js +1 -1
  84. package/dist/components/content/Text.d.ts +28 -28
  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.js +60 -51
  89. package/dist/components/content/Tree/Tree.js.map +1 -1
  90. package/dist/components/content/Tree/TreeNode.js +3 -72
  91. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  92. package/dist/components/content/Tree/styled.js +26 -4
  93. package/dist/components/content/Tree/styled.js.map +1 -1
  94. package/dist/components/content/Tree/tree-index.js +1 -1
  95. package/dist/components/content/Tree/types.d.ts +0 -17
  96. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  97. package/dist/components/content/Tree/use-load-data.js +1 -1
  98. package/dist/components/content/highlightText.js +1 -1
  99. package/dist/components/content/use-auto-tooltip.js +1 -1
  100. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  101. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  102. package/dist/components/fields/Checkbox/context.js +1 -1
  103. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  104. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  105. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  106. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  107. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  108. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  109. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  110. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  111. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  112. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  113. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  114. package/dist/components/fields/DatePicker/intl.js +1 -1
  115. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  116. package/dist/components/fields/DatePicker/props.js +1 -1
  117. package/dist/components/fields/DatePicker/utils.js +1 -1
  118. package/dist/components/fields/FileInput/FileInput.js +1 -1
  119. package/dist/components/fields/FilterListBox/FilterListBox.js +5 -3
  120. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  121. package/dist/components/fields/FilterPicker/FilterPicker.js +4 -2
  122. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  123. package/dist/components/fields/Input/Input.js +1 -1
  124. package/dist/components/fields/ListBox/DraggableListBox.js +24 -0
  125. package/dist/components/fields/ListBox/DraggableListBox.js.map +1 -0
  126. package/dist/components/fields/ListBox/ListBox.d.ts +11 -0
  127. package/dist/components/fields/ListBox/ListBox.js +153 -38
  128. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  129. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  130. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  131. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  132. package/dist/components/fields/Picker/Picker.js +1 -1
  133. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  134. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  135. package/dist/components/fields/RadioGroup/context.js +1 -1
  136. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  137. package/dist/components/fields/Select/Select.js +1 -1
  138. package/dist/components/fields/Slider/Gradation.js +1 -1
  139. package/dist/components/fields/Slider/HueSlider.js +1 -1
  140. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  141. package/dist/components/fields/Slider/Slider.js +1 -1
  142. package/dist/components/fields/Slider/SliderBase.js +1 -1
  143. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  144. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  145. package/dist/components/fields/Slider/elements.js +1 -1
  146. package/dist/components/fields/Slider/index.js +1 -1
  147. package/dist/components/fields/Switch/Switch.js +1 -1
  148. package/dist/components/fields/TextArea/TextArea.js +1 -1
  149. package/dist/components/fields/TextInput/TextInput.js +1 -1
  150. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  151. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  152. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  153. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  154. package/dist/components/form/Form/Field.js +1 -1
  155. package/dist/components/form/Form/Form.js +1 -1
  156. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  157. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  158. package/dist/components/form/Form/SubmitError.js +1 -1
  159. package/dist/components/form/Form/index.js +1 -1
  160. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  161. package/dist/components/form/Form/use-field/use-field.js +1 -1
  162. package/dist/components/form/Form/use-form.js +1 -1
  163. package/dist/components/form/Form/validation.js +1 -1
  164. package/dist/components/form/Label.js +1 -1
  165. package/dist/components/form/wrapper.js +1 -1
  166. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  167. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  168. package/dist/components/layout/Flex.js +1 -1
  169. package/dist/components/layout/Flow.js +1 -1
  170. package/dist/components/layout/Grid.js +1 -1
  171. package/dist/components/layout/Panel.js +1 -1
  172. package/dist/components/layout/Prefix.js +1 -1
  173. package/dist/components/layout/ResizablePanel.js +1 -1
  174. package/dist/components/layout/Space.js +1 -1
  175. package/dist/components/layout/Suffix.js +1 -1
  176. package/dist/components/navigation/Tabs/DraggableTabList.js +11 -60
  177. package/dist/components/navigation/Tabs/DraggableTabList.js.map +1 -1
  178. package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
  179. package/dist/components/navigation/Tabs/TabButton.js +3 -10
  180. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  181. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  182. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  183. package/dist/components/navigation/Tabs/TabPicker.js +4 -2
  184. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  185. package/dist/components/navigation/Tabs/Tabs.js +4 -2
  186. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  187. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  188. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  189. package/dist/components/navigation/Tabs/styled.js +1 -1
  190. package/dist/components/navigation/Tabs/types.d.ts +2 -0
  191. package/dist/components/navigation/Tabs/types.js +1 -1
  192. package/dist/components/navigation/Tabs/types.js.map +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 +1 -1
  206. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  207. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  208. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  209. package/dist/components/overlays/Dialog/context.js +1 -1
  210. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  211. package/dist/components/overlays/Modal/Modal.js +1 -1
  212. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  213. package/dist/components/overlays/Modal/Overlay.js +1 -1
  214. package/dist/components/overlays/Modal/Popover.js +1 -1
  215. package/dist/components/overlays/Modal/Tray.js +1 -1
  216. package/dist/components/overlays/Modal/Underlay.js +1 -1
  217. package/dist/components/overlays/Notifications/Notification.js +1 -1
  218. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  219. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  220. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  221. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  222. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  223. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  224. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  225. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  226. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  227. package/dist/components/overlays/Notifications/index.js +1 -1
  228. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  229. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  230. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  231. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  232. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  233. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  234. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  235. package/dist/components/overlays/Toast/index.js +1 -1
  236. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  237. package/dist/components/overlays/Toast/useToast.js +1 -1
  238. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  239. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  240. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  241. package/dist/components/overlays/Tooltip/context.js +1 -1
  242. package/dist/components/portal/Portal.js +1 -1
  243. package/dist/components/portal/PortalProvider.js +1 -1
  244. package/dist/components/portal/usePortal.js +1 -1
  245. package/dist/components/shared/DraggableCollection.js +142 -0
  246. package/dist/components/shared/DraggableCollection.js.map +1 -0
  247. package/dist/components/shared/InvalidIcon.js +1 -1
  248. package/dist/components/shared/ValidIcon.js +1 -1
  249. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  250. package/dist/components/status/Spin/Cube.js +1 -1
  251. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  252. package/dist/components/status/Spin/Spin.js +1 -1
  253. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  254. package/dist/data/item-themes.js +1 -1
  255. package/dist/data/themes.js +1 -1
  256. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  257. package/dist/icons/AdjustmentsIcon.js +1 -1
  258. package/dist/icons/AiIcon.js +1 -1
  259. package/dist/icons/AreaChartIcon.js +1 -1
  260. package/dist/icons/BackwardIcon.js +1 -1
  261. package/dist/icons/BarChartIcon.js +1 -1
  262. package/dist/icons/BellFilledIcon.js +1 -1
  263. package/dist/icons/BellIcon.js +1 -1
  264. package/dist/icons/BooleanIcon.js +1 -1
  265. package/dist/icons/CalendarEditIcon.js +1 -1
  266. package/dist/icons/CalendarIcon.js +1 -1
  267. package/dist/icons/CaretDownIcon.js +1 -1
  268. package/dist/icons/CaretUpIcon.js +1 -1
  269. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  270. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  271. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  272. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  273. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  274. package/dist/icons/ChartBarLineIcon.js +1 -1
  275. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  276. package/dist/icons/ChartBarStackedIcon.js +1 -1
  277. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  278. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  279. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  280. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  281. package/dist/icons/ChartBubbleIcon.js +1 -1
  282. package/dist/icons/ChartDonut2Icon.js +1 -1
  283. package/dist/icons/ChartFunnelIcon.js +1 -1
  284. package/dist/icons/ChartHeatmapIcon.js +1 -1
  285. package/dist/icons/ChartKPIIcon.js +1 -1
  286. package/dist/icons/ChartPie2Icon.js +1 -1
  287. package/dist/icons/ChartScatterIcon.js +1 -1
  288. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  289. package/dist/icons/CheckCircleIcon.js +1 -1
  290. package/dist/icons/CheckIcon.js +1 -1
  291. package/dist/icons/CircleFilledIcon.js +1 -1
  292. package/dist/icons/ClearIcon.js +1 -1
  293. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  294. package/dist/icons/CloseCircleIcon.js +1 -1
  295. package/dist/icons/CloseIcon.js +1 -1
  296. package/dist/icons/CodeIcon.js +1 -1
  297. package/dist/icons/ColumnTotalIcon.js +1 -1
  298. package/dist/icons/CopyIcon.js +1 -1
  299. package/dist/icons/CountIcon.js +1 -1
  300. package/dist/icons/CubeIcon.js +1 -1
  301. package/dist/icons/CubePauseIcon.js +1 -1
  302. package/dist/icons/CubePlayIcon.js +1 -1
  303. package/dist/icons/CurrencyDollarIcon.js +1 -1
  304. package/dist/icons/DangerIcon.js +1 -1
  305. package/dist/icons/DashboardIcon.js +1 -1
  306. package/dist/icons/DatabaseIcon.js +1 -1
  307. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  308. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  309. package/dist/icons/DirectionIcon.js +1 -1
  310. package/dist/icons/DonutIcon.js +1 -1
  311. package/dist/icons/DownIcon.js +1 -1
  312. package/dist/icons/EditIcon.js +1 -1
  313. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  314. package/dist/icons/ExclamationCircleIcon.js +1 -1
  315. package/dist/icons/ExclamationIcon.js +1 -1
  316. package/dist/icons/EyeIcon.js +1 -1
  317. package/dist/icons/EyeInvisibleIcon.js +1 -1
  318. package/dist/icons/FilterIcon.js +1 -1
  319. package/dist/icons/FolderFilledIcon.js +1 -1
  320. package/dist/icons/FolderIcon.js +1 -1
  321. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  322. package/dist/icons/FolderOpenIcon.js +1 -1
  323. package/dist/icons/ForwardIcon.js +1 -1
  324. package/dist/icons/GripVerticalIcon.d.ts +12 -0
  325. package/dist/icons/GripVerticalIcon.js +11 -0
  326. package/dist/icons/GripVerticalIcon.js.map +1 -0
  327. package/dist/icons/HierarchyIcon.js +1 -1
  328. package/dist/icons/HierarchyOpenIcon.js +1 -1
  329. package/dist/icons/Icon.js +1 -1
  330. package/dist/icons/InfoCircleIcon.js +1 -1
  331. package/dist/icons/InfoIcon.js +1 -1
  332. package/dist/icons/KeyIcon.js +1 -1
  333. package/dist/icons/LeftIcon.js +1 -1
  334. package/dist/icons/LineChartIcon.js +1 -1
  335. package/dist/icons/LoadingIcon.js +1 -1
  336. package/dist/icons/LockFilledIcon.js +1 -1
  337. package/dist/icons/LockIcon.js +1 -1
  338. package/dist/icons/MoreIcon.js +1 -1
  339. package/dist/icons/NotAllowedIcon.js +1 -1
  340. package/dist/icons/Number123Icon.js +1 -1
  341. package/dist/icons/NumberIcon.js +1 -1
  342. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  343. package/dist/icons/PauseCircleIcon.js +1 -1
  344. package/dist/icons/PauseIcon.js +1 -1
  345. package/dist/icons/PercentageIcon.js +1 -1
  346. package/dist/icons/PieChartIcon.js +1 -1
  347. package/dist/icons/PlayCircleIcon.js +1 -1
  348. package/dist/icons/PlayIcon.js +1 -1
  349. package/dist/icons/PlusIcon.js +1 -1
  350. package/dist/icons/ProgressBarIcon.js +1 -1
  351. package/dist/icons/ReloadIcon.js +1 -1
  352. package/dist/icons/ReportIcon.js +1 -1
  353. package/dist/icons/ReturnIcon.js +1 -1
  354. package/dist/icons/RightIcon.js +1 -1
  355. package/dist/icons/RowTotalsIcon.js +1 -1
  356. package/dist/icons/SchemeIcon.js +1 -1
  357. package/dist/icons/SearchIcon.js +1 -1
  358. package/dist/icons/SemanticQueryIcon.js +1 -1
  359. package/dist/icons/SettingsIcon.js +1 -1
  360. package/dist/icons/ShieldFilledIcon.js +1 -1
  361. package/dist/icons/ShieldIcon.js +1 -1
  362. package/dist/icons/SlashIcon.js +1 -1
  363. package/dist/icons/SparklesIcon.js +1 -1
  364. package/dist/icons/SqlIcon.js +1 -1
  365. package/dist/icons/StatsIcon.js +1 -1
  366. package/dist/icons/StopIcon.js +1 -1
  367. package/dist/icons/StringIcon.js +1 -1
  368. package/dist/icons/SubtotalsIcon.js +1 -1
  369. package/dist/icons/SwitchIcon.js +1 -1
  370. package/dist/icons/TableIcon.js +1 -1
  371. package/dist/icons/ThumbsDownIcon.js +1 -1
  372. package/dist/icons/ThumbsUpIcon.js +1 -1
  373. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  374. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  375. package/dist/icons/ThunderboltIcon.js +1 -1
  376. package/dist/icons/TimeIcon.js +1 -1
  377. package/dist/icons/TrashIcon.js +1 -1
  378. package/dist/icons/UnlockIcon.js +1 -1
  379. package/dist/icons/UpIcon.js +1 -1
  380. package/dist/icons/UserGroupIcon.js +1 -1
  381. package/dist/icons/UserIcon.js +1 -1
  382. package/dist/icons/UserLockIcon.js +1 -1
  383. package/dist/icons/ViewIcon.js +1 -1
  384. package/dist/icons/WarningFilledIcon.js +1 -1
  385. package/dist/icons/WarningIcon.js +1 -1
  386. package/dist/icons/index.d.ts +1 -0
  387. package/dist/icons/wrap-icon.js +1 -1
  388. package/dist/index.d.ts +2 -1
  389. package/dist/index.js +3 -2
  390. package/dist/index.js.map +1 -1
  391. package/dist/provider.js +1 -1
  392. package/dist/providers/TrackingProvider.js +1 -1
  393. package/dist/providers/navigationAdapter.default.js +1 -1
  394. package/dist/tokens/base.js +1 -1
  395. package/dist/tokens/colors.js +1 -1
  396. package/dist/tokens/index.js +1 -1
  397. package/dist/tokens/layout.js +1 -1
  398. package/dist/tokens/shadows.js +1 -1
  399. package/dist/tokens/sizes.js +1 -1
  400. package/dist/tokens/spacing.js +1 -1
  401. package/dist/tokens/typography.js +1 -1
  402. package/dist/utils/ResizeSensor.js +1 -1
  403. package/dist/utils/is-dev-env.js +1 -1
  404. package/dist/utils/modules.js +1 -1
  405. package/dist/utils/promise.js +1 -1
  406. package/dist/utils/raf.js +1 -1
  407. package/dist/utils/random.js +1 -1
  408. package/dist/utils/range.js +1 -1
  409. package/dist/utils/react/RenderCache.js +1 -1
  410. package/dist/utils/react/Slots.js +1 -1
  411. package/dist/utils/react/chain.js +1 -1
  412. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  413. package/dist/utils/react/index.js +1 -1
  414. package/dist/utils/react/interactions.js +1 -1
  415. package/dist/utils/react/isTextOnly.js +1 -1
  416. package/dist/utils/react/mapProps.js +1 -1
  417. package/dist/utils/react/mergeProps.js +1 -1
  418. package/dist/utils/react/nullableValue.js +1 -1
  419. package/dist/utils/react/resolveIcon.js +1 -1
  420. package/dist/utils/react/sharedStore.js +1 -1
  421. package/dist/utils/react/useCombinedRefs.js +1 -1
  422. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  423. package/dist/utils/react/useEventBus.js +1 -1
  424. package/dist/utils/react/useId.js +1 -1
  425. package/dist/utils/react/useIsDarwin.js +1 -1
  426. package/dist/utils/react/useKeySymbols.js +1 -1
  427. package/dist/utils/react/useLayoutEffect.js +1 -1
  428. package/dist/utils/react/useLocalStorage.js +1 -1
  429. package/dist/utils/react/useMergeStyles.js +1 -1
  430. package/dist/utils/react/useQaProps.js +1 -1
  431. package/dist/utils/react/useViewportSize.js +1 -1
  432. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  433. package/dist/utils/selection.js +1 -1
  434. package/dist/utils/styles.js +1 -1
  435. package/dist/utils/tree.js +1 -1
  436. package/dist/utils/warnings.js +1 -1
  437. package/dist/version.js +2 -2
  438. package/docs/components/content/Tree.md +0 -25
  439. package/docs/components/fields/FilterPicker.md +27 -0
  440. package/docs/components/fields/ListBox.md +33 -0
  441. package/docs/components/navigation/Tabs.md +127 -51
  442. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.132.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.133.0 | Cube Dev Team */
2
2
  import { useEffect, useState } from "react";
3
3
 
4
4
  //#region src/utils/react/useViewportSize.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.132.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.133.0 | Cube Dev Team */
2
2
  import { isValidElement } from "react";
3
3
  import { isFragment } from "react-is";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.132.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.133.0 | Cube Dev Team */
2
2
  //#region src/utils/selection.ts
3
3
  /**
4
4
  * Deduplicate/toggle keys in a selection: if a key appears twice it is
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.132.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.133.0 | Cube Dev Team */
2
2
  //#region src/utils/styles.ts
3
3
  /**
4
4
  * Split properties into style and non-style properties.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.132.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.133.0 | Cube Dev Team */
2
2
  //#region src/utils/tree.ts
3
3
  function toFlatTree(tree, includingFolders) {
4
4
  return tree.reduce((result, node) => {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.132.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.133.0 | Cube Dev Team */
2
2
  //#region src/utils/warnings.ts
3
3
  const SUGGESTED_PROP_MAP = {
4
4
  disabled: "isDisabled",
package/dist/version.js CHANGED
@@ -1,6 +1,6 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.132.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.133.0 | Cube Dev Team */
2
2
  //#region src/version.ts
3
- const VERSION = "0.132.0";
3
+ const VERSION = "0.133.0";
4
4
  if (typeof window !== "undefined") {
5
5
  const version = VERSION;
6
6
  window.CubeUIKit = window.CubeUIKit || { version };
@@ -58,13 +58,6 @@ consumers can be migrated with minimal churn.
58
58
  — Called when a node is checked or unchecked.
59
59
  - **`onSelect`** `(selectedKeys: Key[], info: TreeOnSelectInfo) => void` —
60
60
  Called when row selection changes.
61
- - **`expandOnFolderClick`** `boolean` (default: `false`) — When `true`,
62
- activating a non-leaf row toggles its expansion instead of selecting
63
- it. Activation happens on mouse click, `Enter`, or `Space` (in
64
- checkable trees `Space` is reserved for the row checkbox; `Enter`
65
- always expands). The chevron and keyboard navigation continue to
66
- work independently. Useful for file-tree UX where only leaves are
67
- meaningful selection targets.
68
61
  - **`menu`** `ReactNode | ((data, state) => ReactNode | null)` — Default
69
62
  `Menu.Item` children rendered on every row that doesn't override via
70
63
  `data.menu`. Returning `null` from the callback hides the menu for
@@ -324,24 +317,6 @@ Set `data.menu` to override the tree-level menu for a specific row,
324
317
  or `null` to hide it entirely. `data.contextMenu` and
325
318
  `data.onAction` follow the same per-row override pattern.
326
319
 
327
- ### Expand on Folder Click
328
-
329
- `expandOnFolderClick` makes folder rows toggle their expansion when
330
- activated instead of triggering selection. Leaves still select normally,
331
- which mirrors typical file-tree UX. Folder rows remain focusable for
332
- keyboard navigation, and the chevron toggle keeps working.
333
-
334
- Activation rules for folder rows:
335
-
336
- - Mouse click → expand / collapse.
337
- - `Enter` → expand / collapse (always, including in `isCheckable` trees).
338
- - `Space` → expand / collapse in non-checkable trees; in `isCheckable`
339
- trees `Space` toggles the row's checkbox instead.
340
-
341
- ```jsx
342
- <Tree treeData={data} expandOnFolderClick />
343
- ```
344
-
345
320
  ## Accessibility
346
321
 
347
322
  Tree implements the
@@ -66,6 +66,8 @@ A versatile selection component that combines a trigger button with a searchable
66
66
  - **`onOptionClick`** `(key: Key) => void` — Callback when an option is clicked (non-checkbox area)
67
67
  - **`onClear`** `() => void` — Callback called when the clear button is pressed
68
68
  - **`onOpenChange`** `(isOpen: boolean) => void` — Callback called when the popover open state changes
69
+ - **`isReorderable`** `boolean` (default: `false`) — Enable drag-and-drop item reordering in the dropdown list
70
+ - **`onReorder`** `(newOrder: string[]) => void` — Callback when items are reordered via drag-and-drop or keyboard (Alt+Arrow)
69
71
 
70
72
  ### Base Properties
71
73
 
@@ -503,6 +505,30 @@ Use `isLoadingItems` to indicate that items are currently being fetched. Unlike
503
505
  </FilterPicker>
504
506
  ```
505
507
 
508
+ ### Reorderable
509
+
510
+ Enable drag-and-drop reordering inside the dropdown with `isReorderable`. Items display a grip handle and can be dragged to new positions. Use `Alt+Arrow` keys to reorder via keyboard.
511
+
512
+ ```jsx
513
+ const [keyOrder, setKeyOrder] = useState([
514
+ 'revenue', 'orders', 'customers', 'sessions',
515
+ 'page-views', 'bounce-rate', 'conversion', 'aov',
516
+ 'retention', 'churn', 'ltv', 'arpu',
517
+ ]);
518
+
519
+ <FilterPicker
520
+ isReorderable
521
+ selectionMode="multiple"
522
+ defaultSelectedKeys={['revenue', 'orders', 'customers']}
523
+ label="Metrics"
524
+ onReorder={(newOrder) => setKeyOrder(newOrder)}
525
+ >
526
+ {keyOrder.map((key) => (
527
+ <FilterPicker.Item key={key}>{key}</FilterPicker.Item>
528
+ ))}
529
+ </FilterPicker>
530
+ ```
531
+
506
532
  ## Accessibility
507
533
 
508
534
  ### Keyboard Navigation
@@ -512,6 +538,7 @@ Use `isLoadingItems` to indicate that items are currently being fetched. Unlike
512
538
  - `Arrow Up/Down` - Opens the popover (when closed) or navigates through options (when open)
513
539
  - `Escape` - Closes the popover or clears search
514
540
  - `Home/End` - Navigate to first/last option
541
+ - `Alt+ArrowUp` / `Alt+ArrowDown` - Reorder the focused item (when `isReorderable`)
515
542
 
516
543
  ### Screen Reader Support
517
544
 
@@ -46,6 +46,8 @@ A versatile list selection component that allows users to select one or more ite
46
46
  - **`onOptionClick`** `(key: Key) => void` — Callback when an option is clicked (non-checkbox area)
47
47
  - **`items`** `Iterable<T>` — Array of items for dynamic content with render function pattern
48
48
  - **`disableSelectionToggle`** `boolean` (default: `false`) — When true, clicking an already-selected item keeps it selected instead of toggling it off
49
+ - **`isReorderable`** `boolean` (default: `false`) — Enable drag-and-drop item reordering. Disables virtualization when active
50
+ - **`onReorder`** `(newOrder: string[]) => void` — Callback when items are reordered via drag-and-drop or keyboard (Alt+Arrow)
49
51
 
50
52
  ### Base Properties
51
53
 
@@ -116,6 +118,8 @@ The `mods` property accepts the following modifiers you can override:
116
118
  - **`header`** `boolean` — Applied when header prop is provided or `showSelectAll={true}`
117
119
  - **`footer`** `boolean` — Applied when footer prop is provided
118
120
  - **`selectAll`** `boolean` — Applied when `showSelectAll={true}` in multiple selection mode
121
+ - **`draggable`** `boolean` — Applied to options when `isReorderable={true}`
122
+ - **`dragging`** `boolean` — Applied to the option currently being dragged
119
123
 
120
124
  ## Key Properties
121
125
 
@@ -604,6 +608,34 @@ const [selectedKey, setSelectedKey] = useState('apple');
604
608
  </Form>
605
609
  ```
606
610
 
611
+ ### Reorderable
612
+
613
+ Enable drag-and-drop reordering with `isReorderable`. Items display a grip handle and can be dragged to new positions. Use `Alt+Arrow` keys to reorder via keyboard.
614
+
615
+ ```jsx
616
+ const [keyOrder, setKeyOrder] = useState([
617
+ 'revenue', 'orders', 'customers', 'sessions',
618
+ ]);
619
+
620
+ <ListBox
621
+ isReorderable
622
+ selectionMode="multiple"
623
+ label="Metrics"
624
+ onReorder={(newOrder) => setKeyOrder(newOrder)}
625
+ >
626
+ {keyOrder.map((key) => (
627
+ <ListBox.Item key={key}>{key}</ListBox.Item>
628
+ ))}
629
+ </ListBox>
630
+ ```
631
+
632
+ **Key features:**
633
+
634
+ - **Drag-and-drop**: Reorder items by dragging the grip handle
635
+ - **Keyboard reordering**: Use `Alt+ArrowUp` / `Alt+ArrowDown` to move the focused item
636
+ - **Callback**: `onReorder` is called with the new key order after a drop or keyboard move
637
+ - **Virtualization**: Automatically disabled when reordering is active
638
+
607
639
  ## Accessibility
608
640
 
609
641
  ### Keyboard Navigation
@@ -614,6 +646,7 @@ const [selectedKey, setSelectedKey] = useState('apple');
614
646
  - `Home/End` - Move to first/last option
615
647
  - `Page Up/Page Down` - Move up/down by multiple items
616
648
  - `Escape` - Deselect all items (if onEscape not provided)
649
+ - `Alt+ArrowUp` / `Alt+ArrowDown` - Reorder the focused item (when `isReorderable`)
617
650
 
618
651
  ### Screen Reader Support
619
652
 
@@ -37,7 +37,7 @@ An accessible tabbed interface for organizing content into multiple panels, show
37
37
  - **`onAction`** `(action: string, tabKey: string) => void` — Callback when a menu action is triggered
38
38
  - **`renderPanel`** `(key: string) => ReactNode` — Render function for lazy panel content
39
39
  - **`panelCacheKeys`** `Record<string, any>` — Cache keys for `renderPanel` content
40
- - **`isReorderable`** `boolean` (default: `false`) — Enable drag-and-drop tab reordering
40
+ - **`isReorderable`** `boolean` (default: `false`) — Enable drag-and-drop tab reordering. When a tab picker is shown, reordering is automatically enabled in the picker dropdown as well
41
41
  - **`keyOrder`** `string[]` — Controlled tab display order
42
42
  - **`onReorder`** `(newOrder: string[]) => void` — Callback when tabs are reordered
43
43
  - **`showTabPicker`** `boolean | 'auto'` (default: `false`) — Show dropdown tab picker
@@ -169,9 +169,7 @@ Optional wrapper for tabs when using explicit panel placement.
169
169
  Explicit panel definition for advanced layout control.
170
170
 
171
171
  ```jsx
172
- <Tabs.Panel key="tab1">
173
- Panel 1 content
174
- </Tabs.Panel>
172
+ <Tabs.Panel key="tab1">Panel 1 content</Tabs.Panel>
175
173
  ```
176
174
 
177
175
  ### Tabs.Action
@@ -187,7 +185,9 @@ Action button designed for the Tabs prefix/suffix slots. Styled with sharp edges
187
185
  </>
188
186
  }
189
187
  >
190
- <Tab key="tab1" title="Tab 1">Content</Tab>
188
+ <Tab key="tab1" title="Tab 1">
189
+ Content
190
+ </Tab>
191
191
  </Tabs>
192
192
  ```
193
193
 
@@ -243,16 +243,22 @@ Control the active tab externally with `activeKey` and `onChange`.
243
243
  const [activeKey, setActiveKey] = useState('tab1');
244
244
 
245
245
  <Tabs activeKey={activeKey} onChange={setActiveKey}>
246
- <Tab key="tab1" title="Tab 1">Content 1</Tab>
247
- <Tab key="tab2" title="Tab 2">Content 2</Tab>
248
- </Tabs>
246
+ <Tab key="tab1" title="Tab 1">
247
+ Content 1
248
+ </Tab>
249
+ <Tab key="tab2" title="Tab 2">
250
+ Content 2
251
+ </Tab>
252
+ </Tabs>;
249
253
  ```
250
254
 
251
255
  ### Disabled Tab
252
256
 
253
257
  ```jsx
254
258
  <Tabs defaultActiveKey="tab1">
255
- <Tab key="tab1" title="Active Tab">Content</Tab>
259
+ <Tab key="tab1" title="Active Tab">
260
+ Content
261
+ </Tab>
256
262
  <Tab key="tab2" title="Disabled Tab" isDisabled>
257
263
  Inaccessible content
258
264
  </Tab>
@@ -269,8 +275,12 @@ Add buttons or other elements before or after the tab list.
269
275
  prefix={<Button size="small">Menu</Button>}
270
276
  suffix={<Button size="small">Add New</Button>}
271
277
  >
272
- <Tab key="items" title="Items">Item list</Tab>
273
- <Tab key="archived" title="Archived">Archived items</Tab>
278
+ <Tab key="items" title="Items">
279
+ Item list
280
+ </Tab>
281
+ <Tab key="archived" title="Archived">
282
+ Archived items
283
+ </Tab>
274
284
  </Tabs>
275
285
  ```
276
286
 
@@ -286,21 +296,17 @@ const [tabs, setTabs] = useState([
286
296
 
287
297
  <Tabs
288
298
  defaultActiveKey="tab1"
289
- onDelete={(key) => setTabs(tabs.filter(t => t.key !== key))}
299
+ onDelete={(key) => setTabs(tabs.filter((t) => t.key !== key))}
290
300
  suffix={
291
- <Tabs.Action
292
- icon={<PlusIcon />}
293
- aria-label="Add tab"
294
- onPress={handleAdd}
295
- />
301
+ <Tabs.Action icon={<PlusIcon />} aria-label="Add tab" onPress={handleAdd} />
296
302
  }
297
303
  >
298
- {tabs.map(tab => (
304
+ {tabs.map((tab) => (
299
305
  <Tab key={tab.key} title={tab.title}>
300
306
  Content for {tab.title}
301
307
  </Tab>
302
308
  ))}
303
- </Tabs>
309
+ </Tabs>;
304
310
  ```
305
311
 
306
312
  ### Tab Menus
@@ -321,7 +327,9 @@ Add dropdown menus to tabs using the `menu` prop. This replaces the need for man
321
327
  // 'delete' is handled automatically via onDelete
322
328
  }}
323
329
  >
324
- <Tab key="tab1" title="Tab 1">Content</Tab>
330
+ <Tab key="tab1" title="Tab 1">
331
+ Content
332
+ </Tab>
325
333
  </Tabs>
326
334
  ```
327
335
 
@@ -355,7 +363,9 @@ Combine editable tabs with a menu for rename, duplicate, and delete actions.
355
363
  // 'delete' triggers onDelete automatically
356
364
  }}
357
365
  >
358
- <Tab key="tab1" title="Tab 1">Content</Tab>
366
+ <Tab key="tab1" title="Tab 1">
367
+ Content
368
+ </Tab>
359
369
  </Tabs>
360
370
  ```
361
371
 
@@ -373,7 +383,9 @@ Enable right-click context menus with the `contextMenu` prop. Uses the same menu
373
383
  </>
374
384
  }
375
385
  >
376
- <Tab key="tab1" title="Tab 1">Content</Tab>
386
+ <Tab key="tab1" title="Tab 1">
387
+ Content
388
+ </Tab>
377
389
  </Tabs>
378
390
  ```
379
391
 
@@ -388,7 +400,9 @@ Enable right-click context menus with the `contextMenu` prop. Uses the same menu
388
400
  </>
389
401
  }
390
402
  >
391
- <Tab key="tab1" title="Tab 1">Content</Tab>
403
+ <Tab key="tab1" title="Tab 1">
404
+ Content
405
+ </Tab>
392
406
  </Tabs>
393
407
  ```
394
408
 
@@ -405,9 +419,11 @@ Override or disable menus on individual tabs.
405
419
  </>
406
420
  }
407
421
  >
408
- <Tab key="tab1" title="Uses Default Menu">Content</Tab>
409
- <Tab
410
- key="tab2"
422
+ <Tab key="tab1" title="Uses Default Menu">
423
+ Content
424
+ </Tab>
425
+ <Tab
426
+ key="tab2"
411
427
  title="Custom Menu"
412
428
  menu={
413
429
  <>
@@ -417,7 +433,9 @@ Override or disable menus on individual tabs.
417
433
  >
418
434
  Content
419
435
  </Tab>
420
- <Tab key="tab3" title="No Menu" menu={null}>Content</Tab>
436
+ <Tab key="tab3" title="No Menu" menu={null}>
437
+ Content
438
+ </Tab>
421
439
  </Tabs>
422
440
  ```
423
441
 
@@ -437,7 +455,9 @@ Use `Menu.Section` for organized menus.
437
455
  </>
438
456
  }
439
457
  >
440
- <Tab key="tab1" title="Tab 1">Content</Tab>
458
+ <Tab key="tab1" title="Tab 1">
459
+ Content
460
+ </Tab>
441
461
  </Tabs>
442
462
  ```
443
463
 
@@ -453,10 +473,16 @@ const [keyOrder, setKeyOrder] = useState(['tab1', 'tab2', 'tab3']);
453
473
  keyOrder={keyOrder}
454
474
  onReorder={(newOrder) => setKeyOrder(newOrder)}
455
475
  >
456
- <Tab key="tab1" title="Tab 1">Content 1</Tab>
457
- <Tab key="tab2" title="Tab 2">Content 2</Tab>
458
- <Tab key="tab3" title="Tab 3">Content 3</Tab>
459
- </Tabs>
476
+ <Tab key="tab1" title="Tab 1">
477
+ Content 1
478
+ </Tab>
479
+ <Tab key="tab2" title="Tab 2">
480
+ Content 2
481
+ </Tab>
482
+ <Tab key="tab3" title="Tab 3">
483
+ Content 3
484
+ </Tab>
485
+ </Tabs>;
460
486
  ```
461
487
 
462
488
  **Key features:**
@@ -494,6 +520,32 @@ const [keyOrder, setKeyOrder] = useState(['tab1', 'tab2', 'tab3']);
494
520
  </Tabs>
495
521
  ```
496
522
 
523
+ ### Reorderable Tab Picker
524
+
525
+ When `isReorderable` is enabled and a tab picker is shown, the picker dropdown automatically supports drag-and-drop reordering as well. Items in the dropdown display a grip handle and can be dragged to reorder. The same `onReorder` callback is shared between the horizontal tab bar and the vertical tab picker.
526
+
527
+ ```jsx
528
+ const [keyOrder, setKeyOrder] = useState(['tab1', 'tab2', 'tab3']);
529
+
530
+ <Tabs
531
+ isReorderable
532
+ showTabPicker
533
+ type="file"
534
+ keyOrder={keyOrder}
535
+ onReorder={(newOrder) => setKeyOrder(newOrder)}
536
+ >
537
+ <Tab key="tab1" title="Tab 1">
538
+ Content 1
539
+ </Tab>
540
+ <Tab key="tab2" title="Tab 2">
541
+ Content 2
542
+ </Tab>
543
+ <Tab key="tab3" title="Tab 3">
544
+ Content 3
545
+ </Tab>
546
+ </Tabs>;
547
+ ```
548
+
497
549
  ### Scroll Arrows
498
550
 
499
551
  Add left/right navigation arrows to scroll overflowed tabs. Use `showScrollArrows` with `true`, `false`, or `'auto'` (shows only when tabs overflow).
@@ -504,7 +556,7 @@ Add left/right navigation arrows to scroll overflowed tabs. Use `showScrollArrow
504
556
  showScrollArrows="auto"
505
557
  styles={{ width: '500px' }}
506
558
  >
507
- {tabs.map(tab => (
559
+ {tabs.map((tab) => (
508
560
  <Tab key={tab.id} title={tab.title}>
509
561
  {tab.content}
510
562
  </Tab>
@@ -521,7 +573,7 @@ Combine with `showTabPicker` for both scroll arrows and a dropdown picker:
521
573
  showTabPicker="auto"
522
574
  type="file"
523
575
  >
524
- {tabs.map(tab => (
576
+ {tabs.map((tab) => (
525
577
  <Tab key={tab.id} title={tab.title}>
526
578
  {tab.content}
527
579
  </Tab>
@@ -543,7 +595,7 @@ By default, scroll arrows and the tab picker appear in the suffix (after the tab
543
595
  type="file"
544
596
  styles={{ width: '500px' }}
545
597
  >
546
- {tabs.map(tab => (
598
+ {tabs.map((tab) => (
547
599
  <Tab key={tab.id} title={tab.title}>
548
600
  {tab.content}
549
601
  </Tab>
@@ -552,6 +604,7 @@ By default, scroll arrows and the tab picker appear in the suffix (after the tab
552
604
  ```
553
605
 
554
606
  When both are in the same slot:
607
+
555
608
  - In **prefix**: TabPicker appears first (left), then scroll arrows (right)
556
609
  - In **suffix**: Scroll arrows appear first (left), then TabPicker (right)
557
610
 
@@ -565,10 +618,14 @@ const [view, setView] = useState('overview');
565
618
  <Tabs activeKey={view} onChange={setView}>
566
619
  <Tab key="overview" title="Overview" />
567
620
  <Tab key="settings" title="Settings" />
568
- </Tabs>
569
-
570
- {view === 'overview' && <OverviewPage />}
571
- {view === 'settings' && <SettingsPage />}
621
+ </Tabs>;
622
+
623
+ {
624
+ view === 'overview' && <OverviewPage />;
625
+ }
626
+ {
627
+ view === 'settings' && <SettingsPage />;
628
+ }
572
629
  ```
573
630
 
574
631
  ### Explicit Panels
@@ -592,8 +649,12 @@ Render all panels immediately but keep inactive ones hidden.
592
649
 
593
650
  ```jsx
594
651
  <Tabs defaultActiveKey="tab1" prerender>
595
- <Tab key="tab1" title="Tab 1">Content 1</Tab>
596
- <Tab key="tab2" title="Tab 2">Content 2</Tab>
652
+ <Tab key="tab1" title="Tab 1">
653
+ Content 1
654
+ </Tab>
655
+ <Tab key="tab2" title="Tab 2">
656
+ Content 2
657
+ </Tab>
597
658
  </Tabs>
598
659
  ```
599
660
 
@@ -622,8 +683,12 @@ Override per-tab/panel:
622
683
 
623
684
  ```jsx
624
685
  <Tabs prerender>
625
- <Tab key="tab1" title="Prerendered">Always in DOM</Tab>
626
- <Tab key="tab2" title="Lazy" prerender={false}>Lazy loaded</Tab>
686
+ <Tab key="tab1" title="Prerendered">
687
+ Always in DOM
688
+ </Tab>
689
+ <Tab key="tab2" title="Lazy" prerender={false}>
690
+ Lazy loaded
691
+ </Tab>
627
692
  </Tabs>
628
693
  ```
629
694
 
@@ -638,10 +703,14 @@ content is computed, while inactive tabs use cached content.
638
703
  defaultActiveKey="tab1"
639
704
  renderPanel={(key) => {
640
705
  switch (key) {
641
- case 'tab1': return <ExpensiveChart data={chartData} />;
642
- case 'tab2': return <LargeTable rows={tableRows} />;
643
- case 'tab3': return <ComplexForm fields={formFields} />;
644
- default: return null;
706
+ case 'tab1':
707
+ return <ExpensiveChart data={chartData} />;
708
+ case 'tab2':
709
+ return <LargeTable rows={tableRows} />;
710
+ case 'tab3':
711
+ return <ComplexForm fields={formFields} />;
712
+ default:
713
+ return null;
645
714
  }
646
715
  }}
647
716
  >
@@ -662,8 +731,8 @@ content is computed, while inactive tabs use cached content.
662
731
  <Tabs
663
732
  renderPanel={(key) => <Panel data={data[key]} />}
664
733
  panelCacheKeys={{
665
- tab1: data.tab1.version, // Cached, re-renders when version changes
666
- tab2: data.tab2.version, // Cached, re-renders when version changes
734
+ tab1: data.tab1.version, // Cached, re-renders when version changes
735
+ tab2: data.tab2.version, // Cached, re-renders when version changes
667
736
  // tab3 has no cache key - re-renders on every Tabs render
668
737
  }}
669
738
  >
@@ -672,6 +741,7 @@ content is computed, while inactive tabs use cached content.
672
741
  ```
673
742
 
674
743
  This approach is ideal for:
744
+
675
745
  - Tabs with complex visualizations or charts
676
746
  - Large data tables that are expensive to render
677
747
  - Forms with many fields
@@ -706,6 +776,7 @@ Tabs work seamlessly inside Layout components. When placed in a `Layout` or `Lay
706
776
  ```
707
777
 
708
778
  **How it works:**
779
+
709
780
  - The tab bar has fixed height and doesn't grow
710
781
  - Tab panels use `display: contents`, allowing children to participate in parent flex layout
711
782
  - Nested Layout components with `flexGrow: 1` (default) stretch to fill remaining space
@@ -722,6 +793,7 @@ Tabs work seamlessly inside Layout components. When placed in a `Layout` or `Lay
722
793
  - `Shift+F10` - Open tab menu (when menu is present)
723
794
  - `Delete` - Delete focused tab (when deletable)
724
795
  - `F2` - Start editing tab title (when editable)
796
+ - `Alt+ArrowLeft` / `Alt+ArrowRight` - Reorder the focused tab (when `isReorderable`)
725
797
 
726
798
  ### Screen Reader Support
727
799
 
@@ -744,13 +816,17 @@ Tabs work seamlessly inside Layout components. When placed in a `Layout` or `Lay
744
816
  1. **Do**: Use clear, descriptive tab titles
745
817
 
746
818
  ```jsx
747
- <Tab key="billing" title="Billing & Payments">...</Tab>
819
+ <Tab key="billing" title="Billing & Payments">
820
+ ...
821
+ </Tab>
748
822
  ```
749
823
 
750
824
  2. **Don't**: Use vague or single-letter titles
751
825
 
752
826
  ```jsx
753
- <Tab key="b" title="B">...</Tab>
827
+ <Tab key="b" title="B">
828
+ ...
829
+ </Tab>
754
830
  ```
755
831
 
756
832
  3. **Do**: Provide meaningful accessible labels
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cube-dev/ui-kit",
3
- "version": "0.132.0",
3
+ "version": "0.133.0",
4
4
  "type": "module",
5
5
  "description": "UIKit for Cube Projects",
6
6
  "repository": {