@cube-dev/ui-kit 0.0.0-canary-c210a8c → 0.0.0-canary-60981ef

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 (462) hide show
  1. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.js +1 -1
  19. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  20. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  21. package/dist/components/actions/ButtonSplit/context.js +1 -1
  22. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  23. package/dist/components/actions/CommandMenu/styled.js +1 -1
  24. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  25. package/dist/components/actions/ItemActionContext.js +1 -1
  26. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  27. package/dist/components/actions/Link/Link.js +1 -1
  28. package/dist/components/actions/Menu/Menu.js +1 -1
  29. package/dist/components/actions/Menu/MenuItem.js +1 -1
  30. package/dist/components/actions/Menu/MenuSection.js +1 -1
  31. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  32. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  34. package/dist/components/actions/Menu/context.js +1 -1
  35. package/dist/components/actions/Menu/styled.js +1 -1
  36. package/dist/components/actions/index.js +1 -1
  37. package/dist/components/actions/use-action.js +1 -1
  38. package/dist/components/actions/use-anchored-menu.js +1 -1
  39. package/dist/components/actions/use-context-menu.js +1 -1
  40. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  41. package/dist/components/content/Alert/Alert.js +1 -1
  42. package/dist/components/content/Alert/use-alert.js +1 -1
  43. package/dist/components/content/Avatar/Avatar.js +1 -1
  44. package/dist/components/content/Badge/Badge.js +1 -1
  45. package/dist/components/content/Card/Card.js +1 -1
  46. package/dist/components/content/Content.js +1 -1
  47. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  48. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  49. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  50. package/dist/components/content/Divider.js +1 -1
  51. package/dist/components/content/Footer.js +1 -1
  52. package/dist/components/content/Header.js +1 -1
  53. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  54. package/dist/components/content/Item/Item.js +1 -1
  55. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  56. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  57. package/dist/components/content/Layout/GridLayout.js +1 -1
  58. package/dist/components/content/Layout/Layout.js +1 -1
  59. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  60. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  61. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  62. package/dist/components/content/Layout/LayoutContent.js +1 -1
  63. package/dist/components/content/Layout/LayoutContext.js +1 -1
  64. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  65. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  66. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  67. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  68. package/dist/components/content/Layout/LayoutPane.js +1 -1
  69. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  70. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  71. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  72. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  73. package/dist/components/content/Layout/index.js +1 -1
  74. package/dist/components/content/Layout/utils.js +1 -1
  75. package/dist/components/content/Paragraph.js +1 -1
  76. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  77. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  78. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  79. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  80. package/dist/components/content/Result/Result.js +1 -1
  81. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  82. package/dist/components/content/Tag/Tag.js +1 -1
  83. package/dist/components/content/Text.js +1 -1
  84. package/dist/components/content/TextItem/TextItem.js +1 -1
  85. package/dist/components/content/Title.js +1 -1
  86. package/dist/components/content/highlightText.js +1 -1
  87. package/dist/components/content/use-auto-tooltip.js +1 -1
  88. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  89. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  90. package/dist/components/fields/Checkbox/context.js +1 -1
  91. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  92. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  93. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  94. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  95. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  96. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  97. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  98. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  99. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  100. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  101. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  102. package/dist/components/fields/DatePicker/intl.js +1 -1
  103. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  104. package/dist/components/fields/DatePicker/props.js +1 -1
  105. package/dist/components/fields/DatePicker/utils.js +1 -1
  106. package/dist/components/fields/FileInput/FileInput.js +1 -1
  107. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  108. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  109. package/dist/components/fields/Input/Input.js +1 -1
  110. package/dist/components/fields/ListBox/ListBox.js +1 -1
  111. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  112. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  113. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  114. package/dist/components/fields/Picker/Picker.js +1 -1
  115. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  116. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  117. package/dist/components/fields/RadioGroup/context.js +1 -1
  118. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  119. package/dist/components/fields/Select/Select.js +1 -1
  120. package/dist/components/fields/Slider/Gradation.js +1 -1
  121. package/dist/components/fields/Slider/HueSlider.js +1 -1
  122. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  123. package/dist/components/fields/Slider/Slider.js +1 -1
  124. package/dist/components/fields/Slider/SliderBase.js +1 -1
  125. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  126. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  127. package/dist/components/fields/Slider/elements.js +1 -1
  128. package/dist/components/fields/Slider/index.js +1 -1
  129. package/dist/components/fields/Switch/Switch.js +1 -1
  130. package/dist/components/fields/TextArea/TextArea.js +1 -1
  131. package/dist/components/fields/TextInput/TextInput.js +1 -1
  132. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  133. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  134. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  135. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  136. package/dist/components/form/Form/Field.js +1 -1
  137. package/dist/components/form/Form/Form.js +1 -1
  138. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  139. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  140. package/dist/components/form/Form/SubmitError.js +1 -1
  141. package/dist/components/form/Form/index.js +1 -1
  142. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  143. package/dist/components/form/Form/use-field/use-field.js +1 -1
  144. package/dist/components/form/Form/use-form.js +1 -1
  145. package/dist/components/form/Form/validation.js +1 -1
  146. package/dist/components/form/Label.js +1 -1
  147. package/dist/components/form/wrapper.js +1 -1
  148. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  149. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  150. package/dist/components/layout/Flex.js +1 -1
  151. package/dist/components/layout/Flow.js +1 -1
  152. package/dist/components/layout/Grid.js +1 -1
  153. package/dist/components/layout/Panel.js +1 -1
  154. package/dist/components/layout/Prefix.js +1 -1
  155. package/dist/components/layout/ResizablePanel.js +1 -1
  156. package/dist/components/layout/Space.js +1 -1
  157. package/dist/components/layout/Suffix.js +1 -1
  158. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  159. package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
  160. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  161. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  162. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  163. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  164. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  165. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  166. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  167. package/dist/components/navigation/Tabs/styled.js +1 -1
  168. package/dist/components/navigation/Tabs/types.js +1 -1
  169. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  170. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  171. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  172. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  173. package/dist/components/other/Calendar/Calendar.js +1 -1
  174. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  175. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  176. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  177. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  178. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  179. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  180. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  181. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  182. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  183. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  184. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  185. package/dist/components/overlays/Dialog/context.js +1 -1
  186. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  187. package/dist/components/overlays/Modal/Modal.js +1 -1
  188. package/dist/components/overlays/Modal/OpenTransition.js +1 -1
  189. package/dist/components/overlays/Modal/Overlay.js +1 -1
  190. package/dist/components/overlays/Modal/Popover.js +1 -1
  191. package/dist/components/overlays/Modal/Tray.js +1 -1
  192. package/dist/components/overlays/Modal/Underlay.js +1 -1
  193. package/dist/components/overlays/Notifications/Notification.js +1 -1
  194. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  195. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  196. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  197. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  198. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  199. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  200. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  201. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  202. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  203. package/dist/components/overlays/Notifications/index.js +1 -1
  204. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  205. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  206. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  207. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  208. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  209. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  210. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  211. package/dist/components/overlays/Toast/index.js +1 -1
  212. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  213. package/dist/components/overlays/Toast/useToast.js +1 -1
  214. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  215. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  216. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  217. package/dist/components/overlays/Tooltip/context.js +1 -1
  218. package/dist/components/portal/Portal.js +1 -1
  219. package/dist/components/portal/PortalProvider.js +1 -1
  220. package/dist/components/portal/usePortal.js +1 -1
  221. package/dist/components/shared/InvalidIcon.js +1 -1
  222. package/dist/components/shared/ValidIcon.js +1 -1
  223. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  224. package/dist/components/status/Spin/Cube.js +1 -1
  225. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  226. package/dist/components/status/Spin/Spin.js +1 -1
  227. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  228. package/dist/data/item-themes.js +1 -1
  229. package/dist/data/themes.js +1 -1
  230. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  231. package/dist/icons/AdjustmentsIcon.js +1 -1
  232. package/dist/icons/AiIcon.js +1 -1
  233. package/dist/icons/AreaChartIcon.js +1 -1
  234. package/dist/icons/BackwardIcon.js +1 -1
  235. package/dist/icons/BarChartIcon.js +1 -1
  236. package/dist/icons/BellFilledIcon.js +1 -1
  237. package/dist/icons/BellIcon.js +1 -1
  238. package/dist/icons/BooleanIcon.js +1 -1
  239. package/dist/icons/CalendarEditIcon.js +1 -1
  240. package/dist/icons/CalendarIcon.js +1 -1
  241. package/dist/icons/CaretDownIcon.js +1 -1
  242. package/dist/icons/CaretUpIcon.js +1 -1
  243. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  244. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  245. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  246. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  247. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  248. package/dist/icons/ChartBarLineIcon.js +1 -1
  249. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  250. package/dist/icons/ChartBarStackedIcon.js +1 -1
  251. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  252. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  253. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  254. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  255. package/dist/icons/ChartBubbleIcon.js +1 -1
  256. package/dist/icons/ChartDonut2Icon.js +1 -1
  257. package/dist/icons/ChartFunnelIcon.js +1 -1
  258. package/dist/icons/ChartHeatmapIcon.js +1 -1
  259. package/dist/icons/ChartKPIIcon.js +1 -1
  260. package/dist/icons/ChartPie2Icon.js +1 -1
  261. package/dist/icons/ChartScatterIcon.js +1 -1
  262. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  263. package/dist/icons/CheckCircleIcon.js +1 -1
  264. package/dist/icons/CheckIcon.js +1 -1
  265. package/dist/icons/CircleFilledIcon.js +1 -1
  266. package/dist/icons/ClearIcon.js +1 -1
  267. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  268. package/dist/icons/CloseCircleIcon.js +1 -1
  269. package/dist/icons/CloseIcon.js +1 -1
  270. package/dist/icons/CodeIcon.js +1 -1
  271. package/dist/icons/ColumnTotalIcon.js +1 -1
  272. package/dist/icons/CopyIcon.js +1 -1
  273. package/dist/icons/CountIcon.js +1 -1
  274. package/dist/icons/CubeIcon.js +1 -1
  275. package/dist/icons/CubePauseIcon.js +1 -1
  276. package/dist/icons/CubePlayIcon.js +1 -1
  277. package/dist/icons/CurrencyDollarIcon.js +1 -1
  278. package/dist/icons/DangerIcon.js +1 -1
  279. package/dist/icons/DashboardIcon.js +1 -1
  280. package/dist/icons/DatabaseIcon.js +1 -1
  281. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  282. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  283. package/dist/icons/DirectionIcon.js +1 -1
  284. package/dist/icons/DonutIcon.js +1 -1
  285. package/dist/icons/DownIcon.js +1 -1
  286. package/dist/icons/EditIcon.js +1 -1
  287. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  288. package/dist/icons/ExclamationCircleIcon.js +1 -1
  289. package/dist/icons/ExclamationIcon.js +1 -1
  290. package/dist/icons/EyeIcon.js +1 -1
  291. package/dist/icons/EyeInvisibleIcon.js +1 -1
  292. package/dist/icons/FilterIcon.js +1 -1
  293. package/dist/icons/FolderFilledIcon.js +1 -1
  294. package/dist/icons/FolderIcon.js +1 -1
  295. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  296. package/dist/icons/FolderOpenIcon.js +1 -1
  297. package/dist/icons/ForwardIcon.js +1 -1
  298. package/dist/icons/HierarchyIcon.js +1 -1
  299. package/dist/icons/HierarchyOpenIcon.js +1 -1
  300. package/dist/icons/Icon.js +1 -1
  301. package/dist/icons/InfoCircleIcon.js +1 -1
  302. package/dist/icons/InfoIcon.js +1 -1
  303. package/dist/icons/KeyIcon.js +1 -1
  304. package/dist/icons/LeftIcon.js +1 -1
  305. package/dist/icons/LineChartIcon.js +1 -1
  306. package/dist/icons/LoadingIcon.js +1 -1
  307. package/dist/icons/LockFilledIcon.js +1 -1
  308. package/dist/icons/LockIcon.js +1 -1
  309. package/dist/icons/MoreIcon.js +1 -1
  310. package/dist/icons/NotAllowedIcon.js +1 -1
  311. package/dist/icons/Number123Icon.js +1 -1
  312. package/dist/icons/NumberIcon.js +1 -1
  313. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  314. package/dist/icons/PauseCircleIcon.js +1 -1
  315. package/dist/icons/PauseIcon.js +1 -1
  316. package/dist/icons/PercentageIcon.js +1 -1
  317. package/dist/icons/PieChartIcon.js +1 -1
  318. package/dist/icons/PlayCircleIcon.js +1 -1
  319. package/dist/icons/PlayIcon.js +1 -1
  320. package/dist/icons/PlusIcon.js +1 -1
  321. package/dist/icons/ProgressBarIcon.js +1 -1
  322. package/dist/icons/ReloadIcon.js +1 -1
  323. package/dist/icons/ReportIcon.js +1 -1
  324. package/dist/icons/ReturnIcon.js +1 -1
  325. package/dist/icons/RightIcon.js +1 -1
  326. package/dist/icons/RowTotalsIcon.js +1 -1
  327. package/dist/icons/SchemeIcon.js +1 -1
  328. package/dist/icons/SearchIcon.js +1 -1
  329. package/dist/icons/SemanticQueryIcon.js +1 -1
  330. package/dist/icons/SettingsIcon.js +1 -1
  331. package/dist/icons/ShieldFilledIcon.js +1 -1
  332. package/dist/icons/ShieldIcon.js +1 -1
  333. package/dist/icons/SlashIcon.js +1 -1
  334. package/dist/icons/SparklesIcon.js +1 -1
  335. package/dist/icons/SqlIcon.js +1 -1
  336. package/dist/icons/StatsIcon.js +1 -1
  337. package/dist/icons/StopIcon.js +1 -1
  338. package/dist/icons/StringIcon.js +1 -1
  339. package/dist/icons/SubtotalsIcon.js +1 -1
  340. package/dist/icons/SwitchIcon.js +1 -1
  341. package/dist/icons/TableIcon.js +1 -1
  342. package/dist/icons/ThumbsDownIcon.js +1 -1
  343. package/dist/icons/ThumbsUpIcon.js +1 -1
  344. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  345. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  346. package/dist/icons/ThunderboltIcon.js +1 -1
  347. package/dist/icons/TimeIcon.js +1 -1
  348. package/dist/icons/TrashIcon.js +1 -1
  349. package/dist/icons/UnlockIcon.js +1 -1
  350. package/dist/icons/UpIcon.js +1 -1
  351. package/dist/icons/UserGroupIcon.js +1 -1
  352. package/dist/icons/UserIcon.js +1 -1
  353. package/dist/icons/UserLockIcon.js +1 -1
  354. package/dist/icons/ViewIcon.js +1 -1
  355. package/dist/icons/WarningFilledIcon.js +1 -1
  356. package/dist/icons/WarningIcon.js +1 -1
  357. package/dist/icons/wrap-icon.js +1 -1
  358. package/dist/index.js +1 -1
  359. package/dist/provider.js +1 -1
  360. package/dist/providers/TrackingProvider.js +1 -1
  361. package/dist/providers/navigationAdapter.default.js +1 -1
  362. package/dist/tokens/base.js +1 -1
  363. package/dist/tokens/colors.js +1 -1
  364. package/dist/tokens/index.js +1 -1
  365. package/dist/tokens/layout.js +1 -1
  366. package/dist/tokens/shadows.js +1 -1
  367. package/dist/tokens/sizes.js +1 -1
  368. package/dist/tokens/spacing.js +1 -1
  369. package/dist/utils/ResizeSensor.js +1 -1
  370. package/dist/utils/is-dev-env.js +1 -1
  371. package/dist/utils/modules.js +1 -1
  372. package/dist/utils/promise.js +1 -1
  373. package/dist/utils/raf.js +1 -1
  374. package/dist/utils/random.js +1 -1
  375. package/dist/utils/range.js +1 -1
  376. package/dist/utils/react/RenderCache.js +1 -1
  377. package/dist/utils/react/Slots.js +1 -1
  378. package/dist/utils/react/chain.js +1 -1
  379. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  380. package/dist/utils/react/index.js +1 -1
  381. package/dist/utils/react/interactions.js +1 -1
  382. package/dist/utils/react/isTextOnly.js +1 -1
  383. package/dist/utils/react/mapProps.js +1 -1
  384. package/dist/utils/react/mergeProps.js +1 -1
  385. package/dist/utils/react/nullableValue.js +1 -1
  386. package/dist/utils/react/resolveIcon.js +1 -1
  387. package/dist/utils/react/sharedStore.js +1 -1
  388. package/dist/utils/react/useCombinedRefs.js +1 -1
  389. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  390. package/dist/utils/react/useEventBus.js +1 -1
  391. package/dist/utils/react/useId.js +1 -1
  392. package/dist/utils/react/useIsDarwin.js +1 -1
  393. package/dist/utils/react/useKeySymbols.js +1 -1
  394. package/dist/utils/react/useLayoutEffect.js +1 -1
  395. package/dist/utils/react/useLocalStorage.js +1 -1
  396. package/dist/utils/react/useMergeStyles.js +1 -1
  397. package/dist/utils/react/useQaProps.js +1 -1
  398. package/dist/utils/react/useViewportSize.js +1 -1
  399. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  400. package/dist/utils/tree.js +1 -1
  401. package/dist/utils/warnings.js +1 -1
  402. package/dist/version.js +2 -2
  403. package/docs/ComplexLayout.md +469 -0
  404. package/docs/CreateComponent.md +410 -0
  405. package/docs/Introduction.md +122 -0
  406. package/docs/RenderCache.md +172 -0
  407. package/docs/Result.md +35 -0
  408. package/docs/SimpleLayout.md +26 -0
  409. package/docs/Typography.md +38 -0
  410. package/docs/components/CollectionItem.md +299 -0
  411. package/docs/components/actions/Banner.md +189 -0
  412. package/docs/components/actions/Button.md +183 -0
  413. package/docs/components/actions/ButtonSplit.md +189 -0
  414. package/docs/components/actions/CommandMenu.md +430 -0
  415. package/docs/components/actions/ItemButton.md +304 -0
  416. package/docs/components/actions/Link.md +325 -0
  417. package/docs/components/actions/Menu.md +509 -0
  418. package/docs/components/actions/use-anchored-menu.md +211 -0
  419. package/docs/components/actions/use-context-menu.md +220 -0
  420. package/docs/components/content/Badge.md +187 -0
  421. package/docs/components/content/Disclosure.md +177 -0
  422. package/docs/components/content/HotKeys.md +352 -0
  423. package/docs/components/content/Item.md +488 -0
  424. package/docs/components/content/ItemCard.md +125 -0
  425. package/docs/components/content/Layout.md +866 -0
  426. package/docs/components/content/Tag.md +156 -0
  427. package/docs/components/content/TextItem.md +211 -0
  428. package/docs/components/fields/Checkbox.md +180 -0
  429. package/docs/components/fields/ComboBox.md +617 -0
  430. package/docs/components/fields/DatePicker.md +231 -0
  431. package/docs/components/fields/FileInput.md +197 -0
  432. package/docs/components/fields/FilterListBox.md +703 -0
  433. package/docs/components/fields/FilterPicker.md +736 -0
  434. package/docs/components/fields/HueSlider.md +175 -0
  435. package/docs/components/fields/ListBox.md +691 -0
  436. package/docs/components/fields/NumberInput.md +184 -0
  437. package/docs/components/fields/PasswordInput.md +218 -0
  438. package/docs/components/fields/Picker.md +884 -0
  439. package/docs/components/fields/RadioGroup.md +314 -0
  440. package/docs/components/fields/SearchInput.md +227 -0
  441. package/docs/components/fields/Select.md +583 -0
  442. package/docs/components/fields/Slider.md +53 -0
  443. package/docs/components/fields/Switch.md +174 -0
  444. package/docs/components/fields/TextArea.md +61 -0
  445. package/docs/components/fields/TextInput.md +204 -0
  446. package/docs/components/fields/TextInputMapper.md +34 -0
  447. package/docs/components/form/Field.md +341 -0
  448. package/docs/components/form/Form.md +455 -0
  449. package/docs/components/form/FormInstance.md +319 -0
  450. package/docs/components/helpers/DisplayTransition.md +259 -0
  451. package/docs/components/helpers/IconSwitch.md +156 -0
  452. package/docs/components/navigation/Tabs.md +704 -0
  453. package/docs/components/overlays/Dialog.md +202 -0
  454. package/docs/components/overlays/DialogContainer.md +201 -0
  455. package/docs/components/overlays/DialogForm.md +290 -0
  456. package/docs/components/overlays/DialogTrigger.md +191 -0
  457. package/docs/components/overlays/Notifications.md +406 -0
  458. package/docs/components/overlays/Toast.md +285 -0
  459. package/docs/components/overlays/Tooltip.md +371 -0
  460. package/docs/components/overlays/UseDialogContainer.md +603 -0
  461. package/package.json +1 -1
  462. package/docs/.gitignore +0 -3
@@ -0,0 +1,704 @@
1
+ # Tabs
2
+
3
+ An accessible tabbed interface for organizing content into multiple panels, showing one section at a time. Built with React Aria hooks for full keyboard navigation, screen reader support, and proper ARIA semantics.
4
+
5
+ ## When to Use
6
+
7
+ - To organize related content into distinct sections within a single page
8
+ - For settings panels with multiple categories
9
+ - For navigation between different views without page reload
10
+ - When content is mutually exclusive and only one section should be visible at a time
11
+ - For file-like interfaces where multiple documents can be open
12
+
13
+ ## Component
14
+
15
+ ---
16
+
17
+ ### Properties
18
+
19
+ ### Base Properties
20
+
21
+ Supports [Base properties](/BaseProperties)
22
+
23
+ ### Styling Properties
24
+
25
+ #### styles
26
+
27
+ Customizes the root element of the Tabs component.
28
+
29
+ **Sub-elements:**
30
+
31
+ - `TabList` - The container holding the tab buttons
32
+ - `Prefix` - Content rendered before the tab list
33
+ - `Suffix` - Content rendered after the tab list
34
+ - `ScrollWrapper` - Wrapper for scroll area and scrollbar positioning
35
+ - `Scroll` - Scrollable area containing the tab container
36
+ - `ScrollbarH` - Custom horizontal scrollbar indicator
37
+
38
+ ### Style Properties
39
+
40
+ These properties allow direct style application without using the `styles` prop: `width`, `height`.
41
+
42
+ ### Modifiers
43
+
44
+ The `mods` property accepts the following modifiers:
45
+
46
+ | Modifier | Type | Description |
47
+ |----------|------|-------------|
48
+ | `type` | `'default' \| 'narrow' \| 'file' \| 'radio'` | Current tab type |
49
+ | `deletable` | `boolean` | True when onDelete callback is provided |
50
+ | `scrolling` | `boolean` | True when tabs are being scrolled |
51
+ | `fade-left` | `boolean` | True when content is scrolled (left fade visible) |
52
+ | `fade-right` | `boolean` | True when more content exists to the right |
53
+ | `has-panels` | `boolean` | True when tabs have panel content |
54
+
55
+ For individual tabs:
56
+
57
+ | Modifier | Type | Description |
58
+ |----------|------|-------------|
59
+ | `type` | `'default' \| 'narrow' \| 'file' \| 'radio'` | Current tab type |
60
+ | `active` | `boolean` | True when the tab is selected |
61
+ | `deletable` | `boolean` | True when delete button is visible |
62
+ | `disabled` | `boolean` | True when tab is disabled |
63
+ | `editing` | `boolean` | True when tab title is being edited |
64
+ | `hovered` | `boolean` | True when tab is hovered |
65
+ | `focused` | `boolean` | True when tab has focus |
66
+ | `focus-visible` | `boolean` | True when tab has keyboard focus |
67
+ | `draggable` | `boolean` | True when tab can be dragged (reorderable) |
68
+ | `dragging` | `boolean` | True when tab is being dragged |
69
+
70
+ ## Variants
71
+
72
+ ### Types
73
+
74
+ - `default` - Standard tabs with selection indicator below (default)
75
+ - `narrow` - Same as default but with collapsed horizontal label padding for compact layouts
76
+ - `file` - File-style tabs with border bottom highlight on selection, delimiter between tabs
77
+ - `radio` - Radio button style for tab selection
78
+
79
+ ### Sizes
80
+
81
+ - `xsmall` - Extra small size with t4 typography (radio type only)
82
+ - `small` - Small size with t3m typography (default)
83
+ - `medium` - Default size with t3m typography
84
+ - `large` - Larger tabs with t3m typography
85
+
86
+ **Note:** Radio type only supports `medium` and `large` sizes, which are mapped to smaller Item sizes internally.
87
+
88
+ ## Compound Components
89
+
90
+ ### Tab
91
+
92
+ Individual tab definition with title and optional content.
93
+
94
+ ```jsx
95
+ <Tab key="unique-id" title="Tab Title">
96
+ Panel content here
97
+ </Tab>
98
+ ```
99
+
100
+ ### Tabs.List
101
+
102
+ Optional wrapper for tabs when using explicit panel placement.
103
+
104
+ ```jsx
105
+ <Tabs.List>
106
+ <Tab key="tab1" title="Tab 1" />
107
+ <Tab key="tab2" title="Tab 2" />
108
+ </Tabs.List>
109
+ ```
110
+
111
+ ### Tabs.Panel
112
+
113
+ Explicit panel definition for advanced layout control.
114
+
115
+ ```jsx
116
+ <Tabs.Panel key="tab1">
117
+ Panel 1 content
118
+ </Tabs.Panel>
119
+ ```
120
+
121
+ ### Tabs.Action
122
+
123
+ Action button designed for the Tabs prefix/suffix slots. Styled with sharp edges and no border to match the TabPicker trigger. When multiple `Tabs.Action` components are placed together, they automatically display dividers between them.
124
+
125
+ ```jsx
126
+ <Tabs
127
+ suffix={
128
+ <>
129
+ <Tabs.Action icon={<PlusIcon />} onPress={handleAdd} />
130
+ <Tabs.Action icon={<SettingsIcon />} onPress={handleSettings} />
131
+ </>
132
+ }
133
+ >
134
+ <Tab key="tab1" title="Tab 1">Content</Tab>
135
+ </Tabs>
136
+ ```
137
+
138
+ | Prop | Type | Description |
139
+ |------|------|-------------|
140
+ | `icon` | `ReactNode` | Icon to display in the action button |
141
+ | `size` | `TabSize` | Override size (inherits from Tabs by default) |
142
+ | `onPress` | `() => void` | Callback when the action is pressed |
143
+ | `aria-label` | `string` | Accessible label for the button |
144
+
145
+ Inherits all props from `ItemButton` except `shape` (always sharp).
146
+
147
+ ### Tab Props
148
+
149
+ Individual tabs accept these props in addition to style props:
150
+
151
+ | Prop | Type | Description |
152
+ |------|------|-------------|
153
+ | `title` | `ReactNode` | Content displayed in the tab button (required) |
154
+ | `isDisabled` | `boolean` | Disables the tab |
155
+ | `size` | `TabSize` | Override tab size for this tab |
156
+ | `type` | `TabType` | Override tab type for this tab |
157
+ | `actions` | `ReactNode` | Custom actions to render in the tab |
158
+ | `autoHideActions` | `boolean` | Show actions only on hover (overrides Tabs-level) |
159
+ | `isEditable` | `boolean` | Whether the tab title can be edited (overrides Tabs-level) |
160
+ | `onTitleChange` | `(newTitle: string) => void` | Callback when title changes (overrides Tabs-level) |
161
+ | `menu` | `ReactNode \| null` | Menu items for this tab (overrides Tabs-level, `null` disables) |
162
+ | `menuTriggerProps` | `Partial<CubeItemActionProps>` | Props for menu trigger button |
163
+ | `menuProps` | `Partial<CubeMenuProps>` | Props for Menu component |
164
+ | `contextMenu` | `boolean` | Enable right-click context menu |
165
+ | `onAction` | `(action: Key) => void` | Callback when menu action is triggered |
166
+ | `prerender` | `boolean` | Override panel prerender behavior |
167
+ | `keepMounted` | `boolean` | Override panel keepMounted behavior |
168
+
169
+ ## Examples
170
+
171
+ ### Basic Usage
172
+
173
+ ```jsx
174
+ <Tabs defaultActiveKey="overview">
175
+ <Tab key="overview" title="Overview">
176
+ Overview content goes here.
177
+ </Tab>
178
+ <Tab key="settings" title="Settings">
179
+ Settings content goes here.
180
+ </Tab>
181
+ </Tabs>
182
+ ```
183
+
184
+ ### Controlled Tabs
185
+
186
+ Control the active tab externally with `activeKey` and `onChange`.
187
+
188
+ ```jsx
189
+ const [activeKey, setActiveKey] = useState('tab1');
190
+
191
+ <Tabs activeKey={activeKey} onChange={setActiveKey}>
192
+ <Tab key="tab1" title="Tab 1">Content 1</Tab>
193
+ <Tab key="tab2" title="Tab 2">Content 2</Tab>
194
+ </Tabs>
195
+ ```
196
+
197
+ ### Disabled Tab
198
+
199
+ ```jsx
200
+ <Tabs defaultActiveKey="tab1">
201
+ <Tab key="tab1" title="Active Tab">Content</Tab>
202
+ <Tab key="tab2" title="Disabled Tab" isDisabled>
203
+ Inaccessible content
204
+ </Tab>
205
+ </Tabs>
206
+ ```
207
+
208
+ ### With Prefix and Suffix
209
+
210
+ Add buttons or other elements before or after the tab list.
211
+
212
+ ```jsx
213
+ <Tabs
214
+ defaultActiveKey="items"
215
+ prefix={<Button size="small">Menu</Button>}
216
+ suffix={<Button size="small">Add New</Button>}
217
+ >
218
+ <Tab key="items" title="Items">Item list</Tab>
219
+ <Tab key="archived" title="Archived">Archived items</Tab>
220
+ </Tabs>
221
+ ```
222
+
223
+ ### Deletable Tabs
224
+
225
+ Enable delete buttons with the `onDelete` callback. When no `menu` is defined, a delete button appears on each tab. Use `Tabs.Action` in the suffix slot to add an "Add" button.
226
+
227
+ ```jsx
228
+ const [tabs, setTabs] = useState([
229
+ { key: 'tab1', title: 'Tab 1' },
230
+ { key: 'tab2', title: 'Tab 2' },
231
+ ]);
232
+
233
+ <Tabs
234
+ defaultActiveKey="tab1"
235
+ onDelete={(key) => setTabs(tabs.filter(t => t.key !== key))}
236
+ suffix={
237
+ <Tabs.Action
238
+ icon={<PlusIcon />}
239
+ aria-label="Add tab"
240
+ onPress={handleAdd}
241
+ />
242
+ }
243
+ >
244
+ {tabs.map(tab => (
245
+ <Tab key={tab.key} title={tab.title}>
246
+ Content for {tab.title}
247
+ </Tab>
248
+ ))}
249
+ </Tabs>
250
+ ```
251
+
252
+ ### Tab Menus
253
+
254
+ Add dropdown menus to tabs using the `menu` prop. This replaces the need for manually composing `MenuTrigger`, `ItemAction`, and `Menu` components.
255
+
256
+ ```jsx
257
+ <Tabs
258
+ onDelete={handleDelete}
259
+ menu={
260
+ <>
261
+ <Menu.Item key="duplicate">Duplicate</Menu.Item>
262
+ <Menu.Item key="delete">Delete</Menu.Item>
263
+ </>
264
+ }
265
+ onAction={(action, tabKey) => {
266
+ if (action === 'duplicate') handleDuplicate(tabKey);
267
+ // 'delete' is handled automatically via onDelete
268
+ }}
269
+ >
270
+ <Tab key="tab1" title="Tab 1">Content</Tab>
271
+ </Tabs>
272
+ ```
273
+
274
+ **Key features:**
275
+
276
+ - **Predefined actions**: `key="rename"` and `key="delete"` are handled automatically
277
+ - **Auto-labels**: Predefined actions get default labels if children not provided
278
+ - **Tabs-level menu**: Define menu once, all tabs inherit it
279
+ - **Tab-level override**: Individual tabs can override or disable menu with `menu={null}`
280
+ - **Delete button logic**: When `menu` is present, delete button is hidden (use `key="delete"` in menu instead)
281
+
282
+ ### Editable Tabs with Menu
283
+
284
+ Combine editable tabs with a menu for rename, duplicate, and delete actions.
285
+
286
+ ```jsx
287
+ <Tabs
288
+ isEditable
289
+ onDelete={handleDelete}
290
+ onTitleChange={handleTitleChange}
291
+ menu={
292
+ <>
293
+ <Menu.Item key="rename">Rename</Menu.Item>
294
+ <Menu.Item key="duplicate">Duplicate</Menu.Item>
295
+ <Menu.Item key="delete">Delete</Menu.Item>
296
+ </>
297
+ }
298
+ onAction={(action, tabKey) => {
299
+ if (action === 'duplicate') handleDuplicate(tabKey);
300
+ // 'rename' triggers inline editing automatically
301
+ // 'delete' triggers onDelete automatically
302
+ }}
303
+ >
304
+ <Tab key="tab1" title="Tab 1">Content</Tab>
305
+ </Tabs>
306
+ ```
307
+
308
+ ### Context Menu
309
+
310
+ Enable right-click context menus with the `contextMenu` prop. Uses the same menu items.
311
+
312
+ ```jsx
313
+ <Tabs
314
+ contextMenu
315
+ menu={
316
+ <>
317
+ <Menu.Item key="rename">Rename</Menu.Item>
318
+ <Menu.Item key="delete">Delete</Menu.Item>
319
+ </>
320
+ }
321
+ >
322
+ <Tab key="tab1" title="Tab 1">Content</Tab>
323
+ </Tabs>
324
+ ```
325
+
326
+ ### Per-Tab Menu Override
327
+
328
+ Override or disable menus on individual tabs.
329
+
330
+ ```jsx
331
+ <Tabs
332
+ menu={
333
+ <>
334
+ <Menu.Item key="rename">Rename</Menu.Item>
335
+ <Menu.Item key="info">Show Info</Menu.Item>
336
+ </>
337
+ }
338
+ >
339
+ <Tab key="tab1" title="Uses Default Menu">Content</Tab>
340
+ <Tab
341
+ key="tab2"
342
+ title="Custom Menu"
343
+ menu={
344
+ <>
345
+ <Menu.Item key="special">Special Action</Menu.Item>
346
+ </>
347
+ }
348
+ >
349
+ Content
350
+ </Tab>
351
+ <Tab key="tab3" title="No Menu" menu={null}>Content</Tab>
352
+ </Tabs>
353
+ ```
354
+
355
+ ### Menu with Sections
356
+
357
+ Use `Menu.Section` for organized menus.
358
+
359
+ ```jsx
360
+ <Tabs
361
+ menu={
362
+ <>
363
+ <Menu.Item key="rename">Rename</Menu.Item>
364
+ <Menu.Item key="duplicate">Duplicate</Menu.Item>
365
+ <Menu.Section title="Danger Zone">
366
+ <Menu.Item key="delete">Delete</Menu.Item>
367
+ </Menu.Section>
368
+ </>
369
+ }
370
+ >
371
+ <Tab key="tab1" title="Tab 1">Content</Tab>
372
+ </Tabs>
373
+ ```
374
+
375
+ ### Reorderable Tabs
376
+
377
+ Enable drag-and-drop tab reordering with the `isReorderable` prop. Control the order via `keyOrder` and handle changes with `onReorder`.
378
+
379
+ ```jsx
380
+ const [keyOrder, setKeyOrder] = useState(['tab1', 'tab2', 'tab3']);
381
+
382
+ <Tabs
383
+ isReorderable
384
+ keyOrder={keyOrder}
385
+ onReorder={(newOrder) => setKeyOrder(newOrder)}
386
+ >
387
+ <Tab key="tab1" title="Tab 1">Content 1</Tab>
388
+ <Tab key="tab2" title="Tab 2">Content 2</Tab>
389
+ <Tab key="tab3" title="Tab 3">Content 3</Tab>
390
+ </Tabs>
391
+ ```
392
+
393
+ **Key features:**
394
+
395
+ - **Drag-and-drop**: Reorder tabs by dragging them to new positions
396
+ - **Controlled order**: Use `keyOrder` to control tab display order
397
+ - **Callback**: `onReorder` is called with the new key order after a drop
398
+ - **Accessibility**: Full keyboard support for reordering
399
+
400
+ ### Reorderable Tabs with Menu
401
+
402
+ Combine drag-and-drop reordering with menu actions, editing, and delete functionality.
403
+
404
+ ```jsx
405
+ const [tabs, setTabs] = useState([...]);
406
+ const [keyOrder, setKeyOrder] = useState(['tab1', 'tab2', 'tab3']);
407
+
408
+ <Tabs
409
+ isReorderable
410
+ isEditable
411
+ keyOrder={keyOrder}
412
+ onReorder={(newOrder) => setKeyOrder(newOrder)}
413
+ onDelete={handleDelete}
414
+ menu={
415
+ <>
416
+ <Menu.Item key="rename">Rename</Menu.Item>
417
+ <Menu.Item key="duplicate">Duplicate</Menu.Item>
418
+ <Menu.Item key="delete">Delete</Menu.Item>
419
+ </>
420
+ }
421
+ >
422
+ {tabs.map((tab) => (
423
+ <Tab key={tab.id} title={tab.title}>{tab.content}</Tab>
424
+ ))}
425
+ </Tabs>
426
+ ```
427
+
428
+ ### Scroll Arrows
429
+
430
+ Add left/right navigation arrows to scroll overflowed tabs. Use `showScrollArrows` with `true`, `false`, or `'auto'` (shows only when tabs overflow).
431
+
432
+ ```jsx
433
+ <Tabs
434
+ defaultActiveKey="tab1"
435
+ showScrollArrows="auto"
436
+ styles={{ width: '500px' }}
437
+ >
438
+ {tabs.map(tab => (
439
+ <Tab key={tab.id} title={tab.title}>
440
+ {tab.content}
441
+ </Tab>
442
+ ))}
443
+ </Tabs>
444
+ ```
445
+
446
+ Combine with `showTabPicker` for both scroll arrows and a dropdown picker:
447
+
448
+ ```jsx
449
+ <Tabs
450
+ defaultActiveKey="tab1"
451
+ showScrollArrows="auto"
452
+ showTabPicker="auto"
453
+ type="file"
454
+ >
455
+ {tabs.map(tab => (
456
+ <Tab key={tab.id} title={tab.title}>
457
+ {tab.content}
458
+ </Tab>
459
+ ))}
460
+ </Tabs>
461
+ ```
462
+
463
+ ### Actions in Prefix
464
+
465
+ By default, scroll arrows and the tab picker appear in the suffix (after the tab list). Use `scrollArrowsPosition` and `tabPickerPosition` to move them to the prefix (before the tab list).
466
+
467
+ ```jsx
468
+ <Tabs
469
+ defaultActiveKey="tab1"
470
+ showTabPicker
471
+ showScrollArrows
472
+ tabPickerPosition="prefix"
473
+ scrollArrowsPosition="prefix"
474
+ type="file"
475
+ styles={{ width: '500px' }}
476
+ >
477
+ {tabs.map(tab => (
478
+ <Tab key={tab.id} title={tab.title}>
479
+ {tab.content}
480
+ </Tab>
481
+ ))}
482
+ </Tabs>
483
+ ```
484
+
485
+ When both are in the same slot:
486
+ - In **prefix**: TabPicker appears first (left), then scroll arrows (right)
487
+ - In **suffix**: Scroll arrows appear first (left), then TabPicker (right)
488
+
489
+ ### Navigation-Only Tabs
490
+
491
+ Use tabs without panel content for navigation purposes.
492
+
493
+ ```jsx
494
+ const [view, setView] = useState('overview');
495
+
496
+ <Tabs activeKey={view} onChange={setView}>
497
+ <Tab key="overview" title="Overview" />
498
+ <Tab key="settings" title="Settings" />
499
+ </Tabs>
500
+
501
+ {view === 'overview' && <OverviewPage />}
502
+ {view === 'settings' && <SettingsPage />}
503
+ ```
504
+
505
+ ### Explicit Panels
506
+
507
+ Use `Tabs.List` and `Tabs.Panel` for more control over panel placement.
508
+
509
+ ```jsx
510
+ <Tabs defaultActiveKey="tab1">
511
+ <Tabs.List>
512
+ <Tab key="tab1" title="First" />
513
+ <Tab key="tab2" title="Second" />
514
+ </Tabs.List>
515
+ <Tabs.Panel key="tab1">First panel content</Tabs.Panel>
516
+ <Tabs.Panel key="tab2">Second panel content</Tabs.Panel>
517
+ </Tabs>
518
+ ```
519
+
520
+ ### Prerender Mode
521
+
522
+ Render all panels immediately but keep inactive ones hidden.
523
+
524
+ ```jsx
525
+ <Tabs defaultActiveKey="tab1" prerender>
526
+ <Tab key="tab1" title="Tab 1">Content 1</Tab>
527
+ <Tab key="tab2" title="Tab 2">Content 2</Tab>
528
+ </Tabs>
529
+ ```
530
+
531
+ ### Keep Mounted Mode
532
+
533
+ Keep visited panels in the DOM to preserve their state.
534
+
535
+ ```jsx
536
+ <Tabs defaultActiveKey="tab1" keepMounted>
537
+ <Tab key="tab1" title="Tab 1">
538
+ <FormWithState />
539
+ </Tab>
540
+ <Tab key="tab2" title="Tab 2">
541
+ <AnotherForm />
542
+ </Tab>
543
+ </Tabs>
544
+ ```
545
+
546
+ ## Panel Rendering Modes
547
+
548
+ | Mode | Behavior |
549
+ |------|----------|
550
+ | **Default** | Panel renders only when active, unmounts when inactive |
551
+ | **prerender** | All panels render on mount, inactive ones hidden via `display: none` |
552
+ | **keepMounted** | Panel renders when first activated, stays mounted thereafter |
553
+
554
+ Override per-tab/panel:
555
+
556
+ ```jsx
557
+ <Tabs prerender>
558
+ <Tab key="tab1" title="Prerendered">Always in DOM</Tab>
559
+ <Tab key="tab2" title="Lazy" prerender={false}>Lazy loaded</Tab>
560
+ </Tabs>
561
+ ```
562
+
563
+ ### Optimized Lazy Rendering with `renderPanel`
564
+
565
+ For tabs with expensive content, use the `renderPanel` prop for optimized lazy rendering.
566
+ This prevents content from being evaluated on every parent render - only the active tab's
567
+ content is computed, while inactive tabs use cached content.
568
+
569
+ ```jsx
570
+ <Tabs
571
+ defaultActiveKey="tab1"
572
+ renderPanel={(key) => {
573
+ switch (key) {
574
+ case 'tab1': return <ExpensiveChart data={chartData} />;
575
+ case 'tab2': return <LargeTable rows={tableRows} />;
576
+ case 'tab3': return <ComplexForm fields={formFields} />;
577
+ default: return null;
578
+ }
579
+ }}
580
+ >
581
+ <Tab key="tab1" title="Charts" />
582
+ <Tab key="tab2" title="Data Table" />
583
+ <Tab key="tab3" title="Settings" />
584
+ </Tabs>
585
+ ```
586
+
587
+ **How it works:**
588
+
589
+ 1. By default, `renderPanel(key)` is called on every Tabs render (no caching)
590
+ 2. Add `panelCacheKeys` to enable caching for specific panels
591
+ 3. Cached content is reused until the cache key changes
592
+
593
+ ```jsx
594
+ // Enable caching with dependencies as cache keys
595
+ <Tabs
596
+ renderPanel={(key) => <Panel data={data[key]} />}
597
+ panelCacheKeys={{
598
+ tab1: data.tab1.version, // Cached, re-renders when version changes
599
+ tab2: data.tab2.version, // Cached, re-renders when version changes
600
+ // tab3 has no cache key - re-renders on every Tabs render
601
+ }}
602
+ >
603
+ ...
604
+ </Tabs>
605
+ ```
606
+
607
+ This approach is ideal for:
608
+ - Tabs with complex visualizations or charts
609
+ - Large data tables that are expensive to render
610
+ - Forms with many fields
611
+ - Any content that benefits from render caching
612
+ - File Editor
613
+
614
+ ### Inside Layout
615
+
616
+ Tabs work seamlessly inside Layout components. When placed in a `Layout` or `Layout.Content`, the tab panels automatically stretch to fill all remaining space below the tab bar. Use nested Layout components inside panels to create complex layouts.
617
+
618
+ ```jsx
619
+ <Layout height="400px">
620
+ <Layout.Content scrollbar="none" padding="0"> <!-- can be omitted if no other components are inside -->
621
+ <Tabs defaultActiveKey="tab1">
622
+ <Tab key="tab1" title="Dashboard">
623
+ <Layout fill="#purple.15">
624
+ <Layout.Content>
625
+ Dashboard content - stretches to fill remaining space
626
+ </Layout.Content>
627
+ </Layout>
628
+ </Tab>
629
+ <Tab key="tab2" title="Settings">
630
+ <Layout fill="#success.15">
631
+ <Layout.Content>
632
+ Settings content
633
+ </Layout.Content>
634
+ </Layout>
635
+ </Tab>
636
+ </Tabs>
637
+ </Layout.Content>
638
+ </Layout>
639
+ ```
640
+
641
+ **How it works:**
642
+ - The tab bar has fixed height and doesn't grow
643
+ - Tab panels use `display: contents`, allowing children to participate in parent flex layout
644
+ - Nested Layout components with `flexGrow: 1` (default) stretch to fill remaining space
645
+
646
+ ## Accessibility
647
+
648
+ ### Keyboard Navigation
649
+
650
+ - `Tab` - Move focus into/out of the tab list
651
+ - `ArrowLeft` / `ArrowRight` - Navigate between tabs
652
+ - `Home` - Move to first tab
653
+ - `End` - Move to last tab
654
+ - `Enter` / `Space` - Activate focused tab
655
+ - `Shift+F10` - Open tab menu (when menu is present)
656
+ - `Delete` - Delete focused tab (when deletable)
657
+ - `F2` - Start editing tab title (when editable)
658
+
659
+ ### Screen Reader Support
660
+
661
+ - Tab list announces as "tablist" role with proper label
662
+ - Individual tabs announce as "tab" with selected state
663
+ - Panels announce as "tabpanel" linked to their tab
664
+ - Disabled tabs are announced as such
665
+
666
+ ### ARIA Properties
667
+
668
+ - `aria-label` - Set via `label` prop on Tabs
669
+ - `aria-selected` - Managed automatically for active tab
670
+ - `aria-disabled` - Applied when `isDisabled` is true
671
+ - `aria-controls` - Links tabs to their panels automatically
672
+ - `aria-labelledby` - Links panels to their tabs automatically
673
+ - `aria-haspopup` - Set to "menu" when tab has a menu
674
+
675
+ ## Best Practices
676
+
677
+ 1. **Do**: Use clear, descriptive tab titles
678
+
679
+ ```jsx
680
+ <Tab key="billing" title="Billing & Payments">...</Tab>
681
+ ```
682
+
683
+ 2. **Don't**: Use vague or single-letter titles
684
+
685
+ ```jsx
686
+ <Tab key="b" title="B">...</Tab>
687
+ ```
688
+
689
+ 3. **Do**: Provide meaningful accessible labels
690
+
691
+ ```jsx
692
+ <Tabs label="Account Settings">...</Tabs>
693
+ ```
694
+
695
+ 4. **Performance**: Use `keepMounted` when tabs contain forms or stateful components
696
+
697
+ 5. **Performance**: Use `renderPanel` for tabs with expensive content to avoid re-evaluation on every render
698
+
699
+ 6. **Accessibility**: Ensure tab content is keyboard accessible
700
+
701
+ ## Related Components
702
+
703
+ - [Disclosure](../content/Disclosure.md) - For collapsible content sections
704
+ - [Menu](../actions/Menu.md) - For dropdown navigation menus