@cube-dev/ui-kit 0.137.1 → 0.138.1

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 (470) hide show
  1. package/dist/CHANGELOG.md +25 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +54 -43
  14. package/dist/components/GlobalStyles.js.map +1 -1
  15. package/dist/components/GridProvider.js +1 -1
  16. package/dist/components/HiddenInput.js +1 -1
  17. package/dist/components/Root.js +9 -4
  18. package/dist/components/Root.js.map +1 -1
  19. package/dist/components/actions/Action/Action.js +1 -1
  20. package/dist/components/actions/Banner/Banner.js +1 -1
  21. package/dist/components/actions/Button/Button.js +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  24. package/dist/components/actions/ButtonSplit/context.js +1 -1
  25. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  26. package/dist/components/actions/CommandMenu/styled.js +3 -3
  27. package/dist/components/actions/CommandMenu/styled.js.map +1 -1
  28. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  29. package/dist/components/actions/ItemActionContext.js +1 -1
  30. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  31. package/dist/components/actions/Link/Link.js +1 -1
  32. package/dist/components/actions/Menu/Menu.js +1 -1
  33. package/dist/components/actions/Menu/MenuItem.js +1 -1
  34. package/dist/components/actions/Menu/MenuSection.js +1 -1
  35. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  36. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  37. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  38. package/dist/components/actions/Menu/context.js +1 -1
  39. package/dist/components/actions/Menu/styled.js +5 -5
  40. package/dist/components/actions/Menu/styled.js.map +1 -1
  41. package/dist/components/actions/index.js +1 -1
  42. package/dist/components/actions/use-action.js +1 -1
  43. package/dist/components/actions/use-anchored-menu.js +1 -1
  44. package/dist/components/actions/use-context-menu.js +1 -1
  45. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  46. package/dist/components/content/Alert/Alert.js +1 -1
  47. package/dist/components/content/Alert/use-alert.js +1 -1
  48. package/dist/components/content/Avatar/Avatar.js +1 -1
  49. package/dist/components/content/Badge/Badge.js +1 -1
  50. package/dist/components/content/Card/Card.js +2 -2
  51. package/dist/components/content/Card/Card.js.map +1 -1
  52. package/dist/components/content/Content.js +1 -1
  53. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  54. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  55. package/dist/components/content/Disclosure/Disclosure.js +2 -2
  56. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  57. package/dist/components/content/Divider.js +1 -1
  58. package/dist/components/content/Footer.js +1 -1
  59. package/dist/components/content/Header.js +1 -1
  60. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  61. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  62. package/dist/components/content/Item/Item.js +2 -2
  63. package/dist/components/content/Item/Item.js.map +1 -1
  64. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  65. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  66. package/dist/components/content/Layout/GridLayout.js +1 -1
  67. package/dist/components/content/Layout/Layout.js +1 -1
  68. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  69. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  70. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  71. package/dist/components/content/Layout/LayoutContent.js +1 -1
  72. package/dist/components/content/Layout/LayoutContext.js +1 -1
  73. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  74. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  75. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  76. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  77. package/dist/components/content/Layout/LayoutPane.js +2 -2
  78. package/dist/components/content/Layout/LayoutPane.js.map +1 -1
  79. package/dist/components/content/Layout/LayoutPanel.js +3 -3
  80. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  81. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  82. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  83. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  84. package/dist/components/content/Layout/index.js +1 -1
  85. package/dist/components/content/Layout/utils.js +1 -1
  86. package/dist/components/content/Paragraph.js +1 -1
  87. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  88. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  89. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  90. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  91. package/dist/components/content/Result/Result.js +1 -1
  92. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  93. package/dist/components/content/Tag/Tag.js +1 -1
  94. package/dist/components/content/Text.js +1 -1
  95. package/dist/components/content/TextItem/TextItem.js +1 -1
  96. package/dist/components/content/Title.js +1 -1
  97. package/dist/components/content/Tree/Tree.js +1 -1
  98. package/dist/components/content/Tree/TreeNode.js +1 -1
  99. package/dist/components/content/Tree/styled.js +1 -1
  100. package/dist/components/content/Tree/tree-index.js +1 -1
  101. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  102. package/dist/components/content/Tree/use-load-data.js +1 -1
  103. package/dist/components/content/highlightText.js +1 -1
  104. package/dist/components/content/use-auto-tooltip.js +1 -1
  105. package/dist/components/fields/Checkbox/Checkbox.js +5 -5
  106. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  107. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  108. package/dist/components/fields/Checkbox/context.js +1 -1
  109. package/dist/components/fields/ComboBox/ComboBox.js +2 -2
  110. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  111. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  112. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  113. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  114. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  115. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  116. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  117. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  118. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  119. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  120. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  121. package/dist/components/fields/DatePicker/intl.js +1 -1
  122. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  123. package/dist/components/fields/DatePicker/props.js +1 -1
  124. package/dist/components/fields/DatePicker/utils.js +1 -1
  125. package/dist/components/fields/FileInput/FileInput.js +3 -3
  126. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  127. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  128. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  129. package/dist/components/fields/Input/Input.js +1 -1
  130. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  131. package/dist/components/fields/ListBox/ListBox.js +6 -6
  132. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  133. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  134. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  135. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  136. package/dist/components/fields/Picker/Picker.js +1 -1
  137. package/dist/components/fields/RadioGroup/Radio.js +4 -4
  138. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  139. package/dist/components/fields/RadioGroup/RadioGroup.js +2 -2
  140. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  141. package/dist/components/fields/RadioGroup/context.js +1 -1
  142. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  143. package/dist/components/fields/Select/Select.js +5 -5
  144. package/dist/components/fields/Select/Select.js.map +1 -1
  145. package/dist/components/fields/Slider/Gradation.js +1 -1
  146. package/dist/components/fields/Slider/HueSlider.js +1 -1
  147. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  148. package/dist/components/fields/Slider/Slider.js +1 -1
  149. package/dist/components/fields/Slider/SliderBase.js +1 -1
  150. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  151. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  152. package/dist/components/fields/Slider/elements.js +3 -3
  153. package/dist/components/fields/Slider/elements.js.map +1 -1
  154. package/dist/components/fields/Slider/index.js +1 -1
  155. package/dist/components/fields/Switch/Switch.js +2 -2
  156. package/dist/components/fields/Switch/Switch.js.map +1 -1
  157. package/dist/components/fields/TextArea/TextArea.js +1 -1
  158. package/dist/components/fields/TextInput/TextInput.js +1 -1
  159. package/dist/components/fields/TextInput/TextInputBase.js +3 -3
  160. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  161. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  162. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  163. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  164. package/dist/components/form/Form/Field.js +1 -1
  165. package/dist/components/form/Form/Form.js +1 -1
  166. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  167. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  168. package/dist/components/form/Form/SubmitError.js +1 -1
  169. package/dist/components/form/Form/index.js +1 -1
  170. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  171. package/dist/components/form/Form/use-field/use-field.js +1 -1
  172. package/dist/components/form/Form/use-form.js +1 -1
  173. package/dist/components/form/Form/validation.js +1 -1
  174. package/dist/components/form/Label.js +1 -1
  175. package/dist/components/form/wrapper.js +1 -1
  176. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  177. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  178. package/dist/components/layout/Flex.js +1 -1
  179. package/dist/components/layout/Flow.js +1 -1
  180. package/dist/components/layout/Grid.js +1 -1
  181. package/dist/components/layout/Panel.js +1 -1
  182. package/dist/components/layout/Prefix.js +1 -1
  183. package/dist/components/layout/ResizablePanel.js +2 -2
  184. package/dist/components/layout/ResizablePanel.js.map +1 -1
  185. package/dist/components/layout/Space.js +1 -1
  186. package/dist/components/layout/Suffix.js +1 -1
  187. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  188. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  189. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  190. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  191. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  192. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  193. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  194. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  195. package/dist/components/navigation/Tabs/styled.js +3 -3
  196. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  197. package/dist/components/navigation/Tabs/types.js +1 -1
  198. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  199. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  200. package/dist/components/organisms/FileTabs/FileTabs.js +2 -2
  201. package/dist/components/organisms/FileTabs/FileTabs.js.map +1 -1
  202. package/dist/components/organisms/StatsCard/StatsCard.js +2 -2
  203. package/dist/components/organisms/StatsCard/StatsCard.js.map +1 -1
  204. package/dist/components/other/Calendar/Calendar.js +1 -1
  205. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  206. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  207. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  208. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  209. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  210. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  211. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  212. package/dist/components/overlays/Dialog/Dialog.js +2 -2
  213. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  214. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  215. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  216. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  217. package/dist/components/overlays/Dialog/context.js +1 -1
  218. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  219. package/dist/components/overlays/Modal/Modal.js +1 -1
  220. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  221. package/dist/components/overlays/Modal/Overlay.js +1 -1
  222. package/dist/components/overlays/Modal/Popover.js +1 -1
  223. package/dist/components/overlays/Modal/Tray.js +1 -1
  224. package/dist/components/overlays/Modal/Underlay.js +1 -1
  225. package/dist/components/overlays/Notifications/Notification.js +1 -1
  226. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  227. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  228. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  229. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  230. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  231. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  232. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  233. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  234. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  235. package/dist/components/overlays/Notifications/index.js +1 -1
  236. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  237. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  238. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  239. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  240. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  241. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  242. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  243. package/dist/components/overlays/Toast/index.js +1 -1
  244. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  245. package/dist/components/overlays/Toast/useToast.js +1 -1
  246. package/dist/components/overlays/Tooltip/Tooltip.js +7 -7
  247. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  248. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  249. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  250. package/dist/components/overlays/Tooltip/context.js +1 -1
  251. package/dist/components/portal/Portal.js +1 -1
  252. package/dist/components/portal/PortalProvider.js +1 -1
  253. package/dist/components/portal/usePortal.js +1 -1
  254. package/dist/components/shared/DraggableCollection.js +1 -1
  255. package/dist/components/shared/InvalidIcon.js +1 -1
  256. package/dist/components/shared/ValidIcon.js +1 -1
  257. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +23 -7
  258. package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
  259. package/dist/components/status/Spin/Cube.js +1 -1
  260. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  261. package/dist/components/status/Spin/Spin.js +1 -1
  262. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  263. package/dist/data/item-themes.js +114 -115
  264. package/dist/data/item-themes.js.map +1 -1
  265. package/dist/data/themes.d.ts +17 -17
  266. package/dist/data/themes.js +18 -18
  267. package/dist/data/themes.js.map +1 -1
  268. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  269. package/dist/icons/AdjustmentsIcon.js +1 -1
  270. package/dist/icons/AiIcon.js +1 -1
  271. package/dist/icons/AreaChartIcon.js +1 -1
  272. package/dist/icons/BackwardIcon.js +1 -1
  273. package/dist/icons/BarChartIcon.js +1 -1
  274. package/dist/icons/BellFilledIcon.js +1 -1
  275. package/dist/icons/BellIcon.js +1 -1
  276. package/dist/icons/BooleanIcon.js +1 -1
  277. package/dist/icons/CalendarEditIcon.js +1 -1
  278. package/dist/icons/CalendarIcon.js +1 -1
  279. package/dist/icons/CaretDownIcon.js +1 -1
  280. package/dist/icons/CaretUpIcon.js +1 -1
  281. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  282. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  283. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  284. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  285. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  286. package/dist/icons/ChartBarLineIcon.js +1 -1
  287. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  288. package/dist/icons/ChartBarStackedIcon.js +1 -1
  289. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  290. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  291. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  292. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  293. package/dist/icons/ChartBubbleIcon.js +1 -1
  294. package/dist/icons/ChartDonut2Icon.js +1 -1
  295. package/dist/icons/ChartFunnelIcon.js +1 -1
  296. package/dist/icons/ChartHeatmapIcon.js +1 -1
  297. package/dist/icons/ChartKPIIcon.js +1 -1
  298. package/dist/icons/ChartPie2Icon.js +1 -1
  299. package/dist/icons/ChartScatterIcon.js +1 -1
  300. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  301. package/dist/icons/CheckCircleIcon.js +1 -1
  302. package/dist/icons/CheckIcon.js +1 -1
  303. package/dist/icons/CircleFilledIcon.js +1 -1
  304. package/dist/icons/ClearIcon.js +1 -1
  305. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  306. package/dist/icons/CloseCircleIcon.js +1 -1
  307. package/dist/icons/CloseIcon.js +1 -1
  308. package/dist/icons/CodeIcon.js +1 -1
  309. package/dist/icons/ColumnTotalIcon.js +1 -1
  310. package/dist/icons/CopyIcon.js +1 -1
  311. package/dist/icons/CountIcon.js +1 -1
  312. package/dist/icons/CubeIcon.js +1 -1
  313. package/dist/icons/CubePauseIcon.js +1 -1
  314. package/dist/icons/CubePlayIcon.js +1 -1
  315. package/dist/icons/CurrencyDollarIcon.js +1 -1
  316. package/dist/icons/DangerIcon.js +1 -1
  317. package/dist/icons/DashboardIcon.js +1 -1
  318. package/dist/icons/DatabaseIcon.js +1 -1
  319. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  320. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  321. package/dist/icons/DirectionIcon.js +1 -1
  322. package/dist/icons/DonutIcon.js +1 -1
  323. package/dist/icons/DownIcon.js +1 -1
  324. package/dist/icons/EditIcon.js +1 -1
  325. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  326. package/dist/icons/ExclamationCircleIcon.js +1 -1
  327. package/dist/icons/ExclamationIcon.js +1 -1
  328. package/dist/icons/EyeIcon.js +1 -1
  329. package/dist/icons/EyeInvisibleIcon.js +1 -1
  330. package/dist/icons/FilterIcon.js +1 -1
  331. package/dist/icons/FolderFilledIcon.js +1 -1
  332. package/dist/icons/FolderIcon.js +1 -1
  333. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  334. package/dist/icons/FolderOpenIcon.js +1 -1
  335. package/dist/icons/ForwardIcon.js +1 -1
  336. package/dist/icons/GripVerticalIcon.js +1 -1
  337. package/dist/icons/HierarchyIcon.js +1 -1
  338. package/dist/icons/HierarchyOpenIcon.js +1 -1
  339. package/dist/icons/Icon.js +1 -1
  340. package/dist/icons/InfoCircleIcon.js +1 -1
  341. package/dist/icons/InfoIcon.js +1 -1
  342. package/dist/icons/KeyIcon.js +1 -1
  343. package/dist/icons/LeftIcon.js +1 -1
  344. package/dist/icons/LineChartIcon.js +1 -1
  345. package/dist/icons/LoadingIcon.js +1 -1
  346. package/dist/icons/LockFilledIcon.js +1 -1
  347. package/dist/icons/LockIcon.js +1 -1
  348. package/dist/icons/MoreIcon.js +1 -1
  349. package/dist/icons/NotAllowedIcon.js +1 -1
  350. package/dist/icons/Number123Icon.js +1 -1
  351. package/dist/icons/NumberIcon.js +1 -1
  352. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  353. package/dist/icons/PauseCircleIcon.js +1 -1
  354. package/dist/icons/PauseIcon.js +1 -1
  355. package/dist/icons/PercentageIcon.js +1 -1
  356. package/dist/icons/PieChartIcon.js +1 -1
  357. package/dist/icons/PlayCircleIcon.js +1 -1
  358. package/dist/icons/PlayIcon.js +1 -1
  359. package/dist/icons/PlusIcon.js +1 -1
  360. package/dist/icons/ProgressBarIcon.js +1 -1
  361. package/dist/icons/ReloadIcon.js +1 -1
  362. package/dist/icons/ReportIcon.js +1 -1
  363. package/dist/icons/ReturnIcon.js +1 -1
  364. package/dist/icons/RightIcon.js +1 -1
  365. package/dist/icons/RowTotalsIcon.js +1 -1
  366. package/dist/icons/SchemeIcon.js +1 -1
  367. package/dist/icons/SearchIcon.js +1 -1
  368. package/dist/icons/SemanticQueryIcon.js +1 -1
  369. package/dist/icons/SettingsIcon.js +1 -1
  370. package/dist/icons/ShieldFilledIcon.js +1 -1
  371. package/dist/icons/ShieldIcon.js +1 -1
  372. package/dist/icons/SlashIcon.js +1 -1
  373. package/dist/icons/SparklesIcon.js +1 -1
  374. package/dist/icons/SqlIcon.js +1 -1
  375. package/dist/icons/StatsIcon.js +1 -1
  376. package/dist/icons/StopIcon.js +1 -1
  377. package/dist/icons/StringIcon.js +1 -1
  378. package/dist/icons/SubtotalsIcon.js +1 -1
  379. package/dist/icons/SwitchIcon.js +1 -1
  380. package/dist/icons/TableIcon.js +1 -1
  381. package/dist/icons/ThumbsDownIcon.js +1 -1
  382. package/dist/icons/ThumbsUpIcon.js +1 -1
  383. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  384. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  385. package/dist/icons/ThunderboltIcon.js +1 -1
  386. package/dist/icons/TimeIcon.js +1 -1
  387. package/dist/icons/TrashIcon.js +1 -1
  388. package/dist/icons/UnlockIcon.js +1 -1
  389. package/dist/icons/UpIcon.js +1 -1
  390. package/dist/icons/UserGroupIcon.js +1 -1
  391. package/dist/icons/UserIcon.js +1 -1
  392. package/dist/icons/UserLockIcon.js +1 -1
  393. package/dist/icons/ViewIcon.js +1 -1
  394. package/dist/icons/WarningFilledIcon.js +1 -1
  395. package/dist/icons/WarningIcon.js +1 -1
  396. package/dist/icons/wrap-icon.js +1 -1
  397. package/dist/index.d.ts +1 -0
  398. package/dist/index.js +3 -1
  399. package/dist/index.js.map +1 -1
  400. package/dist/provider.js +1 -1
  401. package/dist/providers/TrackingProvider.js +1 -1
  402. package/dist/providers/navigationAdapter.default.js +1 -1
  403. package/dist/tokens/base.js +1 -1
  404. package/dist/tokens/colors.d.ts +4 -3
  405. package/dist/tokens/colors.js +93 -83
  406. package/dist/tokens/colors.js.map +1 -1
  407. package/dist/tokens/index.js +1 -1
  408. package/dist/tokens/layout.js +1 -1
  409. package/dist/tokens/palette.js +364 -0
  410. package/dist/tokens/palette.js.map +1 -0
  411. package/dist/tokens/shadows.d.ts +4 -1
  412. package/dist/tokens/shadows.js +9 -6
  413. package/dist/tokens/shadows.js.map +1 -1
  414. package/dist/tokens/sizes.js +1 -1
  415. package/dist/tokens/spacing.js +1 -1
  416. package/dist/tokens/typography.js +1 -1
  417. package/dist/utils/ResizeSensor.js +1 -1
  418. package/dist/utils/is-dev-env.js +1 -1
  419. package/dist/utils/modules.js +1 -1
  420. package/dist/utils/promise.js +1 -1
  421. package/dist/utils/raf.js +1 -1
  422. package/dist/utils/random.js +1 -1
  423. package/dist/utils/range.js +1 -1
  424. package/dist/utils/react/RenderCache.js +1 -1
  425. package/dist/utils/react/Slots.js +1 -1
  426. package/dist/utils/react/chain.js +1 -1
  427. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  428. package/dist/utils/react/index.js +1 -1
  429. package/dist/utils/react/interactions.js +1 -1
  430. package/dist/utils/react/isTextOnly.js +1 -1
  431. package/dist/utils/react/mapProps.js +1 -1
  432. package/dist/utils/react/mergeProps.js +1 -1
  433. package/dist/utils/react/nullableValue.js +1 -1
  434. package/dist/utils/react/resolveIcon.js +1 -1
  435. package/dist/utils/react/sharedStore.js +1 -1
  436. package/dist/utils/react/useCombinedRefs.js +1 -1
  437. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  438. package/dist/utils/react/useEventBus.js +1 -1
  439. package/dist/utils/react/useId.js +1 -1
  440. package/dist/utils/react/useIsDarwin.js +1 -1
  441. package/dist/utils/react/useKeySymbols.js +1 -1
  442. package/dist/utils/react/useLayoutEffect.js +1 -1
  443. package/dist/utils/react/useLocalStorage.js +1 -1
  444. package/dist/utils/react/useMergeStyles.js +1 -1
  445. package/dist/utils/react/usePopoverSync.js +1 -1
  446. package/dist/utils/react/useQaProps.js +1 -1
  447. package/dist/utils/react/useViewportSize.js +1 -1
  448. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  449. package/dist/utils/selection.js +1 -1
  450. package/dist/utils/styles.js +1 -1
  451. package/dist/utils/tree.js +1 -1
  452. package/dist/utils/warnings.js +1 -1
  453. package/dist/version.d.ts +3 -0
  454. package/dist/version.js +13 -5
  455. package/dist/version.js.map +1 -1
  456. package/docs/Usage.md +98 -30
  457. package/docs/components/content/Card.md +1 -1
  458. package/docs/components/content/PrismCode.md +21 -0
  459. package/docs/components/form/Field.md +1 -1
  460. package/docs/components/layout/ResizablePanel.md +1 -1
  461. package/docs/components/organisms/FileTabs.md +1 -1
  462. package/docs/components/organisms/StatsCard.md +1 -1
  463. package/docs/tasty/configuration.md +44 -0
  464. package/docs/tasty/dsl.md +14 -13
  465. package/docs/tasty/methodology.md +26 -0
  466. package/docs/tasty/react-api.md +24 -0
  467. package/docs/tasty/ssr.md +5 -3
  468. package/docs/tasty/styles.md +9 -7
  469. package/docs/tasty/tasty-static.md +15 -0
  470. package/package.json +8 -6
@@ -1 +1 @@
1
- {"version":3,"file":"Item.js","names":["HotKeys"],"sources":["../../../../src/components/content/Item/Item.tsx"],"sourcesContent":["import {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n Mods,\n Props,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n KeyboardEvent,\n MouseEvent,\n PointerEvent,\n ReactNode,\n RefObject,\n useMemo,\n} from 'react';\nimport { OverlayProps } from 'react-aria';\nimport { useHotkeys } from 'react-hotkeys-hook';\n\nimport { useWarn } from '../../../_internal/hooks/use-warn';\nimport {\n DANGER_CARD_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_ITEM_STYLES,\n DANGER_LINK_STYLES,\n DANGER_NEUTRAL_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DANGER_SECONDARY_STYLES,\n DEFAULT_CARD_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_ITEM_STYLES,\n DEFAULT_LINK_STYLES,\n DEFAULT_NEUTRAL_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n DEFAULT_SECONDARY_STYLES,\n ItemVariant,\n NOTE_CARD_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_ITEM_STYLES,\n NOTE_LINK_STYLES,\n NOTE_NEUTRAL_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n NOTE_SECONDARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_ITEM_STYLES,\n SPECIAL_LINK_STYLES,\n SPECIAL_NEUTRAL_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SPECIAL_SECONDARY_STYLES,\n SUCCESS_CARD_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_ITEM_STYLES,\n SUCCESS_LINK_STYLES,\n SUCCESS_NEUTRAL_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n SUCCESS_SECONDARY_STYLES,\n WARNING_CARD_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_ITEM_STYLES,\n WARNING_LINK_STYLES,\n WARNING_NEUTRAL_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n WARNING_SECONDARY_STYLES,\n} from '../../../data/item-themes';\nimport { CheckIcon } from '../../../icons/CheckIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { DynamicIcon, mergeProps, resolveIcon } from '../../../utils/react';\nimport { ItemAction } from '../../actions/ItemAction';\nimport { ItemActionProvider } from '../../actions/ItemActionContext';\nimport { IconSwitch } from '../../helpers/IconSwitch/IconSwitch';\nimport { CubeTooltipProviderProps } from '../../overlays/Tooltip/TooltipProvider';\nimport { highlightText } from '../highlightText';\nimport { HotKeys } from '../HotKeys';\nimport { ItemBadge } from '../ItemBadge';\nimport { useAutoTooltip } from '../use-auto-tooltip';\n\nconst ITEM_SIZE_VALUES = [\n 'xsmall',\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n 'inline',\n] as const;\n\n/** Known modifiers for Item component */\nexport type ItemMods = Mods<{\n 'has-icon'?: boolean;\n 'has-start-content'?: boolean;\n 'has-end-content'?: boolean;\n 'has-right-icon'?: boolean;\n 'has-label'?: boolean;\n 'has-prefix'?: boolean;\n 'has-suffix'?: boolean;\n 'has-description'?: boolean;\n 'has-actions'?: boolean;\n 'has-actions-content'?: boolean;\n 'auto-hide-actions'?: boolean;\n 'preserve-actions-space'?: boolean;\n checkbox?: boolean;\n disabled?: boolean;\n selected?: boolean;\n loading?: boolean;\n size?: string;\n description?: string;\n type?: string;\n theme?: string;\n shape?: string;\n}>;\n\nexport interface CubeItemProps extends BaseProps, ContainerStyleProps {\n icon?: DynamicIcon<ItemMods> | 'checkbox';\n rightIcon?: DynamicIcon<ItemMods>;\n prefix?: ReactNode;\n suffix?: ReactNode;\n description?: ReactNode;\n descriptionPlacement?: 'inline' | 'block';\n /**\n * When true, the item is rendered inside a wrapper element to separate the actions from the item.\n * @default false\n */\n insideWrapper?: boolean;\n /**\n * Whether the item is selected.\n * @default false\n */\n isSelected?: boolean;\n /**\n * Actions to render inline or placeholder mode for ItemButton wrapper.\n * - ReactNode: renders actions inline as part of the grid layout\n * - true: placeholder mode for ItemButton (enables --actions-width calculation)\n */\n actions?: ReactNode | true;\n /**\n * When true, actions are hidden by default and shown only on hover, focus, or focus-within.\n * Uses opacity transition for visual hiding while maintaining layout space.\n */\n autoHideActions?: boolean;\n /**\n * When true and insideWrapper is true, this controls the visibility of the actions.\n * @default false\n */\n showActions?: boolean;\n /**\n * When true, preserves the actions width when hidden (only changes opacity).\n * Only applies when autoHideActions is true.\n * @default false\n */\n preserveActionsSpace?: boolean;\n /**\n * When true, disables focus on action buttons by setting tabIndex={-1}.\n * @default true\n */\n disableActionsFocus?: boolean;\n size?:\n | 'xsmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'xlarge'\n | 'inline'\n | number\n | (string & {});\n type?:\n | 'item'\n | 'header'\n | 'primary'\n | 'secondary'\n | 'outline'\n | 'neutral'\n | 'clear'\n | 'link'\n | 'card'\n | (string & {});\n theme?:\n | 'default'\n | 'danger'\n | 'success'\n | 'special'\n | 'warning'\n | 'note'\n | (string & {});\n /** Keyboard shortcut that triggers the element when pressed */\n hotkeys?: string;\n /**\n * Tooltip content and configuration:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows children as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n */\n tooltip?:\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n /**\n * HTML button type to avoid implicit form submission when used as `as=\"button\"`.\n * Kept separate from visual `type` prop.\n */\n htmlType?: 'button' | 'submit' | 'reset';\n labelProps?: Props;\n descriptionProps?: Props;\n keyboardShortcutProps?: Props;\n /**\n * The slot which the loading icon should replace in loading state.\n * - \"auto\": Smart selection - prefers icon if present, then rightIcon, fallback to icon\n * - Specific slot names: Always use that slot\n * @default \"auto\"\n */\n loadingSlot?: 'auto' | 'icon' | 'rightIcon' | 'prefix' | 'suffix';\n /**\n * When true, shows loading state by replacing the specified slot with LoadingIcon\n * and makes the component disabled.\n */\n isLoading?: boolean;\n /**\n * Shape of the item's border radius.\n * - `card` - Card shape with larger border radius (`1cr`)\n * - `button` - Button shape with default border radius (default)\n * - `sharp` - Sharp corners with no border radius (`0`)\n * - `pill` - Pill shape with fully rounded ends (`round`)\n * @default \"button\"\n */\n shape?: 'card' | 'button' | 'sharp' | 'pill';\n /**\n * @private\n * Default tooltip placement for the item.\n * @default \"top\"\n */\n defaultTooltipPlacement?: OverlayProps['placement'];\n /**\n * Ref to access the label element directly\n */\n labelRef?: RefObject<HTMLElement>;\n /**\n * Heading level for the Label element when type=\"header\" or type=\"card\".\n * Changes the Label's HTML tag to the corresponding heading (h1-h6).\n * @default 3\n */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /**\n * String to highlight within children.\n * Only works when children is a plain string.\n */\n highlight?: string;\n /**\n * Whether highlight matching is case-sensitive.\n * @default false\n */\n highlightCaseSensitive?: boolean;\n /**\n * Custom styles for highlighted text.\n */\n highlightStyles?: Styles;\n /**\n * Variant of the item.\n */\n variant?: ItemVariant;\n}\n\nconst DEFAULT_ICON_STYLES: Styles = {\n $: '>',\n display: 'grid',\n placeItems: 'center',\n placeContent: 'stretch',\n aspectRatio: '1 / 1',\n width: '($size - 2bw)',\n opacity: {\n '': 1,\n 'checkbox & selected': 1,\n 'checkbox & !selected': 0,\n 'checkbox & !selected & hovered': 0.4,\n },\n};\n\nconst ADDITION_STYLES: Styles = {\n $: '>',\n display: 'grid',\n flow: 'column',\n placeItems: 'center',\n placeContent: 'stretch',\n};\n\nconst ACTIONS_EVENT_HANDLERS = {\n onClick: (e: MouseEvent) => e.stopPropagation(),\n onPointerDown: (e: PointerEvent) => e.stopPropagation(),\n onPointerUp: (e: PointerEvent) => e.stopPropagation(),\n onMouseDown: (e: MouseEvent) => e.stopPropagation(),\n onMouseUp: (e: MouseEvent) => e.stopPropagation(),\n onKeyDown: (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.stopPropagation();\n }\n },\n};\n\nconst ItemElement = tasty({\n as: 'div',\n styles: {\n '@interacted':\n 'active | :hover | :focus | :focus-within | :has([data-pressed])',\n\n display: 'inline-grid',\n flow: 'column dense',\n gap: 0,\n outline: 0,\n placeItems: 'stretch',\n placeContent: 'stretch',\n gridTemplate: {\n '': '\"icon prefix label suffix rightIcon actions\" auto \"icon prefix label suffix rightIcon actions\" auto / max-content max-content 1sf max-content max-content max-content',\n 'description=inline':\n '\"icon prefix description suffix rightIcon actions\" auto / max-content max-content 1sf max-content max-content max-content',\n 'description=inline & has-label':\n '\"icon prefix label suffix rightIcon actions\" auto \"icon prefix description suffix rightIcon actions\" auto / max-content max-content 1sf max-content max-content max-content',\n 'description=block':\n '\"icon prefix label suffix rightIcon actions\" auto \"description description description description description description\" auto / max-content max-content 1sf max-content max-content max-content',\n },\n // Prevent items from shrinking inside vertical flex layouts (Menu, ListBox, etc)\n flexShrink: {\n '': 'initial',\n 'menuitem | listboxitem': 0,\n },\n position: 'relative',\n padding: {\n '': 0,\n 'type=card': '.5x',\n },\n margin: 0,\n radius: {\n '': true,\n 'shape=card': '1cr',\n 'shape=button': true,\n 'shape=sharp': '0',\n 'shape=pill': 'round',\n },\n height: {\n '': 'min $size',\n 'size=inline': '(1lh + 2bw)',\n },\n width: {\n '': 'min $size',\n 'has-icon & has-right-icon': 'min ($size * 2)',\n 'size=inline': 'min (1lh + 2bw)',\n },\n border: '#clear',\n fill: {\n '': '#dark.0',\n 'hovered | focused': '#dark.03',\n selected: '#dark.09',\n 'selected & (hovered | focused)': '#dark.12',\n pressed: '#dark.09',\n disabled: '#clear',\n },\n color: {\n '': '#dark-02',\n hovered: '#dark-02',\n pressed: '#dark',\n disabled: '#dark-04',\n },\n preset: {\n '': 't3',\n '!type=item': 't3m',\n 'size=xsmall': 't4',\n 'size=xlarge': 't2',\n 'size=inline': 'inherit',\n '!type=item & (size=medium | size=small | size=large)': 't3m',\n '!type=item & size=xlarge': 't2m',\n '(type=header | type=card) & (size=xsmall | size=small | size=medium)':\n 'h6',\n '(type=header | type=card) & size=large': 'h5',\n '(type=header | type=card) & size=xlarge': 'h4',\n },\n recipe: 'reset button',\n transition: 'theme',\n outlineOffset: 1,\n cursor: {\n '': 'inherit',\n ':is(a)': 'pointer',\n ':is(button) | listboxitem | menuitem': '$pointer',\n disabled: 'not-allowed',\n },\n\n $size: {\n '': '$size-md',\n 'size=xsmall': '$size-xs',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n 'size=xlarge': '$size-xl',\n 'size=inline': '(1lh + 2bw)',\n },\n '$inline-padding':\n 'max($min-inline-padding, (($size - 1lh - 2bw) / 2 + $inline-compensation))',\n '$block-padding': {\n '': '.5x',\n 'size=xsmall | size=small': '.25x',\n 'size=inline': 0,\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(1x - 1bw)',\n\n '$label-padding-left': {\n '': '$inline-padding',\n 'has-start-content': '0',\n },\n '$label-padding-right': {\n '': '$inline-padding',\n 'has-end-content': '0',\n // Restore padding when actions are hidden AND no other visible end content\n '!inside-wrapper & !has-suffix & !has-right-icon & auto-hide-actions & !preserve-actions-space & !@interacted':\n '$inline-padding',\n 'inside-wrapper & !has-suffix & !has-right-icon & !preserve-actions-space & !actions-shown':\n '$inline-padding',\n },\n '$label-padding-bottom': {\n '': '$block-padding',\n 'description=inline': '0',\n },\n '$description-padding-left': {\n '': '$inline-padding',\n 'has-start-content': 0,\n 'description=block': '($inline-padding - $inline-compensation + 1bw)',\n 'description=block & !has-start-content': '$inline-padding',\n },\n '$description-padding-right': {\n '': '$inline-padding',\n 'has-end-content': 0,\n 'description=block': '($inline-padding - $inline-compensation + 1bw)',\n 'description=block & !has-end-content': '$inline-padding',\n },\n '$description-padding-bottom': {\n '': 0,\n 'has-label & description=inline': '$block-padding',\n 'has-label & description=block':\n 'max($block-padding, (($size - 4x) / 2) + $block-padding)',\n },\n\n Icon: { ...DEFAULT_ICON_STYLES, gridArea: 'icon' },\n\n RightIcon: { ...DEFAULT_ICON_STYLES, gridArea: 'rightIcon' },\n\n Label: {\n $: '>',\n margin: 0,\n gridArea: 'label',\n display: 'block',\n placeSelf: 'center start',\n boxSizing: 'border-box',\n placeContent: 'stretch',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '0 100%',\n preset: 'inherit',\n transition: 'padding',\n padding:\n '$block-padding $label-padding-right $label-padding-bottom $label-padding-left',\n },\n\n Description: {\n $: '>',\n gridArea: 'description',\n preset: {\n '': 't4',\n 'type=card | type=header': 't3',\n },\n placeSelf: 'center start',\n boxSizing: 'border-box',\n color: 'inherit',\n opacity: {\n '': 0.75,\n 'type=card | type=header': 1,\n },\n overflow: 'hidden',\n whiteSpace: {\n '': 'nowrap',\n 'type=card | type=header': 'normal',\n },\n textOverflow: 'ellipsis',\n width: 'initial 100% 100%',\n textAlign: 'left',\n padding:\n '0 $description-padding-right $description-padding-bottom $description-padding-left',\n },\n\n Prefix: {\n ...ADDITION_STYLES,\n gridArea: 'prefix',\n padding: {\n '': '$inline-padding left',\n 'has-icon': 0,\n },\n },\n\n Suffix: {\n ...ADDITION_STYLES,\n gridArea: 'suffix',\n padding: {\n '': '$inline-padding right',\n 'has-right-icon': 0,\n },\n },\n\n Actions: {\n $: '>',\n gridArea: 'actions',\n display: 'flex',\n gap: '1bw',\n placeItems: 'center',\n placeContent: 'end',\n placeSelf: 'stretch',\n padding: {\n '': '0 $side-padding',\n 'inside-wrapper & !actions-shown': 0,\n },\n boxSizing: 'border-box',\n height: 'min ($size - 2bw)',\n width: {\n '': 'fixed ($actions-width, 0px)',\n 'has-actions-content & !auto-hide-actions':\n 'max calc-size(max-content, size)',\n 'has-actions-content & auto-hide-actions & !preserve-actions-space':\n 'max 0px',\n 'has-actions-content & auto-hide-actions & (!preserve-actions-space & ((@interacted & !inside-wrapper) | (inside-wrapper & actions-shown)))':\n 'max calc-size(max-content, size)',\n 'has-actions-content & auto-hide-actions & preserve-actions-space':\n 'max calc-size(max-content, size)',\n },\n opacity: {\n '': 1,\n 'auto-hide-actions': 0,\n 'auto-hide-actions & ((@interacted & !inside-wrapper) | (inside-wrapper & actions-shown))': 1,\n },\n transition:\n 'width $transition ease-out, opacity $transition ease-out, padding $transition ease-out',\n interpolateSize: 'allow-keywords',\n\n // Size for the action buttons\n '$action-size': 'min(max((2x + 2bw), ($size - 1x - 2bw)), (3x - 2bw))',\n // Side padding for the button\n '$side-padding': '(($size - $action-size - 2bw) / 2)',\n },\n },\n variants: {\n // Default theme\n 'default.primary': DEFAULT_PRIMARY_STYLES,\n 'default.secondary': DEFAULT_SECONDARY_STYLES,\n 'default.outline': DEFAULT_OUTLINE_STYLES,\n 'default.neutral': DEFAULT_NEUTRAL_STYLES,\n 'default.clear': DEFAULT_CLEAR_STYLES,\n 'default.link': DEFAULT_LINK_STYLES,\n 'default.item': DEFAULT_ITEM_STYLES,\n 'default.card': DEFAULT_CARD_STYLES,\n // Danger theme\n 'danger.primary': DANGER_PRIMARY_STYLES,\n 'danger.secondary': DANGER_SECONDARY_STYLES,\n 'danger.outline': DANGER_OUTLINE_STYLES,\n 'danger.neutral': DANGER_NEUTRAL_STYLES,\n 'danger.clear': DANGER_CLEAR_STYLES,\n 'danger.link': DANGER_LINK_STYLES,\n 'danger.item': DANGER_ITEM_STYLES,\n 'danger.card': DANGER_CARD_STYLES,\n // Success theme\n 'success.primary': SUCCESS_PRIMARY_STYLES,\n 'success.secondary': SUCCESS_SECONDARY_STYLES,\n 'success.outline': SUCCESS_OUTLINE_STYLES,\n 'success.neutral': SUCCESS_NEUTRAL_STYLES,\n 'success.clear': SUCCESS_CLEAR_STYLES,\n 'success.link': SUCCESS_LINK_STYLES,\n 'success.item': SUCCESS_ITEM_STYLES,\n 'success.card': SUCCESS_CARD_STYLES,\n // Warning theme\n 'warning.primary': WARNING_PRIMARY_STYLES,\n 'warning.secondary': WARNING_SECONDARY_STYLES,\n 'warning.outline': WARNING_OUTLINE_STYLES,\n 'warning.neutral': WARNING_NEUTRAL_STYLES,\n 'warning.clear': WARNING_CLEAR_STYLES,\n 'warning.link': WARNING_LINK_STYLES,\n 'warning.item': WARNING_ITEM_STYLES,\n 'warning.card': WARNING_CARD_STYLES,\n // Note theme\n 'note.primary': NOTE_PRIMARY_STYLES,\n 'note.secondary': NOTE_SECONDARY_STYLES,\n 'note.outline': NOTE_OUTLINE_STYLES,\n 'note.neutral': NOTE_NEUTRAL_STYLES,\n 'note.clear': NOTE_CLEAR_STYLES,\n 'note.link': NOTE_LINK_STYLES,\n 'note.item': NOTE_ITEM_STYLES,\n 'note.card': NOTE_CARD_STYLES,\n // Special theme\n 'special.primary': SPECIAL_PRIMARY_STYLES,\n 'special.secondary': SPECIAL_SECONDARY_STYLES,\n 'special.outline': SPECIAL_OUTLINE_STYLES,\n 'special.neutral': SPECIAL_NEUTRAL_STYLES,\n 'special.clear': SPECIAL_CLEAR_STYLES,\n 'special.link': SPECIAL_LINK_STYLES,\n 'special.item': SPECIAL_ITEM_STYLES,\n },\n styleProps: CONTAINER_STYLES,\n});\n\nconst Item = <T extends HTMLElement = HTMLDivElement>(\n props: CubeItemProps,\n ref: ForwardedRef<T>,\n) => {\n let {\n children,\n size = 'medium',\n type = 'item',\n theme = 'default',\n mods,\n icon: iconProp,\n rightIcon: rightIconProp,\n prefix,\n suffix,\n description,\n descriptionPlacement,\n labelProps,\n descriptionProps,\n keyboardShortcutProps,\n styles,\n htmlType,\n isSelected,\n hotkeys,\n tooltip = true,\n isDisabled,\n style,\n loadingSlot = 'auto',\n isLoading = false,\n actions,\n autoHideActions = false,\n preserveActionsSpace = false,\n disableActionsFocus = false,\n shape,\n defaultTooltipPlacement = 'top',\n level = 3,\n highlight,\n highlightCaseSensitive = false,\n highlightStyles,\n insideWrapper = false,\n showActions = false,\n ...rest\n } = props;\n\n // Determine if Label will be rendered\n const hasLabel = !!(children || labelProps);\n\n // Set default descriptionPlacement based on type\n // For card/header types, use 'block' only when Label is rendered\n const finalDescriptionPlacement =\n descriptionPlacement ??\n ((type === 'card' || type === 'header') && hasLabel ? 'block' : 'inline');\n\n // Set default shape based on type\n const finalShape = shape ?? (type === 'card' ? 'card' : 'button');\n\n // Loading state makes the component disabled\n const finalIsDisabled =\n isDisabled === true || (isLoading && isDisabled !== false);\n\n // Validate type+theme combinations\n const STANDARD_THEMES = [\n 'default',\n 'success',\n 'danger',\n 'warning',\n 'note',\n 'special',\n ];\n const CARD_THEMES = ['default', 'success', 'danger', 'warning', 'note'];\n const HEADER_THEMES = ['default'];\n\n const isInvalidCombination =\n (type === 'header' && !HEADER_THEMES.includes(theme)) ||\n (type === 'card' && !CARD_THEMES.includes(theme)) ||\n (!['header', 'card'].includes(type) && !STANDARD_THEMES.includes(theme));\n\n useWarn(isInvalidCombination, {\n key: ['Item', 'invalid-type-theme', type, theme],\n args: [\n `Item: Invalid type+theme combination. type=\"${type}\" does not support theme=\"${theme}\".` +\n (type === 'header'\n ? ' The \"header\" type only supports theme: default.'\n : type === 'card'\n ? ' The \"card\" type only supports themes: default, success, danger, warning, note.'\n : ' Standard types support themes: default, success, danger, warning, note, special.'),\n ],\n });\n\n // Warn if link type is used with icons or loading state\n const hasLinkWithIcons = type === 'link' && (iconProp || rightIconProp);\n const hasLinkWithLoading = type === 'link' && isLoading;\n const hasLinkRestrictions = hasLinkWithIcons || hasLinkWithLoading;\n\n const linkRestrictionMessages: string[] = [];\n if (hasLinkWithIcons) {\n linkRestrictionMessages.push('icons (`icon` or `rightIcon` props)');\n }\n if (hasLinkWithLoading) {\n linkRestrictionMessages.push('loading state (`isLoading` prop)');\n }\n\n useWarn(hasLinkRestrictions, {\n key: ['Item', 'link-restrictions'],\n args: [\n `Item: The \"link\" type does not support ${linkRestrictionMessages.join(' or ')}. Remove these props when using type=\"link\".`,\n ],\n });\n\n // Determine if we should show checkbox instead of icon\n const hasCheckbox = iconProp === 'checkbox';\n\n // Determine if size is custom (number or unrecognized string)\n const isCustomSize =\n typeof size === 'number' ||\n !(ITEM_SIZE_VALUES as readonly string[]).includes(size);\n const sizeTokenValue =\n typeof size === 'number' ? `${size}px` : isCustomSize ? size : undefined;\n\n // Base mods for icon resolution (without icon-dependent mods)\n const baseMods = useMemo<ItemMods>(\n () => ({\n disabled: finalIsDisabled,\n selected: isSelected === true,\n loading: isLoading,\n ...(!isCustomSize && { size: size as string }),\n type,\n theme,\n shape: finalShape,\n ...mods,\n }),\n [\n finalIsDisabled,\n isSelected,\n isLoading,\n size,\n isCustomSize,\n type,\n theme,\n finalShape,\n mods,\n ],\n );\n\n // Resolve dynamic icon props (skip resolution for 'checkbox' special value)\n const resolvedIcon = useMemo(() => {\n if (hasCheckbox) {\n return { content: null, hasSlot: true };\n }\n return resolveIcon(iconProp as DynamicIcon<ItemMods>, baseMods);\n }, [iconProp, baseMods, hasCheckbox]);\n\n const resolvedRightIcon = useMemo(\n () => resolveIcon(rightIconProp, baseMods),\n [rightIconProp, baseMods],\n );\n\n // Determine which slot to use for loading when \"auto\" is selected\n // Must be computed before hasIconSlot/hasRightIconSlot since they depend on it\n const resolvedLoadingSlot = useMemo(() => {\n if (loadingSlot !== 'auto') return loadingSlot;\n\n // Auto logic: prefer icon if present, then rightIcon, fallback to icon\n if (resolvedRightIcon.hasSlot && !resolvedIcon.hasSlot) return 'rightIcon';\n return 'icon'; // fallback\n }, [loadingSlot, resolvedIcon.hasSlot, resolvedRightIcon.hasSlot]);\n\n // Determine if icon slots should render (original slot OR loading state targets this slot)\n const hasIconSlot =\n resolvedIcon.hasSlot || (isLoading && resolvedLoadingSlot === 'icon');\n const hasRightIconSlot =\n resolvedRightIcon.hasSlot ||\n (isLoading && resolvedLoadingSlot === 'rightIcon');\n\n const showDescription = useMemo(() => {\n const copyProps = { ...descriptionProps };\n delete copyProps.id;\n return !!(description || Object.keys(copyProps).length > 0);\n }, [description, descriptionProps]);\n\n // Apply loading state to appropriate slots\n const finalIcon =\n isLoading && resolvedLoadingSlot === 'icon' ? (\n <LoadingIcon />\n ) : (\n resolvedIcon.content\n );\n const finalRightIcon =\n isLoading && resolvedLoadingSlot === 'rightIcon' ? (\n <LoadingIcon />\n ) : (\n resolvedRightIcon.content\n );\n\n // Generate stable keys for icon transitions based on icon type\n const iconKey = hasCheckbox\n ? 'checkbox'\n : isLoading && resolvedLoadingSlot === 'icon'\n ? 'loading'\n : isValidElement(finalIcon)\n ? (finalIcon.type as any)?.displayName ||\n (finalIcon.type as any)?.name ||\n 'icon'\n : finalIcon\n ? 'icon'\n : 'empty';\n\n const rightIconKey =\n isLoading && resolvedLoadingSlot === 'rightIcon'\n ? 'loading'\n : isValidElement(finalRightIcon)\n ? (finalRightIcon.type as any)?.displayName ||\n (finalRightIcon.type as any)?.name ||\n 'icon'\n : finalRightIcon\n ? 'icon'\n : 'empty';\n const finalPrefix =\n isLoading && resolvedLoadingSlot === 'prefix' ? <LoadingIcon /> : prefix;\n\n // Build final suffix: loading icon, custom suffix, or HotKeys hint\n const finalSuffix =\n isLoading && resolvedLoadingSlot === 'suffix' ? (\n <LoadingIcon />\n ) : (\n suffix ??\n (hotkeys ? (\n <HotKeys\n {...(keyboardShortcutProps as any)}\n type={type === 'primary' ? 'primary' : 'default'}\n styles={{ padding: '1x left', opacity: finalIsDisabled ? 0.5 : 1 }}\n >\n {hotkeys}\n </HotKeys>\n ) : undefined)\n );\n\n // Register global hotkey if provided\n useHotkeys(\n typeof hotkeys === 'string' ? hotkeys.toLowerCase() : '',\n () => {\n if (!hotkeys) return;\n if (finalIsDisabled) return;\n // Simulate a click on the element so all existing handlers run\n if (ref && typeof ref === 'object' && ref.current) {\n (ref.current as HTMLElement).click();\n }\n },\n {\n enableOnContentEditable: true,\n enabled: !!hotkeys,\n preventDefault: true,\n enableOnFormTags: true,\n },\n [hotkeys, finalIsDisabled],\n );\n\n const finalMods = useMemo<ItemMods>(() => {\n return {\n ...baseMods,\n 'has-icon': hasIconSlot,\n 'has-start-content': !!(hasIconSlot || finalPrefix),\n 'has-end-content': !!(hasRightIconSlot || finalSuffix || actions),\n 'has-right-icon': hasRightIconSlot,\n 'has-label': hasLabel,\n 'has-prefix': !!finalPrefix,\n 'has-suffix': !!finalSuffix,\n 'has-description': showDescription,\n 'has-actions': !!actions,\n 'has-actions-content': !!(actions && actions !== true),\n 'auto-hide-actions': autoHideActions === true,\n 'preserve-actions-space': preserveActionsSpace === true,\n 'inside-wrapper': insideWrapper,\n 'actions-shown': showActions && insideWrapper,\n checkbox: hasCheckbox,\n description: showDescription ? finalDescriptionPlacement : 'none',\n };\n }, [\n baseMods,\n hasIconSlot,\n hasRightIconSlot,\n finalPrefix,\n finalSuffix,\n showDescription,\n finalDescriptionPlacement,\n hasCheckbox,\n actions,\n autoHideActions,\n preserveActionsSpace,\n hasLabel,\n showActions,\n insideWrapper,\n ]);\n\n const {\n labelProps: finalLabelProps,\n labelRef,\n renderWithTooltip,\n } = useAutoTooltip({\n tooltip,\n children,\n labelProps,\n isDynamicLabel: !!actions,\n });\n\n // Process children with highlight if applicable\n const processedChildren = useMemo(() => {\n if (typeof children === 'string' && highlight) {\n return highlightText(\n children,\n highlight,\n highlightCaseSensitive,\n highlightStyles,\n );\n }\n return children;\n }, [children, highlight, highlightCaseSensitive, highlightStyles]);\n\n // Render function that creates the item element\n const renderItemElement = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n // Use callback ref to merge multiple refs without calling hooks\n const handleRef = (element: HTMLElement | null) => {\n // Set the component's forwarded ref\n if (typeof ref === 'function') {\n ref(element as T | null);\n } else if (ref) {\n (ref as any).current = element;\n }\n // Set the tooltip ref if provided\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n };\n\n return (\n <ItemElement\n ref={handleRef}\n variant={\n theme && type\n ? (`${type === 'header' ? 'default' : theme}.${type === 'header' ? 'item' : type}` as ItemVariant)\n : undefined\n }\n disabled={finalIsDisabled}\n aria-disabled={finalIsDisabled}\n aria-selected={isSelected}\n mods={finalMods}\n styles={styles}\n tokens={sizeTokenValue ? { $size: sizeTokenValue } : undefined}\n type={htmlType as any}\n {...mergeProps(rest, tooltipTriggerProps || {})}\n style={style}\n >\n {hasIconSlot && (\n <div data-element=\"Icon\">\n <IconSwitch noWrapper contentKey={iconKey}>\n {hasCheckbox ? <CheckIcon /> : finalIcon}\n </IconSwitch>\n </div>\n )}\n {finalPrefix && <div data-element=\"Prefix\">{finalPrefix}</div>}\n {children || labelProps\n ? (() => {\n const LabelTag =\n type === 'header' || type === 'card'\n ? (`h${level}` as const)\n : 'div';\n return (\n <LabelTag\n data-element=\"Label\"\n {...finalLabelProps}\n ref={labelRef}\n >\n {processedChildren}\n </LabelTag>\n );\n })()\n : null}\n {showDescription ? (\n <div data-element=\"Description\" {...descriptionProps}>\n {description}\n </div>\n ) : null}\n {finalSuffix && <div data-element=\"Suffix\">{finalSuffix}</div>}\n {hasRightIconSlot && (\n <div data-element=\"RightIcon\">\n <IconSwitch noWrapper contentKey={rightIconKey}>\n {finalRightIcon}\n </IconSwitch>\n </div>\n )}\n {actions && (\n <div data-element=\"Actions\" {...ACTIONS_EVENT_HANDLERS}>\n {actions !== true ? (\n <ItemActionProvider\n type={type}\n theme={theme}\n disableActionsFocus={disableActionsFocus}\n isDisabled={finalIsDisabled}\n >\n {actions}\n </ItemActionProvider>\n ) : null}\n </div>\n )}\n </ItemElement>\n );\n };\n\n return renderWithTooltip(renderItemElement, defaultTooltipPlacement);\n};\n\nconst _Item = Object.assign(forwardRef(Item), {\n Action: ItemAction,\n Badge: ItemBadge,\n});\n\nexport { _Item as Item };\n\n/**\n * @deprecated Use `Item` instead. This export will be removed in a future version.\n */\nexport { _Item as ItemBase };\nexport type { CubeItemProps as CubeItemBaseProps };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Item.js","names":["HotKeys"],"sources":["../../../../src/components/content/Item/Item.tsx"],"sourcesContent":["import {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n Mods,\n Props,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n isValidElement,\n KeyboardEvent,\n MouseEvent,\n PointerEvent,\n ReactNode,\n RefObject,\n useMemo,\n} from 'react';\nimport { OverlayProps } from 'react-aria';\nimport { useHotkeys } from 'react-hotkeys-hook';\n\nimport { useWarn } from '../../../_internal/hooks/use-warn';\nimport {\n DANGER_CARD_STYLES,\n DANGER_CLEAR_STYLES,\n DANGER_ITEM_STYLES,\n DANGER_LINK_STYLES,\n DANGER_NEUTRAL_STYLES,\n DANGER_OUTLINE_STYLES,\n DANGER_PRIMARY_STYLES,\n DANGER_SECONDARY_STYLES,\n DEFAULT_CARD_STYLES,\n DEFAULT_CLEAR_STYLES,\n DEFAULT_ITEM_STYLES,\n DEFAULT_LINK_STYLES,\n DEFAULT_NEUTRAL_STYLES,\n DEFAULT_OUTLINE_STYLES,\n DEFAULT_PRIMARY_STYLES,\n DEFAULT_SECONDARY_STYLES,\n ItemVariant,\n NOTE_CARD_STYLES,\n NOTE_CLEAR_STYLES,\n NOTE_ITEM_STYLES,\n NOTE_LINK_STYLES,\n NOTE_NEUTRAL_STYLES,\n NOTE_OUTLINE_STYLES,\n NOTE_PRIMARY_STYLES,\n NOTE_SECONDARY_STYLES,\n SPECIAL_CLEAR_STYLES,\n SPECIAL_ITEM_STYLES,\n SPECIAL_LINK_STYLES,\n SPECIAL_NEUTRAL_STYLES,\n SPECIAL_OUTLINE_STYLES,\n SPECIAL_PRIMARY_STYLES,\n SPECIAL_SECONDARY_STYLES,\n SUCCESS_CARD_STYLES,\n SUCCESS_CLEAR_STYLES,\n SUCCESS_ITEM_STYLES,\n SUCCESS_LINK_STYLES,\n SUCCESS_NEUTRAL_STYLES,\n SUCCESS_OUTLINE_STYLES,\n SUCCESS_PRIMARY_STYLES,\n SUCCESS_SECONDARY_STYLES,\n WARNING_CARD_STYLES,\n WARNING_CLEAR_STYLES,\n WARNING_ITEM_STYLES,\n WARNING_LINK_STYLES,\n WARNING_NEUTRAL_STYLES,\n WARNING_OUTLINE_STYLES,\n WARNING_PRIMARY_STYLES,\n WARNING_SECONDARY_STYLES,\n} from '../../../data/item-themes';\nimport { CheckIcon } from '../../../icons/CheckIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { DynamicIcon, mergeProps, resolveIcon } from '../../../utils/react';\nimport { ItemAction } from '../../actions/ItemAction';\nimport { ItemActionProvider } from '../../actions/ItemActionContext';\nimport { IconSwitch } from '../../helpers/IconSwitch/IconSwitch';\nimport { CubeTooltipProviderProps } from '../../overlays/Tooltip/TooltipProvider';\nimport { highlightText } from '../highlightText';\nimport { HotKeys } from '../HotKeys';\nimport { ItemBadge } from '../ItemBadge';\nimport { useAutoTooltip } from '../use-auto-tooltip';\n\nconst ITEM_SIZE_VALUES = [\n 'xsmall',\n 'small',\n 'medium',\n 'large',\n 'xlarge',\n 'inline',\n] as const;\n\n/** Known modifiers for Item component */\nexport type ItemMods = Mods<{\n 'has-icon'?: boolean;\n 'has-start-content'?: boolean;\n 'has-end-content'?: boolean;\n 'has-right-icon'?: boolean;\n 'has-label'?: boolean;\n 'has-prefix'?: boolean;\n 'has-suffix'?: boolean;\n 'has-description'?: boolean;\n 'has-actions'?: boolean;\n 'has-actions-content'?: boolean;\n 'auto-hide-actions'?: boolean;\n 'preserve-actions-space'?: boolean;\n checkbox?: boolean;\n disabled?: boolean;\n selected?: boolean;\n loading?: boolean;\n size?: string;\n description?: string;\n type?: string;\n theme?: string;\n shape?: string;\n}>;\n\nexport interface CubeItemProps extends BaseProps, ContainerStyleProps {\n icon?: DynamicIcon<ItemMods> | 'checkbox';\n rightIcon?: DynamicIcon<ItemMods>;\n prefix?: ReactNode;\n suffix?: ReactNode;\n description?: ReactNode;\n descriptionPlacement?: 'inline' | 'block';\n /**\n * When true, the item is rendered inside a wrapper element to separate the actions from the item.\n * @default false\n */\n insideWrapper?: boolean;\n /**\n * Whether the item is selected.\n * @default false\n */\n isSelected?: boolean;\n /**\n * Actions to render inline or placeholder mode for ItemButton wrapper.\n * - ReactNode: renders actions inline as part of the grid layout\n * - true: placeholder mode for ItemButton (enables --actions-width calculation)\n */\n actions?: ReactNode | true;\n /**\n * When true, actions are hidden by default and shown only on hover, focus, or focus-within.\n * Uses opacity transition for visual hiding while maintaining layout space.\n */\n autoHideActions?: boolean;\n /**\n * When true and insideWrapper is true, this controls the visibility of the actions.\n * @default false\n */\n showActions?: boolean;\n /**\n * When true, preserves the actions width when hidden (only changes opacity).\n * Only applies when autoHideActions is true.\n * @default false\n */\n preserveActionsSpace?: boolean;\n /**\n * When true, disables focus on action buttons by setting tabIndex={-1}.\n * @default true\n */\n disableActionsFocus?: boolean;\n size?:\n | 'xsmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'xlarge'\n | 'inline'\n | number\n | (string & {});\n type?:\n | 'item'\n | 'header'\n | 'primary'\n | 'secondary'\n | 'outline'\n | 'neutral'\n | 'clear'\n | 'link'\n | 'card'\n | (string & {});\n theme?:\n | 'default'\n | 'danger'\n | 'success'\n | 'special'\n | 'warning'\n | 'note'\n | (string & {});\n /** Keyboard shortcut that triggers the element when pressed */\n hotkeys?: string;\n /**\n * Tooltip content and configuration:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows children as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n */\n tooltip?:\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n /**\n * HTML button type to avoid implicit form submission when used as `as=\"button\"`.\n * Kept separate from visual `type` prop.\n */\n htmlType?: 'button' | 'submit' | 'reset';\n labelProps?: Props;\n descriptionProps?: Props;\n keyboardShortcutProps?: Props;\n /**\n * The slot which the loading icon should replace in loading state.\n * - \"auto\": Smart selection - prefers icon if present, then rightIcon, fallback to icon\n * - Specific slot names: Always use that slot\n * @default \"auto\"\n */\n loadingSlot?: 'auto' | 'icon' | 'rightIcon' | 'prefix' | 'suffix';\n /**\n * When true, shows loading state by replacing the specified slot with LoadingIcon\n * and makes the component disabled.\n */\n isLoading?: boolean;\n /**\n * Shape of the item's border radius.\n * - `card` - Card shape with larger border radius (`1cr`)\n * - `button` - Button shape with default border radius (default)\n * - `sharp` - Sharp corners with no border radius (`0`)\n * - `pill` - Pill shape with fully rounded ends (`round`)\n * @default \"button\"\n */\n shape?: 'card' | 'button' | 'sharp' | 'pill';\n /**\n * @private\n * Default tooltip placement for the item.\n * @default \"top\"\n */\n defaultTooltipPlacement?: OverlayProps['placement'];\n /**\n * Ref to access the label element directly\n */\n labelRef?: RefObject<HTMLElement>;\n /**\n * Heading level for the Label element when type=\"header\" or type=\"card\".\n * Changes the Label's HTML tag to the corresponding heading (h1-h6).\n * @default 3\n */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /**\n * String to highlight within children.\n * Only works when children is a plain string.\n */\n highlight?: string;\n /**\n * Whether highlight matching is case-sensitive.\n * @default false\n */\n highlightCaseSensitive?: boolean;\n /**\n * Custom styles for highlighted text.\n */\n highlightStyles?: Styles;\n /**\n * Variant of the item.\n */\n variant?: ItemVariant;\n}\n\nconst DEFAULT_ICON_STYLES: Styles = {\n $: '>',\n display: 'grid',\n placeItems: 'center',\n placeContent: 'stretch',\n aspectRatio: '1 / 1',\n width: '($size - 2bw)',\n opacity: {\n '': 1,\n 'checkbox & selected': 1,\n 'checkbox & !selected': 0,\n 'checkbox & !selected & hovered': 0.4,\n },\n};\n\nconst ADDITION_STYLES: Styles = {\n $: '>',\n display: 'grid',\n flow: 'column',\n placeItems: 'center',\n placeContent: 'stretch',\n};\n\nconst ACTIONS_EVENT_HANDLERS = {\n onClick: (e: MouseEvent) => e.stopPropagation(),\n onPointerDown: (e: PointerEvent) => e.stopPropagation(),\n onPointerUp: (e: PointerEvent) => e.stopPropagation(),\n onMouseDown: (e: MouseEvent) => e.stopPropagation(),\n onMouseUp: (e: MouseEvent) => e.stopPropagation(),\n onKeyDown: (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.stopPropagation();\n }\n },\n};\n\nconst ItemElement = tasty({\n as: 'div',\n styles: {\n '@interacted':\n 'active | :hover | :focus | :focus-within | :has([data-pressed])',\n\n display: 'inline-grid',\n flow: 'column dense',\n gap: 0,\n outline: 0,\n placeItems: 'stretch',\n placeContent: 'stretch',\n gridTemplate: {\n '': '\"icon prefix label suffix rightIcon actions\" auto \"icon prefix label suffix rightIcon actions\" auto / max-content max-content 1sf max-content max-content max-content',\n 'description=inline':\n '\"icon prefix description suffix rightIcon actions\" auto / max-content max-content 1sf max-content max-content max-content',\n 'description=inline & has-label':\n '\"icon prefix label suffix rightIcon actions\" auto \"icon prefix description suffix rightIcon actions\" auto / max-content max-content 1sf max-content max-content max-content',\n 'description=block':\n '\"icon prefix label suffix rightIcon actions\" auto \"description description description description description description\" auto / max-content max-content 1sf max-content max-content max-content',\n },\n // Prevent items from shrinking inside vertical flex layouts (Menu, ListBox, etc)\n flexShrink: {\n '': 'initial',\n 'menuitem | listboxitem': 0,\n },\n position: 'relative',\n padding: {\n '': 0,\n 'type=card': '.5x',\n },\n margin: 0,\n radius: {\n '': true,\n 'shape=card': '1cr',\n 'shape=button': true,\n 'shape=sharp': '0',\n 'shape=pill': 'round',\n },\n height: {\n '': 'min $size',\n 'size=inline': '(1lh + 2bw)',\n },\n width: {\n '': 'min $size',\n 'has-icon & has-right-icon': 'min ($size * 2)',\n 'size=inline': 'min (1lh + 2bw)',\n },\n border: '#clear',\n fill: {\n '': '#dark.0',\n 'hovered | focused': '#dark.03',\n selected: '#dark.09',\n 'selected & (hovered | focused)': '#dark.12',\n pressed: '#dark.09',\n disabled: '#clear',\n },\n color: {\n '': '#dark-02',\n hovered: '#dark-02',\n pressed: '#dark',\n disabled: '#disabled-surface-text',\n },\n preset: {\n '': 't3',\n '!type=item': 't3m',\n 'size=xsmall': 't4',\n 'size=xlarge': 't2',\n 'size=inline': 'inherit',\n '!type=item & (size=medium | size=small | size=large)': 't3m',\n '!type=item & size=xlarge': 't2m',\n '(type=header | type=card) & (size=xsmall | size=small | size=medium)':\n 'h6',\n '(type=header | type=card) & size=large': 'h5',\n '(type=header | type=card) & size=xlarge': 'h4',\n },\n recipe: 'reset button',\n transition: 'theme',\n outlineOffset: 1,\n cursor: {\n '': 'inherit',\n ':is(a)': 'pointer',\n ':is(button) | listboxitem | menuitem': '$pointer',\n disabled: 'not-allowed',\n },\n\n $size: {\n '': '$size-md',\n 'size=xsmall': '$size-xs',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n 'size=xlarge': '$size-xl',\n 'size=inline': '(1lh + 2bw)',\n },\n '$inline-padding':\n 'max($min-inline-padding, (($size - 1lh - 2bw) / 2 + $inline-compensation))',\n '$block-padding': {\n '': '.5x',\n 'size=xsmall | size=small': '.25x',\n 'size=inline': 0,\n },\n '$inline-compensation': '.5x',\n '$min-inline-padding': '(1x - 1bw)',\n\n '$label-padding-left': {\n '': '$inline-padding',\n 'has-start-content': '0',\n },\n '$label-padding-right': {\n '': '$inline-padding',\n 'has-end-content': '0',\n // Restore padding when actions are hidden AND no other visible end content\n '!inside-wrapper & !has-suffix & !has-right-icon & auto-hide-actions & !preserve-actions-space & !@interacted':\n '$inline-padding',\n 'inside-wrapper & !has-suffix & !has-right-icon & !preserve-actions-space & !actions-shown':\n '$inline-padding',\n },\n '$label-padding-bottom': {\n '': '$block-padding',\n 'description=inline': '0',\n },\n '$description-padding-left': {\n '': '$inline-padding',\n 'has-start-content': 0,\n 'description=block': '($inline-padding - $inline-compensation + 1bw)',\n 'description=block & !has-start-content': '$inline-padding',\n },\n '$description-padding-right': {\n '': '$inline-padding',\n 'has-end-content': 0,\n 'description=block': '($inline-padding - $inline-compensation + 1bw)',\n 'description=block & !has-end-content': '$inline-padding',\n },\n '$description-padding-bottom': {\n '': 0,\n 'has-label & description=inline': '$block-padding',\n 'has-label & description=block':\n 'max($block-padding, (($size - 4x) / 2) + $block-padding)',\n },\n\n Icon: { ...DEFAULT_ICON_STYLES, gridArea: 'icon' },\n\n RightIcon: { ...DEFAULT_ICON_STYLES, gridArea: 'rightIcon' },\n\n Label: {\n $: '>',\n margin: 0,\n gridArea: 'label',\n display: 'block',\n placeSelf: 'center start',\n boxSizing: 'border-box',\n placeContent: 'stretch',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: '0 100%',\n preset: 'inherit',\n transition: 'padding',\n padding:\n '$block-padding $label-padding-right $label-padding-bottom $label-padding-left',\n },\n\n Description: {\n $: '>',\n gridArea: 'description',\n preset: {\n '': 't4',\n 'type=card | type=header': 't3',\n },\n placeSelf: 'center start',\n boxSizing: 'border-box',\n color: 'inherit',\n opacity: {\n '': 0.75,\n 'type=card | type=header': 1,\n },\n overflow: 'hidden',\n whiteSpace: {\n '': 'nowrap',\n 'type=card | type=header': 'normal',\n },\n textOverflow: 'ellipsis',\n width: 'initial 100% 100%',\n textAlign: 'left',\n padding:\n '0 $description-padding-right $description-padding-bottom $description-padding-left',\n },\n\n Prefix: {\n ...ADDITION_STYLES,\n gridArea: 'prefix',\n padding: {\n '': '$inline-padding left',\n 'has-icon': 0,\n },\n },\n\n Suffix: {\n ...ADDITION_STYLES,\n gridArea: 'suffix',\n padding: {\n '': '$inline-padding right',\n 'has-right-icon': 0,\n },\n },\n\n Actions: {\n $: '>',\n gridArea: 'actions',\n display: 'flex',\n gap: '1bw',\n placeItems: 'center',\n placeContent: 'end',\n placeSelf: 'stretch',\n padding: {\n '': '0 $side-padding',\n 'inside-wrapper & !actions-shown': 0,\n },\n boxSizing: 'border-box',\n height: 'min ($size - 2bw)',\n width: {\n '': 'fixed ($actions-width, 0px)',\n 'has-actions-content & !auto-hide-actions':\n 'max calc-size(max-content, size)',\n 'has-actions-content & auto-hide-actions & !preserve-actions-space':\n 'max 0px',\n 'has-actions-content & auto-hide-actions & (!preserve-actions-space & ((@interacted & !inside-wrapper) | (inside-wrapper & actions-shown)))':\n 'max calc-size(max-content, size)',\n 'has-actions-content & auto-hide-actions & preserve-actions-space':\n 'max calc-size(max-content, size)',\n },\n opacity: {\n '': 1,\n 'auto-hide-actions': 0,\n 'auto-hide-actions & ((@interacted & !inside-wrapper) | (inside-wrapper & actions-shown))': 1,\n },\n transition:\n 'width $transition ease-out, opacity $transition ease-out, padding $transition ease-out',\n interpolateSize: 'allow-keywords',\n\n // Size for the action buttons\n '$action-size': 'min(max((2x + 2bw), ($size - 1x - 2bw)), (3x - 2bw))',\n // Side padding for the button\n '$side-padding': '(($size - $action-size - 2bw) / 2)',\n },\n },\n variants: {\n // Default theme\n 'default.primary': DEFAULT_PRIMARY_STYLES,\n 'default.secondary': DEFAULT_SECONDARY_STYLES,\n 'default.outline': DEFAULT_OUTLINE_STYLES,\n 'default.neutral': DEFAULT_NEUTRAL_STYLES,\n 'default.clear': DEFAULT_CLEAR_STYLES,\n 'default.link': DEFAULT_LINK_STYLES,\n 'default.item': DEFAULT_ITEM_STYLES,\n 'default.card': DEFAULT_CARD_STYLES,\n // Danger theme\n 'danger.primary': DANGER_PRIMARY_STYLES,\n 'danger.secondary': DANGER_SECONDARY_STYLES,\n 'danger.outline': DANGER_OUTLINE_STYLES,\n 'danger.neutral': DANGER_NEUTRAL_STYLES,\n 'danger.clear': DANGER_CLEAR_STYLES,\n 'danger.link': DANGER_LINK_STYLES,\n 'danger.item': DANGER_ITEM_STYLES,\n 'danger.card': DANGER_CARD_STYLES,\n // Success theme\n 'success.primary': SUCCESS_PRIMARY_STYLES,\n 'success.secondary': SUCCESS_SECONDARY_STYLES,\n 'success.outline': SUCCESS_OUTLINE_STYLES,\n 'success.neutral': SUCCESS_NEUTRAL_STYLES,\n 'success.clear': SUCCESS_CLEAR_STYLES,\n 'success.link': SUCCESS_LINK_STYLES,\n 'success.item': SUCCESS_ITEM_STYLES,\n 'success.card': SUCCESS_CARD_STYLES,\n // Warning theme\n 'warning.primary': WARNING_PRIMARY_STYLES,\n 'warning.secondary': WARNING_SECONDARY_STYLES,\n 'warning.outline': WARNING_OUTLINE_STYLES,\n 'warning.neutral': WARNING_NEUTRAL_STYLES,\n 'warning.clear': WARNING_CLEAR_STYLES,\n 'warning.link': WARNING_LINK_STYLES,\n 'warning.item': WARNING_ITEM_STYLES,\n 'warning.card': WARNING_CARD_STYLES,\n // Note theme\n 'note.primary': NOTE_PRIMARY_STYLES,\n 'note.secondary': NOTE_SECONDARY_STYLES,\n 'note.outline': NOTE_OUTLINE_STYLES,\n 'note.neutral': NOTE_NEUTRAL_STYLES,\n 'note.clear': NOTE_CLEAR_STYLES,\n 'note.link': NOTE_LINK_STYLES,\n 'note.item': NOTE_ITEM_STYLES,\n 'note.card': NOTE_CARD_STYLES,\n // Special theme\n 'special.primary': SPECIAL_PRIMARY_STYLES,\n 'special.secondary': SPECIAL_SECONDARY_STYLES,\n 'special.outline': SPECIAL_OUTLINE_STYLES,\n 'special.neutral': SPECIAL_NEUTRAL_STYLES,\n 'special.clear': SPECIAL_CLEAR_STYLES,\n 'special.link': SPECIAL_LINK_STYLES,\n 'special.item': SPECIAL_ITEM_STYLES,\n },\n styleProps: CONTAINER_STYLES,\n});\n\nconst Item = <T extends HTMLElement = HTMLDivElement>(\n props: CubeItemProps,\n ref: ForwardedRef<T>,\n) => {\n let {\n children,\n size = 'medium',\n type = 'item',\n theme = 'default',\n mods,\n icon: iconProp,\n rightIcon: rightIconProp,\n prefix,\n suffix,\n description,\n descriptionPlacement,\n labelProps,\n descriptionProps,\n keyboardShortcutProps,\n styles,\n htmlType,\n isSelected,\n hotkeys,\n tooltip = true,\n isDisabled,\n style,\n loadingSlot = 'auto',\n isLoading = false,\n actions,\n autoHideActions = false,\n preserveActionsSpace = false,\n disableActionsFocus = false,\n shape,\n defaultTooltipPlacement = 'top',\n level = 3,\n highlight,\n highlightCaseSensitive = false,\n highlightStyles,\n insideWrapper = false,\n showActions = false,\n ...rest\n } = props;\n\n // Determine if Label will be rendered\n const hasLabel = !!(children || labelProps);\n\n // Set default descriptionPlacement based on type\n // For card/header types, use 'block' only when Label is rendered\n const finalDescriptionPlacement =\n descriptionPlacement ??\n ((type === 'card' || type === 'header') && hasLabel ? 'block' : 'inline');\n\n // Set default shape based on type\n const finalShape = shape ?? (type === 'card' ? 'card' : 'button');\n\n // Loading state makes the component disabled\n const finalIsDisabled =\n isDisabled === true || (isLoading && isDisabled !== false);\n\n // Validate type+theme combinations\n const STANDARD_THEMES = [\n 'default',\n 'success',\n 'danger',\n 'warning',\n 'note',\n 'special',\n ];\n const CARD_THEMES = ['default', 'success', 'danger', 'warning', 'note'];\n const HEADER_THEMES = ['default'];\n\n const isInvalidCombination =\n (type === 'header' && !HEADER_THEMES.includes(theme)) ||\n (type === 'card' && !CARD_THEMES.includes(theme)) ||\n (!['header', 'card'].includes(type) && !STANDARD_THEMES.includes(theme));\n\n useWarn(isInvalidCombination, {\n key: ['Item', 'invalid-type-theme', type, theme],\n args: [\n `Item: Invalid type+theme combination. type=\"${type}\" does not support theme=\"${theme}\".` +\n (type === 'header'\n ? ' The \"header\" type only supports theme: default.'\n : type === 'card'\n ? ' The \"card\" type only supports themes: default, success, danger, warning, note.'\n : ' Standard types support themes: default, success, danger, warning, note, special.'),\n ],\n });\n\n // Warn if link type is used with icons or loading state\n const hasLinkWithIcons = type === 'link' && (iconProp || rightIconProp);\n const hasLinkWithLoading = type === 'link' && isLoading;\n const hasLinkRestrictions = hasLinkWithIcons || hasLinkWithLoading;\n\n const linkRestrictionMessages: string[] = [];\n if (hasLinkWithIcons) {\n linkRestrictionMessages.push('icons (`icon` or `rightIcon` props)');\n }\n if (hasLinkWithLoading) {\n linkRestrictionMessages.push('loading state (`isLoading` prop)');\n }\n\n useWarn(hasLinkRestrictions, {\n key: ['Item', 'link-restrictions'],\n args: [\n `Item: The \"link\" type does not support ${linkRestrictionMessages.join(' or ')}. Remove these props when using type=\"link\".`,\n ],\n });\n\n // Determine if we should show checkbox instead of icon\n const hasCheckbox = iconProp === 'checkbox';\n\n // Determine if size is custom (number or unrecognized string)\n const isCustomSize =\n typeof size === 'number' ||\n !(ITEM_SIZE_VALUES as readonly string[]).includes(size);\n const sizeTokenValue =\n typeof size === 'number' ? `${size}px` : isCustomSize ? size : undefined;\n\n // Base mods for icon resolution (without icon-dependent mods)\n const baseMods = useMemo<ItemMods>(\n () => ({\n disabled: finalIsDisabled,\n selected: isSelected === true,\n loading: isLoading,\n ...(!isCustomSize && { size: size as string }),\n type,\n theme,\n shape: finalShape,\n ...mods,\n }),\n [\n finalIsDisabled,\n isSelected,\n isLoading,\n size,\n isCustomSize,\n type,\n theme,\n finalShape,\n mods,\n ],\n );\n\n // Resolve dynamic icon props (skip resolution for 'checkbox' special value)\n const resolvedIcon = useMemo(() => {\n if (hasCheckbox) {\n return { content: null, hasSlot: true };\n }\n return resolveIcon(iconProp as DynamicIcon<ItemMods>, baseMods);\n }, [iconProp, baseMods, hasCheckbox]);\n\n const resolvedRightIcon = useMemo(\n () => resolveIcon(rightIconProp, baseMods),\n [rightIconProp, baseMods],\n );\n\n // Determine which slot to use for loading when \"auto\" is selected\n // Must be computed before hasIconSlot/hasRightIconSlot since they depend on it\n const resolvedLoadingSlot = useMemo(() => {\n if (loadingSlot !== 'auto') return loadingSlot;\n\n // Auto logic: prefer icon if present, then rightIcon, fallback to icon\n if (resolvedRightIcon.hasSlot && !resolvedIcon.hasSlot) return 'rightIcon';\n return 'icon'; // fallback\n }, [loadingSlot, resolvedIcon.hasSlot, resolvedRightIcon.hasSlot]);\n\n // Determine if icon slots should render (original slot OR loading state targets this slot)\n const hasIconSlot =\n resolvedIcon.hasSlot || (isLoading && resolvedLoadingSlot === 'icon');\n const hasRightIconSlot =\n resolvedRightIcon.hasSlot ||\n (isLoading && resolvedLoadingSlot === 'rightIcon');\n\n const showDescription = useMemo(() => {\n const copyProps = { ...descriptionProps };\n delete copyProps.id;\n return !!(description || Object.keys(copyProps).length > 0);\n }, [description, descriptionProps]);\n\n // Apply loading state to appropriate slots\n const finalIcon =\n isLoading && resolvedLoadingSlot === 'icon' ? (\n <LoadingIcon />\n ) : (\n resolvedIcon.content\n );\n const finalRightIcon =\n isLoading && resolvedLoadingSlot === 'rightIcon' ? (\n <LoadingIcon />\n ) : (\n resolvedRightIcon.content\n );\n\n // Generate stable keys for icon transitions based on icon type\n const iconKey = hasCheckbox\n ? 'checkbox'\n : isLoading && resolvedLoadingSlot === 'icon'\n ? 'loading'\n : isValidElement(finalIcon)\n ? (finalIcon.type as any)?.displayName ||\n (finalIcon.type as any)?.name ||\n 'icon'\n : finalIcon\n ? 'icon'\n : 'empty';\n\n const rightIconKey =\n isLoading && resolvedLoadingSlot === 'rightIcon'\n ? 'loading'\n : isValidElement(finalRightIcon)\n ? (finalRightIcon.type as any)?.displayName ||\n (finalRightIcon.type as any)?.name ||\n 'icon'\n : finalRightIcon\n ? 'icon'\n : 'empty';\n const finalPrefix =\n isLoading && resolvedLoadingSlot === 'prefix' ? <LoadingIcon /> : prefix;\n\n // Build final suffix: loading icon, custom suffix, or HotKeys hint\n const finalSuffix =\n isLoading && resolvedLoadingSlot === 'suffix' ? (\n <LoadingIcon />\n ) : (\n suffix ??\n (hotkeys ? (\n <HotKeys\n {...(keyboardShortcutProps as any)}\n type={type === 'primary' ? 'primary' : 'default'}\n styles={{ padding: '1x left', opacity: finalIsDisabled ? 0.5 : 1 }}\n >\n {hotkeys}\n </HotKeys>\n ) : undefined)\n );\n\n // Register global hotkey if provided\n useHotkeys(\n typeof hotkeys === 'string' ? hotkeys.toLowerCase() : '',\n () => {\n if (!hotkeys) return;\n if (finalIsDisabled) return;\n // Simulate a click on the element so all existing handlers run\n if (ref && typeof ref === 'object' && ref.current) {\n (ref.current as HTMLElement).click();\n }\n },\n {\n enableOnContentEditable: true,\n enabled: !!hotkeys,\n preventDefault: true,\n enableOnFormTags: true,\n },\n [hotkeys, finalIsDisabled],\n );\n\n const finalMods = useMemo<ItemMods>(() => {\n return {\n ...baseMods,\n 'has-icon': hasIconSlot,\n 'has-start-content': !!(hasIconSlot || finalPrefix),\n 'has-end-content': !!(hasRightIconSlot || finalSuffix || actions),\n 'has-right-icon': hasRightIconSlot,\n 'has-label': hasLabel,\n 'has-prefix': !!finalPrefix,\n 'has-suffix': !!finalSuffix,\n 'has-description': showDescription,\n 'has-actions': !!actions,\n 'has-actions-content': !!(actions && actions !== true),\n 'auto-hide-actions': autoHideActions === true,\n 'preserve-actions-space': preserveActionsSpace === true,\n 'inside-wrapper': insideWrapper,\n 'actions-shown': showActions && insideWrapper,\n checkbox: hasCheckbox,\n description: showDescription ? finalDescriptionPlacement : 'none',\n };\n }, [\n baseMods,\n hasIconSlot,\n hasRightIconSlot,\n finalPrefix,\n finalSuffix,\n showDescription,\n finalDescriptionPlacement,\n hasCheckbox,\n actions,\n autoHideActions,\n preserveActionsSpace,\n hasLabel,\n showActions,\n insideWrapper,\n ]);\n\n const {\n labelProps: finalLabelProps,\n labelRef,\n renderWithTooltip,\n } = useAutoTooltip({\n tooltip,\n children,\n labelProps,\n isDynamicLabel: !!actions,\n });\n\n // Process children with highlight if applicable\n const processedChildren = useMemo(() => {\n if (typeof children === 'string' && highlight) {\n return highlightText(\n children,\n highlight,\n highlightCaseSensitive,\n highlightStyles,\n );\n }\n return children;\n }, [children, highlight, highlightCaseSensitive, highlightStyles]);\n\n // Render function that creates the item element\n const renderItemElement = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n // Use callback ref to merge multiple refs without calling hooks\n const handleRef = (element: HTMLElement | null) => {\n // Set the component's forwarded ref\n if (typeof ref === 'function') {\n ref(element as T | null);\n } else if (ref) {\n (ref as any).current = element;\n }\n // Set the tooltip ref if provided\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n };\n\n return (\n <ItemElement\n ref={handleRef}\n variant={\n theme && type\n ? (`${type === 'header' ? 'default' : theme}.${type === 'header' ? 'item' : type}` as ItemVariant)\n : undefined\n }\n disabled={finalIsDisabled}\n aria-disabled={finalIsDisabled}\n aria-selected={isSelected}\n mods={finalMods}\n styles={styles}\n tokens={sizeTokenValue ? { $size: sizeTokenValue } : undefined}\n type={htmlType as any}\n {...mergeProps(rest, tooltipTriggerProps || {})}\n style={style}\n >\n {hasIconSlot && (\n <div data-element=\"Icon\">\n <IconSwitch noWrapper contentKey={iconKey}>\n {hasCheckbox ? <CheckIcon /> : finalIcon}\n </IconSwitch>\n </div>\n )}\n {finalPrefix && <div data-element=\"Prefix\">{finalPrefix}</div>}\n {children || labelProps\n ? (() => {\n const LabelTag =\n type === 'header' || type === 'card'\n ? (`h${level}` as const)\n : 'div';\n return (\n <LabelTag\n data-element=\"Label\"\n {...finalLabelProps}\n ref={labelRef}\n >\n {processedChildren}\n </LabelTag>\n );\n })()\n : null}\n {showDescription ? (\n <div data-element=\"Description\" {...descriptionProps}>\n {description}\n </div>\n ) : null}\n {finalSuffix && <div data-element=\"Suffix\">{finalSuffix}</div>}\n {hasRightIconSlot && (\n <div data-element=\"RightIcon\">\n <IconSwitch noWrapper contentKey={rightIconKey}>\n {finalRightIcon}\n </IconSwitch>\n </div>\n )}\n {actions && (\n <div data-element=\"Actions\" {...ACTIONS_EVENT_HANDLERS}>\n {actions !== true ? (\n <ItemActionProvider\n type={type}\n theme={theme}\n disableActionsFocus={disableActionsFocus}\n isDisabled={finalIsDisabled}\n >\n {actions}\n </ItemActionProvider>\n ) : null}\n </div>\n )}\n </ItemElement>\n );\n };\n\n return renderWithTooltip(renderItemElement, defaultTooltipPlacement);\n};\n\nconst _Item = Object.assign(forwardRef(Item), {\n Action: ItemAction,\n Badge: ItemBadge,\n});\n\nexport { _Item as Item };\n\n/**\n * @deprecated Use `Item` instead. This export will be removed in a future version.\n */\nexport { _Item as ItemBase };\nexport type { CubeItemProps as CubeItemBaseProps };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
4
4
  import { DANGER_CLEAR_STYLES, DANGER_NEUTRAL_STYLES, DANGER_PRIMARY_STYLES, DANGER_SECONDARY_STYLES, DEFAULT_CLEAR_STYLES, DEFAULT_NEUTRAL_STYLES, DEFAULT_PRIMARY_STYLES, DEFAULT_SECONDARY_STYLES, ITEM_ACTION_BASE_STYLES, SPECIAL_CLEAR_STYLES, SPECIAL_NEUTRAL_STYLES, SPECIAL_PRIMARY_STYLES, SPECIAL_SECONDARY_STYLES, SUCCESS_CLEAR_STYLES, SUCCESS_NEUTRAL_STYLES, SUCCESS_PRIMARY_STYLES, SUCCESS_SECONDARY_STYLES } from "../../../data/item-themes.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
3
3
  import { _Item } from "../Item/Item.js";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { _Layout } from "./Layout.js";
3
3
  import { _LayoutContent } from "./LayoutContent.js";
4
4
  import { _LayoutBlock } from "./LayoutBlock.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { Alert } from "../Alert/Alert.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { _LayoutContent } from "./LayoutContent.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { _LayoutContainer } from "./LayoutContainer.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { LayoutContextReset } from "./LayoutContext.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { LayoutContextReset } from "./LayoutContext.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { createContext, useContext, useMemo, useRef, useState } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { _LayoutContent } from "./LayoutContent.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { _LayoutContent } from "./LayoutContent.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef, useMemo } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { _LayoutContent } from "./LayoutContent.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { useAutoTooltip } from "../use-auto-tooltip.js";
3
3
  import { SlashIcon } from "../../../icons/SlashIcon.js";
4
4
  import { Button } from "../../actions/Button/Button.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -175,7 +175,7 @@ const PaneElement = tasty({
175
175
  fill: {
176
176
  "": "#dark-03",
177
177
  "handlerHovered | drag | focused": "#primary-text",
178
- disabled: "#dark-04"
178
+ disabled: "#disabled-surface-text"
179
179
  }
180
180
  }
181
181
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutPane.js","names":["mergeProps"],"sources":["../../../../src/components/content/Layout/LayoutPane.tsx"],"sourcesContent":["import {\n BaseProps,\n ContainerStyleProps,\n filterBaseProps,\n INNER_STYLES,\n mergeStyles,\n OUTER_STYLES,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useFocusRing, useHover, useMove } from 'react-aria';\n\nimport { useDebouncedValue } from '../../../_internal/hooks';\nimport { mergeProps, useCombinedRefs } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\n\nimport { useTinyScrollbar } from './hooks/useTinyScrollbar';\nimport { ScrollbarType } from './LayoutContent';\nimport { LayoutContextReset } from './LayoutContext';\nimport { clampSize } from './utils';\n\n// Handler dimensions\nconst HANDLER_WIDTH = 9; // Interactive area\nconst HANDLER_RESERVED = 5; // Space reserved in Inner padding\n\nconst PaneElement = tasty({\n as: 'div',\n qa: 'LayoutPane',\n styles: {\n container: 'pane / inline-size',\n position: 'relative',\n display: 'grid',\n gridColumns: '1sf',\n gridRows: '1sf',\n placeContent: 'stretch',\n placeItems: 'stretch',\n placeSelf: 'stretch',\n flexShrink: 0,\n flexGrow: 0,\n // Size is set via CSS custom property for performance during drag\n width: {\n '': 'auto',\n 'edge=right': '2x $pane-size $pane-size',\n },\n height: {\n '': '2x $pane-size $pane-size',\n 'edge=right': 'auto',\n },\n boxSizing: 'content-box',\n\n Inner: {\n $: '>',\n display: 'flex',\n flow: 'column',\n padding: '($content-padding, 1x)',\n // Reserve space for handler on resize edge\n paddingRight: {\n '': '($content-padding, 1x)',\n 'edge=right': `calc(($content-padding, 1x) + ${HANDLER_RESERVED}px)`,\n },\n paddingBottom: {\n '': '($content-padding, 1x)',\n 'edge=bottom': `calc(($content-padding, 1x) + ${HANDLER_RESERVED}px)`,\n },\n overflow: {\n '': 'auto',\n 'scrollbar=none': 'clip',\n },\n placeSelf: 'stretch',\n scrollbar: {\n '': 'thin',\n 'scrollbar=tiny | scrollbar=none': 'none',\n },\n\n '$layout-border-size': '0',\n },\n\n // Custom scrollbar handles (when scrollbar=\"tiny\")\n ScrollbarV: {\n position: 'absolute',\n right: {\n '': '1px',\n 'edge=right': `${HANDLER_RESERVED + 1}px`,\n },\n top: '$scrollbar-v-top',\n width: '1ow',\n height: '$scrollbar-v-height',\n radius: 'round',\n fill: '#dark.35',\n opacity: {\n '': 0,\n '(focused | scrolling) & scrollbar=tiny': 1,\n },\n transition: 'opacity 0.15s',\n pointerEvents: 'none',\n },\n\n ScrollbarH: {\n $: '>',\n position: 'absolute',\n bottom: {\n '': '1px',\n 'edge=bottom': `${HANDLER_RESERVED + 1}px`,\n },\n left: '$scrollbar-h-left',\n height: '1ow',\n width: '$scrollbar-h-width',\n radius: 'round',\n fill: '#dark.35',\n opacity: {\n '': 0,\n '(focused | scrolling) & scrollbar=tiny': 1,\n },\n transition: 'opacity 0.15s',\n pointerEvents: 'none',\n },\n\n // Compact resize handler - only drag dots\n ResizeHandler: {\n position: 'absolute',\n // Size: 9px interactive area\n width: {\n '': '100%',\n 'edge=right': `${HANDLER_WIDTH}px`,\n },\n height: {\n '': `${HANDLER_WIDTH}px`,\n 'edge=right': '100%',\n },\n // Position at edge, centered on the reserved space boundary\n right: {\n '': 'initial',\n 'edge=right': `${(HANDLER_RESERVED - HANDLER_WIDTH) / 2}px`,\n },\n bottom: {\n '': `${(HANDLER_RESERVED - HANDLER_WIDTH) / 2}px`,\n 'edge=right': 'initial',\n },\n top: {\n '': 'initial',\n 'edge=right': 0,\n },\n left: {\n '': 0,\n 'edge=right': 'initial',\n },\n cursor: {\n '': 'row-resize',\n 'edge=right': 'col-resize',\n disabled: 'not-allowed',\n },\n padding: 0,\n outline: 0,\n boxSizing: 'border-box',\n transition: 'theme',\n },\n\n Drag: {\n display: 'grid',\n gap: '2bw',\n border: 0,\n flow: {\n '': 'row',\n 'edge=right': 'column',\n },\n gridColumns: {\n '': '3px 3px 3px 3px 3px',\n 'edge=right': 'auto',\n },\n gridRows: {\n '': 'auto',\n 'edge=right': '3px 3px 3px 3px 3px',\n },\n width: {\n '': 'auto',\n 'edge=right': '3px',\n },\n height: {\n '': '3px',\n 'edge=right': 'auto',\n },\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n transition: 'theme',\n radius: 'round',\n outline: {\n '': '0',\n 'focused | drag': '1bw #primary-text',\n },\n outlineOffset: 1,\n },\n\n DragPart: {\n radius: true,\n fill: {\n '': '#dark-03',\n 'handlerHovered | drag | focused': '#primary-text',\n disabled: '#dark-04',\n },\n },\n },\n});\n\nexport type ResizeEdge = 'right' | 'bottom';\n\nexport interface CubeLayoutPaneProps extends BaseProps, ContainerStyleProps {\n /** Edge where resize handler appears */\n resizeEdge?: ResizeEdge;\n /** Enable resize functionality */\n isResizable?: boolean;\n /** Controlled size (width for right edge, height for bottom edge) */\n size?: number | string;\n /** Default size for uncontrolled state */\n defaultSize?: number | string;\n /** Minimum size constraint */\n minSize?: number | string;\n /** Maximum size constraint */\n maxSize?: number | string;\n /** Size change callback */\n onSizeChange?: (size: number) => void;\n /** Scrollbar style */\n scrollbar?: ScrollbarType;\n /** Custom styles */\n styles?: Styles;\n children?: ReactNode;\n /** Ref for the inner content element */\n innerRef?: ForwardedRef<HTMLDivElement>;\n /** Props to spread on the Inner sub-element */\n innerProps?: HTMLAttributes<HTMLDivElement>;\n}\n\ninterface PaneResizeHandlerProps {\n edge: ResizeEdge;\n isDisabled?: boolean;\n moveProps: ReturnType<typeof useMove>['moveProps'];\n onDoubleClick?: () => void;\n onHoverChange?: (isHovered: boolean) => void;\n onFocusChange?: (isFocused: boolean) => void;\n}\n\nfunction PaneResizeHandler(props: PaneResizeHandlerProps) {\n const {\n edge,\n isDisabled,\n moveProps,\n onDoubleClick,\n onHoverChange,\n onFocusChange,\n } = props;\n const { hoverProps, isHovered } = useHover({\n onHoverChange,\n });\n const { focusProps, isFocusVisible } = useFocusRing();\n const isHorizontal = edge === 'right';\n\n // Notify parent of focus changes\n useEffect(() => {\n onFocusChange?.(isFocusVisible);\n }, [isFocusVisible, onFocusChange]);\n\n return (\n <div\n data-element=\"ResizeHandler\"\n {...mergeProps(hoverProps, focusProps, isDisabled ? {} : moveProps, {\n tabIndex: isDisabled ? undefined : 0,\n role: 'separator',\n 'aria-orientation': isHorizontal ? 'vertical' : 'horizontal',\n 'aria-label': `Resize pane ${edge}`,\n onDoubleClick: isDisabled ? undefined : onDoubleClick,\n })}\n >\n {!isDisabled && (\n <div data-element=\"Drag\">\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction LayoutPane(\n props: CubeLayoutPaneProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n resizeEdge = 'right',\n isResizable = false,\n size: providedSize,\n defaultSize = 200,\n minSize,\n maxSize,\n onSizeChange,\n scrollbar = 'thin',\n styles,\n mods,\n children,\n innerRef: innerRefProp,\n innerProps,\n ...otherProps\n } = props;\n\n const combinedRef = useCombinedRefs(ref);\n const internalInnerRef = useRef<HTMLDivElement>(null);\n const combinedInnerRef = useCombinedRefs(innerRefProp, internalInnerRef);\n const prevProvidedSizeRef = useRef(providedSize);\n const isHorizontal = resizeEdge === 'right';\n\n // Resize state\n const [isDragging, setIsDragging] = useState(false);\n const [isHandlerHovered, setIsHandlerHovered] = useState(false);\n const [isHandlerFocused, setIsHandlerFocused] = useState(false);\n const debouncedHandlerHovered = useDebouncedValue(isHandlerHovered, 150);\n const [size, setSize] = useState<number>(() => {\n const initialSize =\n typeof providedSize === 'number'\n ? providedSize\n : typeof defaultSize === 'number'\n ? defaultSize\n : 200;\n\n return clampSize(initialSize, minSize, maxSize);\n });\n\n // Extract outer wrapper styles and inner content styles\n const outerStyles = extractStyles(otherProps, OUTER_STYLES);\n const innerStyles = extractStyles(otherProps, INNER_STYLES);\n\n const isTinyScrollbar = scrollbar === 'tiny';\n const { hoverProps, isHovered } = useHover({});\n\n const {\n handleVStyle,\n handleHStyle,\n hasOverflowY,\n hasOverflowX,\n isScrolling,\n } = useTinyScrollbar(internalInnerRef, isTinyScrollbar);\n\n // Clamp size to min/max constraints\n const clampValue = useCallback(\n (value: number) => clampSize(value, minSize, maxSize),\n [minSize, maxSize],\n );\n\n const { moveProps } = useMove({\n onMoveStart() {\n if (!isResizable) return;\n setIsDragging(true);\n },\n onMove(e) {\n if (!isResizable) return;\n\n let delta: number;\n\n if (e.pointerType === 'keyboard') {\n // Keyboard resize: 10px per step, 50px with Shift\n const step = e.shiftKey ? 50 : 10;\n const rawDelta = isHorizontal ? e.deltaX : e.deltaY;\n delta = rawDelta * step;\n } else {\n // Pointer resize: use exact delta values\n delta = isHorizontal ? e.deltaX : e.deltaY;\n }\n\n setSize((currentSize) => clampValue(currentSize + delta));\n },\n onMoveEnd() {\n setIsDragging(false);\n // Round to integer on release and notify parent\n setSize((currentSize) => {\n const finalSize = Math.round(clampValue(currentSize));\n onSizeChange?.(finalSize);\n return finalSize;\n });\n },\n });\n\n // Sync provided size with internal state (only when providedSize actually changes)\n // This prevents resetting size when only isDragging changes (which would cause a flash)\n useEffect(() => {\n if (prevProvidedSizeRef.current !== providedSize) {\n prevProvidedSizeRef.current = providedSize;\n if (typeof providedSize === 'number' && !isDragging) {\n setSize(clampValue(providedSize));\n }\n }\n }, [providedSize, isDragging, clampValue]);\n\n // Reset to default size on double-click\n const handleResetSize = useCallback(() => {\n const resetSize =\n typeof defaultSize === 'number' ? defaultSize : parseInt(defaultSize, 10);\n const clampedSize = clampValue(resetSize || 200);\n setSize(clampedSize);\n onSizeChange?.(clampedSize);\n }, [defaultSize, clampValue, onSizeChange]);\n\n const scrollbarStyle = useMemo(() => {\n if (!isTinyScrollbar) return {};\n\n return {\n ...handleVStyle,\n ...handleHStyle,\n };\n }, [isTinyScrollbar, handleVStyle, handleHStyle]);\n\n const paneMods = useMemo(\n () => ({\n scrollbar,\n hovered: isHovered,\n scrolling: isScrolling,\n handlerHovered: debouncedHandlerHovered,\n focused: isHandlerFocused,\n disabled: !isResizable,\n edge: resizeEdge,\n drag: isDragging,\n ...mods,\n }),\n [\n scrollbar,\n isHovered,\n isScrolling,\n debouncedHandlerHovered,\n isHandlerFocused,\n isResizable,\n resizeEdge,\n isDragging,\n mods,\n ],\n );\n\n // Merge styles: outer styles to root, inner styles to Inner element\n // Size is NOT included here - it's set via CSS custom property in paneStyle for performance\n const finalStyles = useMemo(() => {\n return mergeStyles(\n styles,\n outerStyles,\n innerStyles ? { Inner: innerStyles } : null,\n );\n }, [styles, outerStyles, innerStyles]);\n\n // Size is set via CSS custom property for performance during drag\n // This avoids expensive style recalculation on every mouse move\n const paneStyle = useMemo(\n () => ({\n ...scrollbarStyle,\n '--pane-size': `${size}px`,\n '--min-size': typeof minSize === 'number' ? `${minSize}px` : minSize,\n '--max-size': typeof maxSize === 'number' ? `${maxSize}px` : maxSize,\n }),\n [scrollbarStyle, size, minSize, maxSize],\n );\n\n return (\n <PaneElement\n ref={combinedRef}\n {...filterBaseProps(otherProps, { eventProps: true })}\n {...hoverProps}\n mods={paneMods}\n styles={finalStyles}\n style={paneStyle}\n >\n <div ref={combinedInnerRef} data-element=\"Inner\" {...innerProps}>\n <LayoutContextReset>{children}</LayoutContextReset>\n </div>\n {isTinyScrollbar && hasOverflowY && <div data-element=\"ScrollbarV\" />}\n {isTinyScrollbar && hasOverflowX && <div data-element=\"ScrollbarH\" />}\n {isResizable && (\n <PaneResizeHandler\n edge={resizeEdge}\n isDisabled={!isResizable}\n moveProps={moveProps}\n onDoubleClick={handleResetSize}\n onHoverChange={setIsHandlerHovered}\n onFocusChange={setIsHandlerFocused}\n />\n )}\n </PaneElement>\n );\n}\n\nconst _LayoutPane = forwardRef(LayoutPane);\n\n_LayoutPane.displayName = 'Layout.Pane';\n\nexport { _LayoutPane as LayoutPane };\n"],"mappings":"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"}
1
+ {"version":3,"file":"LayoutPane.js","names":["mergeProps"],"sources":["../../../../src/components/content/Layout/LayoutPane.tsx"],"sourcesContent":["import {\n BaseProps,\n ContainerStyleProps,\n filterBaseProps,\n INNER_STYLES,\n mergeStyles,\n OUTER_STYLES,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useFocusRing, useHover, useMove } from 'react-aria';\n\nimport { useDebouncedValue } from '../../../_internal/hooks';\nimport { mergeProps, useCombinedRefs } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\n\nimport { useTinyScrollbar } from './hooks/useTinyScrollbar';\nimport { ScrollbarType } from './LayoutContent';\nimport { LayoutContextReset } from './LayoutContext';\nimport { clampSize } from './utils';\n\n// Handler dimensions\nconst HANDLER_WIDTH = 9; // Interactive area\nconst HANDLER_RESERVED = 5; // Space reserved in Inner padding\n\nconst PaneElement = tasty({\n as: 'div',\n qa: 'LayoutPane',\n styles: {\n container: 'pane / inline-size',\n position: 'relative',\n display: 'grid',\n gridColumns: '1sf',\n gridRows: '1sf',\n placeContent: 'stretch',\n placeItems: 'stretch',\n placeSelf: 'stretch',\n flexShrink: 0,\n flexGrow: 0,\n // Size is set via CSS custom property for performance during drag\n width: {\n '': 'auto',\n 'edge=right': '2x $pane-size $pane-size',\n },\n height: {\n '': '2x $pane-size $pane-size',\n 'edge=right': 'auto',\n },\n boxSizing: 'content-box',\n\n Inner: {\n $: '>',\n display: 'flex',\n flow: 'column',\n padding: '($content-padding, 1x)',\n // Reserve space for handler on resize edge\n paddingRight: {\n '': '($content-padding, 1x)',\n 'edge=right': `calc(($content-padding, 1x) + ${HANDLER_RESERVED}px)`,\n },\n paddingBottom: {\n '': '($content-padding, 1x)',\n 'edge=bottom': `calc(($content-padding, 1x) + ${HANDLER_RESERVED}px)`,\n },\n overflow: {\n '': 'auto',\n 'scrollbar=none': 'clip',\n },\n placeSelf: 'stretch',\n scrollbar: {\n '': 'thin',\n 'scrollbar=tiny | scrollbar=none': 'none',\n },\n\n '$layout-border-size': '0',\n },\n\n // Custom scrollbar handles (when scrollbar=\"tiny\")\n ScrollbarV: {\n position: 'absolute',\n right: {\n '': '1px',\n 'edge=right': `${HANDLER_RESERVED + 1}px`,\n },\n top: '$scrollbar-v-top',\n width: '1ow',\n height: '$scrollbar-v-height',\n radius: 'round',\n fill: '#dark.35',\n opacity: {\n '': 0,\n '(focused | scrolling) & scrollbar=tiny': 1,\n },\n transition: 'opacity 0.15s',\n pointerEvents: 'none',\n },\n\n ScrollbarH: {\n $: '>',\n position: 'absolute',\n bottom: {\n '': '1px',\n 'edge=bottom': `${HANDLER_RESERVED + 1}px`,\n },\n left: '$scrollbar-h-left',\n height: '1ow',\n width: '$scrollbar-h-width',\n radius: 'round',\n fill: '#dark.35',\n opacity: {\n '': 0,\n '(focused | scrolling) & scrollbar=tiny': 1,\n },\n transition: 'opacity 0.15s',\n pointerEvents: 'none',\n },\n\n // Compact resize handler - only drag dots\n ResizeHandler: {\n position: 'absolute',\n // Size: 9px interactive area\n width: {\n '': '100%',\n 'edge=right': `${HANDLER_WIDTH}px`,\n },\n height: {\n '': `${HANDLER_WIDTH}px`,\n 'edge=right': '100%',\n },\n // Position at edge, centered on the reserved space boundary\n right: {\n '': 'initial',\n 'edge=right': `${(HANDLER_RESERVED - HANDLER_WIDTH) / 2}px`,\n },\n bottom: {\n '': `${(HANDLER_RESERVED - HANDLER_WIDTH) / 2}px`,\n 'edge=right': 'initial',\n },\n top: {\n '': 'initial',\n 'edge=right': 0,\n },\n left: {\n '': 0,\n 'edge=right': 'initial',\n },\n cursor: {\n '': 'row-resize',\n 'edge=right': 'col-resize',\n disabled: 'not-allowed',\n },\n padding: 0,\n outline: 0,\n boxSizing: 'border-box',\n transition: 'theme',\n },\n\n Drag: {\n display: 'grid',\n gap: '2bw',\n border: 0,\n flow: {\n '': 'row',\n 'edge=right': 'column',\n },\n gridColumns: {\n '': '3px 3px 3px 3px 3px',\n 'edge=right': 'auto',\n },\n gridRows: {\n '': 'auto',\n 'edge=right': '3px 3px 3px 3px 3px',\n },\n width: {\n '': 'auto',\n 'edge=right': '3px',\n },\n height: {\n '': '3px',\n 'edge=right': 'auto',\n },\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n transition: 'theme',\n radius: 'round',\n outline: {\n '': '0',\n 'focused | drag': '1bw #primary-text',\n },\n outlineOffset: 1,\n },\n\n DragPart: {\n radius: true,\n fill: {\n '': '#dark-03',\n 'handlerHovered | drag | focused': '#primary-text',\n disabled: '#disabled-surface-text',\n },\n },\n },\n});\n\nexport type ResizeEdge = 'right' | 'bottom';\n\nexport interface CubeLayoutPaneProps extends BaseProps, ContainerStyleProps {\n /** Edge where resize handler appears */\n resizeEdge?: ResizeEdge;\n /** Enable resize functionality */\n isResizable?: boolean;\n /** Controlled size (width for right edge, height for bottom edge) */\n size?: number | string;\n /** Default size for uncontrolled state */\n defaultSize?: number | string;\n /** Minimum size constraint */\n minSize?: number | string;\n /** Maximum size constraint */\n maxSize?: number | string;\n /** Size change callback */\n onSizeChange?: (size: number) => void;\n /** Scrollbar style */\n scrollbar?: ScrollbarType;\n /** Custom styles */\n styles?: Styles;\n children?: ReactNode;\n /** Ref for the inner content element */\n innerRef?: ForwardedRef<HTMLDivElement>;\n /** Props to spread on the Inner sub-element */\n innerProps?: HTMLAttributes<HTMLDivElement>;\n}\n\ninterface PaneResizeHandlerProps {\n edge: ResizeEdge;\n isDisabled?: boolean;\n moveProps: ReturnType<typeof useMove>['moveProps'];\n onDoubleClick?: () => void;\n onHoverChange?: (isHovered: boolean) => void;\n onFocusChange?: (isFocused: boolean) => void;\n}\n\nfunction PaneResizeHandler(props: PaneResizeHandlerProps) {\n const {\n edge,\n isDisabled,\n moveProps,\n onDoubleClick,\n onHoverChange,\n onFocusChange,\n } = props;\n const { hoverProps, isHovered } = useHover({\n onHoverChange,\n });\n const { focusProps, isFocusVisible } = useFocusRing();\n const isHorizontal = edge === 'right';\n\n // Notify parent of focus changes\n useEffect(() => {\n onFocusChange?.(isFocusVisible);\n }, [isFocusVisible, onFocusChange]);\n\n return (\n <div\n data-element=\"ResizeHandler\"\n {...mergeProps(hoverProps, focusProps, isDisabled ? {} : moveProps, {\n tabIndex: isDisabled ? undefined : 0,\n role: 'separator',\n 'aria-orientation': isHorizontal ? 'vertical' : 'horizontal',\n 'aria-label': `Resize pane ${edge}`,\n onDoubleClick: isDisabled ? undefined : onDoubleClick,\n })}\n >\n {!isDisabled && (\n <div data-element=\"Drag\">\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction LayoutPane(\n props: CubeLayoutPaneProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n resizeEdge = 'right',\n isResizable = false,\n size: providedSize,\n defaultSize = 200,\n minSize,\n maxSize,\n onSizeChange,\n scrollbar = 'thin',\n styles,\n mods,\n children,\n innerRef: innerRefProp,\n innerProps,\n ...otherProps\n } = props;\n\n const combinedRef = useCombinedRefs(ref);\n const internalInnerRef = useRef<HTMLDivElement>(null);\n const combinedInnerRef = useCombinedRefs(innerRefProp, internalInnerRef);\n const prevProvidedSizeRef = useRef(providedSize);\n const isHorizontal = resizeEdge === 'right';\n\n // Resize state\n const [isDragging, setIsDragging] = useState(false);\n const [isHandlerHovered, setIsHandlerHovered] = useState(false);\n const [isHandlerFocused, setIsHandlerFocused] = useState(false);\n const debouncedHandlerHovered = useDebouncedValue(isHandlerHovered, 150);\n const [size, setSize] = useState<number>(() => {\n const initialSize =\n typeof providedSize === 'number'\n ? providedSize\n : typeof defaultSize === 'number'\n ? defaultSize\n : 200;\n\n return clampSize(initialSize, minSize, maxSize);\n });\n\n // Extract outer wrapper styles and inner content styles\n const outerStyles = extractStyles(otherProps, OUTER_STYLES);\n const innerStyles = extractStyles(otherProps, INNER_STYLES);\n\n const isTinyScrollbar = scrollbar === 'tiny';\n const { hoverProps, isHovered } = useHover({});\n\n const {\n handleVStyle,\n handleHStyle,\n hasOverflowY,\n hasOverflowX,\n isScrolling,\n } = useTinyScrollbar(internalInnerRef, isTinyScrollbar);\n\n // Clamp size to min/max constraints\n const clampValue = useCallback(\n (value: number) => clampSize(value, minSize, maxSize),\n [minSize, maxSize],\n );\n\n const { moveProps } = useMove({\n onMoveStart() {\n if (!isResizable) return;\n setIsDragging(true);\n },\n onMove(e) {\n if (!isResizable) return;\n\n let delta: number;\n\n if (e.pointerType === 'keyboard') {\n // Keyboard resize: 10px per step, 50px with Shift\n const step = e.shiftKey ? 50 : 10;\n const rawDelta = isHorizontal ? e.deltaX : e.deltaY;\n delta = rawDelta * step;\n } else {\n // Pointer resize: use exact delta values\n delta = isHorizontal ? e.deltaX : e.deltaY;\n }\n\n setSize((currentSize) => clampValue(currentSize + delta));\n },\n onMoveEnd() {\n setIsDragging(false);\n // Round to integer on release and notify parent\n setSize((currentSize) => {\n const finalSize = Math.round(clampValue(currentSize));\n onSizeChange?.(finalSize);\n return finalSize;\n });\n },\n });\n\n // Sync provided size with internal state (only when providedSize actually changes)\n // This prevents resetting size when only isDragging changes (which would cause a flash)\n useEffect(() => {\n if (prevProvidedSizeRef.current !== providedSize) {\n prevProvidedSizeRef.current = providedSize;\n if (typeof providedSize === 'number' && !isDragging) {\n setSize(clampValue(providedSize));\n }\n }\n }, [providedSize, isDragging, clampValue]);\n\n // Reset to default size on double-click\n const handleResetSize = useCallback(() => {\n const resetSize =\n typeof defaultSize === 'number' ? defaultSize : parseInt(defaultSize, 10);\n const clampedSize = clampValue(resetSize || 200);\n setSize(clampedSize);\n onSizeChange?.(clampedSize);\n }, [defaultSize, clampValue, onSizeChange]);\n\n const scrollbarStyle = useMemo(() => {\n if (!isTinyScrollbar) return {};\n\n return {\n ...handleVStyle,\n ...handleHStyle,\n };\n }, [isTinyScrollbar, handleVStyle, handleHStyle]);\n\n const paneMods = useMemo(\n () => ({\n scrollbar,\n hovered: isHovered,\n scrolling: isScrolling,\n handlerHovered: debouncedHandlerHovered,\n focused: isHandlerFocused,\n disabled: !isResizable,\n edge: resizeEdge,\n drag: isDragging,\n ...mods,\n }),\n [\n scrollbar,\n isHovered,\n isScrolling,\n debouncedHandlerHovered,\n isHandlerFocused,\n isResizable,\n resizeEdge,\n isDragging,\n mods,\n ],\n );\n\n // Merge styles: outer styles to root, inner styles to Inner element\n // Size is NOT included here - it's set via CSS custom property in paneStyle for performance\n const finalStyles = useMemo(() => {\n return mergeStyles(\n styles,\n outerStyles,\n innerStyles ? { Inner: innerStyles } : null,\n );\n }, [styles, outerStyles, innerStyles]);\n\n // Size is set via CSS custom property for performance during drag\n // This avoids expensive style recalculation on every mouse move\n const paneStyle = useMemo(\n () => ({\n ...scrollbarStyle,\n '--pane-size': `${size}px`,\n '--min-size': typeof minSize === 'number' ? `${minSize}px` : minSize,\n '--max-size': typeof maxSize === 'number' ? `${maxSize}px` : maxSize,\n }),\n [scrollbarStyle, size, minSize, maxSize],\n );\n\n return (\n <PaneElement\n ref={combinedRef}\n {...filterBaseProps(otherProps, { eventProps: true })}\n {...hoverProps}\n mods={paneMods}\n styles={finalStyles}\n style={paneStyle}\n >\n <div ref={combinedInnerRef} data-element=\"Inner\" {...innerProps}>\n <LayoutContextReset>{children}</LayoutContextReset>\n </div>\n {isTinyScrollbar && hasOverflowY && <div data-element=\"ScrollbarV\" />}\n {isTinyScrollbar && hasOverflowX && <div data-element=\"ScrollbarH\" />}\n {isResizable && (\n <PaneResizeHandler\n edge={resizeEdge}\n isDisabled={!isResizable}\n moveProps={moveProps}\n onDoubleClick={handleResetSize}\n onHoverChange={setIsHandlerHovered}\n onFocusChange={setIsHandlerFocused}\n />\n )}\n </PaneElement>\n );\n}\n\nconst _LayoutPane = forwardRef(LayoutPane);\n\n_LayoutPane.displayName = 'Layout.Pane';\n\nexport { _LayoutPane as LayoutPane };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.137.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.138.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -62,7 +62,7 @@ const PanelElement = tasty({
62
62
  "side=top": "bottom",
63
63
  "side=bottom": "top"
64
64
  },
65
- fill: "#white",
65
+ fill: "#surface",
66
66
  transform: {
67
67
  "": "translateX(0) translateY(0)",
68
68
  "offscreen & side=left": "translateX(-100%)",
@@ -202,7 +202,7 @@ const ResizeHandlerElement = tasty({
202
202
  fill: {
203
203
  "": "#dark-03",
204
204
  "hovered | drag | focused": "#primary-text",
205
- disabled: "#dark-04"
205
+ disabled: "#disabled-surface-text"
206
206
  }
207
207
  }
208
208
  }