@cube-dev/ui-kit 0.0.0-canary-ede0c64 → 0.0.0-canary-fb9b9cb

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 (607) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/es/_internal/hooks/index.js +1 -1
  3. package/es/_internal/hooks/use-chained-callback.js +1 -1
  4. package/es/_internal/hooks/use-debounced-value.js +1 -1
  5. package/es/_internal/hooks/use-deprecation-warning.js +1 -1
  6. package/es/_internal/hooks/use-effect-once.js +1 -1
  7. package/es/_internal/hooks/use-event.js +1 -1
  8. package/es/_internal/hooks/use-is-first-render.js +1 -1
  9. package/es/_internal/hooks/use-sync-ref.js +1 -1
  10. package/es/_internal/hooks/use-timer/index.js +1 -1
  11. package/es/_internal/hooks/use-timer/timer.js +1 -1
  12. package/es/_internal/hooks/use-timer/use-timer.js +1 -1
  13. package/es/_internal/hooks/use-update-effect.js +1 -1
  14. package/es/_internal/hooks/use-warn.js +1 -1
  15. package/es/_internal/index.js +1 -1
  16. package/es/components/Block.js +1 -1
  17. package/es/components/CollectionItem.js +1 -1
  18. package/es/components/GlobalStyles.js +1 -1
  19. package/es/components/GridProvider.js +1 -1
  20. package/es/components/HiddenInput.js +1 -1
  21. package/es/components/OpenTrasition.js +1 -1
  22. package/es/components/Root.js +1 -1
  23. package/es/components/actions/Action/Action.js +1 -1
  24. package/es/components/actions/Button/Button.js +1 -1
  25. package/es/components/actions/Button/index.js +1 -1
  26. package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  27. package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
  28. package/es/components/actions/CommandMenu/index.js +1 -1
  29. package/es/components/actions/CommandMenu/styled.js +1 -1
  30. package/es/components/actions/ItemAction/ItemAction.js +1 -1
  31. package/es/components/actions/ItemAction/index.js +1 -1
  32. package/es/components/actions/ItemActionContext.js +1 -1
  33. package/es/components/actions/ItemButton/ItemButton.js +1 -1
  34. package/es/components/actions/ItemButton/index.js +1 -1
  35. package/es/components/actions/Link/Link.js +1 -1
  36. package/es/components/actions/Menu/Menu.js +1 -1
  37. package/es/components/actions/Menu/MenuItem.js +1 -1
  38. package/es/components/actions/Menu/MenuSection.js +1 -1
  39. package/es/components/actions/Menu/MenuTrigger.js +1 -1
  40. package/es/components/actions/Menu/SubMenuTrigger.js +1 -1
  41. package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  42. package/es/components/actions/Menu/context.js +1 -1
  43. package/es/components/actions/Menu/index.js +1 -1
  44. package/es/components/actions/Menu/styled.js +1 -1
  45. package/es/components/actions/index.js +1 -1
  46. package/es/components/actions/use-action.js +1 -1
  47. package/es/components/actions/use-anchored-menu.js +1 -1
  48. package/es/components/actions/use-context-menu.js +1 -1
  49. package/es/components/content/ActiveZone/ActiveZone.js +1 -1
  50. package/es/components/content/Alert/Alert.js +1 -1
  51. package/es/components/content/Alert/index.js +1 -1
  52. package/es/components/content/Alert/types.js +1 -1
  53. package/es/components/content/Alert/use-alert.js +1 -1
  54. package/es/components/content/Avatar/Avatar.js +1 -1
  55. package/es/components/content/Badge/Badge.js +1 -1
  56. package/es/components/content/Card/Card.js +1 -1
  57. package/es/components/content/Content.js +1 -1
  58. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  59. package/es/components/content/CopyPasteBlock/index.js +1 -1
  60. package/es/components/content/CopySnippet/CopySnippet.js +1 -1
  61. package/es/components/content/CopySnippet/index.js +1 -1
  62. package/es/components/content/Disclosure/Disclosure.js +1 -1
  63. package/es/components/content/Disclosure/index.js +1 -1
  64. package/es/components/content/Divider.js +1 -1
  65. package/es/components/content/Footer.js +1 -1
  66. package/es/components/content/Header.js +1 -1
  67. package/es/components/content/HotKeys/HotKeys.js +1 -1
  68. package/es/components/content/HotKeys/index.js +1 -1
  69. package/es/components/content/Item/Item.js +2 -2
  70. package/es/components/content/Item/index.js +1 -1
  71. package/es/components/content/ItemBadge/ItemBadge.js +1 -1
  72. package/es/components/content/ItemBadge/index.js +1 -1
  73. package/es/components/content/Layout/GridLayout.js +1 -1
  74. package/es/components/content/Layout/Layout.js +1 -1
  75. package/es/components/content/Layout/LayoutBlock.js +1 -1
  76. package/es/components/content/Layout/LayoutCenter.js +1 -1
  77. package/es/components/content/Layout/LayoutContainer.js +1 -1
  78. package/es/components/content/Layout/LayoutContent.js +1 -1
  79. package/es/components/content/Layout/LayoutContext.js +1 -1
  80. package/es/components/content/Layout/LayoutFlex.js +1 -1
  81. package/es/components/content/Layout/LayoutFooter.js +1 -1
  82. package/es/components/content/Layout/LayoutGrid.js +1 -1
  83. package/es/components/content/Layout/LayoutHeader.js +1 -1
  84. package/es/components/content/Layout/LayoutPane.js +1 -1
  85. package/es/components/content/Layout/LayoutPanel.js +1 -1
  86. package/es/components/content/Layout/LayoutPanelHeader.js +1 -1
  87. package/es/components/content/Layout/LayoutToolbar.js +1 -1
  88. package/es/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  89. package/es/components/content/Layout/index.js +1 -1
  90. package/es/components/content/Layout/utils.js +1 -1
  91. package/es/components/content/List/SectionHeading.js +1 -1
  92. package/es/components/content/List/index.js +1 -1
  93. package/es/components/content/Paragraph.js +1 -1
  94. package/es/components/content/Placeholder/Placeholder.js +1 -1
  95. package/es/components/content/PrismCode/PrismCode.js +1 -1
  96. package/es/components/content/PrismCode/prismSetup.js +1 -1
  97. package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  98. package/es/components/content/Result/Result.js +1 -1
  99. package/es/components/content/Skeleton/Skeleton.js +1 -1
  100. package/es/components/content/Tag/Tag.js +1 -1
  101. package/es/components/content/Text.js +1 -1
  102. package/es/components/content/TextItem/TextItem.js +1 -1
  103. package/es/components/content/TextItem/index.js +1 -1
  104. package/es/components/content/Title.js +1 -1
  105. package/es/components/content/highlightText.js +1 -1
  106. package/es/components/content/use-auto-tooltip.js +1 -1
  107. package/es/components/fields/Checkbox/Checkbox.js +1 -1
  108. package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
  109. package/es/components/fields/Checkbox/context.js +1 -1
  110. package/es/components/fields/Checkbox/index.js +1 -1
  111. package/es/components/fields/ComboBox/ComboBox.js +1 -1
  112. package/es/components/fields/ComboBox/index.js +1 -1
  113. package/es/components/fields/DatePicker/DateInput.js +1 -1
  114. package/es/components/fields/DatePicker/DateInputBase.js +1 -1
  115. package/es/components/fields/DatePicker/DatePicker.js +1 -1
  116. package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
  117. package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
  118. package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
  119. package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
  120. package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
  121. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  122. package/es/components/fields/DatePicker/TimeInput.js +1 -1
  123. package/es/components/fields/DatePicker/index.js +1 -1
  124. package/es/components/fields/DatePicker/intl.js +1 -1
  125. package/es/components/fields/DatePicker/parseDate.js +1 -1
  126. package/es/components/fields/DatePicker/props.js +1 -1
  127. package/es/components/fields/DatePicker/types.js +1 -1
  128. package/es/components/fields/DatePicker/utils.js +1 -1
  129. package/es/components/fields/FileInput/FileInput.js +1 -1
  130. package/es/components/fields/FilterListBox/FilterListBox.js +1 -1
  131. package/es/components/fields/FilterListBox/index.js +1 -1
  132. package/es/components/fields/FilterPicker/FilterPicker.js +1 -1
  133. package/es/components/fields/FilterPicker/index.js +1 -1
  134. package/es/components/fields/Input/Input.js +1 -1
  135. package/es/components/fields/Input/index.js +1 -1
  136. package/es/components/fields/ListBox/ListBox.js +1 -1
  137. package/es/components/fields/ListBox/index.js +1 -1
  138. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  139. package/es/components/fields/NumberInput/StepButton.js +1 -1
  140. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  141. package/es/components/fields/Picker/Picker.js +1 -1
  142. package/es/components/fields/Picker/index.js +1 -1
  143. package/es/components/fields/RadioGroup/Radio.js +1 -1
  144. package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
  145. package/es/components/fields/RadioGroup/context.js +1 -1
  146. package/es/components/fields/RadioGroup/index.js +1 -1
  147. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  148. package/es/components/fields/SearchInput/index.js +1 -1
  149. package/es/components/fields/Select/Select.js +1 -1
  150. package/es/components/fields/Select/index.js +1 -1
  151. package/es/components/fields/Slider/Gradation.js +1 -1
  152. package/es/components/fields/Slider/Header.js +1 -1
  153. package/es/components/fields/Slider/RangeSlider.js +1 -1
  154. package/es/components/fields/Slider/Slider.js +1 -1
  155. package/es/components/fields/Slider/SliderBase.js +1 -1
  156. package/es/components/fields/Slider/SliderInput.js +1 -1
  157. package/es/components/fields/Slider/SliderThumb.js +1 -1
  158. package/es/components/fields/Slider/SliderTrack.js +1 -1
  159. package/es/components/fields/Slider/elements.js +1 -1
  160. package/es/components/fields/Slider/index.js +1 -1
  161. package/es/components/fields/Slider/types.js +1 -1
  162. package/es/components/fields/Switch/Switch.js +1 -1
  163. package/es/components/fields/Switch/index.js +1 -1
  164. package/es/components/fields/TextArea/TextArea.js +1 -1
  165. package/es/components/fields/TextArea/index.js +1 -1
  166. package/es/components/fields/TextInput/TextInput.js +1 -1
  167. package/es/components/fields/TextInput/TextInputBase.js +1 -1
  168. package/es/components/fields/TextInput/index.js +1 -1
  169. package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  170. package/es/components/fields/TextInputMapper/index.js +1 -1
  171. package/es/components/fields/index.js +1 -1
  172. package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
  173. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  174. package/es/components/form/FieldWrapper/index.js +1 -1
  175. package/es/components/form/FieldWrapper/types.js +1 -1
  176. package/es/components/form/Form/Field.js +1 -1
  177. package/es/components/form/Form/Form.js +1 -1
  178. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  179. package/es/components/form/Form/ResetButton/index.js +1 -1
  180. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  181. package/es/components/form/Form/SubmitButton/index.js +1 -1
  182. package/es/components/form/Form/SubmitError.js +1 -1
  183. package/es/components/form/Form/index.js +1 -1
  184. package/es/components/form/Form/types.js +1 -1
  185. package/es/components/form/Form/use-field/index.js +1 -1
  186. package/es/components/form/Form/use-field/types.js +1 -1
  187. package/es/components/form/Form/use-field/use-field-props.js +1 -1
  188. package/es/components/form/Form/use-field/use-field.js +1 -1
  189. package/es/components/form/Form/use-form.js +1 -1
  190. package/es/components/form/Form/validation.js +1 -1
  191. package/es/components/form/Label.js +1 -1
  192. package/es/components/form/index.js +1 -1
  193. package/es/components/form/wrapper.js +1 -1
  194. package/es/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  195. package/es/components/helpers/DisplayTransition/index.js +1 -1
  196. package/es/components/helpers/IconSwitch/IconSwitch.js +1 -1
  197. package/es/components/helpers/index.js +1 -1
  198. package/es/components/layout/Flex.js +1 -1
  199. package/es/components/layout/Flow.js +1 -1
  200. package/es/components/layout/Grid.js +1 -1
  201. package/es/components/layout/Panel.js +1 -1
  202. package/es/components/layout/Prefix.js +1 -1
  203. package/es/components/layout/ResizablePanel.js +1 -1
  204. package/es/components/layout/Space.js +1 -1
  205. package/es/components/layout/Suffix.js +1 -1
  206. package/es/components/navigation/Tabs/EditableTitle.js +114 -0
  207. package/es/components/navigation/Tabs/TabButton.js +317 -0
  208. package/es/components/navigation/Tabs/TabDropIndicator.js +34 -0
  209. package/es/components/navigation/Tabs/TabPanel.js +128 -0
  210. package/es/components/navigation/Tabs/Tabs.js +142 -702
  211. package/es/components/navigation/Tabs/TabsContext.js +29 -0
  212. package/es/components/navigation/Tabs/index.js +1 -1
  213. package/es/components/navigation/Tabs/styled.js +322 -0
  214. package/es/components/navigation/Tabs/types.js +17 -0
  215. package/es/components/navigation/Tabs/use-tab-editing.js +61 -0
  216. package/es/components/navigation/Tabs/use-tab-indicator.js +77 -0
  217. package/es/components/navigation/Tabs/use-tab-reordering.js +116 -0
  218. package/es/components/navigation/index.js +1 -1
  219. package/es/components/organisms/FileTabs/FileTabs.js +1 -1
  220. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  221. package/es/components/other/Calendar/Calendar.js +1 -1
  222. package/es/components/other/Calendar/CalendarCell.js +1 -1
  223. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  224. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  225. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  226. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  227. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  228. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  229. package/es/components/overlays/AlertDialog/index.js +1 -1
  230. package/es/components/overlays/AlertDialog/types.js +1 -1
  231. package/es/components/overlays/Dialog/Dialog.js +1 -1
  232. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  233. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  234. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  235. package/es/components/overlays/Dialog/context.js +1 -1
  236. package/es/components/overlays/Dialog/index.js +1 -1
  237. package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
  238. package/es/components/overlays/Modal/Modal.js +1 -1
  239. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  240. package/es/components/overlays/Modal/Overlay.js +1 -1
  241. package/es/components/overlays/Modal/Popover.js +1 -1
  242. package/es/components/overlays/Modal/Tray.js +1 -1
  243. package/es/components/overlays/Modal/Underlay.js +1 -1
  244. package/es/components/overlays/Modal/index.js +1 -1
  245. package/es/components/overlays/Modal/types.js +1 -1
  246. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
  247. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
  248. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
  249. package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
  250. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +1 -1
  251. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
  252. package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
  253. package/es/components/overlays/NewNotifications/Notification.js +1 -1
  254. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
  255. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
  256. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
  257. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
  258. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
  259. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
  260. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  261. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
  262. package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
  263. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  264. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  265. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
  266. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
  267. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
  268. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
  269. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
  270. package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
  271. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  272. package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
  273. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  274. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  275. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
  276. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  277. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
  278. package/es/components/overlays/NewNotifications/index.js +1 -1
  279. package/es/components/overlays/NewNotifications/types.js +1 -1
  280. package/es/components/overlays/Notification/Notification.js +1 -1
  281. package/es/components/overlays/OverlayWrapper.js +1 -1
  282. package/es/components/overlays/Toasts/Toast.js +1 -1
  283. package/es/components/overlays/Toasts/index.js +1 -1
  284. package/es/components/overlays/Toasts/types.js +1 -1
  285. package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
  286. package/es/components/overlays/Tooltip/Tooltip.js +1 -1
  287. package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
  288. package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  289. package/es/components/overlays/Tooltip/context.js +1 -1
  290. package/es/components/overlays/Tooltip/index.js +1 -1
  291. package/es/components/portal/Portal.js +1 -1
  292. package/es/components/portal/PortalProvider.js +1 -1
  293. package/es/components/portal/index.js +1 -1
  294. package/es/components/portal/types.js +1 -1
  295. package/es/components/portal/usePortal.js +1 -1
  296. package/es/components/shared/InvalidIcon.js +1 -1
  297. package/es/components/shared/ValidIcon.js +1 -1
  298. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  299. package/es/components/status/LoadingAnimation/index.js +1 -1
  300. package/es/components/status/Spin/Cube.js +1 -1
  301. package/es/components/status/Spin/InternalSpinner.js +1 -1
  302. package/es/components/status/Spin/Spin.js +1 -1
  303. package/es/components/status/Spin/SpinsContainer.js +1 -1
  304. package/es/components/status/Spin/index.js +1 -1
  305. package/es/components/status/Spin/types.js +1 -1
  306. package/es/components/status/index.js +1 -1
  307. package/es/data/item-themes.js +1 -1
  308. package/es/data/themes.js +1 -1
  309. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  310. package/es/icons/AdjustmentsIcon.js +1 -1
  311. package/es/icons/AiIcon.js +1 -1
  312. package/es/icons/AreaChartIcon.js +1 -1
  313. package/es/icons/BackwardIcon.js +1 -1
  314. package/es/icons/BarChartIcon.js +1 -1
  315. package/es/icons/BellFilledIcon.js +1 -1
  316. package/es/icons/BellIcon.js +1 -1
  317. package/es/icons/BooleanIcon.js +1 -1
  318. package/es/icons/CalendarEditIcon.js +1 -1
  319. package/es/icons/CalendarIcon.js +1 -1
  320. package/es/icons/CaretDownIcon.js +1 -1
  321. package/es/icons/CaretUpIcon.js +1 -1
  322. package/es/icons/ChartAreaStackedIcon.js +1 -1
  323. package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
  324. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  325. package/es/icons/ChartBarGroupedIcon.js +1 -1
  326. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  327. package/es/icons/ChartBarLineIcon.js +1 -1
  328. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  329. package/es/icons/ChartBarStackedIcon.js +1 -1
  330. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  331. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  332. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  333. package/es/icons/ChartBoxPlotIcon.js +1 -1
  334. package/es/icons/ChartBubbleIcon.js +1 -1
  335. package/es/icons/ChartDonut2Icon.js +1 -1
  336. package/es/icons/ChartFunnelIcon.js +1 -1
  337. package/es/icons/ChartHeatmapIcon.js +1 -1
  338. package/es/icons/ChartKPIIcon.js +1 -1
  339. package/es/icons/ChartPie2Icon.js +1 -1
  340. package/es/icons/ChartScatterIcon.js +1 -1
  341. package/es/icons/CheckCircleFilledIcon.js +1 -1
  342. package/es/icons/CheckCircleIcon.js +1 -1
  343. package/es/icons/CheckIcon.js +1 -1
  344. package/es/icons/CircleFilledIcon.js +1 -1
  345. package/es/icons/ClearIcon.js +1 -1
  346. package/es/icons/CloseCircleFilledIcon.js +1 -1
  347. package/es/icons/CloseCircleIcon.js +1 -1
  348. package/es/icons/CloseIcon.js +1 -1
  349. package/es/icons/CodeIcon.js +1 -1
  350. package/es/icons/ColumnTotalIcon.js +1 -1
  351. package/es/icons/CopyIcon.js +1 -1
  352. package/es/icons/CountIcon.js +1 -1
  353. package/es/icons/CubeIcon.js +1 -1
  354. package/es/icons/CubePauseIcon.js +1 -1
  355. package/es/icons/CubePlayIcon.js +1 -1
  356. package/es/icons/CurrencyDollarIcon.js +1 -1
  357. package/es/icons/DangerIcon.js +1 -1
  358. package/es/icons/DashboardIcon.js +1 -1
  359. package/es/icons/DatabaseIcon.js +1 -1
  360. package/es/icons/DecimalDecreaseIcon.js +1 -1
  361. package/es/icons/DecimalIncreaseIcon.js +1 -1
  362. package/es/icons/DirectionIcon.js +1 -1
  363. package/es/icons/DonutIcon.js +1 -1
  364. package/es/icons/DownIcon.js +1 -1
  365. package/es/icons/EditIcon.js +1 -1
  366. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  367. package/es/icons/ExclamationCircleIcon.js +1 -1
  368. package/es/icons/ExclamationIcon.js +1 -1
  369. package/es/icons/EyeIcon.js +1 -1
  370. package/es/icons/EyeInvisibleIcon.js +1 -1
  371. package/es/icons/FilterIcon.js +1 -1
  372. package/es/icons/FolderFilledIcon.js +1 -1
  373. package/es/icons/FolderIcon.js +1 -1
  374. package/es/icons/FolderOpenFilledIcon.js +1 -1
  375. package/es/icons/FolderOpenIcon.js +1 -1
  376. package/es/icons/ForwardIcon.js +1 -1
  377. package/es/icons/HierarchyIcon.js +1 -1
  378. package/es/icons/HierarchyOpenIcon.js +1 -1
  379. package/es/icons/Icon.js +1 -1
  380. package/es/icons/InfoCircleIcon.js +1 -1
  381. package/es/icons/InfoIcon.js +1 -1
  382. package/es/icons/KeyIcon.js +1 -1
  383. package/es/icons/LeftIcon.js +1 -1
  384. package/es/icons/LineChartIcon.js +1 -1
  385. package/es/icons/LoadingIcon.js +1 -1
  386. package/es/icons/LockFilledIcon.js +1 -1
  387. package/es/icons/LockIcon.js +1 -1
  388. package/es/icons/MoreIcon.js +1 -1
  389. package/es/icons/NotAllowedIcon.js +1 -1
  390. package/es/icons/Number123Icon.js +1 -1
  391. package/es/icons/NumberIcon.js +1 -1
  392. package/es/icons/PauseCircleFilledIcon.js +1 -1
  393. package/es/icons/PauseCircleIcon.js +1 -1
  394. package/es/icons/PauseIcon.js +1 -1
  395. package/es/icons/PercentageIcon.js +1 -1
  396. package/es/icons/PieChartIcon.js +1 -1
  397. package/es/icons/PlayCircleIcon.js +1 -1
  398. package/es/icons/PlayIcon.js +1 -1
  399. package/es/icons/PlusIcon.js +1 -1
  400. package/es/icons/ProgressBarIcon.js +1 -1
  401. package/es/icons/ReloadIcon.js +1 -1
  402. package/es/icons/ReportIcon.js +1 -1
  403. package/es/icons/ReturnIcon.js +1 -1
  404. package/es/icons/RightIcon.js +1 -1
  405. package/es/icons/RowTotalsIcon.js +1 -1
  406. package/es/icons/SchemeIcon.js +1 -1
  407. package/es/icons/SearchIcon.js +1 -1
  408. package/es/icons/SemanticQueryIcon.js +1 -1
  409. package/es/icons/SettingsIcon.js +1 -1
  410. package/es/icons/ShieldFilledIcon.js +1 -1
  411. package/es/icons/ShieldIcon.js +1 -1
  412. package/es/icons/SlashIcon.js +1 -1
  413. package/es/icons/SparklesIcon.js +1 -1
  414. package/es/icons/SqlIcon.js +1 -1
  415. package/es/icons/StatsIcon.js +1 -1
  416. package/es/icons/StopIcon.js +1 -1
  417. package/es/icons/StringIcon.js +1 -1
  418. package/es/icons/SubtotalsIcon.js +1 -1
  419. package/es/icons/SwitchIcon.js +1 -1
  420. package/es/icons/TableIcon.js +1 -1
  421. package/es/icons/ThumbsDownIcon.js +1 -1
  422. package/es/icons/ThumbsUpIcon.js +1 -1
  423. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  424. package/es/icons/ThunderboltFilledIcon.js +1 -1
  425. package/es/icons/ThunderboltIcon.js +1 -1
  426. package/es/icons/TimeIcon.js +1 -1
  427. package/es/icons/TrashIcon.js +1 -1
  428. package/es/icons/UnlockIcon.js +1 -1
  429. package/es/icons/UpIcon.js +1 -1
  430. package/es/icons/UserGroupIcon.js +1 -1
  431. package/es/icons/UserIcon.js +1 -1
  432. package/es/icons/UserLockIcon.js +1 -1
  433. package/es/icons/ViewIcon.js +1 -1
  434. package/es/icons/WarningFilledIcon.js +1 -1
  435. package/es/icons/WarningIcon.js +1 -1
  436. package/es/icons/index.js +1 -1
  437. package/es/icons/wrap-icon.js +1 -1
  438. package/es/index.js +1 -1
  439. package/es/provider.js +1 -1
  440. package/es/providers/TrackingProvider.js +1 -1
  441. package/es/providers/navigation.types.js +1 -1
  442. package/es/providers/navigationAdapter.default.js +1 -1
  443. package/es/services/notification.js +1 -1
  444. package/es/shared/form.js +1 -1
  445. package/es/shared/index.js +1 -1
  446. package/es/stories/Form.legacy-stories.js +1 -1
  447. package/es/stories/FormFieldArgs.js +1 -1
  448. package/es/stories/SimpleLayout.stories.js +1 -1
  449. package/es/stories/Tasty.stories.js +1 -1
  450. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  451. package/es/stories/components/DialogFormApp.js +1 -1
  452. package/es/stories/components/StyledButton.js +1 -1
  453. package/es/stories/lists/baseProps.js +1 -1
  454. package/es/stories/playground/PlaygroundEditor.js +1 -1
  455. package/es/stories/playground/PlaygroundLayout.js +1 -1
  456. package/es/stories/playground/PlaygroundOutput.js +1 -1
  457. package/es/stories/playground/PlaygroundPreview.js +1 -1
  458. package/es/stories/playground/components/Button.js +1 -1
  459. package/es/stories/playground/components/Card.js +1 -1
  460. package/es/stories/playground/components/ScrollProgress.js +1 -1
  461. package/es/stories/playground/examples.js +1 -1
  462. package/es/tasty/chunks/cacheKey.js +1 -1
  463. package/es/tasty/chunks/definitions.js +1 -1
  464. package/es/tasty/chunks/index.js +1 -1
  465. package/es/tasty/chunks/renderChunk.js +1 -1
  466. package/es/tasty/config.js +1 -1
  467. package/es/tasty/debug.js +1 -1
  468. package/es/tasty/hooks/index.js +1 -1
  469. package/es/tasty/hooks/useGlobalStyles.js +1 -1
  470. package/es/tasty/hooks/useKeyframes.js +1 -1
  471. package/es/tasty/hooks/useProperty.js +1 -1
  472. package/es/tasty/hooks/useRawCSS.js +1 -1
  473. package/es/tasty/hooks/useStyles.js +1 -1
  474. package/es/tasty/index.js +1 -1
  475. package/es/tasty/injector/index.js +1 -1
  476. package/es/tasty/injector/injector.js +1 -1
  477. package/es/tasty/injector/sheet-manager.js +1 -1
  478. package/es/tasty/injector/types.js +1 -1
  479. package/es/tasty/keyframes/index.js +1 -1
  480. package/es/tasty/parser/classify.js +1 -1
  481. package/es/tasty/parser/const.js +1 -1
  482. package/es/tasty/parser/lru.js +1 -1
  483. package/es/tasty/parser/parser.js +1 -1
  484. package/es/tasty/parser/tokenizer.js +1 -1
  485. package/es/tasty/parser/types.js +1 -1
  486. package/es/tasty/pipeline/conditions.js +1 -1
  487. package/es/tasty/pipeline/exclusive.js +1 -1
  488. package/es/tasty/pipeline/index.js +1 -1
  489. package/es/tasty/pipeline/materialize.js +1 -1
  490. package/es/tasty/pipeline/parseStateKey.js +1 -1
  491. package/es/tasty/pipeline/simplify.js +1 -1
  492. package/es/tasty/plugins/index.js +1 -1
  493. package/es/tasty/plugins/okhsl-plugin.js +1 -1
  494. package/es/tasty/plugins/types.js +1 -1
  495. package/es/tasty/properties/index.js +1 -1
  496. package/es/tasty/states/index.js +1 -1
  497. package/es/tasty/static/index.js +1 -1
  498. package/es/tasty/static/tastyStatic.js +1 -1
  499. package/es/tasty/static/types.js +1 -1
  500. package/es/tasty/styles/align.js +1 -1
  501. package/es/tasty/styles/border.js +1 -1
  502. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  503. package/es/tasty/styles/color.js +1 -1
  504. package/es/tasty/styles/createStyle.js +1 -1
  505. package/es/tasty/styles/dimension.js +1 -1
  506. package/es/tasty/styles/display.js +1 -1
  507. package/es/tasty/styles/fade.js +1 -1
  508. package/es/tasty/styles/fill.js +1 -1
  509. package/es/tasty/styles/flow.js +1 -1
  510. package/es/tasty/styles/gap.js +1 -1
  511. package/es/tasty/styles/height.js +1 -1
  512. package/es/tasty/styles/index.js +1 -1
  513. package/es/tasty/styles/inset.js +1 -1
  514. package/es/tasty/styles/justify.js +1 -1
  515. package/es/tasty/styles/list.js +1 -1
  516. package/es/tasty/styles/margin.js +1 -1
  517. package/es/tasty/styles/outline.js +1 -1
  518. package/es/tasty/styles/padding.js +1 -1
  519. package/es/tasty/styles/place.js +1 -1
  520. package/es/tasty/styles/predefined.js +1 -1
  521. package/es/tasty/styles/preset.js +1 -1
  522. package/es/tasty/styles/radius.js +1 -1
  523. package/es/tasty/styles/reset.js +1 -1
  524. package/es/tasty/styles/scrollbar.js +1 -1
  525. package/es/tasty/styles/shadow.js +1 -1
  526. package/es/tasty/styles/styledScrollbar.js +1 -1
  527. package/es/tasty/styles/transition.js +1 -1
  528. package/es/tasty/styles/types.js +1 -1
  529. package/es/tasty/styles/width.js +1 -1
  530. package/es/tasty/tasty.js +1 -1
  531. package/es/tasty/types.js +1 -1
  532. package/es/tasty/utils/cache-wrapper.js +1 -1
  533. package/es/tasty/utils/case-converter.js +1 -1
  534. package/es/tasty/utils/colors.js +1 -1
  535. package/es/tasty/utils/dotize.js +1 -1
  536. package/es/tasty/utils/filter-base-props.js +1 -1
  537. package/es/tasty/utils/get-display-name.js +1 -1
  538. package/es/tasty/utils/hsl-to-rgb.js +1 -1
  539. package/es/tasty/utils/is-dev-env.js +1 -1
  540. package/es/tasty/utils/merge-styles.js +1 -1
  541. package/es/tasty/utils/mod-attrs.js +1 -1
  542. package/es/tasty/utils/okhsl-to-rgb.js +1 -1
  543. package/es/tasty/utils/process-tokens.js +1 -1
  544. package/es/tasty/utils/rgb-to-okhsl.js +1 -1
  545. package/es/tasty/utils/string.js +1 -1
  546. package/es/tasty/utils/styles.js +1 -1
  547. package/es/tasty/utils/typography.js +1 -1
  548. package/es/tasty/utils/warnings.js +1 -1
  549. package/es/tasty/zero/babel.js +1 -1
  550. package/es/tasty/zero/css-writer.js +1 -1
  551. package/es/tasty/zero/extractor.js +1 -1
  552. package/es/tasty/zero/index.js +1 -1
  553. package/es/tasty/zero/next.js +1 -1
  554. package/es/tokens/base.js +1 -1
  555. package/es/tokens/colors.js +1 -1
  556. package/es/tokens/index.js +1 -1
  557. package/es/tokens/layout.js +1 -1
  558. package/es/tokens/shadows.js +1 -1
  559. package/es/tokens/sizes.js +1 -1
  560. package/es/tokens/spacing.js +1 -1
  561. package/es/tokens/typography.js +1 -1
  562. package/es/utils/ResizeSensor.js +1 -1
  563. package/es/utils/index.js +1 -1
  564. package/es/utils/modules.js +1 -1
  565. package/es/utils/promise.js +1 -1
  566. package/es/utils/raf.js +1 -1
  567. package/es/utils/random.js +1 -1
  568. package/es/utils/range.js +1 -1
  569. package/es/utils/react/RenderCache.js +1 -1
  570. package/es/utils/react/Slots.js +1 -1
  571. package/es/utils/react/chain.js +1 -1
  572. package/es/utils/react/forwardRefWithGenerics.js +1 -1
  573. package/es/utils/react/index.js +1 -1
  574. package/es/utils/react/interactions.js +1 -1
  575. package/es/utils/react/isTextOnly.js +1 -1
  576. package/es/utils/react/mapProps.js +1 -1
  577. package/es/utils/react/mergeProps.js +1 -1
  578. package/es/utils/react/nullableValue.js +1 -1
  579. package/es/utils/react/resolveIcon.js +1 -1
  580. package/es/utils/react/sharedStore.js +1 -1
  581. package/es/utils/react/useCombinedRefs.js +1 -1
  582. package/es/utils/react/useControlledFocusVisible.js +1 -1
  583. package/es/utils/react/useEventBus.js +1 -1
  584. package/es/utils/react/useId.js +1 -1
  585. package/es/utils/react/useIsDarwin.js +1 -1
  586. package/es/utils/react/useKeySymbols.js +1 -1
  587. package/es/utils/react/useLayoutEffect.js +1 -1
  588. package/es/utils/react/useLocalStorage.js +1 -1
  589. package/es/utils/react/useQaProps.js +1 -1
  590. package/es/utils/react/useViewportSize.js +1 -1
  591. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  592. package/es/utils/tree.js +1 -1
  593. package/es/utils/warnings.js +1 -1
  594. package/es/version.js +2 -2
  595. package/package.json +1 -1
  596. package/types/components/navigation/Tabs/EditableTitle.d.ts +24 -0
  597. package/types/components/navigation/Tabs/TabButton.d.ts +22 -0
  598. package/types/components/navigation/Tabs/TabDropIndicator.d.ts +17 -0
  599. package/types/components/navigation/Tabs/TabPanel.d.ts +49 -0
  600. package/types/components/navigation/Tabs/Tabs.d.ts +3 -188
  601. package/types/components/navigation/Tabs/TabsContext.d.ts +52 -0
  602. package/types/components/navigation/Tabs/index.d.ts +1 -1
  603. package/types/components/navigation/Tabs/styled.d.ts +5927 -0
  604. package/types/components/navigation/Tabs/types.d.ts +229 -0
  605. package/types/components/navigation/Tabs/use-tab-editing.d.ts +30 -0
  606. package/types/components/navigation/Tabs/use-tab-indicator.d.ts +20 -0
  607. package/types/components/navigation/Tabs/use-tab-reordering.d.ts +30 -0
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.0.0-canary-ede0c64
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -0,0 +1,114 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
9
+ import { useLayoutEffect, useRef, useState } from 'react';
10
+ import { useTextField } from 'react-aria';
11
+ import { useEvent } from '../../../_internal/hooks/index.js';
12
+ import { EditableTitleInputElement, HiddenMeasure } from './styled.js';
13
+ // =============================================================================
14
+ // Component
15
+ // =============================================================================
16
+ /**
17
+ * Inline editable title component for tab labels.
18
+ *
19
+ * When not editing, displays the title as a span with double-click to edit.
20
+ * When editing, displays an auto-sizing input field.
21
+ */
22
+ export function EditableTitle({ title, isEditing, editValue, onEditValueChange, onStartEditing, onSubmit, onCancel, }) {
23
+ const inputRef = useRef(null);
24
+ const measureRef = useRef(null);
25
+ const [inputWidth, setInputWidth] = useState(null);
26
+ const justEnteredEditModeRef = useRef(false);
27
+ // React Aria text field hook
28
+ const { inputProps } = useTextField({
29
+ 'aria-label': 'Edit tab title',
30
+ value: editValue,
31
+ onChange: onEditValueChange,
32
+ }, inputRef);
33
+ // Focus and select input when entering edit mode
34
+ useLayoutEffect(() => {
35
+ if (isEditing && inputRef.current) {
36
+ const input = inputRef.current;
37
+ // Set flag to ignore immediate blur events
38
+ justEnteredEditModeRef.current = true;
39
+ input.focus();
40
+ // Use requestAnimationFrame to ensure selection happens after focus
41
+ requestAnimationFrame(() => {
42
+ input.select();
43
+ // Clear the flag after focus is established (allow 2 frames for menu to fully close)
44
+ requestAnimationFrame(() => {
45
+ requestAnimationFrame(() => {
46
+ justEnteredEditModeRef.current = false;
47
+ });
48
+ });
49
+ });
50
+ }
51
+ else {
52
+ justEnteredEditModeRef.current = false;
53
+ }
54
+ }, [isEditing]);
55
+ // Measure text width and update input width
56
+ useLayoutEffect(() => {
57
+ if (isEditing && measureRef.current) {
58
+ const width = measureRef.current.scrollWidth;
59
+ setInputWidth(width);
60
+ }
61
+ }, [isEditing, editValue]);
62
+ const handleKeyDown = useEvent((e) => {
63
+ if (e.key === 'Enter') {
64
+ e.preventDefault();
65
+ onSubmit();
66
+ }
67
+ else if (e.key === 'Escape') {
68
+ e.preventDefault();
69
+ onCancel();
70
+ }
71
+ else if (e.key === 'ArrowLeft' ||
72
+ e.key === 'ArrowRight' ||
73
+ e.key === ' ') {
74
+ // Stop propagation to prevent tab navigation while editing
75
+ e.stopPropagation();
76
+ }
77
+ });
78
+ const handleBlur = useEvent(() => {
79
+ // Ignore blur events immediately after entering edit mode (menu closing causes focus loss)
80
+ if (justEnteredEditModeRef.current) {
81
+ // Re-focus the input since something else stole focus
82
+ requestAnimationFrame(() => {
83
+ inputRef.current?.focus();
84
+ inputRef.current?.select();
85
+ });
86
+ return;
87
+ }
88
+ // Submit on blur
89
+ onSubmit();
90
+ });
91
+ const handleDoubleClick = useEvent((e) => {
92
+ e.preventDefault();
93
+ e.stopPropagation();
94
+ onStartEditing();
95
+ });
96
+ if (isEditing) {
97
+ // Merge our handlers with React Aria's inputProps
98
+ const mergedProps = {
99
+ ...inputProps,
100
+ onKeyDown: (e) => {
101
+ handleKeyDown(e);
102
+ inputProps.onKeyDown?.(e);
103
+ },
104
+ onBlur: (e) => {
105
+ handleBlur();
106
+ inputProps.onBlur?.(e);
107
+ },
108
+ };
109
+ return (_jsxs(_Fragment, { children: [_jsx(HiddenMeasure, { ref: measureRef, "aria-hidden": "true", children: editValue || ' ' }), _jsx(EditableTitleInputElement, { ...mergedProps, ref: inputRef, tokens: { '$input-width': inputWidth ? `${inputWidth}px` : 'auto' } })] }));
110
+ }
111
+ return _jsx("span", { onDoubleClick: handleDoubleClick, children: title });
112
+ }
113
+
114
+
@@ -0,0 +1,317 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
9
+ import { Children, cloneElement, isValidElement, useEffect, useLayoutEffect, useMemo, useRef, useState, } from 'react';
10
+ import { useDraggableItem, useFocus, useFocusVisible, useHover, useTab, } from 'react-aria';
11
+ import { useEvent } from '../../../_internal/hooks/index.js';
12
+ import { CloseIcon, MoreIcon } from '../../../icons/index.js';
13
+ import { mergeProps } from '../../../utils/react/index.js';
14
+ import { ItemAction } from '../../actions/ItemAction/index.js';
15
+ import { ItemActionProvider } from '../../actions/ItemActionContext.js';
16
+ import { Menu, MenuTrigger } from '../../actions/Menu/index.js';
17
+ import { useContextMenu } from '../../actions/use-context-menu.js';
18
+ import { EditableTitle } from './EditableTitle.js';
19
+ import { TabContainer, TabElement } from './styled.js';
20
+ import { TabDropIndicator } from './TabDropIndicator.js';
21
+ import { useTabsContext } from './TabsContext.js';
22
+ import { RADIO_SIZE_MAP } from './types.js';
23
+ // =============================================================================
24
+ // Event handlers for actions to prevent event propagation to tab button
25
+ // =============================================================================
26
+ const ACTIONS_EVENT_HANDLERS = {
27
+ onClick: (e) => e.stopPropagation(),
28
+ onPointerDown: (e) => e.stopPropagation(),
29
+ onPointerUp: (e) => e.stopPropagation(),
30
+ onMouseDown: (e) => e.stopPropagation(),
31
+ onMouseUp: (e) => e.stopPropagation(),
32
+ onKeyDown: (e) => {
33
+ if (e.key === 'Enter' || e.key === ' ') {
34
+ e.stopPropagation();
35
+ }
36
+ },
37
+ };
38
+ /**
39
+ * Extracts the raw key from a React element, stripping the ".$" prefix
40
+ * that React adds via Children.map/toArray.
41
+ */
42
+ function getRawKey(element) {
43
+ if (element.key == null)
44
+ return null;
45
+ const keyStr = String(element.key);
46
+ return keyStr.startsWith('.$') ? keyStr.slice(2) : keyStr;
47
+ }
48
+ /**
49
+ * Process menu items for predefined action keys (rename, delete).
50
+ * Auto-adds labels and disables items when requirements aren't met.
51
+ */
52
+ function processMenuItems(children, effectiveIsEditable, isDeletable) {
53
+ return Children.toArray(children).map((child) => {
54
+ if (!isValidElement(child))
55
+ return child;
56
+ const childKey = getRawKey(child);
57
+ const childProps = child.props;
58
+ // Handle predefined action keys
59
+ if (childKey === 'rename') {
60
+ return cloneElement(child, {
61
+ children: childProps.children ?? 'Rename',
62
+ isDisabled: childProps.isDisabled ?? !effectiveIsEditable,
63
+ });
64
+ }
65
+ if (childKey === 'delete') {
66
+ return cloneElement(child, {
67
+ children: childProps.children ?? 'Delete',
68
+ theme: childProps.theme ?? 'danger',
69
+ isDisabled: childProps.isDisabled ?? !isDeletable,
70
+ });
71
+ }
72
+ // Recursively process Menu.Section children
73
+ if (childProps.children && typeof childProps.children !== 'string') {
74
+ return cloneElement(child, {
75
+ children: processMenuItems(childProps.children, effectiveIsEditable, isDeletable),
76
+ });
77
+ }
78
+ return child;
79
+ });
80
+ }
81
+ /**
82
+ * Check if menu children is empty (null, undefined, or empty fragment)
83
+ */
84
+ function isMenuEmpty(menu) {
85
+ if (menu === null || menu === undefined)
86
+ return true;
87
+ const children = Children.toArray(menu);
88
+ return children.length === 0;
89
+ }
90
+ // =============================================================================
91
+ // TabButton Component
92
+ // =============================================================================
93
+ /**
94
+ * Individual tab button component.
95
+ *
96
+ * Uses TabsContext to access shared props, dramatically reducing prop drilling.
97
+ * Handles:
98
+ * - Tab selection and keyboard navigation
99
+ * - Inline title editing
100
+ * - Menu and context menu
101
+ * - Drag-and-drop reordering
102
+ * - Focus and hover states
103
+ */
104
+ export function TabButton({ item, tabData, isLastTab }) {
105
+ // Get shared context
106
+ const { state, type, size, showActionsOnHover: parentShowActionsOnHover, isEditable: parentIsEditable, menu: parentMenu, menuTriggerProps: parentMenuTriggerProps, menuProps: parentMenuProps, contextMenu: parentContextMenu, onAction: parentOnAction, onDelete, dragState, dropState, editingKey, editValue, setEditValue, startEditing, submitEditing, cancelEditing, } = useTabsContext();
107
+ const ref = useRef(null);
108
+ const containerRef = useRef(null);
109
+ const actionsRef = useRef(null);
110
+ const { tabProps } = useTab({ key: item.key }, state, ref);
111
+ // Measure actions width for proper space allocation in Item
112
+ const [actionsWidth, setActionsWidth] = useState(0);
113
+ // Drag-and-drop support - only enable when both states are provided
114
+ const isDraggable = !!dragState && !!dropState;
115
+ // useDraggableItem must be called unconditionally (Rules of Hooks)
116
+ // When dragState is undefined, we pass a minimal mock state to satisfy the hook
117
+ const mockDragState = useMemo(() => ({
118
+ collection: state.collection,
119
+ selectionManager: state.selectionManager,
120
+ isDragging: () => false,
121
+ getKeysForDrag: () => new Set(),
122
+ isDisabled: false,
123
+ startDrag: () => { },
124
+ endDrag: () => { },
125
+ }), [state.collection, state.selectionManager]);
126
+ const dragResult = useDraggableItem({ key: item.key }, dragState ?? mockDragState);
127
+ const effectiveDragProps = isDraggable ? dragResult.dragProps : {};
128
+ const isDragging = isDraggable && dragResult.isDragging;
129
+ // Controlled state for menu trigger (enables keyboard opening with Shift+F10)
130
+ const [isMenuOpen, setIsMenuOpen] = useState(false);
131
+ // Hover, focus, and focus-visible state handling
132
+ const { hoverProps, isHovered } = useHover({});
133
+ const [isFocused, setIsFocused] = useState(false);
134
+ const { focusProps } = useFocus({ onFocusChange: setIsFocused });
135
+ const { isFocusVisible } = useFocusVisible();
136
+ // Suppress focus-visible when restoring focus after editing
137
+ const [suppressFocusVisible, setSuppressFocusVisible] = useState(false);
138
+ const effectiveFocusVisible = isFocusVisible && !suppressFocusVisible;
139
+ const isActive = state.selectedKey === item.key;
140
+ const isDisabled = state.disabledKeys.has(item.key);
141
+ const isDeletable = !!onDelete;
142
+ const isEditing = editingKey === item.key;
143
+ // Compute effective values - Tab-level overrides Tabs-level
144
+ const effectiveIsEditable = tabData.isEditable ?? parentIsEditable ?? false;
145
+ const effectiveMenu = tabData.menu === null ? null : tabData.menu ?? parentMenu;
146
+ const effectiveMenuTriggerProps = {
147
+ ...parentMenuTriggerProps,
148
+ ...tabData.menuTriggerProps,
149
+ };
150
+ const effectiveMenuProps = {
151
+ ...parentMenuProps,
152
+ ...tabData.menuProps,
153
+ };
154
+ const effectiveContextMenu = tabData.contextMenu ?? parentContextMenu ?? false;
155
+ const effectiveType = tabData.type ?? type ?? 'default';
156
+ // Delete button shown only if onDelete is set AND no menu
157
+ const showDeleteButton = isDeletable && isMenuEmpty(effectiveMenu);
158
+ // Process menu items for auto-labels and disabled states
159
+ const processedMenu = effectiveMenu && !isMenuEmpty(effectiveMenu)
160
+ ? processMenuItems(effectiveMenu, effectiveIsEditable, isDeletable)
161
+ : null;
162
+ const handleDelete = useEvent(() => {
163
+ onDelete?.(item.key);
164
+ });
165
+ const handleStartEditing = useEvent(() => {
166
+ if (!effectiveIsEditable || isDisabled)
167
+ return;
168
+ const titleText = typeof tabData.title === 'string' ? tabData.title : String(item.key);
169
+ startEditing(item.key, titleText);
170
+ });
171
+ const handleSubmitEditing = useEvent(() => {
172
+ submitEditing(item.key, editValue, tabData.onTitleChange);
173
+ // Suppress focus-visible and restore focus to the tab button after editing
174
+ setSuppressFocusVisible(true);
175
+ requestAnimationFrame(() => {
176
+ ref.current?.focus();
177
+ });
178
+ });
179
+ const handleCancelEditing = useEvent(() => {
180
+ cancelEditing();
181
+ // Suppress focus-visible and restore focus to the tab button after editing
182
+ setSuppressFocusVisible(true);
183
+ requestAnimationFrame(() => {
184
+ ref.current?.focus();
185
+ });
186
+ });
187
+ const handleEditValueChange = useEvent((value) => {
188
+ setEditValue(value);
189
+ });
190
+ // Handle menu actions - predefined actions first, then callbacks
191
+ const handleMenuAction = useEvent((action) => {
192
+ // Strip the ".$" prefix that React adds via Children.toArray/map
193
+ const actionStr = String(action);
194
+ const normalizedAction = actionStr.startsWith('.$')
195
+ ? actionStr.slice(2)
196
+ : actionStr;
197
+ // Handle predefined actions first (only if requirements are met)
198
+ if (normalizedAction === 'rename' && effectiveIsEditable) {
199
+ handleStartEditing();
200
+ }
201
+ if (normalizedAction === 'delete' && isDeletable) {
202
+ onDelete?.(item.key);
203
+ }
204
+ // Call Tab-level onAction first (with normalized action)
205
+ tabData.onAction?.(normalizedAction);
206
+ // Then call Tabs-level onAction with tab key (with normalized action)
207
+ parentOnAction?.(normalizedAction, item.key);
208
+ });
209
+ // Keyboard handler for accessibility shortcuts (WAI-ARIA Tabs Pattern)
210
+ const handleKeyDown = useEvent((e) => {
211
+ // Reset focus-visible suppression on any keyboard interaction
212
+ if (suppressFocusVisible) {
213
+ setSuppressFocusVisible(false);
214
+ }
215
+ // F2 to start editing (standard rename shortcut)
216
+ if (e.key === 'F2' && effectiveIsEditable && !isDisabled) {
217
+ e.preventDefault();
218
+ e.stopPropagation();
219
+ handleStartEditing();
220
+ }
221
+ // Shift+F10 opens the menu (standard context menu shortcut)
222
+ if (e.key === 'F10' && e.shiftKey && processedMenu) {
223
+ e.preventDefault();
224
+ e.stopPropagation();
225
+ setIsMenuOpen(true);
226
+ }
227
+ // Delete key for direct tab deletion (ARIA Tabs pattern optional feature)
228
+ if ((e.key === 'Delete' || e.key === 'Backspace') && isDeletable) {
229
+ e.preventDefault();
230
+ onDelete?.(item.key);
231
+ }
232
+ });
233
+ const mods = useMemo(() => ({
234
+ type: effectiveType,
235
+ active: isActive,
236
+ deletable: isDeletable,
237
+ disabled: isDisabled,
238
+ editing: isEditing,
239
+ hovered: isHovered,
240
+ focused: isFocused,
241
+ 'focus-visible': effectiveFocusVisible,
242
+ draggable: isDraggable,
243
+ dragging: isDragging,
244
+ }), [
245
+ effectiveType,
246
+ isActive,
247
+ isDeletable,
248
+ isDisabled,
249
+ isEditing,
250
+ isHovered,
251
+ isFocused,
252
+ effectiveFocusVisible,
253
+ isDraggable,
254
+ isDragging,
255
+ ]);
256
+ // Scroll active tab into view
257
+ useEffect(() => {
258
+ if (ref.current && isActive) {
259
+ ref.current.scrollIntoView?.({ block: 'nearest', inline: 'nearest' });
260
+ }
261
+ }, [isActive]);
262
+ // Build menu element
263
+ const menuElement = processedMenu ? (_jsx(Menu, { ...effectiveMenuProps, onAction: handleMenuAction, children: processedMenu })) : null;
264
+ // Use the useContextMenu hook for context menu handling
265
+ const contextMenu = useContextMenu(Menu, { placement: 'bottom start' }, {
266
+ ...effectiveMenuProps,
267
+ onAction: handleMenuAction,
268
+ children: processedMenu,
269
+ });
270
+ // Build menu trigger action with controlled state for keyboard accessibility
271
+ const menuAction = menuElement ? (_jsxs(MenuTrigger, { isOpen: isMenuOpen, onOpenChange: setIsMenuOpen, children: [_jsx(ItemAction, { tabIndex: -1, icon: _jsx(MoreIcon, {}), ...effectiveMenuTriggerProps }), menuElement] })) : null;
272
+ // Build delete button (only shown when no menu)
273
+ const deleteAction = showDeleteButton ? (_jsx(ItemAction, { tabIndex: -1, icon: _jsx(CloseIcon, {}), tooltip: "Delete tab", onPress: handleDelete })) : null;
274
+ // Order: custom actions → menu trigger → delete button
275
+ const actions = tabData.actions || menuAction || deleteAction ? (_jsxs(_Fragment, { children: [tabData.actions, menuAction, deleteAction] })) : undefined;
276
+ // Measure actions width to pass to Item for proper space allocation
277
+ useLayoutEffect(() => {
278
+ if (actions && actionsRef.current) {
279
+ const width = Math.round(actionsRef.current.offsetWidth);
280
+ if (width !== actionsWidth) {
281
+ setActionsWidth(width);
282
+ }
283
+ }
284
+ }, [actions, actionsWidth]);
285
+ // Determine effective size
286
+ const effectiveSize = tabData.size ?? size ?? 'medium';
287
+ const itemSize = effectiveType === 'radio'
288
+ ? RADIO_SIZE_MAP[effectiveSize === 'large' ? 'large' : 'medium']
289
+ : effectiveSize;
290
+ // Determine Item type prop
291
+ const itemType = effectiveType === 'default' ? (isActive ? 'clear' : 'neutral') : 'neutral';
292
+ // Determine shape - file/panel types use sharp edges
293
+ const isFileOrPanelType = effectiveType === 'file' || effectiveType === 'panel';
294
+ const itemShape = isFileOrPanelType ? 'sharp' : undefined;
295
+ // Determine showActionsOnHover - tab-level overrides parent-level
296
+ const effectiveShowActionsOnHover = tabData.showActionsOnHover ?? parentShowActionsOnHover;
297
+ // Render title with editing support if editable
298
+ const titleContent = effectiveIsEditable ? (_jsx(EditableTitle, { title: tabData.title, isEditing: isEditing, editValue: isEditing ? editValue : '', onEditValueChange: handleEditValueChange, onStartEditing: handleStartEditing, onSubmit: handleSubmitEditing, onCancel: handleCancelEditing })) : (tabData.title);
299
+ // Extract tab-specific props and pass through the rest (style props) to the Item
300
+ const { title: _title, content: _content, key: _key, isDisabled: _isDisabled, prerender: _prerender, keepMounted: _keepMounted, size: _size, type: _type, actions: _actions, showActionsOnHover: _showActionsOnHover, isEditable: _isEditable, onTitleChange: _onTitleChange, menu: _menu, menuTriggerProps: _menuTriggerProps, menuProps: _menuProps, contextMenu: _contextMenu, onAction: _onAction, qa, qaVal, styles, ...itemStyleProps } = tabData;
301
+ // Use the hook's targetRef when context menu is enabled
302
+ const effectiveContainerRef = effectiveContextMenu && processedMenu
303
+ ? contextMenu.targetRef
304
+ : containerRef;
305
+ // ARIA: indicate popup menu presence
306
+ const ariaProps = processedMenu ? { 'aria-haspopup': 'menu' } : {};
307
+ // Mods for TabContainer
308
+ const containerMods = {
309
+ ...mods,
310
+ 'show-actions-on-hover': effectiveShowActionsOnHover,
311
+ };
312
+ return (_jsxs(TabContainer, { ref: effectiveContainerRef, "data-size": itemSize, mods: containerMods, tokens: { '$actions-width': `${actionsWidth}px` }, ...effectiveDragProps, children: [isDraggable && dropState && (_jsx(TabDropIndicator, { target: { type: 'item', key: item.key, dropPosition: 'before' }, dropState: dropState, position: "before" })), _jsx(TabElement, { preserveActionsSpace: true, showActionsOnHover: effectiveShowActionsOnHover, as: "button", ...mergeProps(tabProps, hoverProps, focusProps, {
313
+ onKeyDown: handleKeyDown,
314
+ }), ...ariaProps, ...itemStyleProps, ref: ref, qa: qa ?? `Tab-${String(item.key)}`, qaVal: qaVal, styles: styles, mods: mods, isSelected: isActive, isDisabled: isDisabled, size: itemSize, type: itemType, shape: itemShape, actions: actions ? true : undefined, children: titleContent }), actions && (_jsx("div", { ref: actionsRef, "data-element": "Actions", ...ACTIONS_EVENT_HANDLERS, children: _jsx(ItemActionProvider, { type: itemType, theme: "default", isDisabled: isDisabled, children: actions }) })), effectiveContextMenu && processedMenu && contextMenu.rendered, isDraggable && dropState && isLastTab && (_jsx(TabDropIndicator, { target: { type: 'item', key: item.key, dropPosition: 'after' }, dropState: dropState, position: "after" }))] }));
315
+ }
316
+
317
+
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @license MIT
3
+ * author: Cube Dev Team
4
+ * @cube-dev/ui-kit v0.0.0-canary-fb9b9cb
5
+ * Released under the MIT license.
6
+ */
7
+
8
+ import { jsx as _jsx } from "react/jsx-runtime";
9
+ import { useRef } from 'react';
10
+ import { useDropIndicator } from 'react-aria';
11
+ import { DropIndicatorElement } from './styled.js';
12
+ // =============================================================================
13
+ // Component
14
+ // =============================================================================
15
+ /**
16
+ * Visual drop indicator for drag-and-drop tab reordering.
17
+ *
18
+ * Renders a vertical line showing where the dragged tab will be dropped.
19
+ * Only visible when the drop target is active.
20
+ */
21
+ export function TabDropIndicator({ target, dropState, position, }) {
22
+ const ref = useRef(null);
23
+ const { dropIndicatorProps, isHidden, isDropTarget } = useDropIndicator({ target }, dropState, ref);
24
+ if (isHidden) {
25
+ return null;
26
+ }
27
+ return (_jsx(DropIndicatorElement, { ref: ref, role: "option", ...dropIndicatorProps, mods: {
28
+ 'drop-target': isDropTarget,
29
+ after: position === 'after',
30
+ before: position === 'before',
31
+ } }));
32
+ }
33
+
34
+