@cube-dev/ui-kit 0.121.6 → 0.121.7

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 (473) hide show
  1. package/dist/CHANGELOG.md +6 -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 +3 -2
  12. package/dist/components/Block.js.map +1 -1
  13. package/dist/components/CollectionItem.js +1 -1
  14. package/dist/components/GlobalStyles.js +1 -1
  15. package/dist/components/GridProvider.js +1 -1
  16. package/dist/components/HiddenInput.js +1 -1
  17. package/dist/components/Root.js +3 -2
  18. package/dist/components/Root.js.map +1 -1
  19. package/dist/components/actions/Action/Action.js +3 -2
  20. package/dist/components/actions/Action/Action.js.map +1 -1
  21. package/dist/components/actions/Banner/Banner.js +1 -1
  22. package/dist/components/actions/Button/Button.js +3 -2
  23. package/dist/components/actions/Button/Button.js.map +1 -1
  24. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  25. package/dist/components/actions/ButtonSplit/ButtonSplit.js +3 -2
  26. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
  27. package/dist/components/actions/ButtonSplit/context.js +1 -1
  28. package/dist/components/actions/CommandMenu/CommandMenu.js +3 -2
  29. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  30. package/dist/components/actions/CommandMenu/styled.js +1 -1
  31. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  32. package/dist/components/actions/ItemActionContext.js +1 -1
  33. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  34. package/dist/components/actions/Link/Link.js +1 -1
  35. package/dist/components/actions/Menu/Menu.js +3 -2
  36. package/dist/components/actions/Menu/Menu.js.map +1 -1
  37. package/dist/components/actions/Menu/MenuItem.js +1 -1
  38. package/dist/components/actions/Menu/MenuSection.js +1 -1
  39. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  40. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  41. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  42. package/dist/components/actions/Menu/context.js +1 -1
  43. package/dist/components/actions/Menu/styled.js +1 -1
  44. package/dist/components/actions/index.js +1 -1
  45. package/dist/components/actions/use-action.js +1 -1
  46. package/dist/components/actions/use-anchored-menu.js +1 -1
  47. package/dist/components/actions/use-context-menu.js +1 -1
  48. package/dist/components/content/ActiveZone/ActiveZone.js +3 -2
  49. package/dist/components/content/ActiveZone/ActiveZone.js.map +1 -1
  50. package/dist/components/content/Alert/Alert.js +1 -1
  51. package/dist/components/content/Alert/use-alert.js +3 -2
  52. package/dist/components/content/Alert/use-alert.js.map +1 -1
  53. package/dist/components/content/Avatar/Avatar.js +3 -2
  54. package/dist/components/content/Avatar/Avatar.js.map +1 -1
  55. package/dist/components/content/Badge/Badge.js +1 -1
  56. package/dist/components/content/Card/Card.js +3 -2
  57. package/dist/components/content/Card/Card.js.map +1 -1
  58. package/dist/components/content/Content.js +3 -2
  59. package/dist/components/content/Content.js.map +1 -1
  60. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +3 -2
  61. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
  62. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  63. package/dist/components/content/Disclosure/Disclosure.js +3 -2
  64. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  65. package/dist/components/content/Divider.js +1 -1
  66. package/dist/components/content/Footer.js +3 -2
  67. package/dist/components/content/Footer.js.map +1 -1
  68. package/dist/components/content/Header.js +3 -2
  69. package/dist/components/content/Header.js.map +1 -1
  70. package/dist/components/content/HotKeys/HotKeys.js +3 -2
  71. package/dist/components/content/HotKeys/HotKeys.js.map +1 -1
  72. package/dist/components/content/Item/Item.js +1 -1
  73. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  74. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  75. package/dist/components/content/Layout/GridLayout.js +1 -1
  76. package/dist/components/content/Layout/Layout.js +3 -2
  77. package/dist/components/content/Layout/Layout.js.map +1 -1
  78. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  79. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  80. package/dist/components/content/Layout/LayoutContainer.js +3 -2
  81. package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
  82. package/dist/components/content/Layout/LayoutContent.js +3 -2
  83. package/dist/components/content/Layout/LayoutContent.js.map +1 -1
  84. package/dist/components/content/Layout/LayoutContext.js +1 -1
  85. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  86. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  87. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  88. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  89. package/dist/components/content/Layout/LayoutPane.js +3 -2
  90. package/dist/components/content/Layout/LayoutPane.js.map +1 -1
  91. package/dist/components/content/Layout/LayoutPanel.js +3 -2
  92. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  93. package/dist/components/content/Layout/LayoutPanelHeader.js +3 -2
  94. package/dist/components/content/Layout/LayoutPanelHeader.js.map +1 -1
  95. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  96. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  97. package/dist/components/content/Layout/index.js +1 -1
  98. package/dist/components/content/Layout/utils.js +1 -1
  99. package/dist/components/content/Paragraph.js +3 -2
  100. package/dist/components/content/Paragraph.js.map +1 -1
  101. package/dist/components/content/Placeholder/Placeholder.js +3 -2
  102. package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
  103. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  104. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  105. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  106. package/dist/components/content/Result/Result.js +3 -2
  107. package/dist/components/content/Result/Result.js.map +1 -1
  108. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  109. package/dist/components/content/Tag/Tag.js +1 -1
  110. package/dist/components/content/Text.js +3 -2
  111. package/dist/components/content/Text.js.map +1 -1
  112. package/dist/components/content/TextItem/TextItem.js +3 -2
  113. package/dist/components/content/TextItem/TextItem.js.map +1 -1
  114. package/dist/components/content/Title.js +3 -2
  115. package/dist/components/content/Title.js.map +1 -1
  116. package/dist/components/content/highlightText.js +1 -1
  117. package/dist/components/content/use-auto-tooltip.js +1 -1
  118. package/dist/components/fields/Checkbox/Checkbox.js +3 -2
  119. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  120. package/dist/components/fields/Checkbox/CheckboxGroup.js +3 -2
  121. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  122. package/dist/components/fields/Checkbox/context.js +1 -1
  123. package/dist/components/fields/ComboBox/ComboBox.js +3 -2
  124. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  125. package/dist/components/fields/DatePicker/DateInput.js +3 -2
  126. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  127. package/dist/components/fields/DatePicker/DateInputBase.js +3 -2
  128. package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
  129. package/dist/components/fields/DatePicker/DatePicker.js +3 -2
  130. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  131. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  132. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  133. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  134. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  135. package/dist/components/fields/DatePicker/DateRangePicker.js +3 -2
  136. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  137. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +3 -2
  138. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  139. package/dist/components/fields/DatePicker/TimeInput.js +3 -2
  140. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  141. package/dist/components/fields/DatePicker/intl.js +1 -1
  142. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  143. package/dist/components/fields/DatePicker/props.js +1 -1
  144. package/dist/components/fields/DatePicker/utils.js +1 -1
  145. package/dist/components/fields/FileInput/FileInput.js +3 -2
  146. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  147. package/dist/components/fields/FilterListBox/FilterListBox.js +3 -2
  148. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  149. package/dist/components/fields/FilterPicker/FilterPicker.js +3 -2
  150. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  151. package/dist/components/fields/Input/Input.js +1 -1
  152. package/dist/components/fields/ListBox/ListBox.js +3 -2
  153. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  154. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  155. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  156. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  157. package/dist/components/fields/Picker/Picker.js +3 -2
  158. package/dist/components/fields/Picker/Picker.js.map +1 -1
  159. package/dist/components/fields/RadioGroup/Radio.js +3 -2
  160. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  161. package/dist/components/fields/RadioGroup/RadioGroup.js +3 -2
  162. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  163. package/dist/components/fields/RadioGroup/context.js +1 -1
  164. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  165. package/dist/components/fields/Select/Select.js +3 -2
  166. package/dist/components/fields/Select/Select.js.map +1 -1
  167. package/dist/components/fields/Slider/Gradation.js +1 -1
  168. package/dist/components/fields/Slider/HueSlider.js +1 -1
  169. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  170. package/dist/components/fields/Slider/Slider.js +3 -2
  171. package/dist/components/fields/Slider/Slider.js.map +1 -1
  172. package/dist/components/fields/Slider/SliderBase.js +3 -2
  173. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  174. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  175. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  176. package/dist/components/fields/Slider/elements.js +1 -1
  177. package/dist/components/fields/Slider/index.js +1 -1
  178. package/dist/components/fields/Switch/Switch.js +3 -2
  179. package/dist/components/fields/Switch/Switch.js.map +1 -1
  180. package/dist/components/fields/TextArea/TextArea.js +1 -1
  181. package/dist/components/fields/TextInput/TextInput.js +1 -1
  182. package/dist/components/fields/TextInput/TextInputBase.js +3 -2
  183. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  184. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  185. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  186. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  187. package/dist/components/form/Form/Field.js +1 -1
  188. package/dist/components/form/Form/Form.js +3 -2
  189. package/dist/components/form/Form/Form.js.map +1 -1
  190. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  191. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  192. package/dist/components/form/Form/SubmitError.js +1 -1
  193. package/dist/components/form/Form/index.js +1 -1
  194. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  195. package/dist/components/form/Form/use-field/use-field.js +1 -1
  196. package/dist/components/form/Form/use-form.js +1 -1
  197. package/dist/components/form/Form/validation.js +1 -1
  198. package/dist/components/form/Label.js +3 -2
  199. package/dist/components/form/Label.js.map +1 -1
  200. package/dist/components/form/wrapper.js +1 -1
  201. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  202. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  203. package/dist/components/layout/Flex.js +3 -2
  204. package/dist/components/layout/Flex.js.map +1 -1
  205. package/dist/components/layout/Flow.js +3 -2
  206. package/dist/components/layout/Flow.js.map +1 -1
  207. package/dist/components/layout/Grid.js +3 -2
  208. package/dist/components/layout/Grid.js.map +1 -1
  209. package/dist/components/layout/Panel.js +1 -1
  210. package/dist/components/layout/Prefix.js +3 -2
  211. package/dist/components/layout/Prefix.js.map +1 -1
  212. package/dist/components/layout/ResizablePanel.js +1 -1
  213. package/dist/components/layout/Space.js +3 -2
  214. package/dist/components/layout/Space.js.map +1 -1
  215. package/dist/components/layout/Suffix.js +3 -2
  216. package/dist/components/layout/Suffix.js.map +1 -1
  217. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  218. package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
  219. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  220. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  221. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  222. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  223. package/dist/components/navigation/Tabs/Tabs.js +3 -2
  224. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  225. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  226. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  227. package/dist/components/navigation/Tabs/styled.js +1 -1
  228. package/dist/components/navigation/Tabs/types.js +1 -1
  229. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  230. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  231. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  232. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  233. package/dist/components/other/Calendar/Calendar.js +1 -1
  234. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  235. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  236. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  237. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  238. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  239. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  240. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  241. package/dist/components/overlays/Dialog/Dialog.js +3 -2
  242. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  243. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  244. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  245. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  246. package/dist/components/overlays/Dialog/context.js +1 -1
  247. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  248. package/dist/components/overlays/Modal/Modal.js +1 -1
  249. package/dist/components/overlays/Modal/OpenTransition.js +1 -1
  250. package/dist/components/overlays/Modal/Overlay.js +1 -1
  251. package/dist/components/overlays/Modal/Popover.js +1 -1
  252. package/dist/components/overlays/Modal/Tray.js +1 -1
  253. package/dist/components/overlays/Modal/Underlay.js +1 -1
  254. package/dist/components/overlays/Notifications/Notification.js +1 -1
  255. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  256. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  257. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  258. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  259. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  260. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  261. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  262. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  263. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  264. package/dist/components/overlays/Notifications/index.js +1 -1
  265. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  266. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  267. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  268. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  269. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  270. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  271. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  272. package/dist/components/overlays/Toast/index.js +1 -1
  273. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  274. package/dist/components/overlays/Toast/useToast.js +1 -1
  275. package/dist/components/overlays/Tooltip/Tooltip.js +3 -2
  276. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  277. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  278. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  279. package/dist/components/overlays/Tooltip/context.js +1 -1
  280. package/dist/components/portal/Portal.js +1 -1
  281. package/dist/components/portal/PortalProvider.js +1 -1
  282. package/dist/components/portal/usePortal.js +1 -1
  283. package/dist/components/shared/InvalidIcon.js +1 -1
  284. package/dist/components/shared/ValidIcon.js +1 -1
  285. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  286. package/dist/components/status/Spin/Cube.js +1 -1
  287. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  288. package/dist/components/status/Spin/Spin.js +1 -1
  289. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  290. package/dist/data/item-themes.js +1 -1
  291. package/dist/data/themes.js +1 -1
  292. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  293. package/dist/icons/AdjustmentsIcon.js +1 -1
  294. package/dist/icons/AiIcon.js +1 -1
  295. package/dist/icons/AreaChartIcon.js +1 -1
  296. package/dist/icons/BackwardIcon.js +1 -1
  297. package/dist/icons/BarChartIcon.js +1 -1
  298. package/dist/icons/BellFilledIcon.js +1 -1
  299. package/dist/icons/BellIcon.js +1 -1
  300. package/dist/icons/BooleanIcon.js +1 -1
  301. package/dist/icons/CalendarEditIcon.js +1 -1
  302. package/dist/icons/CalendarIcon.js +1 -1
  303. package/dist/icons/CaretDownIcon.js +1 -1
  304. package/dist/icons/CaretUpIcon.js +1 -1
  305. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  306. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  307. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  308. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  309. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  310. package/dist/icons/ChartBarLineIcon.js +1 -1
  311. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  312. package/dist/icons/ChartBarStackedIcon.js +1 -1
  313. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  314. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  315. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  316. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  317. package/dist/icons/ChartBubbleIcon.js +1 -1
  318. package/dist/icons/ChartDonut2Icon.js +1 -1
  319. package/dist/icons/ChartFunnelIcon.js +1 -1
  320. package/dist/icons/ChartHeatmapIcon.js +1 -1
  321. package/dist/icons/ChartKPIIcon.js +1 -1
  322. package/dist/icons/ChartPie2Icon.js +1 -1
  323. package/dist/icons/ChartScatterIcon.js +1 -1
  324. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  325. package/dist/icons/CheckCircleIcon.js +1 -1
  326. package/dist/icons/CheckIcon.js +1 -1
  327. package/dist/icons/CircleFilledIcon.js +1 -1
  328. package/dist/icons/ClearIcon.js +1 -1
  329. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  330. package/dist/icons/CloseCircleIcon.js +1 -1
  331. package/dist/icons/CloseIcon.js +1 -1
  332. package/dist/icons/CodeIcon.js +1 -1
  333. package/dist/icons/ColumnTotalIcon.js +1 -1
  334. package/dist/icons/CopyIcon.js +1 -1
  335. package/dist/icons/CountIcon.js +1 -1
  336. package/dist/icons/CubeIcon.js +1 -1
  337. package/dist/icons/CubePauseIcon.js +1 -1
  338. package/dist/icons/CubePlayIcon.js +1 -1
  339. package/dist/icons/CurrencyDollarIcon.js +1 -1
  340. package/dist/icons/DangerIcon.js +1 -1
  341. package/dist/icons/DashboardIcon.js +1 -1
  342. package/dist/icons/DatabaseIcon.js +1 -1
  343. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  344. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  345. package/dist/icons/DirectionIcon.js +1 -1
  346. package/dist/icons/DonutIcon.js +1 -1
  347. package/dist/icons/DownIcon.js +1 -1
  348. package/dist/icons/EditIcon.js +1 -1
  349. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  350. package/dist/icons/ExclamationCircleIcon.js +1 -1
  351. package/dist/icons/ExclamationIcon.js +1 -1
  352. package/dist/icons/EyeIcon.js +1 -1
  353. package/dist/icons/EyeInvisibleIcon.js +1 -1
  354. package/dist/icons/FilterIcon.js +1 -1
  355. package/dist/icons/FolderFilledIcon.js +1 -1
  356. package/dist/icons/FolderIcon.js +1 -1
  357. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  358. package/dist/icons/FolderOpenIcon.js +1 -1
  359. package/dist/icons/ForwardIcon.js +1 -1
  360. package/dist/icons/HierarchyIcon.js +1 -1
  361. package/dist/icons/HierarchyOpenIcon.js +1 -1
  362. package/dist/icons/Icon.js +1 -1
  363. package/dist/icons/InfoCircleIcon.js +1 -1
  364. package/dist/icons/InfoIcon.js +1 -1
  365. package/dist/icons/KeyIcon.js +1 -1
  366. package/dist/icons/LeftIcon.js +1 -1
  367. package/dist/icons/LineChartIcon.js +1 -1
  368. package/dist/icons/LoadingIcon.js +1 -1
  369. package/dist/icons/LockFilledIcon.js +1 -1
  370. package/dist/icons/LockIcon.js +1 -1
  371. package/dist/icons/MoreIcon.js +1 -1
  372. package/dist/icons/NotAllowedIcon.js +1 -1
  373. package/dist/icons/Number123Icon.js +1 -1
  374. package/dist/icons/NumberIcon.js +1 -1
  375. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  376. package/dist/icons/PauseCircleIcon.js +1 -1
  377. package/dist/icons/PauseIcon.js +1 -1
  378. package/dist/icons/PercentageIcon.js +1 -1
  379. package/dist/icons/PieChartIcon.js +1 -1
  380. package/dist/icons/PlayCircleIcon.js +1 -1
  381. package/dist/icons/PlayIcon.js +1 -1
  382. package/dist/icons/PlusIcon.js +1 -1
  383. package/dist/icons/ProgressBarIcon.js +1 -1
  384. package/dist/icons/ReloadIcon.js +1 -1
  385. package/dist/icons/ReportIcon.js +1 -1
  386. package/dist/icons/ReturnIcon.js +1 -1
  387. package/dist/icons/RightIcon.js +1 -1
  388. package/dist/icons/RowTotalsIcon.js +1 -1
  389. package/dist/icons/SchemeIcon.js +1 -1
  390. package/dist/icons/SearchIcon.js +1 -1
  391. package/dist/icons/SemanticQueryIcon.js +1 -1
  392. package/dist/icons/SettingsIcon.js +1 -1
  393. package/dist/icons/ShieldFilledIcon.js +1 -1
  394. package/dist/icons/ShieldIcon.js +1 -1
  395. package/dist/icons/SlashIcon.js +1 -1
  396. package/dist/icons/SparklesIcon.js +1 -1
  397. package/dist/icons/SqlIcon.js +1 -1
  398. package/dist/icons/StatsIcon.js +1 -1
  399. package/dist/icons/StopIcon.js +1 -1
  400. package/dist/icons/StringIcon.js +1 -1
  401. package/dist/icons/SubtotalsIcon.js +1 -1
  402. package/dist/icons/SwitchIcon.js +1 -1
  403. package/dist/icons/TableIcon.js +1 -1
  404. package/dist/icons/ThumbsDownIcon.js +1 -1
  405. package/dist/icons/ThumbsUpIcon.js +1 -1
  406. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  407. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  408. package/dist/icons/ThunderboltIcon.js +1 -1
  409. package/dist/icons/TimeIcon.js +1 -1
  410. package/dist/icons/TrashIcon.js +1 -1
  411. package/dist/icons/UnlockIcon.js +1 -1
  412. package/dist/icons/UpIcon.js +1 -1
  413. package/dist/icons/UserGroupIcon.js +1 -1
  414. package/dist/icons/UserIcon.js +1 -1
  415. package/dist/icons/UserLockIcon.js +1 -1
  416. package/dist/icons/ViewIcon.js +1 -1
  417. package/dist/icons/WarningFilledIcon.js +1 -1
  418. package/dist/icons/WarningIcon.js +1 -1
  419. package/dist/icons/wrap-icon.js +1 -1
  420. package/dist/index.d.ts +2 -1
  421. package/dist/index.js +3 -2
  422. package/dist/index.js.map +1 -1
  423. package/dist/provider.js +1 -1
  424. package/dist/providers/TrackingProvider.js +1 -1
  425. package/dist/providers/navigationAdapter.default.js +1 -1
  426. package/dist/tokens/base.js +1 -1
  427. package/dist/tokens/colors.js +1 -1
  428. package/dist/tokens/index.js +1 -1
  429. package/dist/tokens/layout.js +1 -1
  430. package/dist/tokens/shadows.js +1 -1
  431. package/dist/tokens/sizes.js +1 -1
  432. package/dist/tokens/spacing.js +1 -1
  433. package/dist/tokens/typography.js +1 -1
  434. package/dist/utils/ResizeSensor.js +1 -1
  435. package/dist/utils/index.d.ts +1 -0
  436. package/dist/utils/is-dev-env.js +1 -1
  437. package/dist/utils/modules.js +1 -1
  438. package/dist/utils/promise.js +1 -1
  439. package/dist/utils/raf.js +1 -1
  440. package/dist/utils/random.js +1 -1
  441. package/dist/utils/range.js +1 -1
  442. package/dist/utils/react/RenderCache.js +1 -1
  443. package/dist/utils/react/Slots.js +1 -1
  444. package/dist/utils/react/chain.js +1 -1
  445. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  446. package/dist/utils/react/index.js +1 -1
  447. package/dist/utils/react/interactions.js +1 -1
  448. package/dist/utils/react/isTextOnly.js +1 -1
  449. package/dist/utils/react/mapProps.js +1 -1
  450. package/dist/utils/react/mergeProps.js +1 -1
  451. package/dist/utils/react/nullableValue.js +1 -1
  452. package/dist/utils/react/resolveIcon.js +1 -1
  453. package/dist/utils/react/sharedStore.js +1 -1
  454. package/dist/utils/react/useCombinedRefs.js +1 -1
  455. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  456. package/dist/utils/react/useEventBus.js +1 -1
  457. package/dist/utils/react/useId.js +1 -1
  458. package/dist/utils/react/useIsDarwin.js +1 -1
  459. package/dist/utils/react/useKeySymbols.js +1 -1
  460. package/dist/utils/react/useLayoutEffect.js +1 -1
  461. package/dist/utils/react/useLocalStorage.js +1 -1
  462. package/dist/utils/react/useMergeStyles.js +1 -1
  463. package/dist/utils/react/useQaProps.js +1 -1
  464. package/dist/utils/react/useViewportSize.js +1 -1
  465. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  466. package/dist/utils/styles.d.ts +19 -0
  467. package/dist/utils/styles.js +31 -0
  468. package/dist/utils/styles.js.map +1 -0
  469. package/dist/utils/tree.js +1 -1
  470. package/dist/utils/warnings.js +1 -1
  471. package/dist/version.js +2 -2
  472. package/docs/tasty/tasty-static.md +6 -7
  473. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"Disclosure.js","names":["ItemButton","useId"],"sources":["../../../../src/components/content/Disclosure/Disclosure.tsx"],"sourcesContent":["import {\n BaseProps,\n BasePropsWithoutChildren,\n extractStyles,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n createContext,\n forwardRef,\n Key,\n ReactNode,\n RefObject,\n useContext,\n useMemo,\n useRef,\n} from 'react';\nimport { mergeProps, useDisclosure, useId } from 'react-aria';\nimport {\n DisclosureGroupState,\n DisclosureState,\n useDisclosureGroupState,\n useDisclosureState,\n} from 'react-stately';\n\nimport { RightIcon } from '../../../icons';\nimport { mergeRefs } from '../../../utils/react';\nimport { CubeItemButtonProps, ItemButton } from '../../actions/ItemButton';\nimport { DisplayTransition } from '../../helpers';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface DisclosureStateContext {\n isExpanded: boolean;\n toggle: () => void;\n expand: () => void;\n collapse: () => void;\n}\n\ninterface DisclosureContextValue {\n state: DisclosureState;\n buttonProps: Record<string, unknown>;\n panelProps: Record<string, unknown>;\n panelRef: RefObject<HTMLDivElement | null>;\n isDisabled: boolean;\n isExpanded: boolean;\n shape: 'default' | 'card' | 'sharp';\n transitionDuration?: number;\n triggerProps?: Partial<CubeItemButtonProps>;\n contentStyles?: Styles;\n}\n\ninterface DisclosureGroupContextValue {\n groupState: DisclosureGroupState;\n triggerProps?: Partial<CubeItemButtonProps>;\n contentStyles?: Styles;\n}\n\nexport interface CubeDisclosureProps\n extends BasePropsWithoutChildren,\n OuterStyleProps {\n /** Controls expanded state in controlled mode */\n isExpanded?: boolean;\n /** Initial expanded state in uncontrolled mode */\n defaultExpanded?: boolean;\n /** Callback fired when expanded state changes */\n onExpandedChange?: (isExpanded: boolean) => void;\n /** Disables trigger interactions and force-closes the content */\n isDisabled?: boolean;\n /** Render-prop alternative to achieve custom trigger markup */\n children?: ReactNode | ((state: DisclosureStateContext) => ReactNode);\n /** Visual shape variant */\n shape?: 'default' | 'card' | 'sharp';\n /** Duration for DisplayTransition animation in milliseconds */\n transitionDuration?: number;\n}\n\nexport interface CubeDisclosureTriggerProps\n extends Omit<CubeItemButtonProps, 'onPress' | 'isDisabled'> {\n /** Children content for the trigger */\n children?: ReactNode;\n}\n\nexport interface CubeDisclosureContentProps extends BaseProps {\n /** Children content for the panel */\n children?: ReactNode;\n}\n\nexport interface CubeDisclosureGroupProps extends BaseProps, OuterStyleProps {\n /** Allow more than one disclosure to be open */\n allowsMultipleExpanded?: boolean;\n /** Controlled expanded keys */\n expandedKeys?: Iterable<Key>;\n /** Uncontrolled default expanded keys */\n defaultExpandedKeys?: Iterable<Key>;\n /** Change handler providing the full expanded keys Set */\n onExpandedChange?: (keys: Set<Key>) => void;\n /** Disable all disclosures within group and force-close their content */\n isDisabled?: boolean;\n /** Props forwarded to all ItemButton triggers in the group */\n triggerProps?: Partial<CubeItemButtonProps>;\n /** Optional panel styles applied to all Content panels in the group */\n contentStyles?: Styles;\n children: ReactNode;\n}\n\nexport interface CubeDisclosureItemProps\n extends Omit<BasePropsWithoutChildren, 'id'>,\n OuterStyleProps {\n /** Unique identifier for the disclosure item in a group */\n id?: Key;\n /** Children content */\n children?: ReactNode;\n /** Disables trigger interactions and force-closes the content */\n isDisabled?: boolean;\n /** Controls expanded state in controlled mode */\n isExpanded?: boolean;\n /** Initial expanded state in uncontrolled mode */\n defaultExpanded?: boolean;\n /** Callback fired when expanded state changes */\n onExpandedChange?: (isExpanded: boolean) => void;\n /** Visual shape variant */\n shape?: 'default' | 'card' | 'sharp';\n}\n\n// ============================================================================\n// Contexts\n// ============================================================================\n\nconst DisclosureContext = createContext<DisclosureContextValue | null>(null);\nconst DisclosureGroupContext =\n createContext<DisclosureGroupContextValue | null>(null);\n\nfunction useDisclosureContext(): DisclosureContextValue {\n const context = useContext(DisclosureContext);\n\n if (!context) {\n throw new Error(\n 'Disclosure.Trigger and Disclosure.Content must be used within a Disclosure',\n );\n }\n\n return context;\n}\n\nfunction useDisclosureGroupContext(): DisclosureGroupContextValue | null {\n return useContext(DisclosureGroupContext);\n}\n\n// ============================================================================\n// Styled Components\n// ============================================================================\n\nconst DisclosureRoot = tasty({\n qa: 'Disclosure',\n styles: {\n display: 'flex',\n flow: 'column',\n gap: 0,\n position: 'relative',\n border: {\n '': 'none',\n 'shape=card': '1bw solid #border',\n },\n radius: {\n '': '1r',\n 'shape=card': '1cr',\n 'shape=sharp': '0',\n },\n fill: {\n '': false,\n 'shape=card': '#white',\n },\n },\n});\n\nconst ContentWrapperElement = tasty({\n qa: 'DisclosureContentWrapper',\n styles: {\n display: 'block',\n overflow: 'hidden',\n interpolateSize: 'allow-keywords',\n height: {\n '': 0,\n shown: 'max-content',\n },\n transition: 'height $disclosure-transition',\n },\n});\n\nconst ContentElement = tasty({\n qa: 'DisclosureContent',\n styles: {\n display: 'block',\n flow: 'column',\n contentVisibility: 'auto',\n },\n});\n\nconst GroupRoot = tasty({\n qa: 'DisclosureGroup',\n styles: {\n display: 'flex',\n flow: 'column',\n gap: '0',\n },\n});\n\nconst TriggerIcon = tasty(RightIcon, {\n styles: {\n transition: 'rotate',\n rotate: {\n '': '0deg',\n expanded: '90deg',\n },\n },\n});\n\nconst StyledTrigger = tasty(ItemButton, {\n qa: 'DisclosureTrigger',\n type: 'header',\n styles: {\n radius: {\n '': '1r',\n 'expanded & shape=card': '(1cr - 1bw) (1cr - 1bw) 0 0',\n 'shape=sharp': '0',\n },\n border: '#clear',\n },\n});\n\n// ============================================================================\n// Disclosure Component\n// ============================================================================\n\nconst DisclosureComponent = forwardRef<HTMLDivElement, CubeDisclosureProps>(\n function Disclosure(props, ref) {\n const {\n isExpanded: controlledIsExpanded,\n defaultExpanded,\n onExpandedChange,\n isDisabled = false,\n children,\n shape = 'default',\n transitionDuration,\n qa,\n mods,\n ...otherProps\n } = props;\n\n const groupContext = useDisclosureGroupContext();\n const panelRef = useRef<HTMLDivElement>(null);\n\n // When disabled, force expanded to false\n const effectiveIsExpanded = isDisabled ? false : controlledIsExpanded;\n\n const state = useDisclosureState({\n isExpanded: effectiveIsExpanded,\n defaultExpanded: isDisabled ? false : defaultExpanded,\n onExpandedChange: isDisabled ? undefined : onExpandedChange,\n });\n\n // When disabled, override state.isExpanded to false\n const isExpanded = isDisabled ? false : state.isExpanded;\n\n const { buttonProps, panelProps } = useDisclosure(\n {\n isExpanded,\n isDisabled,\n },\n state,\n panelRef,\n );\n\n const contextValue = useMemo<DisclosureContextValue>(\n () => ({\n state,\n buttonProps,\n panelProps,\n panelRef,\n isDisabled,\n isExpanded,\n shape,\n transitionDuration,\n triggerProps: groupContext?.triggerProps,\n contentStyles: groupContext?.contentStyles,\n }),\n [\n state,\n buttonProps,\n panelProps,\n isDisabled,\n isExpanded,\n shape,\n transitionDuration,\n groupContext?.triggerProps,\n groupContext?.contentStyles,\n ],\n );\n\n const stateContext = useMemo<DisclosureStateContext>(\n () => ({\n isExpanded,\n toggle: state.toggle,\n expand: state.expand,\n collapse: state.collapse,\n }),\n [isExpanded, state.toggle, state.expand, state.collapse],\n );\n\n const outerStyles = extractStyles(otherProps, OUTER_STYLES);\n\n const finalMods = useMemo(\n () => ({\n expanded: isExpanded,\n disabled: isDisabled,\n shape,\n ...mods,\n }),\n [isExpanded, isDisabled, shape, mods],\n );\n\n const content =\n typeof children === 'function' ? children(stateContext) : children;\n\n return (\n <DisclosureContext.Provider value={contextValue}>\n <DisclosureRoot ref={ref} qa={qa} mods={finalMods} styles={outerStyles}>\n {content}\n </DisclosureRoot>\n </DisclosureContext.Provider>\n );\n },\n);\n\n// ============================================================================\n// Disclosure.Trigger Component\n// ============================================================================\n\nconst DisclosureTrigger = forwardRef<\n HTMLButtonElement,\n CubeDisclosureTriggerProps\n>(function DisclosureTrigger(props, ref) {\n const { children, icon, mods, ...otherProps } = props;\n const context = useDisclosureContext();\n const { buttonProps, isDisabled, isExpanded, shape, triggerProps } = context;\n\n const finalMods = useMemo(\n () => ({\n expanded: isExpanded,\n disabled: isDisabled,\n shape,\n selected: false,\n ...mods,\n }),\n [isExpanded, isDisabled, shape, mods],\n );\n\n // Default icon is a rotating chevron\n const defaultIcon = <TriggerIcon mods={{ expanded: isExpanded }} />;\n\n return (\n <StyledTrigger\n ref={ref}\n icon={icon ?? defaultIcon}\n isDisabled={isDisabled}\n isSelected={isExpanded}\n {...triggerProps}\n {...(mergeProps(otherProps, buttonProps as any) as any)}\n mods={finalMods}\n >\n {children}\n </StyledTrigger>\n );\n});\n\n// ============================================================================\n// Disclosure.Content Component\n// ============================================================================\n\nconst DisclosureContent = forwardRef<\n HTMLDivElement,\n CubeDisclosureContentProps\n>(function DisclosureContent(props, ref) {\n const { children, styles, mods, ...otherProps } = props;\n const context = useDisclosureContext();\n const {\n panelProps,\n panelRef,\n isExpanded,\n transitionDuration,\n contentStyles,\n } = context;\n\n const mergedStyles = useMemo<Styles>(\n () => ({\n ...contentStyles,\n ...styles,\n }),\n [contentStyles, styles],\n );\n\n // Filter out hidden attribute from panelProps since we manage visibility via CSS height animation\n const { hidden, ...filteredPanelProps } = panelProps as Record<\n string,\n unknown\n >;\n\n return (\n <DisplayTransition\n isShown={isExpanded}\n duration={transitionDuration}\n animateOnMount={false}\n >\n {({ phase, isShown, ref: transitionRef }) => (\n <ContentWrapperElement\n ref={transitionRef}\n mods={{ shown: isShown, phase }}\n tokens={\n transitionDuration != null\n ? { '$disclosure-transition': `${transitionDuration}ms` }\n : undefined\n }\n >\n <ContentElement\n ref={mergeRefs(ref, panelRef)}\n mods={mods}\n styles={mergedStyles}\n {...filteredPanelProps}\n {...otherProps}\n >\n {children}\n </ContentElement>\n </ContentWrapperElement>\n )}\n </DisplayTransition>\n );\n});\n\n// ============================================================================\n// Disclosure.Group Component\n// ============================================================================\n\nconst DisclosureGroup = forwardRef<HTMLDivElement, CubeDisclosureGroupProps>(\n function DisclosureGroup(props, ref) {\n const {\n allowsMultipleExpanded = false,\n expandedKeys,\n defaultExpandedKeys,\n onExpandedChange,\n isDisabled = false,\n triggerProps,\n contentStyles,\n children,\n qa,\n mods,\n styles,\n ...otherProps\n } = props;\n\n const groupState = useDisclosureGroupState({\n allowsMultipleExpanded,\n expandedKeys,\n defaultExpandedKeys,\n onExpandedChange,\n isDisabled,\n });\n\n const contextValue = useMemo<DisclosureGroupContextValue>(\n () => ({\n groupState,\n triggerProps,\n contentStyles,\n }),\n [groupState, triggerProps, contentStyles],\n );\n\n const outerStyles = extractStyles(otherProps, OUTER_STYLES);\n\n const finalStyles = useMemo<Styles>(\n () => ({\n ...outerStyles,\n ...styles,\n }),\n [outerStyles, styles],\n );\n\n return (\n <DisclosureGroupContext.Provider value={contextValue}>\n <GroupRoot ref={ref} qa={qa} mods={mods} styles={finalStyles}>\n {children}\n </GroupRoot>\n </DisclosureGroupContext.Provider>\n );\n },\n);\n\n// ============================================================================\n// Disclosure.Item Component\n// ============================================================================\n\nconst DisclosureItem = forwardRef<HTMLDivElement, CubeDisclosureItemProps>(\n function DisclosureItem(props, ref) {\n const {\n id: providedId,\n children,\n isDisabled: itemDisabled = false,\n isExpanded: controlledIsExpanded,\n defaultExpanded,\n onExpandedChange,\n shape = 'default',\n qa,\n mods,\n styles,\n ...otherProps\n } = props;\n\n const defaultId = useId();\n const id = providedId ?? defaultId;\n\n const groupContext = useDisclosureGroupContext();\n const panelRef = useRef<HTMLDivElement>(null);\n\n // Determine if disabled from group or item\n const isDisabled =\n itemDisabled || groupContext?.groupState?.isDisabled || false;\n\n // Determine expanded state from group or local props\n const groupIsExpanded = groupContext\n ? groupContext.groupState.expandedKeys.has(id)\n : undefined;\n\n // When disabled, force expanded to false\n const effectiveIsExpanded = isDisabled\n ? false\n : groupIsExpanded ?? controlledIsExpanded;\n\n const state = useDisclosureState({\n isExpanded: effectiveIsExpanded,\n defaultExpanded: isDisabled ? false : defaultExpanded,\n onExpandedChange(expanded) {\n if (isDisabled) return;\n\n if (groupContext) {\n groupContext.groupState.toggleKey(id);\n }\n onExpandedChange?.(expanded);\n },\n });\n\n // When disabled, override state.isExpanded to false\n const isExpanded = isDisabled ? false : state.isExpanded;\n\n const { buttonProps, panelProps } = useDisclosure(\n {\n isExpanded,\n isDisabled,\n },\n state,\n panelRef,\n );\n\n const contextValue = useMemo<DisclosureContextValue>(\n () => ({\n state,\n buttonProps,\n panelProps,\n panelRef,\n isDisabled,\n isExpanded,\n shape,\n transitionDuration: undefined,\n triggerProps: groupContext?.triggerProps,\n contentStyles: groupContext?.contentStyles,\n }),\n [\n state,\n buttonProps,\n panelProps,\n isDisabled,\n isExpanded,\n shape,\n groupContext?.triggerProps,\n groupContext?.contentStyles,\n ],\n );\n\n const outerStyles = extractStyles(otherProps, OUTER_STYLES);\n\n const finalStyles = useMemo<Styles>(\n () => ({\n ...outerStyles,\n ...styles,\n }),\n [outerStyles, styles],\n );\n\n const finalMods = useMemo(\n () => ({\n expanded: isExpanded,\n disabled: isDisabled,\n shape,\n ...mods,\n }),\n [isExpanded, isDisabled, shape, mods],\n );\n\n return (\n <DisclosureContext.Provider value={contextValue}>\n <DisclosureRoot\n ref={ref}\n qa={qa}\n mods={finalMods}\n styles={finalStyles}\n data-key={id}\n >\n {children}\n </DisclosureRoot>\n </DisclosureContext.Provider>\n );\n },\n);\n\n// ============================================================================\n// Compound Component Export\n// ============================================================================\n\nconst _Disclosure = Object.assign(DisclosureComponent, {\n Trigger: DisclosureTrigger,\n Content: DisclosureContent,\n Group: DisclosureGroup,\n Item: DisclosureItem,\n});\n\nexport { _Disclosure as Disclosure };\nexport type {\n CubeDisclosureProps as DisclosureProps,\n CubeDisclosureTriggerProps as DisclosureTriggerProps,\n CubeDisclosureContentProps as DisclosureContentProps,\n CubeDisclosureGroupProps as DisclosureGroupProps,\n CubeDisclosureItemProps as DisclosureItemProps,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Disclosure.js","names":["ItemButton","useId"],"sources":["../../../../src/components/content/Disclosure/Disclosure.tsx"],"sourcesContent":["import {\n BaseProps,\n BasePropsWithoutChildren,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n createContext,\n forwardRef,\n Key,\n ReactNode,\n RefObject,\n useContext,\n useMemo,\n useRef,\n} from 'react';\nimport { mergeProps, useDisclosure, useId } from 'react-aria';\nimport {\n DisclosureGroupState,\n DisclosureState,\n useDisclosureGroupState,\n useDisclosureState,\n} from 'react-stately';\n\nimport { RightIcon } from '../../../icons';\nimport { mergeRefs } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { CubeItemButtonProps, ItemButton } from '../../actions/ItemButton';\nimport { DisplayTransition } from '../../helpers';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface DisclosureStateContext {\n isExpanded: boolean;\n toggle: () => void;\n expand: () => void;\n collapse: () => void;\n}\n\ninterface DisclosureContextValue {\n state: DisclosureState;\n buttonProps: Record<string, unknown>;\n panelProps: Record<string, unknown>;\n panelRef: RefObject<HTMLDivElement | null>;\n isDisabled: boolean;\n isExpanded: boolean;\n shape: 'default' | 'card' | 'sharp';\n transitionDuration?: number;\n triggerProps?: Partial<CubeItemButtonProps>;\n contentStyles?: Styles;\n}\n\ninterface DisclosureGroupContextValue {\n groupState: DisclosureGroupState;\n triggerProps?: Partial<CubeItemButtonProps>;\n contentStyles?: Styles;\n}\n\nexport interface CubeDisclosureProps\n extends BasePropsWithoutChildren,\n OuterStyleProps {\n /** Controls expanded state in controlled mode */\n isExpanded?: boolean;\n /** Initial expanded state in uncontrolled mode */\n defaultExpanded?: boolean;\n /** Callback fired when expanded state changes */\n onExpandedChange?: (isExpanded: boolean) => void;\n /** Disables trigger interactions and force-closes the content */\n isDisabled?: boolean;\n /** Render-prop alternative to achieve custom trigger markup */\n children?: ReactNode | ((state: DisclosureStateContext) => ReactNode);\n /** Visual shape variant */\n shape?: 'default' | 'card' | 'sharp';\n /** Duration for DisplayTransition animation in milliseconds */\n transitionDuration?: number;\n}\n\nexport interface CubeDisclosureTriggerProps\n extends Omit<CubeItemButtonProps, 'onPress' | 'isDisabled'> {\n /** Children content for the trigger */\n children?: ReactNode;\n}\n\nexport interface CubeDisclosureContentProps extends BaseProps {\n /** Children content for the panel */\n children?: ReactNode;\n}\n\nexport interface CubeDisclosureGroupProps extends BaseProps, OuterStyleProps {\n /** Allow more than one disclosure to be open */\n allowsMultipleExpanded?: boolean;\n /** Controlled expanded keys */\n expandedKeys?: Iterable<Key>;\n /** Uncontrolled default expanded keys */\n defaultExpandedKeys?: Iterable<Key>;\n /** Change handler providing the full expanded keys Set */\n onExpandedChange?: (keys: Set<Key>) => void;\n /** Disable all disclosures within group and force-close their content */\n isDisabled?: boolean;\n /** Props forwarded to all ItemButton triggers in the group */\n triggerProps?: Partial<CubeItemButtonProps>;\n /** Optional panel styles applied to all Content panels in the group */\n contentStyles?: Styles;\n children: ReactNode;\n}\n\nexport interface CubeDisclosureItemProps\n extends Omit<BasePropsWithoutChildren, 'id'>,\n OuterStyleProps {\n /** Unique identifier for the disclosure item in a group */\n id?: Key;\n /** Children content */\n children?: ReactNode;\n /** Disables trigger interactions and force-closes the content */\n isDisabled?: boolean;\n /** Controls expanded state in controlled mode */\n isExpanded?: boolean;\n /** Initial expanded state in uncontrolled mode */\n defaultExpanded?: boolean;\n /** Callback fired when expanded state changes */\n onExpandedChange?: (isExpanded: boolean) => void;\n /** Visual shape variant */\n shape?: 'default' | 'card' | 'sharp';\n}\n\n// ============================================================================\n// Contexts\n// ============================================================================\n\nconst DisclosureContext = createContext<DisclosureContextValue | null>(null);\nconst DisclosureGroupContext =\n createContext<DisclosureGroupContextValue | null>(null);\n\nfunction useDisclosureContext(): DisclosureContextValue {\n const context = useContext(DisclosureContext);\n\n if (!context) {\n throw new Error(\n 'Disclosure.Trigger and Disclosure.Content must be used within a Disclosure',\n );\n }\n\n return context;\n}\n\nfunction useDisclosureGroupContext(): DisclosureGroupContextValue | null {\n return useContext(DisclosureGroupContext);\n}\n\n// ============================================================================\n// Styled Components\n// ============================================================================\n\nconst DisclosureRoot = tasty({\n qa: 'Disclosure',\n styles: {\n display: 'flex',\n flow: 'column',\n gap: 0,\n position: 'relative',\n border: {\n '': 'none',\n 'shape=card': '1bw solid #border',\n },\n radius: {\n '': '1r',\n 'shape=card': '1cr',\n 'shape=sharp': '0',\n },\n fill: {\n '': false,\n 'shape=card': '#white',\n },\n },\n});\n\nconst ContentWrapperElement = tasty({\n qa: 'DisclosureContentWrapper',\n styles: {\n display: 'block',\n overflow: 'hidden',\n interpolateSize: 'allow-keywords',\n height: {\n '': 0,\n shown: 'max-content',\n },\n transition: 'height $disclosure-transition',\n },\n});\n\nconst ContentElement = tasty({\n qa: 'DisclosureContent',\n styles: {\n display: 'block',\n flow: 'column',\n contentVisibility: 'auto',\n },\n});\n\nconst GroupRoot = tasty({\n qa: 'DisclosureGroup',\n styles: {\n display: 'flex',\n flow: 'column',\n gap: '0',\n },\n});\n\nconst TriggerIcon = tasty(RightIcon, {\n styles: {\n transition: 'rotate',\n rotate: {\n '': '0deg',\n expanded: '90deg',\n },\n },\n});\n\nconst StyledTrigger = tasty(ItemButton, {\n qa: 'DisclosureTrigger',\n type: 'header',\n styles: {\n radius: {\n '': '1r',\n 'expanded & shape=card': '(1cr - 1bw) (1cr - 1bw) 0 0',\n 'shape=sharp': '0',\n },\n border: '#clear',\n },\n});\n\n// ============================================================================\n// Disclosure Component\n// ============================================================================\n\nconst DisclosureComponent = forwardRef<HTMLDivElement, CubeDisclosureProps>(\n function Disclosure(props, ref) {\n const {\n isExpanded: controlledIsExpanded,\n defaultExpanded,\n onExpandedChange,\n isDisabled = false,\n children,\n shape = 'default',\n transitionDuration,\n qa,\n mods,\n ...otherProps\n } = props;\n\n const groupContext = useDisclosureGroupContext();\n const panelRef = useRef<HTMLDivElement>(null);\n\n // When disabled, force expanded to false\n const effectiveIsExpanded = isDisabled ? false : controlledIsExpanded;\n\n const state = useDisclosureState({\n isExpanded: effectiveIsExpanded,\n defaultExpanded: isDisabled ? false : defaultExpanded,\n onExpandedChange: isDisabled ? undefined : onExpandedChange,\n });\n\n // When disabled, override state.isExpanded to false\n const isExpanded = isDisabled ? false : state.isExpanded;\n\n const { buttonProps, panelProps } = useDisclosure(\n {\n isExpanded,\n isDisabled,\n },\n state,\n panelRef,\n );\n\n const contextValue = useMemo<DisclosureContextValue>(\n () => ({\n state,\n buttonProps,\n panelProps,\n panelRef,\n isDisabled,\n isExpanded,\n shape,\n transitionDuration,\n triggerProps: groupContext?.triggerProps,\n contentStyles: groupContext?.contentStyles,\n }),\n [\n state,\n buttonProps,\n panelProps,\n isDisabled,\n isExpanded,\n shape,\n transitionDuration,\n groupContext?.triggerProps,\n groupContext?.contentStyles,\n ],\n );\n\n const stateContext = useMemo<DisclosureStateContext>(\n () => ({\n isExpanded,\n toggle: state.toggle,\n expand: state.expand,\n collapse: state.collapse,\n }),\n [isExpanded, state.toggle, state.expand, state.collapse],\n );\n\n const outerStyles = extractStyles(otherProps, OUTER_STYLES);\n\n const finalMods = useMemo(\n () => ({\n expanded: isExpanded,\n disabled: isDisabled,\n shape,\n ...mods,\n }),\n [isExpanded, isDisabled, shape, mods],\n );\n\n const content =\n typeof children === 'function' ? children(stateContext) : children;\n\n return (\n <DisclosureContext.Provider value={contextValue}>\n <DisclosureRoot ref={ref} qa={qa} mods={finalMods} styles={outerStyles}>\n {content}\n </DisclosureRoot>\n </DisclosureContext.Provider>\n );\n },\n);\n\n// ============================================================================\n// Disclosure.Trigger Component\n// ============================================================================\n\nconst DisclosureTrigger = forwardRef<\n HTMLButtonElement,\n CubeDisclosureTriggerProps\n>(function DisclosureTrigger(props, ref) {\n const { children, icon, mods, ...otherProps } = props;\n const context = useDisclosureContext();\n const { buttonProps, isDisabled, isExpanded, shape, triggerProps } = context;\n\n const finalMods = useMemo(\n () => ({\n expanded: isExpanded,\n disabled: isDisabled,\n shape,\n selected: false,\n ...mods,\n }),\n [isExpanded, isDisabled, shape, mods],\n );\n\n // Default icon is a rotating chevron\n const defaultIcon = <TriggerIcon mods={{ expanded: isExpanded }} />;\n\n return (\n <StyledTrigger\n ref={ref}\n icon={icon ?? defaultIcon}\n isDisabled={isDisabled}\n isSelected={isExpanded}\n {...triggerProps}\n {...(mergeProps(otherProps, buttonProps as any) as any)}\n mods={finalMods}\n >\n {children}\n </StyledTrigger>\n );\n});\n\n// ============================================================================\n// Disclosure.Content Component\n// ============================================================================\n\nconst DisclosureContent = forwardRef<\n HTMLDivElement,\n CubeDisclosureContentProps\n>(function DisclosureContent(props, ref) {\n const { children, styles, mods, ...otherProps } = props;\n const context = useDisclosureContext();\n const {\n panelProps,\n panelRef,\n isExpanded,\n transitionDuration,\n contentStyles,\n } = context;\n\n const mergedStyles = useMemo<Styles>(\n () => ({\n ...contentStyles,\n ...styles,\n }),\n [contentStyles, styles],\n );\n\n // Filter out hidden attribute from panelProps since we manage visibility via CSS height animation\n const { hidden, ...filteredPanelProps } = panelProps as Record<\n string,\n unknown\n >;\n\n return (\n <DisplayTransition\n isShown={isExpanded}\n duration={transitionDuration}\n animateOnMount={false}\n >\n {({ phase, isShown, ref: transitionRef }) => (\n <ContentWrapperElement\n ref={transitionRef}\n mods={{ shown: isShown, phase }}\n tokens={\n transitionDuration != null\n ? { '$disclosure-transition': `${transitionDuration}ms` }\n : undefined\n }\n >\n <ContentElement\n ref={mergeRefs(ref, panelRef)}\n mods={mods}\n styles={mergedStyles}\n {...filteredPanelProps}\n {...otherProps}\n >\n {children}\n </ContentElement>\n </ContentWrapperElement>\n )}\n </DisplayTransition>\n );\n});\n\n// ============================================================================\n// Disclosure.Group Component\n// ============================================================================\n\nconst DisclosureGroup = forwardRef<HTMLDivElement, CubeDisclosureGroupProps>(\n function DisclosureGroup(props, ref) {\n const {\n allowsMultipleExpanded = false,\n expandedKeys,\n defaultExpandedKeys,\n onExpandedChange,\n isDisabled = false,\n triggerProps,\n contentStyles,\n children,\n qa,\n mods,\n styles,\n ...otherProps\n } = props;\n\n const groupState = useDisclosureGroupState({\n allowsMultipleExpanded,\n expandedKeys,\n defaultExpandedKeys,\n onExpandedChange,\n isDisabled,\n });\n\n const contextValue = useMemo<DisclosureGroupContextValue>(\n () => ({\n groupState,\n triggerProps,\n contentStyles,\n }),\n [groupState, triggerProps, contentStyles],\n );\n\n const outerStyles = extractStyles(otherProps, OUTER_STYLES);\n\n const finalStyles = useMemo<Styles>(\n () => ({\n ...outerStyles,\n ...styles,\n }),\n [outerStyles, styles],\n );\n\n return (\n <DisclosureGroupContext.Provider value={contextValue}>\n <GroupRoot ref={ref} qa={qa} mods={mods} styles={finalStyles}>\n {children}\n </GroupRoot>\n </DisclosureGroupContext.Provider>\n );\n },\n);\n\n// ============================================================================\n// Disclosure.Item Component\n// ============================================================================\n\nconst DisclosureItem = forwardRef<HTMLDivElement, CubeDisclosureItemProps>(\n function DisclosureItem(props, ref) {\n const {\n id: providedId,\n children,\n isDisabled: itemDisabled = false,\n isExpanded: controlledIsExpanded,\n defaultExpanded,\n onExpandedChange,\n shape = 'default',\n qa,\n mods,\n styles,\n ...otherProps\n } = props;\n\n const defaultId = useId();\n const id = providedId ?? defaultId;\n\n const groupContext = useDisclosureGroupContext();\n const panelRef = useRef<HTMLDivElement>(null);\n\n // Determine if disabled from group or item\n const isDisabled =\n itemDisabled || groupContext?.groupState?.isDisabled || false;\n\n // Determine expanded state from group or local props\n const groupIsExpanded = groupContext\n ? groupContext.groupState.expandedKeys.has(id)\n : undefined;\n\n // When disabled, force expanded to false\n const effectiveIsExpanded = isDisabled\n ? false\n : groupIsExpanded ?? controlledIsExpanded;\n\n const state = useDisclosureState({\n isExpanded: effectiveIsExpanded,\n defaultExpanded: isDisabled ? false : defaultExpanded,\n onExpandedChange(expanded) {\n if (isDisabled) return;\n\n if (groupContext) {\n groupContext.groupState.toggleKey(id);\n }\n onExpandedChange?.(expanded);\n },\n });\n\n // When disabled, override state.isExpanded to false\n const isExpanded = isDisabled ? false : state.isExpanded;\n\n const { buttonProps, panelProps } = useDisclosure(\n {\n isExpanded,\n isDisabled,\n },\n state,\n panelRef,\n );\n\n const contextValue = useMemo<DisclosureContextValue>(\n () => ({\n state,\n buttonProps,\n panelProps,\n panelRef,\n isDisabled,\n isExpanded,\n shape,\n transitionDuration: undefined,\n triggerProps: groupContext?.triggerProps,\n contentStyles: groupContext?.contentStyles,\n }),\n [\n state,\n buttonProps,\n panelProps,\n isDisabled,\n isExpanded,\n shape,\n groupContext?.triggerProps,\n groupContext?.contentStyles,\n ],\n );\n\n const outerStyles = extractStyles(otherProps, OUTER_STYLES);\n\n const finalStyles = useMemo<Styles>(\n () => ({\n ...outerStyles,\n ...styles,\n }),\n [outerStyles, styles],\n );\n\n const finalMods = useMemo(\n () => ({\n expanded: isExpanded,\n disabled: isDisabled,\n shape,\n ...mods,\n }),\n [isExpanded, isDisabled, shape, mods],\n );\n\n return (\n <DisclosureContext.Provider value={contextValue}>\n <DisclosureRoot\n ref={ref}\n qa={qa}\n mods={finalMods}\n styles={finalStyles}\n data-key={id}\n >\n {children}\n </DisclosureRoot>\n </DisclosureContext.Provider>\n );\n },\n);\n\n// ============================================================================\n// Compound Component Export\n// ============================================================================\n\nconst _Disclosure = Object.assign(DisclosureComponent, {\n Trigger: DisclosureTrigger,\n Content: DisclosureContent,\n Group: DisclosureGroup,\n Item: DisclosureItem,\n});\n\nexport { _Disclosure as Disclosure };\nexport type {\n CubeDisclosureProps as DisclosureProps,\n CubeDisclosureTriggerProps as DisclosureTriggerProps,\n CubeDisclosureContentProps as DisclosureContentProps,\n CubeDisclosureGroupProps as DisclosureGroupProps,\n CubeDisclosureItemProps as DisclosureItemProps,\n};\n"],"mappings":";;;;;;;;;;;;;AAqIA,MAAM,oBAAoB,cAA6C,KAAK;AAC5E,MAAM,yBACJ,cAAkD,KAAK;AAEzD,SAAS,uBAA+C;CACtD,MAAM,UAAU,WAAW,kBAAkB;AAE7C,KAAI,CAAC,QACH,OAAM,IAAI,MACR,6EACD;AAGH,QAAO;;AAGT,SAAS,4BAAgE;AACvE,QAAO,WAAW,uBAAuB;;AAO3C,MAAM,iBAAiB,MAAM;CAC3B,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,MAAM;EACN,KAAK;EACL,UAAU;EACV,QAAQ;GACN,IAAI;GACJ,cAAc;GACf;EACD,QAAQ;GACN,IAAI;GACJ,cAAc;GACd,eAAe;GAChB;EACD,MAAM;GACJ,IAAI;GACJ,cAAc;GACf;EACF;CACF,CAAC;AAEF,MAAM,wBAAwB,MAAM;CAClC,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,UAAU;EACV,iBAAiB;EACjB,QAAQ;GACN,IAAI;GACJ,OAAO;GACR;EACD,YAAY;EACb;CACF,CAAC;AAEF,MAAM,iBAAiB,MAAM;CAC3B,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,MAAM;EACN,mBAAmB;EACpB;CACF,CAAC;AAEF,MAAM,YAAY,MAAM;CACtB,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,MAAM;EACN,KAAK;EACN;CACF,CAAC;AAEF,MAAM,cAAc,MAAM,WAAW,EACnC,QAAQ;CACN,YAAY;CACZ,QAAQ;EACN,IAAI;EACJ,UAAU;EACX;CACF,EACF,CAAC;AAEF,MAAM,gBAAgB,MAAMA,aAAY;CACtC,IAAI;CACJ,MAAM;CACN,QAAQ;EACN,QAAQ;GACN,IAAI;GACJ,yBAAyB;GACzB,eAAe;GAChB;EACD,QAAQ;EACT;CACF,CAAC;AAMF,MAAM,sBAAsB,WAC1B,SAAS,WAAW,OAAO,KAAK;CAC9B,MAAM,EACJ,YAAY,sBACZ,iBACA,kBACA,aAAa,OACb,UACA,QAAQ,WACR,oBACA,IACA,MACA,GAAG,eACD;CAEJ,MAAM,eAAe,2BAA2B;CAChD,MAAM,WAAW,OAAuB,KAAK;CAK7C,MAAM,QAAQ,mBAAmB;EAC/B,YAH0B,aAAa,QAAQ;EAI/C,iBAAiB,aAAa,QAAQ;EACtC,kBAAkB,aAAa,SAAY;EAC5C,CAAC;CAGF,MAAM,aAAa,aAAa,QAAQ,MAAM;CAE9C,MAAM,EAAE,aAAa,eAAe,cAClC;EACE;EACA;EACD,EACD,OACA,SACD;CAED,MAAM,eAAe,eACZ;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc,cAAc;EAC5B,eAAe,cAAc;EAC9B,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACd,cAAc;EACf,CACF;CAED,MAAM,eAAe,eACZ;EACL;EACA,QAAQ,MAAM;EACd,QAAQ,MAAM;EACd,UAAU,MAAM;EACjB,GACD;EAAC;EAAY,MAAM;EAAQ,MAAM;EAAQ,MAAM;EAAS,CACzD;CAED,MAAM,cAAc,cAAc,YAAY,aAAa;CAE3D,MAAM,YAAY,eACT;EACL,UAAU;EACV,UAAU;EACV;EACA,GAAG;EACJ,GACD;EAAC;EAAY;EAAY;EAAO;EAAK,CACtC;CAED,MAAM,UACJ,OAAO,aAAa,aAAa,SAAS,aAAa,GAAG;AAE5D,QACE,oBAAC,kBAAkB;EAAS,OAAO;YACjC,oBAAC;GAAoB;GAAS;GAAI,MAAM;GAAW,QAAQ;aACxD;IACc;GACU;EAGlC;AAMD,MAAM,oBAAoB,WAGxB,SAAS,kBAAkB,OAAO,KAAK;CACvC,MAAM,EAAE,UAAU,MAAM,MAAM,GAAG,eAAe;CAEhD,MAAM,EAAE,aAAa,YAAY,YAAY,OAAO,iBADpC,sBAAsB;CAGtC,MAAM,YAAY,eACT;EACL,UAAU;EACV,UAAU;EACV;EACA,UAAU;EACV,GAAG;EACJ,GACD;EAAC;EAAY;EAAY;EAAO;EAAK,CACtC;AAKD,QACE,oBAAC;EACM;EACL,MAAM,QALU,oBAAC,eAAY,MAAM,EAAE,UAAU,YAAY,GAAI;EAMnD;EACZ,YAAY;EACZ,GAAI;EACJ,GAAK,WAAW,YAAY,YAAmB;EAC/C,MAAM;EAEL;GACa;EAElB;AAMF,MAAM,oBAAoB,WAGxB,SAAS,kBAAkB,OAAO,KAAK;CACvC,MAAM,EAAE,UAAU,QAAQ,MAAM,GAAG,eAAe;CAElD,MAAM,EACJ,YACA,UACA,YACA,oBACA,kBANc,sBAAsB;CAStC,MAAM,eAAe,eACZ;EACL,GAAG;EACH,GAAG;EACJ,GACD,CAAC,eAAe,OAAO,CACxB;CAGD,MAAM,EAAE,QAAQ,GAAG,uBAAuB;AAK1C,QACE,oBAAC;EACC,SAAS;EACT,UAAU;EACV,gBAAgB;aAEd,EAAE,OAAO,SAAS,KAAK,oBACvB,oBAAC;GACC,KAAK;GACL,MAAM;IAAE,OAAO;IAAS;IAAO;GAC/B,QACE,sBAAsB,OAClB,EAAE,0BAA0B,GAAG,mBAAmB,KAAK,GACvD;aAGN,oBAAC;IACC,KAAK,UAAU,KAAK,SAAS;IACvB;IACN,QAAQ;IACR,GAAI;IACJ,GAAI;IAEH;KACc;IACK;GAER;EAEtB;AAMF,MAAM,kBAAkB,WACtB,SAAS,gBAAgB,OAAO,KAAK;CACnC,MAAM,EACJ,yBAAyB,OACzB,cACA,qBACA,kBACA,aAAa,OACb,cACA,eACA,UACA,IACA,MACA,QACA,GAAG,eACD;CAEJ,MAAM,aAAa,wBAAwB;EACzC;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,eAAe,eACZ;EACL;EACA;EACA;EACD,GACD;EAAC;EAAY;EAAc;EAAc,CAC1C;CAED,MAAM,cAAc,cAAc,YAAY,aAAa;CAE3D,MAAM,cAAc,eACX;EACL,GAAG;EACH,GAAG;EACJ,GACD,CAAC,aAAa,OAAO,CACtB;AAED,QACE,oBAAC,uBAAuB;EAAS,OAAO;YACtC,oBAAC;GAAe;GAAS;GAAU;GAAM,QAAQ;GAC9C;IACS;GACoB;EAGvC;AAMD,MAAM,iBAAiB,WACrB,SAAS,eAAe,OAAO,KAAK;CAClC,MAAM,EACJ,IAAI,YACJ,UACA,YAAY,eAAe,OAC3B,YAAY,sBACZ,iBACA,kBACA,QAAQ,WACR,IACA,MACA,QACA,GAAG,eACD;CAEJ,MAAM,YAAYC,SAAO;CACzB,MAAM,KAAK,cAAc;CAEzB,MAAM,eAAe,2BAA2B;CAChD,MAAM,WAAW,OAAuB,KAAK;CAG7C,MAAM,aACJ,gBAAgB,cAAc,YAAY,cAAc;CAG1D,MAAM,kBAAkB,eACpB,aAAa,WAAW,aAAa,IAAI,GAAG,GAC5C;CAOJ,MAAM,QAAQ,mBAAmB;EAC/B,YAL0B,aACxB,QACA,mBAAmB;EAIrB,iBAAiB,aAAa,QAAQ;EACtC,iBAAiB,UAAU;AACzB,OAAI,WAAY;AAEhB,OAAI,aACF,cAAa,WAAW,UAAU,GAAG;AAEvC,sBAAmB,SAAS;;EAE/B,CAAC;CAGF,MAAM,aAAa,aAAa,QAAQ,MAAM;CAE9C,MAAM,EAAE,aAAa,eAAe,cAClC;EACE;EACA;EACD,EACD,OACA,SACD;CAED,MAAM,eAAe,eACZ;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA,oBAAoB;EACpB,cAAc,cAAc;EAC5B,eAAe,cAAc;EAC9B,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACd,cAAc;EACf,CACF;CAED,MAAM,cAAc,cAAc,YAAY,aAAa;CAE3D,MAAM,cAAc,eACX;EACL,GAAG;EACH,GAAG;EACJ,GACD,CAAC,aAAa,OAAO,CACtB;CAED,MAAM,YAAY,eACT;EACL,UAAU;EACV,UAAU;EACV;EACA,GAAG;EACJ,GACD;EAAC;EAAY;EAAY;EAAO;EAAK,CACtC;AAED,QACE,oBAAC,kBAAkB;EAAS,OAAO;YACjC,oBAAC;GACM;GACD;GACJ,MAAM;GACN,QAAQ;GACR,YAAU;GAET;IACc;GACU;EAGlC;AAMD,MAAM,cAAc,OAAO,OAAO,qBAAqB;CACrD,SAAS;CACT,SAAS;CACT,OAAO;CACP,MAAM;CACP,CAAC"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | Cube Dev Team */
2
2
  import { useSlotProps } from "../../utils/react/Slots.js";
3
3
  import { useCombinedRefs } from "../../utils/react/useCombinedRefs.js";
4
4
  import { BASE_STYLES, COLOR_STYLES, OUTER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
@@ -1,6 +1,7 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | Cube Dev Team */
2
+ import { extractStyles } from "../../utils/styles.js";
2
3
  import { useSlotProps } from "../../utils/react/Slots.js";
3
- import { CONTAINER_STYLES, TEXT_STYLES, extractStyles, filterBaseProps, tasty } from "@tenphi/tasty";
4
+ import { CONTAINER_STYLES, TEXT_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
4
5
  import { forwardRef } from "react";
5
6
  import { jsx } from "react/jsx-runtime";
6
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"Footer.js","names":[],"sources":["../../../src/components/content/Footer.tsx"],"sourcesContent":["import {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n extractStyles,\n filterBaseProps,\n tasty,\n TEXT_STYLES,\n TextStyleProps,\n} from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useSlotProps } from '../../utils/react';\n\nconst STYLE_LIST = [...CONTAINER_STYLES, ...TEXT_STYLES];\n\nconst FooterElement = tasty({\n qa: 'Footer',\n 'data-id': 'Footer',\n styles: {\n gridArea: 'footer',\n display: 'block',\n flow: 'column',\n },\n});\n\nexport interface CubeFooterProps\n extends BaseProps,\n ContainerStyleProps,\n TextStyleProps {}\n\nexport const Footer = forwardRef(function Footer(props: CubeFooterProps, ref) {\n props = useSlotProps(props, 'footer');\n\n const styles = extractStyles(props, STYLE_LIST);\n\n return (\n <FooterElement\n {...filterBaseProps(props, { eventProps: true })}\n ref={ref}\n styles={styles}\n />\n );\n});\n"],"mappings":";;;;;;;AAcA,MAAM,aAAa,CAAC,GAAG,kBAAkB,GAAG,YAAY;AAExD,MAAM,gBAAgB,MAAM;CAC1B,IAAI;CACJ,WAAW;CACX,QAAQ;EACN,UAAU;EACV,SAAS;EACT,MAAM;EACP;CACF,CAAC;AAOF,MAAa,SAAS,WAAW,SAAS,OAAO,OAAwB,KAAK;AAC5E,SAAQ,aAAa,OAAO,SAAS;CAErC,MAAM,SAAS,cAAc,OAAO,WAAW;AAE/C,QACE,oBAAC;EACC,GAAI,gBAAgB,OAAO,EAAE,YAAY,MAAM,CAAC;EAC3C;EACG;GACR;EAEJ"}
1
+ {"version":3,"file":"Footer.js","names":[],"sources":["../../../src/components/content/Footer.tsx"],"sourcesContent":["import {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n tasty,\n TEXT_STYLES,\n TextStyleProps,\n} from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useSlotProps } from '../../utils/react';\nimport { extractStyles } from '../../utils/styles';\n\nconst STYLE_LIST = [...CONTAINER_STYLES, ...TEXT_STYLES];\n\nconst FooterElement = tasty({\n qa: 'Footer',\n 'data-id': 'Footer',\n styles: {\n gridArea: 'footer',\n display: 'block',\n flow: 'column',\n },\n});\n\nexport interface CubeFooterProps\n extends BaseProps,\n ContainerStyleProps,\n TextStyleProps {}\n\nexport const Footer = forwardRef(function Footer(props: CubeFooterProps, ref) {\n props = useSlotProps(props, 'footer');\n\n const styles = extractStyles(props, STYLE_LIST);\n\n return (\n <FooterElement\n {...filterBaseProps(props, { eventProps: true })}\n ref={ref}\n styles={styles}\n />\n );\n});\n"],"mappings":";;;;;;;;AAcA,MAAM,aAAa,CAAC,GAAG,kBAAkB,GAAG,YAAY;AAExD,MAAM,gBAAgB,MAAM;CAC1B,IAAI;CACJ,WAAW;CACX,QAAQ;EACN,UAAU;EACV,SAAS;EACT,MAAM;EACP;CACF,CAAC;AAOF,MAAa,SAAS,WAAW,SAAS,OAAO,OAAwB,KAAK;AAC5E,SAAQ,aAAa,OAAO,SAAS;CAErC,MAAM,SAAS,cAAc,OAAO,WAAW;AAE/C,QACE,oBAAC;EACC,GAAI,gBAAgB,OAAO,EAAE,YAAY,MAAM,CAAC;EAC3C;EACG;GACR;EAEJ"}
@@ -1,6 +1,7 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | Cube Dev Team */
2
+ import { extractStyles } from "../../utils/styles.js";
2
3
  import { useSlotProps } from "../../utils/react/Slots.js";
3
- import { CONTAINER_STYLES, TEXT_STYLES, extractStyles, filterBaseProps, tasty } from "@tenphi/tasty";
4
+ import { CONTAINER_STYLES, TEXT_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
4
5
  import { forwardRef } from "react";
5
6
  import { jsx } from "react/jsx-runtime";
6
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","names":[],"sources":["../../../src/components/content/Header.tsx"],"sourcesContent":["import {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n extractStyles,\n filterBaseProps,\n tasty,\n TEXT_STYLES,\n TextStyleProps,\n} from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useSlotProps } from '../../utils/react';\n\nconst STYLE_LIST = [...CONTAINER_STYLES, ...TEXT_STYLES];\n\nconst HeaderElement = tasty({\n qa: 'Header',\n as: 'header',\n styles: {\n display: 'block',\n gridArea: 'header',\n flow: 'column',\n boxSizing: 'border-box',\n },\n});\n\nexport interface CubeHeaderProps\n extends BaseProps,\n ContainerStyleProps,\n TextStyleProps {}\n\nexport const Header = forwardRef(function Header(props: CubeHeaderProps, ref) {\n props = useSlotProps(props, 'header');\n\n const styles = extractStyles(props, STYLE_LIST);\n\n return (\n <HeaderElement\n {...filterBaseProps(props, { eventProps: true })}\n ref={ref}\n styles={styles}\n />\n );\n});\n"],"mappings":";;;;;;;AAcA,MAAM,aAAa,CAAC,GAAG,kBAAkB,GAAG,YAAY;AAExD,MAAM,gBAAgB,MAAM;CAC1B,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,UAAU;EACV,MAAM;EACN,WAAW;EACZ;CACF,CAAC;AAOF,MAAa,SAAS,WAAW,SAAS,OAAO,OAAwB,KAAK;AAC5E,SAAQ,aAAa,OAAO,SAAS;CAErC,MAAM,SAAS,cAAc,OAAO,WAAW;AAE/C,QACE,oBAAC;EACC,GAAI,gBAAgB,OAAO,EAAE,YAAY,MAAM,CAAC;EAC3C;EACG;GACR;EAEJ"}
1
+ {"version":3,"file":"Header.js","names":[],"sources":["../../../src/components/content/Header.tsx"],"sourcesContent":["import {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n tasty,\n TEXT_STYLES,\n TextStyleProps,\n} from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useSlotProps } from '../../utils/react';\nimport { extractStyles } from '../../utils/styles';\n\nconst STYLE_LIST = [...CONTAINER_STYLES, ...TEXT_STYLES];\n\nconst HeaderElement = tasty({\n qa: 'Header',\n as: 'header',\n styles: {\n display: 'block',\n gridArea: 'header',\n flow: 'column',\n boxSizing: 'border-box',\n },\n});\n\nexport interface CubeHeaderProps\n extends BaseProps,\n ContainerStyleProps,\n TextStyleProps {}\n\nexport const Header = forwardRef(function Header(props: CubeHeaderProps, ref) {\n props = useSlotProps(props, 'header');\n\n const styles = extractStyles(props, STYLE_LIST);\n\n return (\n <HeaderElement\n {...filterBaseProps(props, { eventProps: true })}\n ref={ref}\n styles={styles}\n />\n );\n});\n"],"mappings":";;;;;;;;AAcA,MAAM,aAAa,CAAC,GAAG,kBAAkB,GAAG,YAAY;AAExD,MAAM,gBAAgB,MAAM;CAC1B,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,UAAU;EACV,MAAM;EACN,WAAW;EACZ;CACF,CAAC;AAOF,MAAa,SAAS,WAAW,SAAS,OAAO,OAAwB,KAAK;AAC5E,SAAQ,aAAa,OAAO,SAAS;CAErC,MAAM,SAAS,cAAc,OAAO,WAAW;AAE/C,QACE,oBAAC;EACC,GAAI,gBAAgB,OAAO,EAAE,YAAY,MAAM,CAAC;EAC3C;EACG;GACR;EAEJ"}
@@ -1,8 +1,9 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | Cube Dev Team */
2
+ import { extractStyles } from "../../../utils/styles.js";
2
3
  import { _Text } from "../Text.js";
3
4
  import { useKeySymbols } from "../../../utils/react/useKeySymbols.js";
4
5
  import { Space } from "../../layout/Space.js";
5
- import { CONTAINER_STYLES, extractStyles, filterBaseProps, tasty } from "@tenphi/tasty";
6
+ import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
6
7
  import { Fragment, forwardRef } from "react";
7
8
  import { jsx, jsxs } from "react/jsx-runtime";
8
9
 
@@ -1 +1 @@
1
- {"version":3,"file":"HotKeys.js","names":["Text"],"sources":["../../../../src/components/content/HotKeys/HotKeys.tsx"],"sourcesContent":["import {\n BasePropsWithoutChildren,\n CONTAINER_STYLES,\n ContainerStyleProps,\n extractStyles,\n filterBaseProps,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef, Fragment } from 'react';\n\nimport { useKeySymbols } from '../../../utils/react/useKeySymbols';\nimport { Space } from '../../layout/Space';\nimport { Text } from '../Text';\n\nconst StyledHotKeys = tasty(Space, {\n qa: 'HotKeys',\n role: 'group',\n 'aria-label': 'Keyboard shortcuts',\n styles: {\n display: 'inline-flex',\n flow: 'row',\n gap: '1x',\n placeSelf: 'center',\n },\n});\n\nconst KeyElement = tasty({\n as: 'kbd',\n role: 'text',\n styles: {\n display: 'inline-flex',\n placeContent: 'center',\n placeItems: 'center start',\n radius: '1r',\n preset: 'tag',\n boxSizing: 'border-box',\n width: '2.5x max-content max-content',\n height: 'min-content',\n textAlign: 'left',\n whiteSpace: 'nowrap',\n padding: '0 (.5x - 1bw)',\n color: {\n '': '#dark.65',\n 'type=primary': '#white',\n 'type=inherit': 'currentColor',\n },\n fill: {\n '': '#dark.04',\n 'type=primary | type=inherit': '#clear',\n },\n border: {\n '': true,\n 'type=primary': '#white',\n 'type=inherit': 'currentColor',\n },\n },\n});\n\nexport interface CubeHotKeysProps\n extends BasePropsWithoutChildren,\n ContainerStyleProps {\n children: string;\n type?: 'default' | 'primary' | 'inherit';\n}\n\nfunction HotKeys(props: CubeHotKeysProps, ref) {\n const { children: keys, type, ...otherProps } = props;\n const parsedKeys = useKeySymbols(keys);\n const styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n return (\n <StyledHotKeys\n qa=\"HotKeys\"\n {...filterBaseProps(otherProps, { eventProps: true, labelable: true })}\n ref={ref}\n styles={styles}\n >\n {parsedKeys.map((keyGroup, groupIndex) => (\n <Fragment key={groupIndex}>\n {groupIndex > 0 && (\n <Text color=\"#dark-03\" role=\"separator\" aria-hidden=\"true\">\n or\n </Text>\n )}\n <Space\n flow=\"row\"\n gap=\"0.25x\"\n role=\"group\"\n aria-label={`Key combination ${groupIndex + 1}`}\n >\n {keyGroup.map((key, keyIndex) => (\n <KeyElement\n key={keyIndex}\n data-type={type}\n as=\"kbd\"\n role=\"text\"\n aria-label={`Key ${key}`}\n >\n {key}\n </KeyElement>\n ))}\n </Space>\n </Fragment>\n ))}\n </StyledHotKeys>\n );\n}\n\nconst _HotKeys = forwardRef(HotKeys);\n\n_HotKeys.displayName = 'HotKeys';\n\nexport { _HotKeys as HotKeys };\n"],"mappings":";;;;;;;;;AAcA,MAAM,gBAAgB,MAAM,OAAO;CACjC,IAAI;CACJ,MAAM;CACN,cAAc;CACd,QAAQ;EACN,SAAS;EACT,MAAM;EACN,KAAK;EACL,WAAW;EACZ;CACF,CAAC;AAEF,MAAM,aAAa,MAAM;CACvB,IAAI;CACJ,MAAM;CACN,QAAQ;EACN,SAAS;EACT,cAAc;EACd,YAAY;EACZ,QAAQ;EACR,QAAQ;EACR,WAAW;EACX,OAAO;EACP,QAAQ;EACR,WAAW;EACX,YAAY;EACZ,SAAS;EACT,OAAO;GACL,IAAI;GACJ,gBAAgB;GAChB,gBAAgB;GACjB;EACD,MAAM;GACJ,IAAI;GACJ,+BAA+B;GAChC;EACD,QAAQ;GACN,IAAI;GACJ,gBAAgB;GAChB,gBAAgB;GACjB;EACF;CACF,CAAC;AASF,SAAS,QAAQ,OAAyB,KAAK;CAC7C,MAAM,EAAE,UAAU,MAAM,MAAM,GAAG,eAAe;CAChD,MAAM,aAAa,cAAc,KAAK;CACtC,MAAM,SAAS,cAAc,YAAY,iBAAiB;AAE1D,QACE,oBAAC;EACC,IAAG;EACH,GAAI,gBAAgB,YAAY;GAAE,YAAY;GAAM,WAAW;GAAM,CAAC;EACjE;EACG;YAEP,WAAW,KAAK,UAAU,eACzB,qBAAC,uBACE,aAAa,KACZ,oBAACA;GAAK,OAAM;GAAW,MAAK;GAAY,eAAY;aAAO;IAEpD,EAET,oBAAC;GACC,MAAK;GACL,KAAI;GACJ,MAAK;GACL,cAAY,mBAAmB,aAAa;aAE3C,SAAS,KAAK,KAAK,aAClB,oBAAC;IAEC,aAAW;IACX,IAAG;IACH,MAAK;IACL,cAAY,OAAO;cAElB;MANI,SAOM,CACb;IACI,KAvBK,WAwBJ,CACX;GACY;;AAIpB,MAAM,WAAW,WAAW,QAAQ;AAEpC,SAAS,cAAc"}
1
+ {"version":3,"file":"HotKeys.js","names":["Text"],"sources":["../../../../src/components/content/HotKeys/HotKeys.tsx"],"sourcesContent":["import {\n BasePropsWithoutChildren,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef, Fragment } from 'react';\n\nimport { useKeySymbols } from '../../../utils/react/useKeySymbols';\nimport { extractStyles } from '../../../utils/styles';\nimport { Space } from '../../layout/Space';\nimport { Text } from '../Text';\n\nconst StyledHotKeys = tasty(Space, {\n qa: 'HotKeys',\n role: 'group',\n 'aria-label': 'Keyboard shortcuts',\n styles: {\n display: 'inline-flex',\n flow: 'row',\n gap: '1x',\n placeSelf: 'center',\n },\n});\n\nconst KeyElement = tasty({\n as: 'kbd',\n role: 'text',\n styles: {\n display: 'inline-flex',\n placeContent: 'center',\n placeItems: 'center start',\n radius: '1r',\n preset: 'tag',\n boxSizing: 'border-box',\n width: '2.5x max-content max-content',\n height: 'min-content',\n textAlign: 'left',\n whiteSpace: 'nowrap',\n padding: '0 (.5x - 1bw)',\n color: {\n '': '#dark.65',\n 'type=primary': '#white',\n 'type=inherit': 'currentColor',\n },\n fill: {\n '': '#dark.04',\n 'type=primary | type=inherit': '#clear',\n },\n border: {\n '': true,\n 'type=primary': '#white',\n 'type=inherit': 'currentColor',\n },\n },\n});\n\nexport interface CubeHotKeysProps\n extends BasePropsWithoutChildren,\n ContainerStyleProps {\n children: string;\n type?: 'default' | 'primary' | 'inherit';\n}\n\nfunction HotKeys(props: CubeHotKeysProps, ref) {\n const { children: keys, type, ...otherProps } = props;\n const parsedKeys = useKeySymbols(keys);\n const styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n return (\n <StyledHotKeys\n qa=\"HotKeys\"\n {...filterBaseProps(otherProps, { eventProps: true, labelable: true })}\n ref={ref}\n styles={styles}\n >\n {parsedKeys.map((keyGroup, groupIndex) => (\n <Fragment key={groupIndex}>\n {groupIndex > 0 && (\n <Text color=\"#dark-03\" role=\"separator\" aria-hidden=\"true\">\n or\n </Text>\n )}\n <Space\n flow=\"row\"\n gap=\"0.25x\"\n role=\"group\"\n aria-label={`Key combination ${groupIndex + 1}`}\n >\n {keyGroup.map((key, keyIndex) => (\n <KeyElement\n key={keyIndex}\n data-type={type}\n as=\"kbd\"\n role=\"text\"\n aria-label={`Key ${key}`}\n >\n {key}\n </KeyElement>\n ))}\n </Space>\n </Fragment>\n ))}\n </StyledHotKeys>\n );\n}\n\nconst _HotKeys = forwardRef(HotKeys);\n\n_HotKeys.displayName = 'HotKeys';\n\nexport { _HotKeys as HotKeys };\n"],"mappings":";;;;;;;;;;AAcA,MAAM,gBAAgB,MAAM,OAAO;CACjC,IAAI;CACJ,MAAM;CACN,cAAc;CACd,QAAQ;EACN,SAAS;EACT,MAAM;EACN,KAAK;EACL,WAAW;EACZ;CACF,CAAC;AAEF,MAAM,aAAa,MAAM;CACvB,IAAI;CACJ,MAAM;CACN,QAAQ;EACN,SAAS;EACT,cAAc;EACd,YAAY;EACZ,QAAQ;EACR,QAAQ;EACR,WAAW;EACX,OAAO;EACP,QAAQ;EACR,WAAW;EACX,YAAY;EACZ,SAAS;EACT,OAAO;GACL,IAAI;GACJ,gBAAgB;GAChB,gBAAgB;GACjB;EACD,MAAM;GACJ,IAAI;GACJ,+BAA+B;GAChC;EACD,QAAQ;GACN,IAAI;GACJ,gBAAgB;GAChB,gBAAgB;GACjB;EACF;CACF,CAAC;AASF,SAAS,QAAQ,OAAyB,KAAK;CAC7C,MAAM,EAAE,UAAU,MAAM,MAAM,GAAG,eAAe;CAChD,MAAM,aAAa,cAAc,KAAK;CACtC,MAAM,SAAS,cAAc,YAAY,iBAAiB;AAE1D,QACE,oBAAC;EACC,IAAG;EACH,GAAI,gBAAgB,YAAY;GAAE,YAAY;GAAM,WAAW;GAAM,CAAC;EACjE;EACG;YAEP,WAAW,KAAK,UAAU,eACzB,qBAAC,uBACE,aAAa,KACZ,oBAACA;GAAK,OAAM;GAAW,MAAK;GAAY,eAAY;aAAO;IAEpD,EAET,oBAAC;GACC,MAAK;GACL,KAAI;GACJ,MAAK;GACL,cAAY,mBAAmB,aAAa;aAE3C,SAAS,KAAK,KAAK,aAClB,oBAAC;IAEC,aAAW;IACX,IAAG;IACH,MAAK;IACL,cAAY,OAAO;cAElB;MANI,SAOM,CACb;IACI,KAvBK,WAwBJ,CACX;GACY;;AAIpB,MAAM,WAAW,WAAW,QAAQ;AAEpC,SAAS,cAAc"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { resolveIcon } from "../../../utils/react/resolveIcon.js";
4
4
  import { highlightText } from "../highlightText.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | 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.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | 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.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | 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,9 +1,10 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | Cube Dev Team */
2
+ import { extractStyles } from "../../../utils/styles.js";
2
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
3
4
  import { Alert } from "../Alert/Alert.js";
4
5
  import { isDevEnv } from "../../../utils/is-dev-env.js";
5
6
  import { LayoutProvider, useLayoutActionsContext, useLayoutRefsContext, useLayoutStateContext } from "./LayoutContext.js";
6
- import { INNER_STYLES, OUTER_STYLES, extractStyles, filterBaseProps, mergeStyles, tasty } from "@tenphi/tasty";
7
+ import { INNER_STYLES, OUTER_STYLES, filterBaseProps, mergeStyles, tasty } from "@tenphi/tasty";
7
8
  import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from "react";
8
9
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
10
  import { useResizeObserver } from "@react-aria/utils";
@@ -1 +1 @@
1
- {"version":3,"file":"Layout.js","names":[],"sources":["../../../../src/components/content/Layout/Layout.tsx"],"sourcesContent":["import { useResizeObserver } from '@react-aria/utils';\nimport {\n BaseProps,\n BlockStyleProps,\n ColorStyleProps,\n extractStyles,\n filterBaseProps,\n FlowStyleProps,\n INNER_STYLES,\n mergeStyles,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n CSSProperties,\n FocusEvent,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n KeyboardEvent,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { isDevEnv } from '../../../utils/is-dev-env';\nimport { useCombinedRefs } from '../../../utils/react';\nimport { Alert } from '../Alert';\n\nimport {\n LayoutProvider,\n useLayoutActionsContext,\n useLayoutRefsContext,\n useLayoutStateContext,\n} from './LayoutContext';\n\nconst LayoutElement = tasty({\n as: 'div',\n qa: 'Layout',\n styles: {\n position: 'relative',\n display: 'block',\n overflow: {\n '': 'visible',\n 'do-not-overflow': 'hidden',\n },\n flexGrow: 1,\n placeSelf: 'stretch',\n height: {\n '': 'auto',\n 'auto-height': 'fixed 100%',\n collapsed: '6x',\n },\n\n '$content-padding': '1x',\n // Auto-border size for sub-components (set when layout is vertical)\n '$layout-border-size': {\n '': '0',\n vertical: '1bw',\n },\n\n Inner: {\n // .base-class[data-hover] > [data-element=\"Inner\"] { ...}\n // Direct child selector required for nested layouts\n $: '>',\n container: 'layout / inline-size',\n position: 'absolute',\n inset: '$inset-top $inset-right $inset-bottom $inset-left',\n display: 'flex',\n flow: 'column',\n placeContent: 'stretch',\n placeItems: 'stretch',\n // Disable transition during panel resize for snappy feedback\n // Also disable transition when not ready to prevent initial animation\n // Only animate when has-transition is enabled (and not dragging/not-ready)\n transition: {\n '': 'none',\n 'has-transition': 'inset $transition ease-out',\n 'dragging | not-ready': 'none',\n },\n },\n },\n});\n\nexport interface CubeLayoutProps\n extends BaseProps,\n OuterStyleProps,\n BlockStyleProps,\n ColorStyleProps,\n FlowStyleProps {\n /** Switch to grid display mode */\n isGrid?: boolean;\n /** Grid template columns (when isGrid=true) */\n columns?: Styles['gridColumns'];\n /** Grid template rows (when isGrid=true) */\n rows?: Styles['gridRows'];\n /** Grid template shorthand */\n template?: Styles['gridTemplate'];\n /** Padding for content areas (Layout.Content components). Default: '1x' */\n contentPadding?: Styles['padding'];\n /** Enable transition animation for Inner content when panels open/close */\n hasTransition?: boolean;\n /** Minimum size reserved for the content area between panels. Default: 320 */\n minContentSize?: number;\n /** Styles for wrapper and Inner sub-element */\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 * @internal Force show dev warning even in production (for storybook testing)\n */\n _forceShowDevWarning?: boolean;\n /**\n * When true, applies overflow: hidden to the root element.\n * By default, overflow is visible.\n */\n doNotOverflow?: boolean;\n}\n\nfunction LayoutInner(\n props: CubeLayoutProps & { forwardedRef?: ForwardedRef<HTMLDivElement> },\n) {\n const layoutActions = useLayoutActionsContext();\n const layoutState = useLayoutStateContext();\n const layoutRefs = useLayoutRefsContext();\n const localRef = useRef<HTMLDivElement>(null);\n const [isAutoHeight, setIsAutoHeight] = useState(false);\n const [isCollapsed, setIsCollapsed] = useState(false);\n\n const {\n isGrid,\n columns,\n rows,\n template,\n contentPadding,\n hasTransition = false,\n minContentSize,\n styles,\n children,\n style,\n forwardedRef,\n innerRef: innerRefProp,\n innerProps,\n _forceShowDevWarning,\n doNotOverflow,\n ...otherProps\n } = props;\n\n const combinedInnerRef = useCombinedRefs(innerRefProp);\n const updateContainerSize = layoutActions?.updateContainerSize;\n\n useResizeObserver({\n ref: localRef,\n onResize: useCallback(() => {\n if (localRef.current) {\n updateContainerSize?.(\n localRef.current.offsetWidth,\n localRef.current.offsetHeight,\n );\n }\n }, [updateContainerSize]),\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 // Calculate if the layout flow is vertical (for auto-border feature)\n // Default flow is 'column' (vertical), only horizontal when explicitly set to 'row'\n const isVertical = useMemo(() => {\n const flowFromProp = innerStyles?.flow;\n const flowFromStyles = (styles?.Inner as Record<string, unknown>)?.flow;\n const flowValue = flowFromProp ?? flowFromStyles;\n\n return typeof flowValue !== 'string' || !flowValue.startsWith('row');\n }, [innerStyles?.flow, styles?.Inner]);\n\n // Merge styles using the same pattern as LayoutPane\n const finalStyles = useMemo(() => {\n // Handle grid mode and grid properties\n const gridStyles: Styles = {};\n\n if (isGrid) {\n gridStyles.display = 'grid';\n }\n\n if (columns) {\n gridStyles.gridColumns = columns;\n }\n\n if (rows) {\n gridStyles.gridRows = rows;\n }\n\n if (template) {\n gridStyles.gridTemplate = template;\n }\n\n return mergeStyles(\n outerStyles,\n contentPadding != null ? { '$content-padding': contentPadding } : null,\n styles,\n { Inner: mergeStyles(innerStyles, gridStyles, styles?.Inner as Styles) },\n );\n }, [\n outerStyles,\n innerStyles,\n contentPadding,\n styles,\n isGrid,\n columns,\n rows,\n template,\n ]);\n\n // Calculate inset values from panel sizes\n const panelSizes = layoutState?.panelSizes ?? {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n };\n\n const isDragging = layoutState?.isDragging ?? false;\n const isReady = layoutState?.isReady ?? true;\n const markReady = layoutActions?.markReady;\n const dismissOverlayPanels = layoutActions?.dismissOverlayPanels;\n const hasOverlayPanels = layoutState?.hasOverlayPanels ?? false;\n\n // Mark layout as ready after first paint\n // Using useEffect + requestAnimationFrame ensures:\n // 1. Panels register in useLayoutEffect → correct insets before first paint\n // 2. First paint with not-ready=true (transition disabled)\n // 3. After paint completes → enables transitions for subsequent changes\n useEffect(() => {\n const frameId = requestAnimationFrame(() => {\n markReady?.();\n });\n\n return () => cancelAnimationFrame(frameId);\n }, [markReady]);\n\n // Auto-height detection: if layout collapses to 0 height after initialization,\n // automatically set height to 100% to prevent invisible layout\n useEffect(() => {\n if (isReady && localRef.current && localRef.current.offsetHeight === 0) {\n setIsAutoHeight(true);\n }\n }, [isReady]);\n\n // Second check: if still 0 height after auto-height was applied,\n // show collapsed state with warning\n useEffect(() => {\n if (isAutoHeight && localRef.current) {\n // Use requestAnimationFrame to check after styles have been applied\n const frameId = requestAnimationFrame(() => {\n if (localRef.current && localRef.current.offsetHeight === 0) {\n setIsCollapsed(true);\n }\n });\n\n return () => cancelAnimationFrame(frameId);\n }\n }, [isAutoHeight]);\n\n const insetStyle = useMemo(() => {\n const baseStyle: Record<string, string> = {\n '--inset-top': `${panelSizes.top}px`,\n '--inset-right': `${panelSizes.right}px`,\n '--inset-bottom': `${panelSizes.bottom}px`,\n '--inset-left': `${panelSizes.left}px`,\n };\n\n if (style) {\n return { ...baseStyle, ...style } as CSSProperties;\n }\n\n return baseStyle as CSSProperties;\n }, [panelSizes, style]);\n\n const mods = useMemo(\n () => ({\n dragging: isDragging,\n 'not-ready': !isReady,\n 'has-transition': hasTransition,\n 'auto-height': isAutoHeight && !isCollapsed,\n collapsed: isCollapsed,\n vertical: isVertical,\n 'do-not-overflow': doNotOverflow,\n }),\n [\n isDragging,\n isReady,\n hasTransition,\n isAutoHeight,\n isCollapsed,\n isVertical,\n doNotOverflow,\n ],\n );\n\n // Combine local ref with forwarded ref\n const setRefs = (element: HTMLDivElement | null) => {\n localRef.current = element;\n\n if (typeof forwardedRef === 'function') {\n forwardedRef(element);\n } else if (forwardedRef) {\n forwardedRef.current = element;\n }\n };\n\n // Show dev warning when collapsed and in dev mode (or forced for stories)\n const showDevWarning = isCollapsed && (_forceShowDevWarning || isDevEnv());\n\n // Handle focus entering the Inner element - dismiss overlay panels\n const handleInnerFocus = useCallback(\n (e: FocusEvent<HTMLDivElement>) => {\n // Only dismiss if there are overlay panels\n if (!hasOverlayPanels) return;\n\n // Check if focus is coming from outside the Inner element\n const inner = e.currentTarget;\n const relatedTarget = e.relatedTarget as Node | null;\n\n // If relatedTarget is null or not inside the Inner element,\n // focus is entering from outside - dismiss overlay panels\n if (!relatedTarget || !inner.contains(relatedTarget)) {\n dismissOverlayPanels?.();\n }\n },\n [hasOverlayPanels, dismissOverlayPanels],\n );\n\n // Handle Escape key anywhere in the Layout - dismiss overlay panels\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (hasOverlayPanels && e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n dismissOverlayPanels?.();\n }\n },\n [hasOverlayPanels, dismissOverlayPanels],\n );\n\n return (\n <LayoutElement\n ref={setRefs}\n {...filterBaseProps(otherProps, { eventProps: true })}\n mods={mods}\n styles={finalStyles}\n style={insetStyle}\n onKeyDown={hasOverlayPanels ? handleKeyDown : undefined}\n >\n {showDevWarning ? (\n <Alert theme=\"danger\">\n <b>UIKit:</b> <b>&lt;Layout/&gt;</b> has collapsed to <b>0</b> height.\n Ensure the parent container has a defined height or use the{' '}\n <b>height</b> prop on <b>&lt;Layout/&gt;</b>.\n </Alert>\n ) : (\n <>\n {/* All children go inside the Inner element - panels will portal themselves out */}\n <div\n ref={combinedInnerRef}\n data-element=\"Inner\"\n onFocus={handleInnerFocus}\n {...innerProps}\n >\n {children}\n </div>\n {/* Container for panels to portal into - rendered after Inner so panels paint on top via DOM order */}\n <div\n ref={layoutRefs?.setPanelContainer}\n data-element=\"PanelContainer\"\n />\n </>\n )}\n </LayoutElement>\n );\n}\n\n/**\n * Layout component provides a vertical flex layout with overflow-safe content.\n * Uses a two-element architecture (wrapper + content) to ensure content never overflows.\n */\nfunction Layout(props: CubeLayoutProps, ref: ForwardedRef<HTMLDivElement>) {\n const { hasTransition, minContentSize } = props;\n\n return (\n <LayoutProvider\n hasTransition={hasTransition}\n minContentSize={minContentSize}\n >\n <LayoutInner {...props} forwardedRef={ref} />\n </LayoutProvider>\n );\n}\n\nconst _Layout = forwardRef(Layout);\n\n_Layout.displayName = 'Layout';\n\nexport { _Layout as Layout };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Layout.js","names":[],"sources":["../../../../src/components/content/Layout/Layout.tsx"],"sourcesContent":["import { useResizeObserver } from '@react-aria/utils';\nimport {\n BaseProps,\n BlockStyleProps,\n ColorStyleProps,\n filterBaseProps,\n FlowStyleProps,\n INNER_STYLES,\n mergeStyles,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n CSSProperties,\n FocusEvent,\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n KeyboardEvent,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { isDevEnv } from '../../../utils/is-dev-env';\nimport { useCombinedRefs } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { Alert } from '../Alert';\n\nimport {\n LayoutProvider,\n useLayoutActionsContext,\n useLayoutRefsContext,\n useLayoutStateContext,\n} from './LayoutContext';\n\nconst LayoutElement = tasty({\n as: 'div',\n qa: 'Layout',\n styles: {\n position: 'relative',\n display: 'block',\n overflow: {\n '': 'visible',\n 'do-not-overflow': 'hidden',\n },\n flexGrow: 1,\n placeSelf: 'stretch',\n height: {\n '': 'auto',\n 'auto-height': 'fixed 100%',\n collapsed: '6x',\n },\n\n '$content-padding': '1x',\n // Auto-border size for sub-components (set when layout is vertical)\n '$layout-border-size': {\n '': '0',\n vertical: '1bw',\n },\n\n Inner: {\n // .base-class[data-hover] > [data-element=\"Inner\"] { ...}\n // Direct child selector required for nested layouts\n $: '>',\n container: 'layout / inline-size',\n position: 'absolute',\n inset: '$inset-top $inset-right $inset-bottom $inset-left',\n display: 'flex',\n flow: 'column',\n placeContent: 'stretch',\n placeItems: 'stretch',\n // Disable transition during panel resize for snappy feedback\n // Also disable transition when not ready to prevent initial animation\n // Only animate when has-transition is enabled (and not dragging/not-ready)\n transition: {\n '': 'none',\n 'has-transition': 'inset $transition ease-out',\n 'dragging | not-ready': 'none',\n },\n },\n },\n});\n\nexport interface CubeLayoutProps\n extends BaseProps,\n OuterStyleProps,\n BlockStyleProps,\n ColorStyleProps,\n FlowStyleProps {\n /** Switch to grid display mode */\n isGrid?: boolean;\n /** Grid template columns (when isGrid=true) */\n columns?: Styles['gridColumns'];\n /** Grid template rows (when isGrid=true) */\n rows?: Styles['gridRows'];\n /** Grid template shorthand */\n template?: Styles['gridTemplate'];\n /** Padding for content areas (Layout.Content components). Default: '1x' */\n contentPadding?: Styles['padding'];\n /** Enable transition animation for Inner content when panels open/close */\n hasTransition?: boolean;\n /** Minimum size reserved for the content area between panels. Default: 320 */\n minContentSize?: number;\n /** Styles for wrapper and Inner sub-element */\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 * @internal Force show dev warning even in production (for storybook testing)\n */\n _forceShowDevWarning?: boolean;\n /**\n * When true, applies overflow: hidden to the root element.\n * By default, overflow is visible.\n */\n doNotOverflow?: boolean;\n}\n\nfunction LayoutInner(\n props: CubeLayoutProps & { forwardedRef?: ForwardedRef<HTMLDivElement> },\n) {\n const layoutActions = useLayoutActionsContext();\n const layoutState = useLayoutStateContext();\n const layoutRefs = useLayoutRefsContext();\n const localRef = useRef<HTMLDivElement>(null);\n const [isAutoHeight, setIsAutoHeight] = useState(false);\n const [isCollapsed, setIsCollapsed] = useState(false);\n\n const {\n isGrid,\n columns,\n rows,\n template,\n contentPadding,\n hasTransition = false,\n minContentSize,\n styles,\n children,\n style,\n forwardedRef,\n innerRef: innerRefProp,\n innerProps,\n _forceShowDevWarning,\n doNotOverflow,\n ...otherProps\n } = props;\n\n const combinedInnerRef = useCombinedRefs(innerRefProp);\n const updateContainerSize = layoutActions?.updateContainerSize;\n\n useResizeObserver({\n ref: localRef,\n onResize: useCallback(() => {\n if (localRef.current) {\n updateContainerSize?.(\n localRef.current.offsetWidth,\n localRef.current.offsetHeight,\n );\n }\n }, [updateContainerSize]),\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 // Calculate if the layout flow is vertical (for auto-border feature)\n // Default flow is 'column' (vertical), only horizontal when explicitly set to 'row'\n const isVertical = useMemo(() => {\n const flowFromProp = innerStyles?.flow;\n const flowFromStyles = (styles?.Inner as Record<string, unknown>)?.flow;\n const flowValue = flowFromProp ?? flowFromStyles;\n\n return typeof flowValue !== 'string' || !flowValue.startsWith('row');\n }, [innerStyles?.flow, styles?.Inner]);\n\n // Merge styles using the same pattern as LayoutPane\n const finalStyles = useMemo(() => {\n // Handle grid mode and grid properties\n const gridStyles: Styles = {};\n\n if (isGrid) {\n gridStyles.display = 'grid';\n }\n\n if (columns) {\n gridStyles.gridColumns = columns;\n }\n\n if (rows) {\n gridStyles.gridRows = rows;\n }\n\n if (template) {\n gridStyles.gridTemplate = template;\n }\n\n return mergeStyles(\n outerStyles,\n contentPadding != null ? { '$content-padding': contentPadding } : null,\n styles,\n { Inner: mergeStyles(innerStyles, gridStyles, styles?.Inner as Styles) },\n );\n }, [\n outerStyles,\n innerStyles,\n contentPadding,\n styles,\n isGrid,\n columns,\n rows,\n template,\n ]);\n\n // Calculate inset values from panel sizes\n const panelSizes = layoutState?.panelSizes ?? {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n };\n\n const isDragging = layoutState?.isDragging ?? false;\n const isReady = layoutState?.isReady ?? true;\n const markReady = layoutActions?.markReady;\n const dismissOverlayPanels = layoutActions?.dismissOverlayPanels;\n const hasOverlayPanels = layoutState?.hasOverlayPanels ?? false;\n\n // Mark layout as ready after first paint\n // Using useEffect + requestAnimationFrame ensures:\n // 1. Panels register in useLayoutEffect → correct insets before first paint\n // 2. First paint with not-ready=true (transition disabled)\n // 3. After paint completes → enables transitions for subsequent changes\n useEffect(() => {\n const frameId = requestAnimationFrame(() => {\n markReady?.();\n });\n\n return () => cancelAnimationFrame(frameId);\n }, [markReady]);\n\n // Auto-height detection: if layout collapses to 0 height after initialization,\n // automatically set height to 100% to prevent invisible layout\n useEffect(() => {\n if (isReady && localRef.current && localRef.current.offsetHeight === 0) {\n setIsAutoHeight(true);\n }\n }, [isReady]);\n\n // Second check: if still 0 height after auto-height was applied,\n // show collapsed state with warning\n useEffect(() => {\n if (isAutoHeight && localRef.current) {\n // Use requestAnimationFrame to check after styles have been applied\n const frameId = requestAnimationFrame(() => {\n if (localRef.current && localRef.current.offsetHeight === 0) {\n setIsCollapsed(true);\n }\n });\n\n return () => cancelAnimationFrame(frameId);\n }\n }, [isAutoHeight]);\n\n const insetStyle = useMemo(() => {\n const baseStyle: Record<string, string> = {\n '--inset-top': `${panelSizes.top}px`,\n '--inset-right': `${panelSizes.right}px`,\n '--inset-bottom': `${panelSizes.bottom}px`,\n '--inset-left': `${panelSizes.left}px`,\n };\n\n if (style) {\n return { ...baseStyle, ...style } as CSSProperties;\n }\n\n return baseStyle as CSSProperties;\n }, [panelSizes, style]);\n\n const mods = useMemo(\n () => ({\n dragging: isDragging,\n 'not-ready': !isReady,\n 'has-transition': hasTransition,\n 'auto-height': isAutoHeight && !isCollapsed,\n collapsed: isCollapsed,\n vertical: isVertical,\n 'do-not-overflow': doNotOverflow,\n }),\n [\n isDragging,\n isReady,\n hasTransition,\n isAutoHeight,\n isCollapsed,\n isVertical,\n doNotOverflow,\n ],\n );\n\n // Combine local ref with forwarded ref\n const setRefs = (element: HTMLDivElement | null) => {\n localRef.current = element;\n\n if (typeof forwardedRef === 'function') {\n forwardedRef(element);\n } else if (forwardedRef) {\n forwardedRef.current = element;\n }\n };\n\n // Show dev warning when collapsed and in dev mode (or forced for stories)\n const showDevWarning = isCollapsed && (_forceShowDevWarning || isDevEnv());\n\n // Handle focus entering the Inner element - dismiss overlay panels\n const handleInnerFocus = useCallback(\n (e: FocusEvent<HTMLDivElement>) => {\n // Only dismiss if there are overlay panels\n if (!hasOverlayPanels) return;\n\n // Check if focus is coming from outside the Inner element\n const inner = e.currentTarget;\n const relatedTarget = e.relatedTarget as Node | null;\n\n // If relatedTarget is null or not inside the Inner element,\n // focus is entering from outside - dismiss overlay panels\n if (!relatedTarget || !inner.contains(relatedTarget)) {\n dismissOverlayPanels?.();\n }\n },\n [hasOverlayPanels, dismissOverlayPanels],\n );\n\n // Handle Escape key anywhere in the Layout - dismiss overlay panels\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (hasOverlayPanels && e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n dismissOverlayPanels?.();\n }\n },\n [hasOverlayPanels, dismissOverlayPanels],\n );\n\n return (\n <LayoutElement\n ref={setRefs}\n {...filterBaseProps(otherProps, { eventProps: true })}\n mods={mods}\n styles={finalStyles}\n style={insetStyle}\n onKeyDown={hasOverlayPanels ? handleKeyDown : undefined}\n >\n {showDevWarning ? (\n <Alert theme=\"danger\">\n <b>UIKit:</b> <b>&lt;Layout/&gt;</b> has collapsed to <b>0</b> height.\n Ensure the parent container has a defined height or use the{' '}\n <b>height</b> prop on <b>&lt;Layout/&gt;</b>.\n </Alert>\n ) : (\n <>\n {/* All children go inside the Inner element - panels will portal themselves out */}\n <div\n ref={combinedInnerRef}\n data-element=\"Inner\"\n onFocus={handleInnerFocus}\n {...innerProps}\n >\n {children}\n </div>\n {/* Container for panels to portal into - rendered after Inner so panels paint on top via DOM order */}\n <div\n ref={layoutRefs?.setPanelContainer}\n data-element=\"PanelContainer\"\n />\n </>\n )}\n </LayoutElement>\n );\n}\n\n/**\n * Layout component provides a vertical flex layout with overflow-safe content.\n * Uses a two-element architecture (wrapper + content) to ensure content never overflows.\n */\nfunction Layout(props: CubeLayoutProps, ref: ForwardedRef<HTMLDivElement>) {\n const { hasTransition, minContentSize } = props;\n\n return (\n <LayoutProvider\n hasTransition={hasTransition}\n minContentSize={minContentSize}\n >\n <LayoutInner {...props} forwardedRef={ref} />\n </LayoutProvider>\n );\n}\n\nconst _Layout = forwardRef(Layout);\n\n_Layout.displayName = 'Layout';\n\nexport { _Layout as Layout };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | 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.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | Cube Dev Team */
2
2
  import { _LayoutContainer } from "./LayoutContainer.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,7 +1,8 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | Cube Dev Team */
2
+ import { extractStyles } from "../../../utils/styles.js";
2
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
3
4
  import { LayoutContextReset } from "./LayoutContext.js";
4
- import { CONTAINER_STYLES, extractStyles, filterBaseProps, mergeStyles, tasty } from "@tenphi/tasty";
5
+ import { CONTAINER_STYLES, filterBaseProps, mergeStyles, tasty } from "@tenphi/tasty";
5
6
  import { forwardRef, useMemo } from "react";
6
7
  import { jsx } from "react/jsx-runtime";
7
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutContainer.js","names":[],"sources":["../../../../src/components/content/Layout/LayoutContainer.tsx"],"sourcesContent":["import {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n extractStyles,\n filterBaseProps,\n mergeStyles,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n useMemo,\n} from 'react';\n\nimport { useCombinedRefs } from '../../../utils/react';\n\nimport { LayoutContextReset } from './LayoutContext';\n\nconst ContainerElement = tasty({\n as: 'div',\n qa: 'LayoutContainer',\n styles: {\n display: 'flex',\n flow: 'column',\n flexGrow: 1,\n flexShrink: 1,\n placeItems: 'center start',\n placeContent: 'stretch',\n overflow: 'auto',\n scrollbar: 'thin',\n padding: '$content-padding',\n placeSelf: 'stretch',\n border: {\n '': 0,\n '!:last-child': '($layout-border-size, 1bw) solid #border bottom',\n },\n\n Inner: {\n $: '>',\n placeSelf: 'center',\n display: 'flex',\n flow: 'column',\n boxSizing: 'border-box',\n width: '40x 100% 120x',\n flexGrow: 1,\n\n '$layout-border-size': '0',\n },\n },\n});\n\nexport interface CubeLayoutContainerProps\n extends BaseProps,\n ContainerStyleProps {\n children?: ReactNode;\n /** Custom styles for container and inner elements */\n styles?: Styles;\n /** Custom styles for the inner element */\n innerStyles?: Styles;\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\nfunction LayoutContainer(\n props: CubeLayoutContainerProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n children,\n styles,\n innerStyles: innerStylesProp,\n innerRef: innerRefProp,\n innerProps,\n ...otherProps\n } = props;\n const innerStyles = extractStyles(\n otherProps,\n CONTAINER_STYLES,\n innerStylesProp,\n );\n\n const hasInnerStyles = Object.keys(innerStyles).length > 0;\n\n const finalStyles = useMemo(() => {\n return mergeStyles(styles, hasInnerStyles ? { Inner: innerStyles } : null);\n }, [styles, hasInnerStyles, innerStyles]);\n\n const combinedInnerRef = useCombinedRefs(innerRefProp);\n\n return (\n <ContainerElement\n ref={ref}\n {...filterBaseProps(otherProps, { eventProps: true })}\n styles={finalStyles}\n >\n <div ref={combinedInnerRef} data-element=\"Inner\" {...innerProps}>\n <LayoutContextReset>{children}</LayoutContextReset>\n </div>\n </ContainerElement>\n );\n}\n\nconst _LayoutContainer = forwardRef(LayoutContainer);\n\n_LayoutContainer.displayName = 'Layout.Container';\n\nexport { _LayoutContainer as LayoutContainer };\n"],"mappings":";;;;;;;;AAsBA,MAAM,mBAAmB,MAAM;CAC7B,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,MAAM;EACN,UAAU;EACV,YAAY;EACZ,YAAY;EACZ,cAAc;EACd,UAAU;EACV,WAAW;EACX,SAAS;EACT,WAAW;EACX,QAAQ;GACN,IAAI;GACJ,gBAAgB;GACjB;EAED,OAAO;GACL,GAAG;GACH,WAAW;GACX,SAAS;GACT,MAAM;GACN,WAAW;GACX,OAAO;GACP,UAAU;GAEV,uBAAuB;GACxB;EACF;CACF,CAAC;AAgBF,SAAS,gBACP,OACA,KACA;CACA,MAAM,EACJ,UACA,QACA,aAAa,iBACb,UAAU,cACV,YACA,GAAG,eACD;CACJ,MAAM,cAAc,cAClB,YACA,kBACA,gBACD;CAED,MAAM,iBAAiB,OAAO,KAAK,YAAY,CAAC,SAAS;CAEzD,MAAM,cAAc,cAAc;AAChC,SAAO,YAAY,QAAQ,iBAAiB,EAAE,OAAO,aAAa,GAAG,KAAK;IACzE;EAAC;EAAQ;EAAgB;EAAY,CAAC;CAEzC,MAAM,mBAAmB,gBAAgB,aAAa;AAEtD,QACE,oBAAC;EACM;EACL,GAAI,gBAAgB,YAAY,EAAE,YAAY,MAAM,CAAC;EACrD,QAAQ;YAER,oBAAC;GAAI,KAAK;GAAkB,gBAAa;GAAQ,GAAI;aACnD,oBAAC,sBAAoB,WAA8B;IAC/C;GACW;;AAIvB,MAAM,mBAAmB,WAAW,gBAAgB;AAEpD,iBAAiB,cAAc"}
1
+ {"version":3,"file":"LayoutContainer.js","names":[],"sources":["../../../../src/components/content/Layout/LayoutContainer.tsx"],"sourcesContent":["import {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n mergeStyles,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n useMemo,\n} from 'react';\n\nimport { useCombinedRefs } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\n\nimport { LayoutContextReset } from './LayoutContext';\n\nconst ContainerElement = tasty({\n as: 'div',\n qa: 'LayoutContainer',\n styles: {\n display: 'flex',\n flow: 'column',\n flexGrow: 1,\n flexShrink: 1,\n placeItems: 'center start',\n placeContent: 'stretch',\n overflow: 'auto',\n scrollbar: 'thin',\n padding: '$content-padding',\n placeSelf: 'stretch',\n border: {\n '': 0,\n '!:last-child': '($layout-border-size, 1bw) solid #border bottom',\n },\n\n Inner: {\n $: '>',\n placeSelf: 'center',\n display: 'flex',\n flow: 'column',\n boxSizing: 'border-box',\n width: '40x 100% 120x',\n flexGrow: 1,\n\n '$layout-border-size': '0',\n },\n },\n});\n\nexport interface CubeLayoutContainerProps\n extends BaseProps,\n ContainerStyleProps {\n children?: ReactNode;\n /** Custom styles for container and inner elements */\n styles?: Styles;\n /** Custom styles for the inner element */\n innerStyles?: Styles;\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\nfunction LayoutContainer(\n props: CubeLayoutContainerProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n children,\n styles,\n innerStyles: innerStylesProp,\n innerRef: innerRefProp,\n innerProps,\n ...otherProps\n } = props;\n const innerStyles = extractStyles(\n otherProps,\n CONTAINER_STYLES,\n innerStylesProp,\n );\n\n const hasInnerStyles = Object.keys(innerStyles).length > 0;\n\n const finalStyles = useMemo(() => {\n return mergeStyles(styles, hasInnerStyles ? { Inner: innerStyles } : null);\n }, [styles, hasInnerStyles, innerStyles]);\n\n const combinedInnerRef = useCombinedRefs(innerRefProp);\n\n return (\n <ContainerElement\n ref={ref}\n {...filterBaseProps(otherProps, { eventProps: true })}\n styles={finalStyles}\n >\n <div ref={combinedInnerRef} data-element=\"Inner\" {...innerProps}>\n <LayoutContextReset>{children}</LayoutContextReset>\n </div>\n </ContainerElement>\n );\n}\n\nconst _LayoutContainer = forwardRef(LayoutContainer);\n\n_LayoutContainer.displayName = 'Layout.Container';\n\nexport { _LayoutContainer as LayoutContainer };\n"],"mappings":";;;;;;;;;AAsBA,MAAM,mBAAmB,MAAM;CAC7B,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,MAAM;EACN,UAAU;EACV,YAAY;EACZ,YAAY;EACZ,cAAc;EACd,UAAU;EACV,WAAW;EACX,SAAS;EACT,WAAW;EACX,QAAQ;GACN,IAAI;GACJ,gBAAgB;GACjB;EAED,OAAO;GACL,GAAG;GACH,WAAW;GACX,SAAS;GACT,MAAM;GACN,WAAW;GACX,OAAO;GACP,UAAU;GAEV,uBAAuB;GACxB;EACF;CACF,CAAC;AAgBF,SAAS,gBACP,OACA,KACA;CACA,MAAM,EACJ,UACA,QACA,aAAa,iBACb,UAAU,cACV,YACA,GAAG,eACD;CACJ,MAAM,cAAc,cAClB,YACA,kBACA,gBACD;CAED,MAAM,iBAAiB,OAAO,KAAK,YAAY,CAAC,SAAS;CAEzD,MAAM,cAAc,cAAc;AAChC,SAAO,YAAY,QAAQ,iBAAiB,EAAE,OAAO,aAAa,GAAG,KAAK;IACzE;EAAC;EAAQ;EAAgB;EAAY,CAAC;CAEzC,MAAM,mBAAmB,gBAAgB,aAAa;AAEtD,QACE,oBAAC;EACM;EACL,GAAI,gBAAgB,YAAY,EAAE,YAAY,MAAM,CAAC;EACrD,QAAQ;YAER,oBAAC;GAAI,KAAK;GAAkB,gBAAa;GAAQ,GAAI;aACnD,oBAAC,sBAAoB,WAA8B;IAC/C;GACW;;AAIvB,MAAM,mBAAmB,WAAW,gBAAgB;AAEpD,iBAAiB,cAAc"}
@@ -1,8 +1,9 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | Cube Dev Team */
2
+ import { extractStyles } from "../../../utils/styles.js";
2
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
3
4
  import { LayoutContextReset } from "./LayoutContext.js";
4
5
  import { useTinyScrollbar } from "./hooks/useTinyScrollbar.js";
5
- import { INNER_STYLES, OUTER_STYLES, extractStyles, filterBaseProps, mergeStyles, tasty } from "@tenphi/tasty";
6
+ import { INNER_STYLES, OUTER_STYLES, filterBaseProps, mergeStyles, tasty } from "@tenphi/tasty";
6
7
  import { forwardRef, useMemo, useRef } from "react";
7
8
  import { jsx, jsxs } from "react/jsx-runtime";
8
9
  import { useHover } from "react-aria";
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutContent.js","names":[],"sources":["../../../../src/components/content/Layout/LayoutContent.tsx"],"sourcesContent":["import {\n BaseProps,\n ContainerStyleProps,\n extractStyles,\n filterBaseProps,\n INNER_STYLES,\n mergeStyles,\n Mods,\n OUTER_STYLES,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n useMemo,\n useRef,\n} from 'react';\nimport { useHover } from 'react-aria';\n\nimport { useCombinedRefs } from '../../../utils/react';\n\nimport { useTinyScrollbar } from './hooks/useTinyScrollbar';\nimport { LayoutContextReset } from './LayoutContext';\n\nconst ContentElement = tasty({\n as: 'div',\n qa: 'LayoutContent',\n styles: {\n container: 'content / inline-size',\n position: 'relative',\n display: 'grid',\n gridColumns: '1sf',\n gridRows: '1sf',\n placeContent: 'stretch',\n placeItems: 'stretch',\n placeSelf: 'stretch',\n flexGrow: 1,\n flexShrink: 1,\n height: 'min 0',\n overflow: 'hidden',\n boxSizing: 'content-box',\n border: {\n '': 0,\n '!:last-child': '($layout-border-size, 1bw) solid #border bottom',\n },\n\n Inner: {\n $: '>',\n display: 'flex',\n flow: 'column',\n padding: '($content-padding, 1x)',\n overflow: {\n '': 'auto',\n 'scrollbar=none': 'clip',\n },\n placeSelf: 'stretch',\n scrollbar: {\n '': 'auto',\n 'scrollbar=thin': '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 $: '>',\n position: 'absolute',\n right: '1px',\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: '1px',\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});\n\nexport type ScrollbarType = 'default' | 'thin' | 'tiny' | 'none';\n\nexport interface CubeLayoutContentProps extends BaseProps, ContainerStyleProps {\n /** Scrollbar style: 'default' | 'thin' | 'tiny' | 'none' */\n scrollbar?: ScrollbarType;\n children?: ReactNode;\n /** Additional modifiers to apply */\n mods?: Mods;\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\nfunction LayoutContent(\n props: CubeLayoutContentProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n children,\n scrollbar = 'thin',\n styles,\n mods: externalMods,\n innerRef: innerRefProp,\n innerProps,\n ...otherProps\n } = props;\n const outerStyles = extractStyles(otherProps, OUTER_STYLES);\n const innerStyles = extractStyles(otherProps, INNER_STYLES);\n const internalInnerRef = useRef<HTMLDivElement>(null);\n const combinedInnerRef = useCombinedRefs(innerRefProp, internalInnerRef);\n const combinedRef = useCombinedRefs(ref);\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 const scrollbarStyle = useMemo(() => {\n if (!isTinyScrollbar) return {};\n\n return {\n ...handleVStyle,\n ...handleHStyle,\n };\n }, [isTinyScrollbar, handleVStyle, handleHStyle]);\n\n const mods = useMemo(\n () => ({\n ...externalMods,\n scrollbar,\n hovered: isHovered,\n scrolling: isScrolling,\n }),\n [externalMods, scrollbar, isHovered, isScrolling],\n );\n\n // Merge styles: outer styles to root, inner styles to Inner element\n const finalStyles = useMemo(() => {\n return mergeStyles(\n styles,\n outerStyles,\n innerStyles ? { Inner: innerStyles } : null,\n );\n }, [styles, outerStyles, innerStyles]);\n\n return (\n <ContentElement\n ref={combinedRef}\n {...filterBaseProps(otherProps, { eventProps: true })}\n {...hoverProps}\n mods={mods}\n styles={finalStyles}\n style={scrollbarStyle}\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 </ContentElement>\n );\n}\n\nconst _LayoutContent = forwardRef(LayoutContent);\n\n_LayoutContent.displayName = 'Layout.Content';\n\nexport { _LayoutContent as LayoutContent };\n"],"mappings":";;;;;;;;;;AA0BA,MAAM,iBAAiB,MAAM;CAC3B,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,WAAW;EACX,UAAU;EACV,SAAS;EACT,aAAa;EACb,UAAU;EACV,cAAc;EACd,YAAY;EACZ,WAAW;EACX,UAAU;EACV,YAAY;EACZ,QAAQ;EACR,UAAU;EACV,WAAW;EACX,QAAQ;GACN,IAAI;GACJ,gBAAgB;GACjB;EAED,OAAO;GACL,GAAG;GACH,SAAS;GACT,MAAM;GACN,SAAS;GACT,UAAU;IACR,IAAI;IACJ,kBAAkB;IACnB;GACD,WAAW;GACX,WAAW;IACT,IAAI;IACJ,kBAAkB;IAClB,mCAAmC;IACpC;GAED,uBAAuB;GACxB;EAGD,YAAY;GACV,GAAG;GACH,UAAU;GACV,OAAO;GACP,KAAK;GACL,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,SAAS;IACP,IAAI;IACJ,0CAA0C;IAC3C;GACD,YAAY;GACZ,eAAe;GAChB;EAED,YAAY;GACV,GAAG;GACH,UAAU;GACV,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,MAAM;GACN,SAAS;IACP,IAAI;IACJ,0CAA0C;IAC3C;GACD,YAAY;GACZ,eAAe;GAChB;EACF;CACF,CAAC;AAgBF,SAAS,cACP,OACA,KACA;CACA,MAAM,EACJ,UACA,YAAY,QACZ,QACA,MAAM,cACN,UAAU,cACV,YACA,GAAG,eACD;CACJ,MAAM,cAAc,cAAc,YAAY,aAAa;CAC3D,MAAM,cAAc,cAAc,YAAY,aAAa;CAC3D,MAAM,mBAAmB,OAAuB,KAAK;CACrD,MAAM,mBAAmB,gBAAgB,cAAc,iBAAiB;CACxE,MAAM,cAAc,gBAAgB,IAAI;CACxC,MAAM,kBAAkB,cAAc;CACtC,MAAM,EAAE,YAAY,cAAc,SAAS,EAAE,CAAC;CAE9C,MAAM,EACJ,cACA,cACA,cACA,cACA,gBACE,iBAAiB,kBAAkB,gBAAgB;CAEvD,MAAM,iBAAiB,cAAc;AACnC,MAAI,CAAC,gBAAiB,QAAO,EAAE;AAE/B,SAAO;GACL,GAAG;GACH,GAAG;GACJ;IACA;EAAC;EAAiB;EAAc;EAAa,CAAC;CAEjD,MAAM,OAAO,eACJ;EACL,GAAG;EACH;EACA,SAAS;EACT,WAAW;EACZ,GACD;EAAC;EAAc;EAAW;EAAW;EAAY,CAClD;CAGD,MAAM,cAAc,cAAc;AAChC,SAAO,YACL,QACA,aACA,cAAc,EAAE,OAAO,aAAa,GAAG,KACxC;IACA;EAAC;EAAQ;EAAa;EAAY,CAAC;AAEtC,QACE,qBAAC;EACC,KAAK;EACL,GAAI,gBAAgB,YAAY,EAAE,YAAY,MAAM,CAAC;EACrD,GAAI;EACE;EACN,QAAQ;EACR,OAAO;;GAEP,oBAAC;IAAI,KAAK;IAAkB,gBAAa;IAAQ,GAAI;cACnD,oBAAC,sBAAoB,WAA8B;KAC/C;GACL,mBAAmB,gBAAgB,oBAAC,SAAI,gBAAa,eAAe;GACpE,mBAAmB,gBAAgB,oBAAC,SAAI,gBAAa,eAAe;;GACtD;;AAIrB,MAAM,iBAAiB,WAAW,cAAc;AAEhD,eAAe,cAAc"}
1
+ {"version":3,"file":"LayoutContent.js","names":[],"sources":["../../../../src/components/content/Layout/LayoutContent.tsx"],"sourcesContent":["import {\n BaseProps,\n ContainerStyleProps,\n filterBaseProps,\n INNER_STYLES,\n mergeStyles,\n Mods,\n OUTER_STYLES,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n useMemo,\n useRef,\n} from 'react';\nimport { useHover } from 'react-aria';\n\nimport { useCombinedRefs } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\n\nimport { useTinyScrollbar } from './hooks/useTinyScrollbar';\nimport { LayoutContextReset } from './LayoutContext';\n\nconst ContentElement = tasty({\n as: 'div',\n qa: 'LayoutContent',\n styles: {\n container: 'content / inline-size',\n position: 'relative',\n display: 'grid',\n gridColumns: '1sf',\n gridRows: '1sf',\n placeContent: 'stretch',\n placeItems: 'stretch',\n placeSelf: 'stretch',\n flexGrow: 1,\n flexShrink: 1,\n height: 'min 0',\n overflow: 'hidden',\n boxSizing: 'content-box',\n border: {\n '': 0,\n '!:last-child': '($layout-border-size, 1bw) solid #border bottom',\n },\n\n Inner: {\n $: '>',\n display: 'flex',\n flow: 'column',\n padding: '($content-padding, 1x)',\n overflow: {\n '': 'auto',\n 'scrollbar=none': 'clip',\n },\n placeSelf: 'stretch',\n scrollbar: {\n '': 'auto',\n 'scrollbar=thin': '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 $: '>',\n position: 'absolute',\n right: '1px',\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: '1px',\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});\n\nexport type ScrollbarType = 'default' | 'thin' | 'tiny' | 'none';\n\nexport interface CubeLayoutContentProps extends BaseProps, ContainerStyleProps {\n /** Scrollbar style: 'default' | 'thin' | 'tiny' | 'none' */\n scrollbar?: ScrollbarType;\n children?: ReactNode;\n /** Additional modifiers to apply */\n mods?: Mods;\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\nfunction LayoutContent(\n props: CubeLayoutContentProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n children,\n scrollbar = 'thin',\n styles,\n mods: externalMods,\n innerRef: innerRefProp,\n innerProps,\n ...otherProps\n } = props;\n const outerStyles = extractStyles(otherProps, OUTER_STYLES);\n const innerStyles = extractStyles(otherProps, INNER_STYLES);\n const internalInnerRef = useRef<HTMLDivElement>(null);\n const combinedInnerRef = useCombinedRefs(innerRefProp, internalInnerRef);\n const combinedRef = useCombinedRefs(ref);\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 const scrollbarStyle = useMemo(() => {\n if (!isTinyScrollbar) return {};\n\n return {\n ...handleVStyle,\n ...handleHStyle,\n };\n }, [isTinyScrollbar, handleVStyle, handleHStyle]);\n\n const mods = useMemo(\n () => ({\n ...externalMods,\n scrollbar,\n hovered: isHovered,\n scrolling: isScrolling,\n }),\n [externalMods, scrollbar, isHovered, isScrolling],\n );\n\n // Merge styles: outer styles to root, inner styles to Inner element\n const finalStyles = useMemo(() => {\n return mergeStyles(\n styles,\n outerStyles,\n innerStyles ? { Inner: innerStyles } : null,\n );\n }, [styles, outerStyles, innerStyles]);\n\n return (\n <ContentElement\n ref={combinedRef}\n {...filterBaseProps(otherProps, { eventProps: true })}\n {...hoverProps}\n mods={mods}\n styles={finalStyles}\n style={scrollbarStyle}\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 </ContentElement>\n );\n}\n\nconst _LayoutContent = forwardRef(LayoutContent);\n\n_LayoutContent.displayName = 'Layout.Content';\n\nexport { _LayoutContent as LayoutContent };\n"],"mappings":";;;;;;;;;;;AA0BA,MAAM,iBAAiB,MAAM;CAC3B,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,WAAW;EACX,UAAU;EACV,SAAS;EACT,aAAa;EACb,UAAU;EACV,cAAc;EACd,YAAY;EACZ,WAAW;EACX,UAAU;EACV,YAAY;EACZ,QAAQ;EACR,UAAU;EACV,WAAW;EACX,QAAQ;GACN,IAAI;GACJ,gBAAgB;GACjB;EAED,OAAO;GACL,GAAG;GACH,SAAS;GACT,MAAM;GACN,SAAS;GACT,UAAU;IACR,IAAI;IACJ,kBAAkB;IACnB;GACD,WAAW;GACX,WAAW;IACT,IAAI;IACJ,kBAAkB;IAClB,mCAAmC;IACpC;GAED,uBAAuB;GACxB;EAGD,YAAY;GACV,GAAG;GACH,UAAU;GACV,OAAO;GACP,KAAK;GACL,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,MAAM;GACN,SAAS;IACP,IAAI;IACJ,0CAA0C;IAC3C;GACD,YAAY;GACZ,eAAe;GAChB;EAED,YAAY;GACV,GAAG;GACH,UAAU;GACV,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,MAAM;GACN,SAAS;IACP,IAAI;IACJ,0CAA0C;IAC3C;GACD,YAAY;GACZ,eAAe;GAChB;EACF;CACF,CAAC;AAgBF,SAAS,cACP,OACA,KACA;CACA,MAAM,EACJ,UACA,YAAY,QACZ,QACA,MAAM,cACN,UAAU,cACV,YACA,GAAG,eACD;CACJ,MAAM,cAAc,cAAc,YAAY,aAAa;CAC3D,MAAM,cAAc,cAAc,YAAY,aAAa;CAC3D,MAAM,mBAAmB,OAAuB,KAAK;CACrD,MAAM,mBAAmB,gBAAgB,cAAc,iBAAiB;CACxE,MAAM,cAAc,gBAAgB,IAAI;CACxC,MAAM,kBAAkB,cAAc;CACtC,MAAM,EAAE,YAAY,cAAc,SAAS,EAAE,CAAC;CAE9C,MAAM,EACJ,cACA,cACA,cACA,cACA,gBACE,iBAAiB,kBAAkB,gBAAgB;CAEvD,MAAM,iBAAiB,cAAc;AACnC,MAAI,CAAC,gBAAiB,QAAO,EAAE;AAE/B,SAAO;GACL,GAAG;GACH,GAAG;GACJ;IACA;EAAC;EAAiB;EAAc;EAAa,CAAC;CAEjD,MAAM,OAAO,eACJ;EACL,GAAG;EACH;EACA,SAAS;EACT,WAAW;EACZ,GACD;EAAC;EAAc;EAAW;EAAW;EAAY,CAClD;CAGD,MAAM,cAAc,cAAc;AAChC,SAAO,YACL,QACA,aACA,cAAc,EAAE,OAAO,aAAa,GAAG,KACxC;IACA;EAAC;EAAQ;EAAa;EAAY,CAAC;AAEtC,QACE,qBAAC;EACC,KAAK;EACL,GAAI,gBAAgB,YAAY,EAAE,YAAY,MAAM,CAAC;EACrD,GAAI;EACE;EACN,QAAQ;EACR,OAAO;;GAEP,oBAAC;IAAI,KAAK;IAAkB,gBAAa;IAAQ,GAAI;cACnD,oBAAC,sBAAoB,WAA8B;KAC/C;GACL,mBAAmB,gBAAgB,oBAAC,SAAI,gBAAa,eAAe;GACpE,mBAAmB,gBAAgB,oBAAC,SAAI,gBAAa,eAAe;;GACtD;;AAIrB,MAAM,iBAAiB,WAAW,cAAc;AAEhD,eAAe,cAAc"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | 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.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | 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.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | 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.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | 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.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | 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,11 +1,12 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.121.6 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.121.7 | Cube Dev Team */
2
+ import { extractStyles } from "../../../utils/styles.js";
2
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
5
  import { useDebouncedValue } from "../../../_internal/hooks/use-debounced-value.js";
5
6
  import { LayoutContextReset } from "./LayoutContext.js";
6
7
  import { useTinyScrollbar } from "./hooks/useTinyScrollbar.js";
7
8
  import { clampSize } from "./utils.js";
8
- import { INNER_STYLES, OUTER_STYLES, extractStyles, filterBaseProps, mergeStyles, tasty } from "@tenphi/tasty";
9
+ import { INNER_STYLES, OUTER_STYLES, filterBaseProps, mergeStyles, tasty } from "@tenphi/tasty";
9
10
  import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from "react";
10
11
  import { jsx, jsxs } from "react/jsx-runtime";
11
12
  import { useFocusRing, useHover, useMove } from "react-aria";