@cube-dev/ui-kit 0.117.0 → 0.119.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1026) hide show
  1. package/dist/CHANGELOG.md +32 -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.d.ts +1 -2
  12. package/dist/components/Block.js +2 -5
  13. package/dist/components/Block.js.map +1 -1
  14. package/dist/components/CollectionItem.js +1 -1
  15. package/dist/components/GlobalStyles.js +2 -57
  16. package/dist/components/GlobalStyles.js.map +1 -1
  17. package/dist/components/GridProvider.d.ts +1 -2
  18. package/dist/components/GridProvider.js +2 -3
  19. package/dist/components/GridProvider.js.map +1 -1
  20. package/dist/components/HiddenInput.js +2 -2
  21. package/dist/components/HiddenInput.js.map +1 -1
  22. package/dist/components/Root.d.ts +1 -2
  23. package/dist/components/Root.js +2 -6
  24. package/dist/components/Root.js.map +1 -1
  25. package/dist/components/actions/Action/Action.d.ts +1 -2
  26. package/dist/components/actions/Action/Action.js +2 -4
  27. package/dist/components/actions/Action/Action.js.map +1 -1
  28. package/dist/components/actions/Banner/Banner.d.ts +1 -1
  29. package/dist/components/actions/Banner/Banner.js +5 -5
  30. package/dist/components/actions/Banner/Banner.js.map +1 -1
  31. package/dist/components/actions/Button/Button.d.ts +2 -1769
  32. package/dist/components/actions/Button/Button.js +2 -4
  33. package/dist/components/actions/Button/Button.js.map +1 -1
  34. package/dist/components/actions/ButtonGroup/ButtonGroup.js +2 -2
  35. package/dist/components/actions/ButtonGroup/ButtonGroup.js.map +1 -1
  36. package/dist/components/actions/CommandMenu/CommandMenu.d.ts +1 -3
  37. package/dist/components/actions/CommandMenu/CommandMenu.js +2 -4
  38. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  39. package/dist/components/actions/CommandMenu/styled.js +3 -3
  40. package/dist/components/actions/CommandMenu/styled.js.map +1 -1
  41. package/dist/components/actions/ItemAction/ItemAction.d.ts +1 -3
  42. package/dist/components/actions/ItemAction/ItemAction.js +2 -2
  43. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  44. package/dist/components/actions/ItemActionContext.js +1 -1
  45. package/dist/components/actions/ItemButton/ItemButton.d.ts +1 -2
  46. package/dist/components/actions/ItemButton/ItemButton.js +2 -2
  47. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  48. package/dist/components/actions/Link/Link.js +1 -1
  49. package/dist/components/actions/Menu/Menu.d.ts +1 -3
  50. package/dist/components/actions/Menu/Menu.js +2 -4
  51. package/dist/components/actions/Menu/Menu.js.map +1 -1
  52. package/dist/components/actions/Menu/MenuItem.d.ts +1 -2
  53. package/dist/components/actions/Menu/MenuItem.js +1 -1
  54. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  55. package/dist/components/actions/Menu/MenuSection.d.ts +1 -2
  56. package/dist/components/actions/Menu/MenuSection.js +1 -1
  57. package/dist/components/actions/Menu/MenuSection.js.map +1 -1
  58. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  59. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  60. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  61. package/dist/components/actions/Menu/context.js +1 -1
  62. package/dist/components/actions/Menu/styled.js +2 -2
  63. package/dist/components/actions/Menu/styled.js.map +1 -1
  64. package/dist/components/actions/index.js +1 -1
  65. package/dist/components/actions/use-action.d.ts +1 -2
  66. package/dist/components/actions/use-action.js +2 -2
  67. package/dist/components/actions/use-action.js.map +1 -1
  68. package/dist/components/actions/use-anchored-menu.js +1 -1
  69. package/dist/components/actions/use-context-menu.js +1 -1
  70. package/dist/components/content/ActiveZone/ActiveZone.d.ts +1 -2
  71. package/dist/components/content/ActiveZone/ActiveZone.js +2 -5
  72. package/dist/components/content/ActiveZone/ActiveZone.js.map +1 -1
  73. package/dist/components/content/Alert/Alert.js +2 -2
  74. package/dist/components/content/Alert/Alert.js.map +1 -1
  75. package/dist/components/content/Alert/types.d.ts +1 -2
  76. package/dist/components/content/Alert/use-alert.js +2 -4
  77. package/dist/components/content/Alert/use-alert.js.map +1 -1
  78. package/dist/components/content/Avatar/Avatar.d.ts +1 -3
  79. package/dist/components/content/Avatar/Avatar.js +2 -5
  80. package/dist/components/content/Avatar/Avatar.js.map +1 -1
  81. package/dist/components/content/Badge/Badge.js +2 -2
  82. package/dist/components/content/Badge/Badge.js.map +1 -1
  83. package/dist/components/content/Card/Card.d.ts +1 -2
  84. package/dist/components/content/Card/Card.js +2 -5
  85. package/dist/components/content/Card/Card.js.map +1 -1
  86. package/dist/components/content/Content.d.ts +1 -2
  87. package/dist/components/content/Content.js +2 -5
  88. package/dist/components/content/Content.js.map +1 -1
  89. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.d.ts +1 -3
  90. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +2 -4
  91. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
  92. package/dist/components/content/CopySnippet/CopySnippet.js +2 -2
  93. package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
  94. package/dist/components/content/Disclosure/Disclosure.d.ts +1 -3
  95. package/dist/components/content/Disclosure/Disclosure.js +2 -4
  96. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  97. package/dist/components/content/Divider.d.ts +1 -2
  98. package/dist/components/content/Divider.js +2 -4
  99. package/dist/components/content/Divider.js.map +1 -1
  100. package/dist/components/content/Footer.d.ts +1 -2
  101. package/dist/components/content/Footer.js +2 -5
  102. package/dist/components/content/Footer.js.map +1 -1
  103. package/dist/components/content/Header.d.ts +1 -2
  104. package/dist/components/content/Header.js +2 -5
  105. package/dist/components/content/Header.js.map +1 -1
  106. package/dist/components/content/HotKeys/HotKeys.d.ts +1 -2
  107. package/dist/components/content/HotKeys/HotKeys.js +2 -5
  108. package/dist/components/content/HotKeys/HotKeys.js.map +1 -1
  109. package/dist/components/content/Item/Item.d.ts +1 -3
  110. package/dist/components/content/Item/Item.js +2 -3
  111. package/dist/components/content/Item/Item.js.map +1 -1
  112. package/dist/components/content/ItemBadge/ItemBadge.d.ts +1 -2
  113. package/dist/components/content/ItemBadge/ItemBadge.js +2 -2
  114. package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
  115. package/dist/components/content/Layout/GridLayout.d.ts +1 -2
  116. package/dist/components/content/Layout/GridLayout.js +2 -2
  117. package/dist/components/content/Layout/GridLayout.js.map +1 -1
  118. package/dist/components/content/Layout/Layout.d.ts +1 -3
  119. package/dist/components/content/Layout/Layout.js +3 -7
  120. package/dist/components/content/Layout/Layout.js.map +1 -1
  121. package/dist/components/content/Layout/LayoutBlock.js +2 -2
  122. package/dist/components/content/Layout/LayoutBlock.js.map +1 -1
  123. package/dist/components/content/Layout/LayoutCenter.js +2 -2
  124. package/dist/components/content/Layout/LayoutCenter.js.map +1 -1
  125. package/dist/components/content/Layout/LayoutContainer.d.ts +1 -3
  126. package/dist/components/content/Layout/LayoutContainer.js +2 -6
  127. package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
  128. package/dist/components/content/Layout/LayoutContent.d.ts +1 -2
  129. package/dist/components/content/Layout/LayoutContent.js +2 -6
  130. package/dist/components/content/Layout/LayoutContent.js.map +1 -1
  131. package/dist/components/content/Layout/LayoutContext.js +1 -1
  132. package/dist/components/content/Layout/LayoutFlex.js +2 -2
  133. package/dist/components/content/Layout/LayoutFlex.js.map +1 -1
  134. package/dist/components/content/Layout/LayoutFooter.js +2 -2
  135. package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
  136. package/dist/components/content/Layout/LayoutGrid.d.ts +1 -2
  137. package/dist/components/content/Layout/LayoutGrid.js +2 -2
  138. package/dist/components/content/Layout/LayoutGrid.js.map +1 -1
  139. package/dist/components/content/Layout/LayoutHeader.js +2 -2
  140. package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
  141. package/dist/components/content/Layout/LayoutPane.d.ts +1 -3
  142. package/dist/components/content/Layout/LayoutPane.js +2 -6
  143. package/dist/components/content/Layout/LayoutPane.js.map +1 -1
  144. package/dist/components/content/Layout/LayoutPanel.d.ts +1 -3
  145. package/dist/components/content/Layout/LayoutPanel.js +2 -6
  146. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  147. package/dist/components/content/Layout/LayoutPanelHeader.d.ts +1 -2
  148. package/dist/components/content/Layout/LayoutPanelHeader.js +2 -4
  149. package/dist/components/content/Layout/LayoutPanelHeader.js.map +1 -1
  150. package/dist/components/content/Layout/LayoutToolbar.js +2 -2
  151. package/dist/components/content/Layout/LayoutToolbar.js.map +1 -1
  152. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  153. package/dist/components/content/Layout/index.js +1 -1
  154. package/dist/components/content/Layout/utils.js +1 -1
  155. package/dist/components/content/Paragraph.d.ts +1 -2
  156. package/dist/components/content/Paragraph.js +2 -3
  157. package/dist/components/content/Paragraph.js.map +1 -1
  158. package/dist/components/content/Placeholder/Placeholder.d.ts +1 -3
  159. package/dist/components/content/Placeholder/Placeholder.js +2 -6
  160. package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
  161. package/dist/components/content/PrismCode/PrismCode.d.ts +1 -3
  162. package/dist/components/content/PrismCode/PrismCode.js +2 -3
  163. package/dist/components/content/PrismCode/PrismCode.js.map +1 -1
  164. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  165. package/dist/components/content/PrismDiffCode/PrismDiffCode.d.ts +1 -3
  166. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  167. package/dist/components/content/PrismDiffCode/PrismDiffCode.js.map +1 -1
  168. package/dist/components/content/Result/Result.d.ts +1 -2
  169. package/dist/components/content/Result/Result.js +2 -5
  170. package/dist/components/content/Result/Result.js.map +1 -1
  171. package/dist/components/content/Skeleton/Skeleton.d.ts +1 -2
  172. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  173. package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
  174. package/dist/components/content/Tag/Tag.d.ts +1 -2
  175. package/dist/components/content/Tag/Tag.js +2 -2
  176. package/dist/components/content/Tag/Tag.js.map +1 -1
  177. package/dist/components/content/Text.d.ts +128 -159
  178. package/dist/components/content/Text.js +2 -5
  179. package/dist/components/content/Text.js.map +1 -1
  180. package/dist/components/content/TextItem/TextItem.d.ts +1 -2
  181. package/dist/components/content/TextItem/TextItem.js +2 -5
  182. package/dist/components/content/TextItem/TextItem.js.map +1 -1
  183. package/dist/components/content/Title.d.ts +1 -2
  184. package/dist/components/content/Title.js +2 -5
  185. package/dist/components/content/Title.js.map +1 -1
  186. package/dist/components/content/highlightText.js +1 -1
  187. package/dist/components/content/highlightText.js.map +1 -1
  188. package/dist/components/content/use-auto-tooltip.d.ts +1 -1
  189. package/dist/components/content/use-auto-tooltip.js +1 -1
  190. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  191. package/dist/components/fields/Checkbox/Checkbox.d.ts +1 -3
  192. package/dist/components/fields/Checkbox/Checkbox.js +2 -5
  193. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  194. package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +1 -3
  195. package/dist/components/fields/Checkbox/CheckboxGroup.js +2 -4
  196. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  197. package/dist/components/fields/Checkbox/context.js +1 -1
  198. package/dist/components/fields/ComboBox/ComboBox.d.ts +1 -3
  199. package/dist/components/fields/ComboBox/ComboBox.js +2 -4
  200. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  201. package/dist/components/fields/DatePicker/DateInput.d.ts +1 -3
  202. package/dist/components/fields/DatePicker/DateInput.js +2 -3
  203. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  204. package/dist/components/fields/DatePicker/DateInputBase.js +2 -4
  205. package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
  206. package/dist/components/fields/DatePicker/DatePicker.d.ts +1 -3
  207. package/dist/components/fields/DatePicker/DatePicker.js +2 -3
  208. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  209. package/dist/components/fields/DatePicker/DatePickerButton.js +2 -2
  210. package/dist/components/fields/DatePicker/DatePickerButton.js.map +1 -1
  211. package/dist/components/fields/DatePicker/DatePickerElement.js +2 -2
  212. package/dist/components/fields/DatePicker/DatePickerElement.js.map +1 -1
  213. package/dist/components/fields/DatePicker/DatePickerInput.js +2 -2
  214. package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
  215. package/dist/components/fields/DatePicker/DatePickerSegment.js +2 -2
  216. package/dist/components/fields/DatePicker/DatePickerSegment.js.map +1 -1
  217. package/dist/components/fields/DatePicker/DateRangePicker.d.ts +1 -3
  218. package/dist/components/fields/DatePicker/DateRangePicker.js +2 -4
  219. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  220. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +1 -3
  221. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +2 -4
  222. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  223. package/dist/components/fields/DatePicker/TimeInput.d.ts +1 -3
  224. package/dist/components/fields/DatePicker/TimeInput.js +2 -3
  225. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  226. package/dist/components/fields/DatePicker/intl.js +1 -1
  227. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  228. package/dist/components/fields/DatePicker/props.js +1 -1
  229. package/dist/components/fields/DatePicker/utils.js +1 -1
  230. package/dist/components/fields/FileInput/FileInput.d.ts +1 -3
  231. package/dist/components/fields/FileInput/FileInput.js +2 -4
  232. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  233. package/dist/components/fields/FilterListBox/FilterListBox.d.ts +1 -2
  234. package/dist/components/fields/FilterListBox/FilterListBox.js +5 -7
  235. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  236. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +1 -3
  237. package/dist/components/fields/FilterPicker/FilterPicker.js +2 -5
  238. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  239. package/dist/components/fields/Input/Input.js +1 -1
  240. package/dist/components/fields/ListBox/ListBox.d.ts +1 -3
  241. package/dist/components/fields/ListBox/ListBox.js +2 -5
  242. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  243. package/dist/components/fields/NumberInput/NumberInput.js +2 -2
  244. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  245. package/dist/components/fields/NumberInput/StepButton.js +2 -2
  246. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  247. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  248. package/dist/components/fields/Picker/Picker.d.ts +1 -3
  249. package/dist/components/fields/Picker/Picker.js +2 -5
  250. package/dist/components/fields/Picker/Picker.js.map +1 -1
  251. package/dist/components/fields/RadioGroup/Radio.d.ts +1 -2
  252. package/dist/components/fields/RadioGroup/Radio.js +2 -5
  253. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  254. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +1 -3
  255. package/dist/components/fields/RadioGroup/RadioGroup.js +2 -4
  256. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  257. package/dist/components/fields/RadioGroup/context.js +1 -1
  258. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  259. package/dist/components/fields/Select/Select.d.ts +834 -836
  260. package/dist/components/fields/Select/Select.js +2 -4
  261. package/dist/components/fields/Select/Select.js.map +1 -1
  262. package/dist/components/fields/Slider/Gradation.js +1 -1
  263. package/dist/components/fields/Slider/HueSlider.js +1 -1
  264. package/dist/components/fields/Slider/HueSlider.js.map +1 -1
  265. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  266. package/dist/components/fields/Slider/Slider.d.ts +1 -3
  267. package/dist/components/fields/Slider/Slider.js +2 -3
  268. package/dist/components/fields/Slider/Slider.js.map +1 -1
  269. package/dist/components/fields/Slider/SliderBase.js +2 -4
  270. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  271. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  272. package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
  273. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  274. package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
  275. package/dist/components/fields/Slider/elements.js +2 -2
  276. package/dist/components/fields/Slider/elements.js.map +1 -1
  277. package/dist/components/fields/Slider/index.js +1 -1
  278. package/dist/components/fields/Slider/types.d.ts +1 -3
  279. package/dist/components/fields/Switch/Switch.d.ts +1 -3
  280. package/dist/components/fields/Switch/Switch.js +2 -4
  281. package/dist/components/fields/Switch/Switch.js.map +1 -1
  282. package/dist/components/fields/TextArea/TextArea.js +1 -1
  283. package/dist/components/fields/TextInput/TextInput.js +1 -1
  284. package/dist/components/fields/TextInput/TextInputBase.d.ts +1 -3
  285. package/dist/components/fields/TextInput/TextInputBase.js +3 -5
  286. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  287. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  288. package/dist/components/form/FieldWrapper/FieldWrapper.js +2 -2
  289. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  290. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  291. package/dist/components/form/FieldWrapper/types.d.ts +1 -3
  292. package/dist/components/form/Form/Field.d.ts +1 -2
  293. package/dist/components/form/Form/Field.js +1 -1
  294. package/dist/components/form/Form/Field.js.map +1 -1
  295. package/dist/components/form/Form/Form.d.ts +1 -3
  296. package/dist/components/form/Form/Form.js +2 -5
  297. package/dist/components/form/Form/Form.js.map +1 -1
  298. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  299. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  300. package/dist/components/form/Form/SubmitError.js +1 -1
  301. package/dist/components/form/Form/index.js +1 -1
  302. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  303. package/dist/components/form/Form/use-field/use-field.js +1 -1
  304. package/dist/components/form/Form/use-form.js +2 -2
  305. package/dist/components/form/Form/use-form.js.map +1 -1
  306. package/dist/components/form/Form/validation.js +1 -1
  307. package/dist/components/form/Label.d.ts +1 -3
  308. package/dist/components/form/Label.js +2 -5
  309. package/dist/components/form/Label.js.map +1 -1
  310. package/dist/components/form/wrapper.d.ts +1 -2
  311. package/dist/components/form/wrapper.js +1 -1
  312. package/dist/components/form/wrapper.js.map +1 -1
  313. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  314. package/dist/components/helpers/IconSwitch/IconSwitch.js +2 -2
  315. package/dist/components/helpers/IconSwitch/IconSwitch.js.map +1 -1
  316. package/dist/components/layout/Flex.d.ts +1 -2
  317. package/dist/components/layout/Flex.js +2 -5
  318. package/dist/components/layout/Flex.js.map +1 -1
  319. package/dist/components/layout/Flow.d.ts +1 -2
  320. package/dist/components/layout/Flow.js +2 -5
  321. package/dist/components/layout/Flow.js.map +1 -1
  322. package/dist/components/layout/Grid.d.ts +1 -2
  323. package/dist/components/layout/Grid.js +2 -5
  324. package/dist/components/layout/Grid.js.map +1 -1
  325. package/dist/components/layout/Panel.d.ts +1 -3
  326. package/dist/components/layout/Panel.js +2 -3
  327. package/dist/components/layout/Panel.js.map +1 -1
  328. package/dist/components/layout/Prefix.d.ts +1 -2
  329. package/dist/components/layout/Prefix.js +2 -5
  330. package/dist/components/layout/Prefix.js.map +1 -1
  331. package/dist/components/layout/ResizablePanel.d.ts +1 -2
  332. package/dist/components/layout/ResizablePanel.js +2 -2
  333. package/dist/components/layout/ResizablePanel.js.map +1 -1
  334. package/dist/components/layout/Space.d.ts +1 -2
  335. package/dist/components/layout/Space.js +2 -5
  336. package/dist/components/layout/Space.js.map +1 -1
  337. package/dist/components/layout/Suffix.d.ts +1 -2
  338. package/dist/components/layout/Suffix.js +2 -5
  339. package/dist/components/layout/Suffix.js.map +1 -1
  340. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  341. package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
  342. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  343. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  344. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  345. package/dist/components/navigation/Tabs/TabPanel.js.map +1 -1
  346. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  347. package/dist/components/navigation/Tabs/Tabs.js +2 -4
  348. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  349. package/dist/components/navigation/Tabs/TabsAction.js +2 -2
  350. package/dist/components/navigation/Tabs/TabsAction.js.map +1 -1
  351. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  352. package/dist/components/navigation/Tabs/styled.js +2 -2
  353. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  354. package/dist/components/navigation/Tabs/types.d.ts +1 -3
  355. package/dist/components/navigation/Tabs/types.js +1 -1
  356. package/dist/components/navigation/Tabs/types.js.map +1 -1
  357. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  358. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  359. package/dist/components/organisms/FileTabs/FileTabs.d.ts +1 -2
  360. package/dist/components/organisms/FileTabs/FileTabs.js +2 -2
  361. package/dist/components/organisms/FileTabs/FileTabs.js.map +1 -1
  362. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  363. package/dist/components/other/Calendar/Calendar.js +2 -2
  364. package/dist/components/other/Calendar/Calendar.js.map +1 -1
  365. package/dist/components/other/Calendar/CalendarCell.js +2 -2
  366. package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
  367. package/dist/components/other/Calendar/CalendarGrid.js +2 -2
  368. package/dist/components/other/Calendar/CalendarGrid.js.map +1 -1
  369. package/dist/components/other/Calendar/RangeCalendar.js +2 -2
  370. package/dist/components/other/Calendar/RangeCalendar.js.map +1 -1
  371. package/dist/components/other/CloudLogo/CloudLogo.js +2 -2
  372. package/dist/components/other/CloudLogo/CloudLogo.js.map +1 -1
  373. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  374. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  375. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  376. package/dist/components/overlays/AlertDialog/types.d.ts +1 -1
  377. package/dist/components/overlays/Dialog/Dialog.d.ts +1 -3
  378. package/dist/components/overlays/Dialog/Dialog.js +2 -4
  379. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  380. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  381. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  382. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +1 -2
  383. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  384. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  385. package/dist/components/overlays/Dialog/context.js +1 -1
  386. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  387. package/dist/components/overlays/Modal/Modal.d.ts +1 -1
  388. package/dist/components/overlays/Modal/Modal.js +2 -2
  389. package/dist/components/overlays/Modal/Modal.js.map +1 -1
  390. package/dist/components/overlays/Modal/OpenTransition.js +1 -1
  391. package/dist/components/overlays/Modal/Overlay.js +1 -1
  392. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  393. package/dist/components/overlays/Modal/Popover.d.ts +1 -1
  394. package/dist/components/overlays/Modal/Popover.js +2 -2
  395. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  396. package/dist/components/overlays/Modal/Tray.d.ts +1 -1
  397. package/dist/components/overlays/Modal/Tray.js +2 -2
  398. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  399. package/dist/components/overlays/Modal/Underlay.js +2 -2
  400. package/dist/components/overlays/Modal/Underlay.js.map +1 -1
  401. package/dist/components/overlays/Notifications/Notification.js +2 -2
  402. package/dist/components/overlays/Notifications/Notification.js.map +1 -1
  403. package/dist/components/overlays/Notifications/NotificationAction.js +10 -4
  404. package/dist/components/overlays/Notifications/NotificationAction.js.map +1 -1
  405. package/dist/components/overlays/Notifications/NotificationCard.d.ts +5 -2
  406. package/dist/components/overlays/Notifications/NotificationCard.js +9 -7
  407. package/dist/components/overlays/Notifications/NotificationCard.js.map +1 -1
  408. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  409. package/dist/components/overlays/Notifications/NotificationItem.d.ts +3 -1
  410. package/dist/components/overlays/Notifications/NotificationItem.js +8 -7
  411. package/dist/components/overlays/Notifications/NotificationItem.js.map +1 -1
  412. package/dist/components/overlays/Notifications/OverlayContainer.js +6 -5
  413. package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
  414. package/dist/components/overlays/Notifications/OverlayProvider.js +2 -1
  415. package/dist/components/overlays/Notifications/OverlayProvider.js.map +1 -1
  416. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +3 -3
  417. package/dist/components/overlays/Notifications/PersistentNotificationsList.js.map +1 -1
  418. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  419. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  420. package/dist/components/overlays/Notifications/index.js +1 -1
  421. package/dist/components/overlays/Notifications/types.d.ts +4 -2
  422. package/dist/components/overlays/Notifications/use-notification-state.js +48 -2
  423. package/dist/components/overlays/Notifications/use-notification-state.js.map +1 -1
  424. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  425. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  426. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  427. package/dist/components/overlays/Notifications/use-persistent-state.js +8 -1
  428. package/dist/components/overlays/Notifications/use-persistent-state.js.map +1 -1
  429. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  430. package/dist/components/overlays/Toast/ToastItem.js +2 -2
  431. package/dist/components/overlays/Toast/ToastItem.js.map +1 -1
  432. package/dist/components/overlays/Toast/index.js +1 -1
  433. package/dist/components/overlays/Toast/types.d.ts +2 -0
  434. package/dist/components/overlays/Toast/useProgressToast.js +49 -21
  435. package/dist/components/overlays/Toast/useProgressToast.js.map +1 -1
  436. package/dist/components/overlays/Toast/useToast.js +2 -2
  437. package/dist/components/overlays/Tooltip/Tooltip.d.ts +1 -3
  438. package/dist/components/overlays/Tooltip/Tooltip.js +2 -4
  439. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  440. package/dist/components/overlays/Tooltip/TooltipProvider.d.ts +1 -2
  441. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  442. package/dist/components/overlays/Tooltip/TooltipProvider.js.map +1 -1
  443. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  444. package/dist/components/overlays/Tooltip/context.js +1 -1
  445. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  446. package/dist/components/portal/Portal.js +1 -1
  447. package/dist/components/portal/PortalProvider.js +1 -1
  448. package/dist/components/portal/usePortal.js +1 -1
  449. package/dist/components/shared/InvalidIcon.js +1 -1
  450. package/dist/components/shared/ValidIcon.js +1 -1
  451. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +2 -2
  452. package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
  453. package/dist/components/status/Spin/Cube.js +2 -2
  454. package/dist/components/status/Spin/Cube.js.map +1 -1
  455. package/dist/components/status/Spin/InternalSpinner.js +2 -2
  456. package/dist/components/status/Spin/InternalSpinner.js.map +1 -1
  457. package/dist/components/status/Spin/Spin.js +2 -2
  458. package/dist/components/status/Spin/Spin.js.map +1 -1
  459. package/dist/components/status/Spin/SpinsContainer.js +2 -2
  460. package/dist/components/status/Spin/SpinsContainer.js.map +1 -1
  461. package/dist/components/status/Spin/types.d.ts +1 -2
  462. package/dist/data/item-themes.d.ts +1 -1
  463. package/dist/data/item-themes.js +1 -1
  464. package/dist/data/item-themes.js.map +1 -1
  465. package/dist/data/themes.js +1 -1
  466. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  467. package/dist/icons/AdjustmentsIcon.js +1 -1
  468. package/dist/icons/AiIcon.js +1 -1
  469. package/dist/icons/AreaChartIcon.js +1 -1
  470. package/dist/icons/BackwardIcon.js +1 -1
  471. package/dist/icons/BarChartIcon.js +1 -1
  472. package/dist/icons/BellFilledIcon.js +1 -1
  473. package/dist/icons/BellIcon.js +1 -1
  474. package/dist/icons/BooleanIcon.js +1 -1
  475. package/dist/icons/CalendarEditIcon.js +1 -1
  476. package/dist/icons/CalendarIcon.js +1 -1
  477. package/dist/icons/CaretDownIcon.js +1 -1
  478. package/dist/icons/CaretUpIcon.js +1 -1
  479. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  480. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  481. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  482. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  483. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  484. package/dist/icons/ChartBarLineIcon.js +1 -1
  485. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  486. package/dist/icons/ChartBarStackedIcon.js +1 -1
  487. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  488. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  489. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  490. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  491. package/dist/icons/ChartBubbleIcon.js +1 -1
  492. package/dist/icons/ChartDonut2Icon.js +1 -1
  493. package/dist/icons/ChartFunnelIcon.js +1 -1
  494. package/dist/icons/ChartHeatmapIcon.js +1 -1
  495. package/dist/icons/ChartKPIIcon.js +1 -1
  496. package/dist/icons/ChartPie2Icon.js +1 -1
  497. package/dist/icons/ChartScatterIcon.js +1 -1
  498. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  499. package/dist/icons/CheckCircleIcon.js +1 -1
  500. package/dist/icons/CheckIcon.js +1 -1
  501. package/dist/icons/CircleFilledIcon.js +1 -1
  502. package/dist/icons/ClearIcon.js +1 -1
  503. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  504. package/dist/icons/CloseCircleIcon.js +1 -1
  505. package/dist/icons/CloseIcon.js +1 -1
  506. package/dist/icons/CodeIcon.js +1 -1
  507. package/dist/icons/ColumnTotalIcon.js +1 -1
  508. package/dist/icons/CopyIcon.js +1 -1
  509. package/dist/icons/CountIcon.js +1 -1
  510. package/dist/icons/CubeIcon.js +1 -1
  511. package/dist/icons/CubePauseIcon.js +1 -1
  512. package/dist/icons/CubePlayIcon.js +1 -1
  513. package/dist/icons/CurrencyDollarIcon.js +1 -1
  514. package/dist/icons/DangerIcon.js +1 -1
  515. package/dist/icons/DashboardIcon.js +1 -1
  516. package/dist/icons/DatabaseIcon.js +1 -1
  517. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  518. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  519. package/dist/icons/DirectionIcon.js +2 -2
  520. package/dist/icons/DirectionIcon.js.map +1 -1
  521. package/dist/icons/DonutIcon.js +1 -1
  522. package/dist/icons/DownIcon.js +1 -1
  523. package/dist/icons/EditIcon.js +1 -1
  524. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  525. package/dist/icons/ExclamationCircleIcon.js +1 -1
  526. package/dist/icons/ExclamationIcon.js +1 -1
  527. package/dist/icons/EyeIcon.js +1 -1
  528. package/dist/icons/EyeInvisibleIcon.js +1 -1
  529. package/dist/icons/FilterIcon.js +1 -1
  530. package/dist/icons/FolderFilledIcon.js +1 -1
  531. package/dist/icons/FolderIcon.js +1 -1
  532. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  533. package/dist/icons/FolderOpenIcon.js +1 -1
  534. package/dist/icons/ForwardIcon.js +1 -1
  535. package/dist/icons/HierarchyIcon.js +1 -1
  536. package/dist/icons/HierarchyOpenIcon.js +1 -1
  537. package/dist/icons/Icon.d.ts +1 -3
  538. package/dist/icons/Icon.js +2 -3
  539. package/dist/icons/Icon.js.map +1 -1
  540. package/dist/icons/InfoCircleIcon.js +1 -1
  541. package/dist/icons/InfoIcon.js +1 -1
  542. package/dist/icons/KeyIcon.js +1 -1
  543. package/dist/icons/LeftIcon.js +1 -1
  544. package/dist/icons/LineChartIcon.js +1 -1
  545. package/dist/icons/LoadingIcon.js +1 -1
  546. package/dist/icons/LockFilledIcon.js +1 -1
  547. package/dist/icons/LockIcon.js +1 -1
  548. package/dist/icons/MoreIcon.js +1 -1
  549. package/dist/icons/NotAllowedIcon.js +1 -1
  550. package/dist/icons/Number123Icon.js +1 -1
  551. package/dist/icons/NumberIcon.js +1 -1
  552. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  553. package/dist/icons/PauseCircleIcon.js +1 -1
  554. package/dist/icons/PauseIcon.js +1 -1
  555. package/dist/icons/PercentageIcon.js +1 -1
  556. package/dist/icons/PieChartIcon.js +1 -1
  557. package/dist/icons/PlayCircleIcon.js +1 -1
  558. package/dist/icons/PlayIcon.js +1 -1
  559. package/dist/icons/PlusIcon.js +1 -1
  560. package/dist/icons/ProgressBarIcon.js +1 -1
  561. package/dist/icons/ReloadIcon.js +1 -1
  562. package/dist/icons/ReportIcon.js +1 -1
  563. package/dist/icons/ReturnIcon.js +1 -1
  564. package/dist/icons/RightIcon.js +1 -1
  565. package/dist/icons/RowTotalsIcon.js +1 -1
  566. package/dist/icons/SchemeIcon.js +1 -1
  567. package/dist/icons/SearchIcon.js +1 -1
  568. package/dist/icons/SemanticQueryIcon.js +1 -1
  569. package/dist/icons/SettingsIcon.js +1 -1
  570. package/dist/icons/ShieldFilledIcon.js +1 -1
  571. package/dist/icons/ShieldIcon.js +1 -1
  572. package/dist/icons/SlashIcon.js +1 -1
  573. package/dist/icons/SparklesIcon.js +1 -1
  574. package/dist/icons/SqlIcon.js +1 -1
  575. package/dist/icons/StatsIcon.js +1 -1
  576. package/dist/icons/StopIcon.js +1 -1
  577. package/dist/icons/StringIcon.js +1 -1
  578. package/dist/icons/SubtotalsIcon.js +1 -1
  579. package/dist/icons/SwitchIcon.js +1 -1
  580. package/dist/icons/TableIcon.js +1 -1
  581. package/dist/icons/ThumbsDownIcon.js +1 -1
  582. package/dist/icons/ThumbsUpIcon.js +1 -1
  583. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  584. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  585. package/dist/icons/ThunderboltIcon.js +1 -1
  586. package/dist/icons/TimeIcon.js +1 -1
  587. package/dist/icons/TrashIcon.js +1 -1
  588. package/dist/icons/UnlockIcon.js +1 -1
  589. package/dist/icons/UpIcon.js +1 -1
  590. package/dist/icons/UserGroupIcon.js +1 -1
  591. package/dist/icons/UserIcon.js +1 -1
  592. package/dist/icons/UserLockIcon.js +1 -1
  593. package/dist/icons/ViewIcon.js +1 -1
  594. package/dist/icons/WarningFilledIcon.js +1 -1
  595. package/dist/icons/WarningIcon.js +1 -1
  596. package/dist/icons/wrap-icon.js +1 -1
  597. package/dist/index.d.ts +4 -35
  598. package/dist/index.js +5 -31
  599. package/dist/index.js.map +1 -1
  600. package/dist/provider.d.ts +1 -2
  601. package/dist/provider.js +1 -1
  602. package/dist/provider.js.map +1 -1
  603. package/dist/providers/TrackingProvider.js +1 -1
  604. package/dist/providers/navigationAdapter.default.js +1 -1
  605. package/dist/shared/form.d.ts +1 -3
  606. package/dist/tokens/base.d.ts +1 -1
  607. package/dist/tokens/base.js +1 -1
  608. package/dist/tokens/base.js.map +1 -1
  609. package/dist/tokens/colors.d.ts +1 -1
  610. package/dist/tokens/colors.js +1 -1
  611. package/dist/tokens/colors.js.map +1 -1
  612. package/dist/tokens/index.d.ts +1 -2
  613. package/dist/tokens/index.js +2 -3
  614. package/dist/tokens/index.js.map +1 -1
  615. package/dist/tokens/layout.d.ts +1 -1
  616. package/dist/tokens/layout.js +1 -1
  617. package/dist/tokens/layout.js.map +1 -1
  618. package/dist/tokens/shadows.d.ts +1 -1
  619. package/dist/tokens/shadows.js +1 -1
  620. package/dist/tokens/shadows.js.map +1 -1
  621. package/dist/tokens/sizes.d.ts +1 -1
  622. package/dist/tokens/sizes.js +1 -1
  623. package/dist/tokens/sizes.js.map +1 -1
  624. package/dist/tokens/spacing.d.ts +1 -1
  625. package/dist/tokens/spacing.js +1 -1
  626. package/dist/tokens/spacing.js.map +1 -1
  627. package/dist/utils/ResizeSensor.js +1 -1
  628. package/dist/utils/index.d.ts +1 -2
  629. package/dist/utils/is-dev-env.js +5 -10
  630. package/dist/utils/is-dev-env.js.map +1 -1
  631. package/dist/utils/modules.js +1 -1
  632. package/dist/utils/promise.js +1 -1
  633. package/dist/utils/raf.js +1 -1
  634. package/dist/utils/random.js +1 -1
  635. package/dist/utils/range.js +1 -1
  636. package/dist/utils/react/RenderCache.js +1 -1
  637. package/dist/utils/react/Slots.js +1 -1
  638. package/dist/utils/react/chain.js +1 -1
  639. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  640. package/dist/utils/react/index.d.ts +3 -3
  641. package/dist/utils/react/index.js +20 -0
  642. package/dist/utils/react/interactions.js +1 -1
  643. package/dist/utils/react/isTextOnly.js +1 -1
  644. package/dist/utils/react/mapProps.js +1 -1
  645. package/dist/utils/react/mergeProps.d.ts +1 -2
  646. package/dist/utils/react/mergeProps.js +2 -2
  647. package/dist/utils/react/mergeProps.js.map +1 -1
  648. package/dist/utils/react/nullableValue.d.ts +1 -2
  649. package/dist/utils/react/nullableValue.js +1 -1
  650. package/dist/utils/react/nullableValue.js.map +1 -1
  651. package/dist/utils/react/resolveIcon.d.ts +1 -2
  652. package/dist/utils/react/resolveIcon.js +1 -1
  653. package/dist/utils/react/resolveIcon.js.map +1 -1
  654. package/dist/utils/react/sharedStore.js +1 -1
  655. package/dist/utils/react/useCombinedRefs.js +1 -1
  656. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  657. package/dist/utils/react/useEventBus.js +1 -1
  658. package/dist/utils/react/useId.js +1 -1
  659. package/dist/utils/react/useIsDarwin.js +1 -1
  660. package/dist/utils/react/useKeySymbols.js +1 -1
  661. package/dist/utils/react/useLayoutEffect.js +1 -1
  662. package/dist/utils/react/useLocalStorage.js +1 -1
  663. package/dist/utils/react/useMergeStyles.d.ts +1 -2
  664. package/dist/utils/react/useMergeStyles.js +2 -2
  665. package/dist/utils/react/useMergeStyles.js.map +1 -1
  666. package/dist/utils/react/useQaProps.js +1 -1
  667. package/dist/utils/react/useViewportSize.js +1 -1
  668. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  669. package/dist/utils/tree.js +1 -1
  670. package/dist/utils/warnings.js +1 -1
  671. package/dist/version.js +2 -2
  672. package/package.json +4 -21
  673. package/dist/_virtual/_rolldown/runtime.js +0 -8
  674. package/dist/chunks/cacheKey.js +0 -71
  675. package/dist/chunks/cacheKey.js.map +0 -1
  676. package/dist/chunks/definitions.js +0 -261
  677. package/dist/chunks/definitions.js.map +0 -1
  678. package/dist/chunks/renderChunk.js +0 -68
  679. package/dist/chunks/renderChunk.js.map +0 -1
  680. package/dist/config.js +0 -232
  681. package/dist/config.js.map +0 -1
  682. package/dist/css-writer.d.ts +0 -46
  683. package/dist/css-writer.js +0 -75
  684. package/dist/css-writer.js.map +0 -1
  685. package/dist/extractor.d.ts +0 -25
  686. package/dist/extractor.js +0 -151
  687. package/dist/extractor.js.map +0 -1
  688. package/dist/injector/injector.js +0 -401
  689. package/dist/injector/injector.js.map +0 -1
  690. package/dist/injector/sheet-manager.js +0 -715
  691. package/dist/injector/sheet-manager.js.map +0 -1
  692. package/dist/injector/types.d.ts +0 -19
  693. package/dist/keyframes/index.js +0 -157
  694. package/dist/keyframes/index.js.map +0 -1
  695. package/dist/parser/classify.js +0 -320
  696. package/dist/parser/classify.js.map +0 -1
  697. package/dist/parser/const.js +0 -34
  698. package/dist/parser/const.js.map +0 -1
  699. package/dist/parser/lru.js +0 -110
  700. package/dist/parser/lru.js.map +0 -1
  701. package/dist/parser/parser.js +0 -117
  702. package/dist/parser/parser.js.map +0 -1
  703. package/dist/parser/tokenizer.js +0 -70
  704. package/dist/parser/tokenizer.js.map +0 -1
  705. package/dist/parser/types.d.ts +0 -38
  706. package/dist/parser/types.js +0 -47
  707. package/dist/parser/types.js.map +0 -1
  708. package/dist/pipeline/conditions.js +0 -378
  709. package/dist/pipeline/conditions.js.map +0 -1
  710. package/dist/pipeline/exclusive.js +0 -232
  711. package/dist/pipeline/exclusive.js.map +0 -1
  712. package/dist/pipeline/index.js +0 -633
  713. package/dist/pipeline/index.js.map +0 -1
  714. package/dist/pipeline/materialize.js +0 -822
  715. package/dist/pipeline/materialize.js.map +0 -1
  716. package/dist/pipeline/parseStateKey.js +0 -422
  717. package/dist/pipeline/parseStateKey.js.map +0 -1
  718. package/dist/pipeline/simplify.js +0 -558
  719. package/dist/pipeline/simplify.js.map +0 -1
  720. package/dist/plugins/okhsl-plugin.js +0 -346
  721. package/dist/plugins/okhsl-plugin.js.map +0 -1
  722. package/dist/plugins/types.d.ts +0 -52
  723. package/dist/properties/index.js +0 -142
  724. package/dist/properties/index.js.map +0 -1
  725. package/dist/states/index.js +0 -162
  726. package/dist/states/index.js.map +0 -1
  727. package/dist/styles/align.js +0 -15
  728. package/dist/styles/align.js.map +0 -1
  729. package/dist/styles/border.js +0 -115
  730. package/dist/styles/border.js.map +0 -1
  731. package/dist/styles/color.js +0 -24
  732. package/dist/styles/color.js.map +0 -1
  733. package/dist/styles/createStyle.js +0 -78
  734. package/dist/styles/createStyle.js.map +0 -1
  735. package/dist/styles/dimension.js +0 -100
  736. package/dist/styles/dimension.js.map +0 -1
  737. package/dist/styles/display.js +0 -68
  738. package/dist/styles/display.js.map +0 -1
  739. package/dist/styles/fade.js +0 -58
  740. package/dist/styles/fade.js.map +0 -1
  741. package/dist/styles/fill.js +0 -52
  742. package/dist/styles/fill.js.map +0 -1
  743. package/dist/styles/flow.js +0 -13
  744. package/dist/styles/flow.js.map +0 -1
  745. package/dist/styles/gap.js +0 -37
  746. package/dist/styles/gap.js.map +0 -1
  747. package/dist/styles/height.js +0 -21
  748. package/dist/styles/height.js.map +0 -1
  749. package/dist/styles/index.js +0 -10
  750. package/dist/styles/index.js.map +0 -1
  751. package/dist/styles/inset.js +0 -143
  752. package/dist/styles/inset.js.map +0 -1
  753. package/dist/styles/justify.js +0 -15
  754. package/dist/styles/justify.js.map +0 -1
  755. package/dist/styles/margin.js +0 -97
  756. package/dist/styles/margin.js.map +0 -1
  757. package/dist/styles/outline.js +0 -66
  758. package/dist/styles/outline.js.map +0 -1
  759. package/dist/styles/padding.js +0 -97
  760. package/dist/styles/padding.js.map +0 -1
  761. package/dist/styles/predefined.js +0 -233
  762. package/dist/styles/predefined.js.map +0 -1
  763. package/dist/styles/preset.js +0 -126
  764. package/dist/styles/preset.js.map +0 -1
  765. package/dist/styles/radius.js +0 -52
  766. package/dist/styles/radius.js.map +0 -1
  767. package/dist/styles/scrollbar.js +0 -109
  768. package/dist/styles/scrollbar.js.map +0 -1
  769. package/dist/styles/shadow.js +0 -28
  770. package/dist/styles/shadow.js.map +0 -1
  771. package/dist/styles/styledScrollbar.js +0 -39
  772. package/dist/styles/styledScrollbar.js.map +0 -1
  773. package/dist/styles/transition.js +0 -139
  774. package/dist/styles/transition.js.map +0 -1
  775. package/dist/styles/types.d.ts +0 -495
  776. package/dist/styles/width.js +0 -21
  777. package/dist/styles/width.js.map +0 -1
  778. package/dist/tasty/chunks/cacheKey.d.ts +0 -2
  779. package/dist/tasty/chunks/cacheKey.js +0 -71
  780. package/dist/tasty/chunks/cacheKey.js.map +0 -1
  781. package/dist/tasty/chunks/definitions.d.ts +0 -38
  782. package/dist/tasty/chunks/definitions.js +0 -261
  783. package/dist/tasty/chunks/definitions.js.map +0 -1
  784. package/dist/tasty/chunks/index.d.ts +0 -4
  785. package/dist/tasty/chunks/renderChunk.d.ts +0 -3
  786. package/dist/tasty/chunks/renderChunk.js +0 -68
  787. package/dist/tasty/chunks/renderChunk.js.map +0 -1
  788. package/dist/tasty/config.d.ts +0 -283
  789. package/dist/tasty/config.js +0 -401
  790. package/dist/tasty/config.js.map +0 -1
  791. package/dist/tasty/debug.d.ts +0 -200
  792. package/dist/tasty/debug.js +0 -734
  793. package/dist/tasty/debug.js.map +0 -1
  794. package/dist/tasty/hooks/index.d.ts +0 -6
  795. package/dist/tasty/hooks/useGlobalStyles.d.ts +0 -28
  796. package/dist/tasty/hooks/useGlobalStyles.js +0 -57
  797. package/dist/tasty/hooks/useGlobalStyles.js.map +0 -1
  798. package/dist/tasty/hooks/useKeyframes.d.ts +0 -57
  799. package/dist/tasty/hooks/useKeyframes.js +0 -55
  800. package/dist/tasty/hooks/useKeyframes.js.map +0 -1
  801. package/dist/tasty/hooks/useProperty.d.ts +0 -80
  802. package/dist/tasty/hooks/useProperty.js +0 -92
  803. package/dist/tasty/hooks/useProperty.js.map +0 -1
  804. package/dist/tasty/hooks/useRawCSS.d.ts +0 -54
  805. package/dist/tasty/hooks/useRawCSS.js +0 -29
  806. package/dist/tasty/hooks/useRawCSS.js.map +0 -1
  807. package/dist/tasty/hooks/useStyles.d.ts +0 -41
  808. package/dist/tasty/hooks/useStyles.js +0 -170
  809. package/dist/tasty/hooks/useStyles.js.map +0 -1
  810. package/dist/tasty/index.d.ts +0 -38
  811. package/dist/tasty/injector/index.d.ts +0 -158
  812. package/dist/tasty/injector/index.js +0 -155
  813. package/dist/tasty/injector/index.js.map +0 -1
  814. package/dist/tasty/injector/injector.d.ts +0 -137
  815. package/dist/tasty/injector/injector.js +0 -401
  816. package/dist/tasty/injector/injector.js.map +0 -1
  817. package/dist/tasty/injector/sheet-manager.d.ts +0 -128
  818. package/dist/tasty/injector/sheet-manager.js +0 -715
  819. package/dist/tasty/injector/sheet-manager.js.map +0 -1
  820. package/dist/tasty/injector/types.d.ts +0 -136
  821. package/dist/tasty/keyframes/index.js +0 -207
  822. package/dist/tasty/keyframes/index.js.map +0 -1
  823. package/dist/tasty/parser/classify.js +0 -320
  824. package/dist/tasty/parser/classify.js.map +0 -1
  825. package/dist/tasty/parser/const.js +0 -34
  826. package/dist/tasty/parser/const.js.map +0 -1
  827. package/dist/tasty/parser/lru.js +0 -110
  828. package/dist/tasty/parser/lru.js.map +0 -1
  829. package/dist/tasty/parser/parser.d.ts +0 -26
  830. package/dist/tasty/parser/parser.js +0 -117
  831. package/dist/tasty/parser/parser.js.map +0 -1
  832. package/dist/tasty/parser/tokenizer.js +0 -70
  833. package/dist/tasty/parser/tokenizer.js.map +0 -1
  834. package/dist/tasty/parser/types.d.ts +0 -47
  835. package/dist/tasty/parser/types.js +0 -47
  836. package/dist/tasty/parser/types.js.map +0 -1
  837. package/dist/tasty/pipeline/conditions.js +0 -378
  838. package/dist/tasty/pipeline/conditions.js.map +0 -1
  839. package/dist/tasty/pipeline/exclusive.d.ts +0 -2
  840. package/dist/tasty/pipeline/exclusive.js +0 -232
  841. package/dist/tasty/pipeline/exclusive.js.map +0 -1
  842. package/dist/tasty/pipeline/index.d.ts +0 -54
  843. package/dist/tasty/pipeline/index.js +0 -639
  844. package/dist/tasty/pipeline/index.js.map +0 -1
  845. package/dist/tasty/pipeline/materialize.js +0 -822
  846. package/dist/tasty/pipeline/materialize.js.map +0 -1
  847. package/dist/tasty/pipeline/parseStateKey.d.ts +0 -2
  848. package/dist/tasty/pipeline/parseStateKey.js +0 -422
  849. package/dist/tasty/pipeline/parseStateKey.js.map +0 -1
  850. package/dist/tasty/pipeline/simplify.js +0 -558
  851. package/dist/tasty/pipeline/simplify.js.map +0 -1
  852. package/dist/tasty/plugins/index.d.ts +0 -3
  853. package/dist/tasty/plugins/okhsl-plugin.d.ts +0 -36
  854. package/dist/tasty/plugins/okhsl-plugin.js +0 -372
  855. package/dist/tasty/plugins/okhsl-plugin.js.map +0 -1
  856. package/dist/tasty/plugins/types.d.ts +0 -72
  857. package/dist/tasty/properties/index.js +0 -159
  858. package/dist/tasty/properties/index.js.map +0 -1
  859. package/dist/tasty/states/index.d.ts +0 -46
  860. package/dist/tasty/states/index.js +0 -390
  861. package/dist/tasty/states/index.js.map +0 -1
  862. package/dist/tasty/static/index.d.ts +0 -6
  863. package/dist/tasty/static/index.js +0 -6
  864. package/dist/tasty/static/tastyStatic.d.ts +0 -47
  865. package/dist/tasty/static/tastyStatic.js +0 -32
  866. package/dist/tasty/static/tastyStatic.js.map +0 -1
  867. package/dist/tasty/static/types.d.ts +0 -50
  868. package/dist/tasty/static/types.js +0 -25
  869. package/dist/tasty/static/types.js.map +0 -1
  870. package/dist/tasty/styles/align.d.ts +0 -16
  871. package/dist/tasty/styles/align.js +0 -15
  872. package/dist/tasty/styles/align.js.map +0 -1
  873. package/dist/tasty/styles/border.d.ts +0 -26
  874. package/dist/tasty/styles/border.js +0 -115
  875. package/dist/tasty/styles/border.js.map +0 -1
  876. package/dist/tasty/styles/color.d.ts +0 -15
  877. package/dist/tasty/styles/color.js +0 -24
  878. package/dist/tasty/styles/color.js.map +0 -1
  879. package/dist/tasty/styles/createStyle.js +0 -78
  880. package/dist/tasty/styles/createStyle.js.map +0 -1
  881. package/dist/tasty/styles/dimension.js +0 -100
  882. package/dist/tasty/styles/dimension.js.map +0 -1
  883. package/dist/tasty/styles/display.d.ts +0 -38
  884. package/dist/tasty/styles/display.js +0 -68
  885. package/dist/tasty/styles/display.js.map +0 -1
  886. package/dist/tasty/styles/fade.d.ts +0 -16
  887. package/dist/tasty/styles/fade.js +0 -58
  888. package/dist/tasty/styles/fade.js.map +0 -1
  889. package/dist/tasty/styles/fill.d.ts +0 -45
  890. package/dist/tasty/styles/fill.js +0 -52
  891. package/dist/tasty/styles/fill.js.map +0 -1
  892. package/dist/tasty/styles/flow.d.ts +0 -17
  893. package/dist/tasty/styles/flow.js +0 -13
  894. package/dist/tasty/styles/flow.js.map +0 -1
  895. package/dist/tasty/styles/gap.d.ts +0 -32
  896. package/dist/tasty/styles/gap.js +0 -37
  897. package/dist/tasty/styles/gap.js.map +0 -1
  898. package/dist/tasty/styles/height.d.ts +0 -18
  899. package/dist/tasty/styles/height.js +0 -21
  900. package/dist/tasty/styles/height.js.map +0 -1
  901. package/dist/tasty/styles/index.d.ts +0 -3
  902. package/dist/tasty/styles/index.js +0 -10
  903. package/dist/tasty/styles/index.js.map +0 -1
  904. package/dist/tasty/styles/inset.d.ts +0 -51
  905. package/dist/tasty/styles/inset.js +0 -143
  906. package/dist/tasty/styles/inset.js.map +0 -1
  907. package/dist/tasty/styles/justify.d.ts +0 -16
  908. package/dist/tasty/styles/justify.js +0 -15
  909. package/dist/tasty/styles/justify.js.map +0 -1
  910. package/dist/tasty/styles/list.d.ts +0 -17
  911. package/dist/tasty/styles/list.js +0 -99
  912. package/dist/tasty/styles/list.js.map +0 -1
  913. package/dist/tasty/styles/margin.d.ts +0 -29
  914. package/dist/tasty/styles/margin.js +0 -97
  915. package/dist/tasty/styles/margin.js.map +0 -1
  916. package/dist/tasty/styles/outline.d.ts +0 -30
  917. package/dist/tasty/styles/outline.js +0 -66
  918. package/dist/tasty/styles/outline.js.map +0 -1
  919. package/dist/tasty/styles/padding.d.ts +0 -29
  920. package/dist/tasty/styles/padding.js +0 -97
  921. package/dist/tasty/styles/padding.js.map +0 -1
  922. package/dist/tasty/styles/predefined.d.ts +0 -75
  923. package/dist/tasty/styles/predefined.js +0 -242
  924. package/dist/tasty/styles/predefined.js.map +0 -1
  925. package/dist/tasty/styles/preset.d.ts +0 -48
  926. package/dist/tasty/styles/preset.js +0 -126
  927. package/dist/tasty/styles/preset.js.map +0 -1
  928. package/dist/tasty/styles/radius.d.ts +0 -15
  929. package/dist/tasty/styles/radius.js +0 -52
  930. package/dist/tasty/styles/radius.js.map +0 -1
  931. package/dist/tasty/styles/scrollbar.d.ts +0 -22
  932. package/dist/tasty/styles/scrollbar.js +0 -109
  933. package/dist/tasty/styles/scrollbar.js.map +0 -1
  934. package/dist/tasty/styles/shadow.d.ts +0 -15
  935. package/dist/tasty/styles/shadow.js +0 -28
  936. package/dist/tasty/styles/shadow.js.map +0 -1
  937. package/dist/tasty/styles/styledScrollbar.d.ts +0 -48
  938. package/dist/tasty/styles/styledScrollbar.js +0 -39
  939. package/dist/tasty/styles/styledScrollbar.js.map +0 -1
  940. package/dist/tasty/styles/transition.d.ts +0 -15
  941. package/dist/tasty/styles/transition.js +0 -139
  942. package/dist/tasty/styles/transition.js.map +0 -1
  943. package/dist/tasty/styles/types.d.ts +0 -499
  944. package/dist/tasty/styles/width.d.ts +0 -18
  945. package/dist/tasty/styles/width.js +0 -21
  946. package/dist/tasty/styles/width.js.map +0 -1
  947. package/dist/tasty/tasty.d.ts +0 -937
  948. package/dist/tasty/tasty.js +0 -191
  949. package/dist/tasty/tasty.js.map +0 -1
  950. package/dist/tasty/types.d.ts +0 -192
  951. package/dist/tasty/utils/cache-wrapper.js +0 -25
  952. package/dist/tasty/utils/cache-wrapper.js.map +0 -1
  953. package/dist/tasty/utils/case-converter.js +0 -9
  954. package/dist/tasty/utils/case-converter.js.map +0 -1
  955. package/dist/tasty/utils/colors.d.ts +0 -6
  956. package/dist/tasty/utils/colors.js +0 -10
  957. package/dist/tasty/utils/colors.js.map +0 -1
  958. package/dist/tasty/utils/dotize.d.ts +0 -27
  959. package/dist/tasty/utils/dotize.js +0 -123
  960. package/dist/tasty/utils/dotize.js.map +0 -1
  961. package/dist/tasty/utils/filter-base-props.d.ts +0 -16
  962. package/dist/tasty/utils/filter-base-props.js +0 -46
  963. package/dist/tasty/utils/filter-base-props.js.map +0 -1
  964. package/dist/tasty/utils/get-display-name.d.ts +0 -8
  965. package/dist/tasty/utils/get-display-name.js +0 -11
  966. package/dist/tasty/utils/get-display-name.js.map +0 -1
  967. package/dist/tasty/utils/hsl-to-rgb.js +0 -39
  968. package/dist/tasty/utils/hsl-to-rgb.js.map +0 -1
  969. package/dist/tasty/utils/is-dev-env.js +0 -20
  970. package/dist/tasty/utils/is-dev-env.js.map +0 -1
  971. package/dist/tasty/utils/merge-styles.d.ts +0 -8
  972. package/dist/tasty/utils/merge-styles.js +0 -147
  973. package/dist/tasty/utils/merge-styles.js.map +0 -1
  974. package/dist/tasty/utils/mod-attrs.d.ts +0 -9
  975. package/dist/tasty/utils/mod-attrs.js +0 -22
  976. package/dist/tasty/utils/mod-attrs.js.map +0 -1
  977. package/dist/tasty/utils/okhsl-to-rgb.js +0 -297
  978. package/dist/tasty/utils/okhsl-to-rgb.js.map +0 -1
  979. package/dist/tasty/utils/process-tokens.d.ts +0 -32
  980. package/dist/tasty/utils/process-tokens.js +0 -172
  981. package/dist/tasty/utils/process-tokens.js.map +0 -1
  982. package/dist/tasty/utils/resolve-recipes.d.ts +0 -18
  983. package/dist/tasty/utils/resolve-recipes.js +0 -144
  984. package/dist/tasty/utils/resolve-recipes.js.map +0 -1
  985. package/dist/tasty/utils/string.js +0 -9
  986. package/dist/tasty/utils/string.js.map +0 -1
  987. package/dist/tasty/utils/styles.d.ts +0 -204
  988. package/dist/tasty/utils/styles.js +0 -577
  989. package/dist/tasty/utils/styles.js.map +0 -1
  990. package/dist/tasty/utils/typography.d.ts +0 -37
  991. package/dist/tasty/utils/typography.js +0 -54
  992. package/dist/tasty/utils/typography.js.map +0 -1
  993. package/dist/tasty/utils/warnings.d.ts +0 -17
  994. package/dist/tasty/utils/warnings.js +0 -17
  995. package/dist/tasty/utils/warnings.js.map +0 -1
  996. package/dist/tasty/zero/babel.d.ts +0 -111
  997. package/dist/tasty/zero/babel.js +0 -283
  998. package/dist/tasty/zero/babel.js.map +0 -1
  999. package/dist/tasty/zero/index.d.ts +0 -4
  1000. package/dist/tasty/zero/index.js +0 -5
  1001. package/dist/tasty/zero/next.d.ts +0 -61
  1002. package/dist/tasty/zero/next.js +0 -79
  1003. package/dist/tasty/zero/next.js.map +0 -1
  1004. package/dist/tasty.config.ts +0 -311
  1005. package/dist/tokens/typography.d.ts +0 -35
  1006. package/dist/tokens/typography.js +0 -238
  1007. package/dist/tokens/typography.js.map +0 -1
  1008. package/dist/utils/cache-wrapper.js +0 -25
  1009. package/dist/utils/cache-wrapper.js.map +0 -1
  1010. package/dist/utils/case-converter.js +0 -9
  1011. package/dist/utils/case-converter.js.map +0 -1
  1012. package/dist/utils/hsl-to-rgb.js +0 -39
  1013. package/dist/utils/hsl-to-rgb.js.map +0 -1
  1014. package/dist/utils/merge-styles.js +0 -147
  1015. package/dist/utils/merge-styles.js.map +0 -1
  1016. package/dist/utils/okhsl-to-rgb.js +0 -297
  1017. package/dist/utils/okhsl-to-rgb.js.map +0 -1
  1018. package/dist/utils/process-tokens.js +0 -29
  1019. package/dist/utils/process-tokens.js.map +0 -1
  1020. package/dist/utils/resolve-recipes.js +0 -144
  1021. package/dist/utils/resolve-recipes.js.map +0 -1
  1022. package/dist/utils/string.js +0 -9
  1023. package/dist/utils/string.js.map +0 -1
  1024. package/dist/utils/styles.d.ts +0 -23
  1025. package/dist/utils/styles.js +0 -338
  1026. package/dist/utils/styles.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutContent.js","names":[],"sources":["../../../../src/components/content/Layout/LayoutContent.tsx"],"sourcesContent":["import {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n useMemo,\n useRef,\n} from 'react';\nimport { useHover } from 'react-aria';\n\nimport {\n BaseProps,\n ContainerStyleProps,\n extractStyles,\n filterBaseProps,\n INNER_STYLES,\n mergeStyles,\n Mods,\n OUTER_STYLES,\n tasty,\n} from '../../../tasty';\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 '': '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,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 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 '': '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,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.117.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.119.0 | 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,6 +1,6 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.117.0 | Cube Dev Team */
2
- import { tasty } from "../../../tasty/tasty.js";
1
+ /** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
3
2
  import { _LayoutContent } from "./LayoutContent.js";
3
+ import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutFlex.js","names":["LayoutContent"],"sources":["../../../../src/components/content/Layout/LayoutFlex.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef } from 'react';\n\nimport { tasty } from '../../../tasty';\n\nimport { CubeLayoutContentProps, LayoutContent } from './LayoutContent';\n\nconst FlexElement = tasty(LayoutContent, {\n qa: 'LayoutFlex',\n styles: {\n container: 'none',\n flexShrink: 0,\n flexGrow: 0,\n\n Inner: {\n display: 'flex',\n flow: 'row',\n padding: 0,\n },\n },\n});\n\nexport interface CubeLayoutFlexProps extends CubeLayoutContentProps {}\n\nfunction LayoutFlex(\n props: CubeLayoutFlexProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const { children, scrollbar = 'tiny', ...otherProps } = props;\n\n return (\n <FlexElement {...otherProps} ref={ref} scrollbar={scrollbar}>\n {children}\n </FlexElement>\n );\n}\n\nconst _LayoutFlex = forwardRef(LayoutFlex);\n\n_LayoutFlex.displayName = 'Layout.Flex';\n\nexport { _LayoutFlex as LayoutFlex };\n"],"mappings":";;;;;;;AAMA,MAAM,cAAc,MAAMA,gBAAe;CACvC,IAAI;CACJ,QAAQ;EACN,WAAW;EACX,YAAY;EACZ,UAAU;EAEV,OAAO;GACL,SAAS;GACT,MAAM;GACN,SAAS;GACV;EACF;CACF,CAAC;AAIF,SAAS,WACP,OACA,KACA;CACA,MAAM,EAAE,UAAU,YAAY,QAAQ,GAAG,eAAe;AAExD,QACE,oBAAC;EAAY,GAAI;EAAiB;EAAgB;EAC/C;GACW;;AAIlB,MAAM,cAAc,WAAW,WAAW;AAE1C,YAAY,cAAc"}
1
+ {"version":3,"file":"LayoutFlex.js","names":["LayoutContent"],"sources":["../../../../src/components/content/Layout/LayoutFlex.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { ForwardedRef, forwardRef } from 'react';\n\nimport { CubeLayoutContentProps, LayoutContent } from './LayoutContent';\n\nconst FlexElement = tasty(LayoutContent, {\n qa: 'LayoutFlex',\n styles: {\n container: 'none',\n flexShrink: 0,\n flexGrow: 0,\n\n Inner: {\n display: 'flex',\n flow: 'row',\n padding: 0,\n },\n },\n});\n\nexport interface CubeLayoutFlexProps extends CubeLayoutContentProps {}\n\nfunction LayoutFlex(\n props: CubeLayoutFlexProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const { children, scrollbar = 'tiny', ...otherProps } = props;\n\n return (\n <FlexElement {...otherProps} ref={ref} scrollbar={scrollbar}>\n {children}\n </FlexElement>\n );\n}\n\nconst _LayoutFlex = forwardRef(LayoutFlex);\n\n_LayoutFlex.displayName = 'Layout.Flex';\n\nexport { _LayoutFlex as LayoutFlex };\n"],"mappings":";;;;;;;AAKA,MAAM,cAAc,MAAMA,gBAAe;CACvC,IAAI;CACJ,QAAQ;EACN,WAAW;EACX,YAAY;EACZ,UAAU;EAEV,OAAO;GACL,SAAS;GACT,MAAM;GACN,SAAS;GACV;EACF;CACF,CAAC;AAIF,SAAS,WACP,OACA,KACA;CACA,MAAM,EAAE,UAAU,YAAY,QAAQ,GAAG,eAAe;AAExD,QACE,oBAAC;EAAY,GAAI;EAAiB;EAAgB;EAC/C;GACW;;AAIlB,MAAM,cAAc,WAAW,WAAW;AAE1C,YAAY,cAAc"}
@@ -1,6 +1,6 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.117.0 | Cube Dev Team */
2
- import { tasty } from "../../../tasty/tasty.js";
1
+ /** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
3
2
  import { _LayoutContent } from "./LayoutContent.js";
3
+ import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef, useMemo } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutFooter.js","names":["LayoutContent"],"sources":["../../../../src/components/content/Layout/LayoutFooter.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef, useMemo } from 'react';\n\nimport { tasty } from '../../../tasty';\n\nimport { CubeLayoutContentProps, LayoutContent } from './LayoutContent';\n\nconst FooterElement = tasty(LayoutContent, {\n as: 'footer',\n qa: 'LayoutFooter',\n role: 'contentinfo',\n styles: {\n container: 'none',\n // Footer inherits auto-border from LayoutContent\n // (no border when last-child, which is typical for footers)\n height: 'min 5x',\n flexShrink: 0,\n flexGrow: 0,\n whiteSpace: 'nowrap',\n border: {\n '': 0,\n '!:last-child': '($layout-border-size, 1bw) solid #border bottom',\n },\n\n Inner: {\n display: 'flex',\n flow: {\n '': 'row nowrap',\n inverted: 'row-reverse nowrap',\n },\n placeContent: 'center space-between',\n placeItems: 'center stretch',\n gap: '1x',\n },\n },\n});\n\nexport interface CubeLayoutFooterProps extends CubeLayoutContentProps {\n /** Inverts the order of children (primary action on right) */\n invertOrder?: boolean;\n}\n\nfunction LayoutFooter(\n props: CubeLayoutFooterProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n children,\n invertOrder,\n scrollbar = 'tiny',\n mods,\n ...otherProps\n } = props;\n\n const finalMods = useMemo(\n () => ({\n inverted: invertOrder,\n ...mods,\n }),\n [invertOrder, mods],\n );\n\n return (\n <FooterElement\n {...otherProps}\n ref={ref}\n mods={finalMods}\n scrollbar={scrollbar}\n >\n {children}\n </FooterElement>\n );\n}\n\nconst _LayoutFooter = forwardRef(LayoutFooter);\n\n_LayoutFooter.displayName = 'Layout.Footer';\n\nexport { _LayoutFooter as LayoutFooter };\n"],"mappings":";;;;;;;AAMA,MAAM,gBAAgB,MAAMA,gBAAe;CACzC,IAAI;CACJ,IAAI;CACJ,MAAM;CACN,QAAQ;EACN,WAAW;EAGX,QAAQ;EACR,YAAY;EACZ,UAAU;EACV,YAAY;EACZ,QAAQ;GACN,IAAI;GACJ,gBAAgB;GACjB;EAED,OAAO;GACL,SAAS;GACT,MAAM;IACJ,IAAI;IACJ,UAAU;IACX;GACD,cAAc;GACd,YAAY;GACZ,KAAK;GACN;EACF;CACF,CAAC;AAOF,SAAS,aACP,OACA,KACA;CACA,MAAM,EACJ,UACA,aACA,YAAY,QACZ,MACA,GAAG,eACD;CAEJ,MAAM,YAAY,eACT;EACL,UAAU;EACV,GAAG;EACJ,GACD,CAAC,aAAa,KAAK,CACpB;AAED,QACE,oBAAC;EACC,GAAI;EACC;EACL,MAAM;EACK;EAEV;GACa;;AAIpB,MAAM,gBAAgB,WAAW,aAAa;AAE9C,cAAc,cAAc"}
1
+ {"version":3,"file":"LayoutFooter.js","names":["LayoutContent"],"sources":["../../../../src/components/content/Layout/LayoutFooter.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { ForwardedRef, forwardRef, useMemo } from 'react';\n\nimport { CubeLayoutContentProps, LayoutContent } from './LayoutContent';\n\nconst FooterElement = tasty(LayoutContent, {\n as: 'footer',\n qa: 'LayoutFooter',\n role: 'contentinfo',\n styles: {\n container: 'none',\n // Footer inherits auto-border from LayoutContent\n // (no border when last-child, which is typical for footers)\n height: 'min 5x',\n flexShrink: 0,\n flexGrow: 0,\n whiteSpace: 'nowrap',\n border: {\n '': 0,\n '!:last-child': '($layout-border-size, 1bw) solid #border bottom',\n },\n\n Inner: {\n display: 'flex',\n flow: {\n '': 'row nowrap',\n inverted: 'row-reverse nowrap',\n },\n placeContent: 'center space-between',\n placeItems: 'center stretch',\n gap: '1x',\n },\n },\n});\n\nexport interface CubeLayoutFooterProps extends CubeLayoutContentProps {\n /** Inverts the order of children (primary action on right) */\n invertOrder?: boolean;\n}\n\nfunction LayoutFooter(\n props: CubeLayoutFooterProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n children,\n invertOrder,\n scrollbar = 'tiny',\n mods,\n ...otherProps\n } = props;\n\n const finalMods = useMemo(\n () => ({\n inverted: invertOrder,\n ...mods,\n }),\n [invertOrder, mods],\n );\n\n return (\n <FooterElement\n {...otherProps}\n ref={ref}\n mods={finalMods}\n scrollbar={scrollbar}\n >\n {children}\n </FooterElement>\n );\n}\n\nconst _LayoutFooter = forwardRef(LayoutFooter);\n\n_LayoutFooter.displayName = 'Layout.Footer';\n\nexport { _LayoutFooter as LayoutFooter };\n"],"mappings":";;;;;;;AAKA,MAAM,gBAAgB,MAAMA,gBAAe;CACzC,IAAI;CACJ,IAAI;CACJ,MAAM;CACN,QAAQ;EACN,WAAW;EAGX,QAAQ;EACR,YAAY;EACZ,UAAU;EACV,YAAY;EACZ,QAAQ;GACN,IAAI;GACJ,gBAAgB;GACjB;EAED,OAAO;GACL,SAAS;GACT,MAAM;IACJ,IAAI;IACJ,UAAU;IACX;GACD,cAAc;GACd,YAAY;GACZ,KAAK;GACN;EACF;CACF,CAAC;AAOF,SAAS,aACP,OACA,KACA;CACA,MAAM,EACJ,UACA,aACA,YAAY,QACZ,MACA,GAAG,eACD;CAEJ,MAAM,YAAY,eACT;EACL,UAAU;EACV,GAAG;EACJ,GACD,CAAC,aAAa,KAAK,CACpB;AAED,QACE,oBAAC;EACC,GAAI;EACC;EACL,MAAM;EACK;EAEV;GACa;;AAIpB,MAAM,gBAAgB,WAAW,aAAa;AAE9C,cAAc,cAAc"}
@@ -1,7 +1,6 @@
1
1
 
2
- import { Styles } from "../../../tasty/styles/types.js";
3
- import "../../../tasty/index.js";
4
2
  import { CubeLayoutContentProps } from "./LayoutContent.js";
3
+ import { Styles } from "@tenphi/tasty";
5
4
  import * as react from "react";
6
5
 
7
6
  //#region src/components/content/Layout/LayoutGrid.d.ts
@@ -1,6 +1,6 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.117.0 | Cube Dev Team */
2
- import { tasty } from "../../../tasty/tasty.js";
1
+ /** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
3
2
  import { _LayoutContent } from "./LayoutContent.js";
3
+ import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutGrid.js","names":["LayoutContent"],"sources":["../../../../src/components/content/Layout/LayoutGrid.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef } from 'react';\n\nimport { Styles, tasty } from '../../../tasty';\n\nimport { CubeLayoutContentProps, LayoutContent } from './LayoutContent';\n\nconst GridElement = tasty(LayoutContent, {\n qa: 'LayoutGrid',\n styles: {\n container: 'none',\n flexShrink: 0,\n flexGrow: 0,\n\n Inner: {\n display: 'grid',\n flow: 'row',\n padding: 0,\n },\n },\n});\n\nexport interface CubeLayoutGridProps extends CubeLayoutContentProps {\n /** Grid template columns */\n columns?: Styles['gridColumns'];\n /** Grid template rows */\n rows?: Styles['gridRows'];\n /** Grid template shorthand */\n template?: Styles['gridTemplate'];\n}\n\nfunction LayoutGrid(\n props: CubeLayoutGridProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n children,\n scrollbar = 'tiny',\n columns,\n rows,\n template,\n ...otherProps\n } = props;\n\n return (\n <GridElement\n {...otherProps}\n ref={ref}\n scrollbar={scrollbar}\n gridColumns={columns}\n gridRows={rows}\n gridTemplate={template}\n >\n {children}\n </GridElement>\n );\n}\n\nconst _LayoutGrid = forwardRef(LayoutGrid);\n\n_LayoutGrid.displayName = 'Layout.Grid';\n\nexport { _LayoutGrid as LayoutGrid };\n"],"mappings":";;;;;;;AAMA,MAAM,cAAc,MAAMA,gBAAe;CACvC,IAAI;CACJ,QAAQ;EACN,WAAW;EACX,YAAY;EACZ,UAAU;EAEV,OAAO;GACL,SAAS;GACT,MAAM;GACN,SAAS;GACV;EACF;CACF,CAAC;AAWF,SAAS,WACP,OACA,KACA;CACA,MAAM,EACJ,UACA,YAAY,QACZ,SACA,MACA,UACA,GAAG,eACD;AAEJ,QACE,oBAAC;EACC,GAAI;EACC;EACM;EACX,aAAa;EACb,UAAU;EACV,cAAc;EAEb;GACW;;AAIlB,MAAM,cAAc,WAAW,WAAW;AAE1C,YAAY,cAAc"}
1
+ {"version":3,"file":"LayoutGrid.js","names":["LayoutContent"],"sources":["../../../../src/components/content/Layout/LayoutGrid.tsx"],"sourcesContent":["import { Styles, tasty } from '@tenphi/tasty';\nimport { ForwardedRef, forwardRef } from 'react';\n\nimport { CubeLayoutContentProps, LayoutContent } from './LayoutContent';\n\nconst GridElement = tasty(LayoutContent, {\n qa: 'LayoutGrid',\n styles: {\n container: 'none',\n flexShrink: 0,\n flexGrow: 0,\n\n Inner: {\n display: 'grid',\n flow: 'row',\n padding: 0,\n },\n },\n});\n\nexport interface CubeLayoutGridProps extends CubeLayoutContentProps {\n /** Grid template columns */\n columns?: Styles['gridColumns'];\n /** Grid template rows */\n rows?: Styles['gridRows'];\n /** Grid template shorthand */\n template?: Styles['gridTemplate'];\n}\n\nfunction LayoutGrid(\n props: CubeLayoutGridProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n children,\n scrollbar = 'tiny',\n columns,\n rows,\n template,\n ...otherProps\n } = props;\n\n return (\n <GridElement\n {...otherProps}\n ref={ref}\n scrollbar={scrollbar}\n gridColumns={columns}\n gridRows={rows}\n gridTemplate={template}\n >\n {children}\n </GridElement>\n );\n}\n\nconst _LayoutGrid = forwardRef(LayoutGrid);\n\n_LayoutGrid.displayName = 'Layout.Grid';\n\nexport { _LayoutGrid as LayoutGrid };\n"],"mappings":";;;;;;;AAKA,MAAM,cAAc,MAAMA,gBAAe;CACvC,IAAI;CACJ,QAAQ;EACN,WAAW;EACX,YAAY;EACZ,UAAU;EAEV,OAAO;GACL,SAAS;GACT,MAAM;GACN,SAAS;GACV;EACF;CACF,CAAC;AAWF,SAAS,WACP,OACA,KACA;CACA,MAAM,EACJ,UACA,YAAY,QACZ,SACA,MACA,UACA,GAAG,eACD;AAEJ,QACE,oBAAC;EACC,GAAI;EACC;EACM;EACX,aAAa;EACb,UAAU;EACV,cAAc;EAEb;GACW;;AAIlB,MAAM,cAAc,WAAW,WAAW;AAE1C,YAAY,cAAc"}
@@ -1,10 +1,10 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.117.0 | Cube Dev Team */
2
- import { tasty } from "../../../tasty/tasty.js";
1
+ /** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
3
2
  import { useAutoTooltip } from "../use-auto-tooltip.js";
4
3
  import { SlashIcon } from "../../../icons/SlashIcon.js";
5
4
  import { Button } from "../../actions/Button/Button.js";
6
5
  import { Link } from "../../actions/Link/Link.js";
7
6
  import { _LayoutContent } from "./LayoutContent.js";
7
+ import { tasty } from "@tenphi/tasty";
8
8
  import { Fragment, forwardRef } from "react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  import { IconArrowLeft } from "@tabler/icons-react";
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutHeader.js","names":["LayoutContent"],"sources":["../../../../src/components/content/Layout/LayoutHeader.tsx"],"sourcesContent":["import { IconArrowLeft } from '@tabler/icons-react';\nimport {\n ForwardedRef,\n forwardRef,\n Fragment,\n HTMLAttributes,\n ReactNode,\n Ref,\n RefCallback,\n} from 'react';\n\nimport { SlashIcon } from '../../../icons/SlashIcon';\nimport { tasty } from '../../../tasty';\nimport { Button } from '../../actions/Button/Button';\nimport { Link } from '../../actions/Link/Link';\nimport { useAutoTooltip } from '../use-auto-tooltip';\n\nimport { CubeLayoutContentProps, LayoutContent } from './LayoutContent';\n\nconst HeaderElement = tasty(LayoutContent, {\n as: 'header',\n qa: 'LayoutHeader',\n styles: {\n container: 'none',\n // Header always has bottom border (inherent style)\n border: 'bottom',\n flexShrink: 0,\n flexGrow: 0,\n\n Inner: {\n $: '>',\n display: 'grid',\n gridTemplate: `\n \"breadcrumbs breadcrumbs breadcrumbs breadcrumbs\" auto\n \"back title suffix extra\" 1fr\n \".. subtitle subtitle extra\" auto\n / auto max-content 1fr minmax(0, auto)\n `,\n gap: 0,\n placeContent: 'stretch',\n placeItems: 'center stretch',\n },\n\n Back: {\n $: '> Inner >',\n gridArea: 'back',\n display: 'flex',\n placeItems: 'center',\n margin: '.5x right',\n },\n\n Breadcrumbs: {\n $: '> Inner >',\n gridArea: 'breadcrumbs',\n display: 'flex',\n flow: 'row nowrap',\n placeItems: 'center start',\n gap: '1bw',\n preset: 't3 strong',\n color: '#dark-02',\n },\n\n Title: {\n $: '> Inner >',\n gridArea: 'title',\n preset: {\n '': 'h3',\n 'level=1': 'h1',\n 'level=2': 'h2',\n 'level=3': 'h3',\n 'level=4': 'h4',\n 'level=5': 'h5',\n 'level=6': 'h6',\n },\n color: '#dark',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n Suffix: {\n $: '> Inner >',\n gridArea: 'suffix',\n display: 'flex',\n placeItems: 'center',\n },\n\n Extra: {\n $: '> Inner >',\n gridArea: 'extra',\n display: 'flex',\n placeItems: 'center',\n placeSelf: 'end',\n gap: '1x',\n width: 'max 100%',\n },\n\n Subtitle: {\n $: '> Inner >',\n gridArea: 'subtitle',\n preset: 't3',\n color: '#dark-02',\n },\n },\n});\n\nexport interface CubeLayoutHeaderProps extends CubeLayoutContentProps {\n /** Page/section title */\n title?: ReactNode;\n /** Title heading level (1-6) */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /** Content next to the title */\n suffix?: ReactNode;\n /** Content on the right side */\n extra?: ReactNode;\n /** Text below the title */\n subtitle?: ReactNode;\n /**\n * Navigation breadcrumbs (max 3 items recommended).\n * Uses Link component which integrates with the navigation provider.\n */\n breadcrumbs?: Array<[label: string, href: string]>;\n /** Callback for the back button. When provided, a back arrow button is rendered to the left of the title. */\n onBack?: () => void;\n}\n\nfunction LayoutHeader(\n props: CubeLayoutHeaderProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n title,\n level = 3,\n suffix,\n extra,\n subtitle,\n breadcrumbs,\n onBack,\n scrollbar = 'tiny',\n children,\n mods,\n ...otherProps\n } = props;\n\n // Use auto tooltip for title overflow detection\n const { labelRef, renderWithTooltip } = useAutoTooltip({\n tooltip: true,\n children: typeof title === 'string' ? title : undefined,\n });\n\n const hasBreadcrumbs = breadcrumbs && breadcrumbs.length > 0;\n\n const renderBreadcrumbs = () => {\n if (!hasBreadcrumbs) return null;\n\n return (\n <div data-element=\"Breadcrumbs\">\n {breadcrumbs.map(([label, href], index) => (\n <Fragment key={href}>\n <Link to={href}>{label}</Link>\n <SlashIcon />\n </Fragment>\n ))}\n </div>\n );\n };\n\n const renderTitle = (\n tooltipProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: Ref<HTMLElement>,\n ) => {\n if (!title) return null;\n\n const TitleTag = `h${level}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n return (\n <TitleTag\n ref={tooltipRef as Ref<HTMLHeadingElement>}\n data-element=\"Title\"\n data-level={level}\n {...tooltipProps}\n >\n <span ref={labelRef as RefCallback<HTMLSpanElement>}>{title}</span>\n </TitleTag>\n );\n };\n\n return (\n <HeaderElement\n {...otherProps}\n ref={ref}\n mods={{ ...mods, level }}\n scrollbar={scrollbar}\n >\n {renderBreadcrumbs()}\n {onBack && (\n <div data-element=\"Back\">\n <Button\n type=\"neutral\"\n icon={<IconArrowLeft />}\n aria-label=\"Go back\"\n onPress={onBack}\n />\n </div>\n )}\n {renderWithTooltip(renderTitle, 'bottom')}\n {suffix && <div data-element=\"Suffix\">{suffix}</div>}\n {extra && <div data-element=\"Extra\">{extra}</div>}\n {subtitle && <div data-element=\"Subtitle\">{subtitle}</div>}\n {children}\n </HeaderElement>\n );\n}\n\nconst _LayoutHeader = forwardRef(LayoutHeader);\n\n_LayoutHeader.displayName = 'Layout.Header';\n\nexport { _LayoutHeader as LayoutHeader };\n"],"mappings":";;;;;;;;;;;;AAmBA,MAAM,gBAAgB,MAAMA,gBAAe;CACzC,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,WAAW;EAEX,QAAQ;EACR,YAAY;EACZ,UAAU;EAEV,OAAO;GACL,GAAG;GACH,SAAS;GACT,cAAc;;;;;;GAMd,KAAK;GACL,cAAc;GACd,YAAY;GACb;EAED,MAAM;GACJ,GAAG;GACH,UAAU;GACV,SAAS;GACT,YAAY;GACZ,QAAQ;GACT;EAED,aAAa;GACX,GAAG;GACH,UAAU;GACV,SAAS;GACT,MAAM;GACN,YAAY;GACZ,KAAK;GACL,QAAQ;GACR,OAAO;GACR;EAED,OAAO;GACL,GAAG;GACH,UAAU;GACV,QAAQ;IACN,IAAI;IACJ,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACZ;GACD,OAAO;GACP,QAAQ;GACR,UAAU;GACV,cAAc;GACd,YAAY;GACb;EAED,QAAQ;GACN,GAAG;GACH,UAAU;GACV,SAAS;GACT,YAAY;GACb;EAED,OAAO;GACL,GAAG;GACH,UAAU;GACV,SAAS;GACT,YAAY;GACZ,WAAW;GACX,KAAK;GACL,OAAO;GACR;EAED,UAAU;GACR,GAAG;GACH,UAAU;GACV,QAAQ;GACR,OAAO;GACR;EACF;CACF,CAAC;AAsBF,SAAS,aACP,OACA,KACA;CACA,MAAM,EACJ,OACA,QAAQ,GACR,QACA,OACA,UACA,aACA,QACA,YAAY,QACZ,UACA,MACA,GAAG,eACD;CAGJ,MAAM,EAAE,UAAU,sBAAsB,eAAe;EACrD,SAAS;EACT,UAAU,OAAO,UAAU,WAAW,QAAQ;EAC/C,CAAC;CAEF,MAAM,iBAAiB,eAAe,YAAY,SAAS;CAE3D,MAAM,0BAA0B;AAC9B,MAAI,CAAC,eAAgB,QAAO;AAE5B,SACE,oBAAC;GAAI,gBAAa;aACf,YAAY,KAAK,CAAC,OAAO,OAAO,UAC/B,qBAAC,uBACC,oBAAC;IAAK,IAAI;cAAO;KAAa,EAC9B,oBAAC,cAAY,KAFA,KAGJ,CACX;IACE;;CAIV,MAAM,eACJ,cACA,eACG;AACH,MAAI,CAAC,MAAO,QAAO;AAInB,SACE,oBAHe,IAAI;GAIjB,KAAK;GACL,gBAAa;GACb,cAAY;GACZ,GAAI;aAEJ,oBAAC;IAAK,KAAK;cAA2C;KAAa;IAC1D;;AAIf,QACE,qBAAC;EACC,GAAI;EACC;EACL,MAAM;GAAE,GAAG;GAAM;GAAO;EACb;;GAEV,mBAAmB;GACnB,UACC,oBAAC;IAAI,gBAAa;cAChB,oBAAC;KACC,MAAK;KACL,MAAM,oBAAC,kBAAgB;KACvB,cAAW;KACX,SAAS;MACT;KACE;GAEP,kBAAkB,aAAa,SAAS;GACxC,UAAU,oBAAC;IAAI,gBAAa;cAAU;KAAa;GACnD,SAAS,oBAAC;IAAI,gBAAa;cAAS;KAAY;GAChD,YAAY,oBAAC;IAAI,gBAAa;cAAY;KAAe;GACzD;;GACa;;AAIpB,MAAM,gBAAgB,WAAW,aAAa;AAE9C,cAAc,cAAc"}
1
+ {"version":3,"file":"LayoutHeader.js","names":["LayoutContent"],"sources":["../../../../src/components/content/Layout/LayoutHeader.tsx"],"sourcesContent":["import { IconArrowLeft } from '@tabler/icons-react';\nimport { tasty } from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n Fragment,\n HTMLAttributes,\n ReactNode,\n Ref,\n RefCallback,\n} from 'react';\n\nimport { SlashIcon } from '../../../icons/SlashIcon';\nimport { Button } from '../../actions/Button/Button';\nimport { Link } from '../../actions/Link/Link';\nimport { useAutoTooltip } from '../use-auto-tooltip';\n\nimport { CubeLayoutContentProps, LayoutContent } from './LayoutContent';\n\nconst HeaderElement = tasty(LayoutContent, {\n as: 'header',\n qa: 'LayoutHeader',\n styles: {\n container: 'none',\n // Header always has bottom border (inherent style)\n border: 'bottom',\n flexShrink: 0,\n flexGrow: 0,\n\n Inner: {\n $: '>',\n display: 'grid',\n gridTemplate: `\n \"breadcrumbs breadcrumbs breadcrumbs breadcrumbs\" auto\n \"back title suffix extra\" 1fr\n \".. subtitle subtitle extra\" auto\n / auto max-content 1fr minmax(0, auto)\n `,\n gap: 0,\n placeContent: 'stretch',\n placeItems: 'center stretch',\n },\n\n Back: {\n $: '> Inner >',\n gridArea: 'back',\n display: 'flex',\n placeItems: 'center',\n margin: '.5x right',\n },\n\n Breadcrumbs: {\n $: '> Inner >',\n gridArea: 'breadcrumbs',\n display: 'flex',\n flow: 'row nowrap',\n placeItems: 'center start',\n gap: '1bw',\n preset: 't3 strong',\n color: '#dark-02',\n },\n\n Title: {\n $: '> Inner >',\n gridArea: 'title',\n preset: {\n '': 'h3',\n 'level=1': 'h1',\n 'level=2': 'h2',\n 'level=3': 'h3',\n 'level=4': 'h4',\n 'level=5': 'h5',\n 'level=6': 'h6',\n },\n color: '#dark',\n margin: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n },\n\n Suffix: {\n $: '> Inner >',\n gridArea: 'suffix',\n display: 'flex',\n placeItems: 'center',\n },\n\n Extra: {\n $: '> Inner >',\n gridArea: 'extra',\n display: 'flex',\n placeItems: 'center',\n placeSelf: 'end',\n gap: '1x',\n width: 'max 100%',\n },\n\n Subtitle: {\n $: '> Inner >',\n gridArea: 'subtitle',\n preset: 't3',\n color: '#dark-02',\n },\n },\n});\n\nexport interface CubeLayoutHeaderProps extends CubeLayoutContentProps {\n /** Page/section title */\n title?: ReactNode;\n /** Title heading level (1-6) */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /** Content next to the title */\n suffix?: ReactNode;\n /** Content on the right side */\n extra?: ReactNode;\n /** Text below the title */\n subtitle?: ReactNode;\n /**\n * Navigation breadcrumbs (max 3 items recommended).\n * Uses Link component which integrates with the navigation provider.\n */\n breadcrumbs?: Array<[label: string, href: string]>;\n /** Callback for the back button. When provided, a back arrow button is rendered to the left of the title. */\n onBack?: () => void;\n}\n\nfunction LayoutHeader(\n props: CubeLayoutHeaderProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n title,\n level = 3,\n suffix,\n extra,\n subtitle,\n breadcrumbs,\n onBack,\n scrollbar = 'tiny',\n children,\n mods,\n ...otherProps\n } = props;\n\n // Use auto tooltip for title overflow detection\n const { labelRef, renderWithTooltip } = useAutoTooltip({\n tooltip: true,\n children: typeof title === 'string' ? title : undefined,\n });\n\n const hasBreadcrumbs = breadcrumbs && breadcrumbs.length > 0;\n\n const renderBreadcrumbs = () => {\n if (!hasBreadcrumbs) return null;\n\n return (\n <div data-element=\"Breadcrumbs\">\n {breadcrumbs.map(([label, href], index) => (\n <Fragment key={href}>\n <Link to={href}>{label}</Link>\n <SlashIcon />\n </Fragment>\n ))}\n </div>\n );\n };\n\n const renderTitle = (\n tooltipProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: Ref<HTMLElement>,\n ) => {\n if (!title) return null;\n\n const TitleTag = `h${level}` as 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n return (\n <TitleTag\n ref={tooltipRef as Ref<HTMLHeadingElement>}\n data-element=\"Title\"\n data-level={level}\n {...tooltipProps}\n >\n <span ref={labelRef as RefCallback<HTMLSpanElement>}>{title}</span>\n </TitleTag>\n );\n };\n\n return (\n <HeaderElement\n {...otherProps}\n ref={ref}\n mods={{ ...mods, level }}\n scrollbar={scrollbar}\n >\n {renderBreadcrumbs()}\n {onBack && (\n <div data-element=\"Back\">\n <Button\n type=\"neutral\"\n icon={<IconArrowLeft />}\n aria-label=\"Go back\"\n onPress={onBack}\n />\n </div>\n )}\n {renderWithTooltip(renderTitle, 'bottom')}\n {suffix && <div data-element=\"Suffix\">{suffix}</div>}\n {extra && <div data-element=\"Extra\">{extra}</div>}\n {subtitle && <div data-element=\"Subtitle\">{subtitle}</div>}\n {children}\n </HeaderElement>\n );\n}\n\nconst _LayoutHeader = forwardRef(LayoutHeader);\n\n_LayoutHeader.displayName = 'Layout.Header';\n\nexport { _LayoutHeader as LayoutHeader };\n"],"mappings":";;;;;;;;;;;;AAmBA,MAAM,gBAAgB,MAAMA,gBAAe;CACzC,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,WAAW;EAEX,QAAQ;EACR,YAAY;EACZ,UAAU;EAEV,OAAO;GACL,GAAG;GACH,SAAS;GACT,cAAc;;;;;;GAMd,KAAK;GACL,cAAc;GACd,YAAY;GACb;EAED,MAAM;GACJ,GAAG;GACH,UAAU;GACV,SAAS;GACT,YAAY;GACZ,QAAQ;GACT;EAED,aAAa;GACX,GAAG;GACH,UAAU;GACV,SAAS;GACT,MAAM;GACN,YAAY;GACZ,KAAK;GACL,QAAQ;GACR,OAAO;GACR;EAED,OAAO;GACL,GAAG;GACH,UAAU;GACV,QAAQ;IACN,IAAI;IACJ,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACZ;GACD,OAAO;GACP,QAAQ;GACR,UAAU;GACV,cAAc;GACd,YAAY;GACb;EAED,QAAQ;GACN,GAAG;GACH,UAAU;GACV,SAAS;GACT,YAAY;GACb;EAED,OAAO;GACL,GAAG;GACH,UAAU;GACV,SAAS;GACT,YAAY;GACZ,WAAW;GACX,KAAK;GACL,OAAO;GACR;EAED,UAAU;GACR,GAAG;GACH,UAAU;GACV,QAAQ;GACR,OAAO;GACR;EACF;CACF,CAAC;AAsBF,SAAS,aACP,OACA,KACA;CACA,MAAM,EACJ,OACA,QAAQ,GACR,QACA,OACA,UACA,aACA,QACA,YAAY,QACZ,UACA,MACA,GAAG,eACD;CAGJ,MAAM,EAAE,UAAU,sBAAsB,eAAe;EACrD,SAAS;EACT,UAAU,OAAO,UAAU,WAAW,QAAQ;EAC/C,CAAC;CAEF,MAAM,iBAAiB,eAAe,YAAY,SAAS;CAE3D,MAAM,0BAA0B;AAC9B,MAAI,CAAC,eAAgB,QAAO;AAE5B,SACE,oBAAC;GAAI,gBAAa;aACf,YAAY,KAAK,CAAC,OAAO,OAAO,UAC/B,qBAAC,uBACC,oBAAC;IAAK,IAAI;cAAO;KAAa,EAC9B,oBAAC,cAAY,KAFA,KAGJ,CACX;IACE;;CAIV,MAAM,eACJ,cACA,eACG;AACH,MAAI,CAAC,MAAO,QAAO;AAInB,SACE,oBAHe,IAAI;GAIjB,KAAK;GACL,gBAAa;GACb,cAAY;GACZ,GAAI;aAEJ,oBAAC;IAAK,KAAK;cAA2C;KAAa;IAC1D;;AAIf,QACE,qBAAC;EACC,GAAI;EACC;EACL,MAAM;GAAE,GAAG;GAAM;GAAO;EACb;;GAEV,mBAAmB;GACnB,UACC,oBAAC;IAAI,gBAAa;cAChB,oBAAC;KACC,MAAK;KACL,MAAM,oBAAC,kBAAgB;KACvB,cAAW;KACX,SAAS;MACT;KACE;GAEP,kBAAkB,aAAa,SAAS;GACxC,UAAU,oBAAC;IAAI,gBAAa;cAAU;KAAa;GACnD,SAAS,oBAAC;IAAI,gBAAa;cAAS;KAAY;GAChD,YAAY,oBAAC;IAAI,gBAAa;cAAY;KAAe;GACzD;;GACa;;AAIpB,MAAM,gBAAgB,WAAW,aAAa;AAE9C,cAAc,cAAc"}
@@ -1,8 +1,6 @@
1
1
 
2
- import { Styles } from "../../../tasty/styles/types.js";
3
- import { BaseProps, ContainerStyleProps } from "../../../tasty/types.js";
4
- import "../../../tasty/index.js";
5
2
  import { ScrollbarType } from "./LayoutContent.js";
3
+ import { BaseProps, ContainerStyleProps, Styles } from "@tenphi/tasty";
6
4
  import * as react from "react";
7
5
  import { ForwardedRef, HTMLAttributes, ReactNode } from "react";
8
6
 
@@ -1,15 +1,11 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.117.0 | Cube Dev Team */
2
- import { extractStyles } from "../../../tasty/utils/styles.js";
3
- import { mergeStyles } from "../../../tasty/utils/merge-styles.js";
4
- import { INNER_STYLES, OUTER_STYLES } from "../../../tasty/styles/list.js";
5
- import { tasty } from "../../../tasty/tasty.js";
6
- import { filterBaseProps } from "../../../tasty/utils/filter-base-props.js";
1
+ /** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
7
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
8
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
9
4
  import { useDebouncedValue } from "../../../_internal/hooks/use-debounced-value.js";
10
5
  import { LayoutContextReset } from "./LayoutContext.js";
11
6
  import { useTinyScrollbar } from "./hooks/useTinyScrollbar.js";
12
7
  import { clampSize } from "./utils.js";
8
+ import { INNER_STYLES, OUTER_STYLES, extractStyles, filterBaseProps, mergeStyles, tasty } from "@tenphi/tasty";
13
9
  import { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from "react";
14
10
  import { jsx, jsxs } from "react/jsx-runtime";
15
11
  import { useFocusRing, useHover, useMove } from "react-aria";
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutPane.js","names":["mergeProps"],"sources":["../../../../src/components/content/Layout/LayoutPane.tsx"],"sourcesContent":["import {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useFocusRing, useHover, useMove } from 'react-aria';\n\nimport { useDebouncedValue } from '../../../_internal/hooks';\nimport {\n BaseProps,\n ContainerStyleProps,\n extractStyles,\n filterBaseProps,\n INNER_STYLES,\n mergeStyles,\n OUTER_STYLES,\n Styles,\n tasty,\n} from '../../../tasty';\nimport { mergeProps, useCombinedRefs } from '../../../utils/react';\n\nimport { useTinyScrollbar } from './hooks/useTinyScrollbar';\nimport { ScrollbarType } from './LayoutContent';\nimport { LayoutContextReset } from './LayoutContext';\nimport { clampSize } from './utils';\n\n// Handler dimensions\nconst HANDLER_WIDTH = 9; // Interactive area\nconst HANDLER_RESERVED = 5; // Space reserved in Inner padding\n\nconst PaneElement = tasty({\n as: 'div',\n qa: 'LayoutPane',\n styles: {\n container: 'pane / inline-size',\n position: 'relative',\n display: 'grid',\n gridColumns: '1sf',\n gridRows: '1sf',\n placeContent: 'stretch',\n placeItems: 'stretch',\n placeSelf: 'stretch',\n flexShrink: 0,\n flexGrow: 0,\n // Size is set via CSS custom property for performance during drag\n width: {\n '': 'auto',\n 'edge=right': '2x $pane-size $pane-size',\n },\n height: {\n '': '2x $pane-size $pane-size',\n 'edge=right': 'auto',\n },\n boxSizing: 'content-box',\n\n Inner: {\n $: '>',\n display: 'flex',\n flow: 'column',\n padding: '($content-padding, 1x)',\n // Reserve space for handler on resize edge\n paddingRight: {\n '': '($content-padding, 1x)',\n 'edge=right': `calc(($content-padding, 1x) + ${HANDLER_RESERVED}px)`,\n },\n paddingBottom: {\n '': '($content-padding, 1x)',\n 'edge=bottom': `calc(($content-padding, 1x) + ${HANDLER_RESERVED}px)`,\n },\n overflow: {\n '': 'auto',\n 'scrollbar=none': 'clip',\n },\n placeSelf: 'stretch',\n scrollbar: {\n '': 'thin',\n 'scrollbar=tiny | scrollbar=none': 'none',\n },\n\n '$layout-border-size': '0',\n },\n\n // Custom scrollbar handles (when scrollbar=\"tiny\")\n ScrollbarV: {\n position: 'absolute',\n right: {\n '': '1px',\n 'edge=right': `${HANDLER_RESERVED + 1}px`,\n },\n top: '$scrollbar-v-top',\n width: '1ow',\n height: '$scrollbar-v-height',\n radius: 'round',\n fill: '#dark.35',\n opacity: {\n '': 0,\n '(focused | scrolling) & scrollbar=tiny': 1,\n },\n transition: 'opacity 0.15s',\n pointerEvents: 'none',\n },\n\n ScrollbarH: {\n $: '>',\n position: 'absolute',\n bottom: {\n '': '1px',\n 'edge=bottom': `${HANDLER_RESERVED + 1}px`,\n },\n left: '$scrollbar-h-left',\n height: '1ow',\n width: '$scrollbar-h-width',\n radius: 'round',\n fill: '#dark.35',\n opacity: {\n '': 0,\n '(focused | scrolling) & scrollbar=tiny': 1,\n },\n transition: 'opacity 0.15s',\n pointerEvents: 'none',\n },\n\n // Compact resize handler - only drag dots\n ResizeHandler: {\n position: 'absolute',\n // Size: 9px interactive area\n width: {\n '': '100%',\n 'edge=right': `${HANDLER_WIDTH}px`,\n },\n height: {\n '': `${HANDLER_WIDTH}px`,\n 'edge=right': '100%',\n },\n // Position at edge, centered on the reserved space boundary\n right: {\n '': 'initial',\n 'edge=right': `${(HANDLER_RESERVED - HANDLER_WIDTH) / 2}px`,\n },\n bottom: {\n '': `${(HANDLER_RESERVED - HANDLER_WIDTH) / 2}px`,\n 'edge=right': 'initial',\n },\n top: {\n '': 'initial',\n 'edge=right': 0,\n },\n left: {\n '': 0,\n 'edge=right': 'initial',\n },\n cursor: {\n '': 'row-resize',\n 'edge=right': 'col-resize',\n disabled: 'not-allowed',\n },\n padding: 0,\n outline: 0,\n boxSizing: 'border-box',\n transition: 'theme',\n },\n\n Drag: {\n display: 'grid',\n gap: '2bw',\n border: 0,\n flow: {\n '': 'row',\n 'edge=right': 'column',\n },\n gridColumns: {\n '': '3px 3px 3px 3px 3px',\n 'edge=right': 'auto',\n },\n gridRows: {\n '': 'auto',\n 'edge=right': '3px 3px 3px 3px 3px',\n },\n width: {\n '': 'auto',\n 'edge=right': '3px',\n },\n height: {\n '': '3px',\n 'edge=right': 'auto',\n },\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n transition: 'theme',\n radius: 'round',\n outline: {\n '': '0',\n 'focused | drag': '1bw #primary-text',\n },\n outlineOffset: 1,\n },\n\n DragPart: {\n radius: true,\n fill: {\n '': '#dark-03',\n 'handlerHovered | drag | focused': '#primary-text',\n disabled: '#dark-04',\n },\n },\n },\n});\n\nexport type ResizeEdge = 'right' | 'bottom';\n\nexport interface CubeLayoutPaneProps extends BaseProps, ContainerStyleProps {\n /** Edge where resize handler appears */\n resizeEdge?: ResizeEdge;\n /** Enable resize functionality */\n isResizable?: boolean;\n /** Controlled size (width for right edge, height for bottom edge) */\n size?: number | string;\n /** Default size for uncontrolled state */\n defaultSize?: number | string;\n /** Minimum size constraint */\n minSize?: number | string;\n /** Maximum size constraint */\n maxSize?: number | string;\n /** Size change callback */\n onSizeChange?: (size: number) => void;\n /** Scrollbar style */\n scrollbar?: ScrollbarType;\n /** Custom styles */\n styles?: Styles;\n children?: ReactNode;\n /** Ref for the inner content element */\n innerRef?: ForwardedRef<HTMLDivElement>;\n /** Props to spread on the Inner sub-element */\n innerProps?: HTMLAttributes<HTMLDivElement>;\n}\n\ninterface PaneResizeHandlerProps {\n edge: ResizeEdge;\n isDisabled?: boolean;\n moveProps: ReturnType<typeof useMove>['moveProps'];\n onDoubleClick?: () => void;\n onHoverChange?: (isHovered: boolean) => void;\n onFocusChange?: (isFocused: boolean) => void;\n}\n\nfunction PaneResizeHandler(props: PaneResizeHandlerProps) {\n const {\n edge,\n isDisabled,\n moveProps,\n onDoubleClick,\n onHoverChange,\n onFocusChange,\n } = props;\n const { hoverProps, isHovered } = useHover({\n onHoverChange,\n });\n const { focusProps, isFocusVisible } = useFocusRing();\n const isHorizontal = edge === 'right';\n\n // Notify parent of focus changes\n useEffect(() => {\n onFocusChange?.(isFocusVisible);\n }, [isFocusVisible, onFocusChange]);\n\n return (\n <div\n data-element=\"ResizeHandler\"\n {...mergeProps(hoverProps, focusProps, isDisabled ? {} : moveProps, {\n tabIndex: isDisabled ? undefined : 0,\n role: 'separator',\n 'aria-orientation': isHorizontal ? 'vertical' : 'horizontal',\n 'aria-label': `Resize pane ${edge}`,\n onDoubleClick: isDisabled ? undefined : onDoubleClick,\n })}\n >\n {!isDisabled && (\n <div data-element=\"Drag\">\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction LayoutPane(\n props: CubeLayoutPaneProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n resizeEdge = 'right',\n isResizable = false,\n size: providedSize,\n defaultSize = 200,\n minSize,\n maxSize,\n onSizeChange,\n scrollbar = 'thin',\n styles,\n mods,\n children,\n innerRef: innerRefProp,\n innerProps,\n ...otherProps\n } = props;\n\n const combinedRef = useCombinedRefs(ref);\n const internalInnerRef = useRef<HTMLDivElement>(null);\n const combinedInnerRef = useCombinedRefs(innerRefProp, internalInnerRef);\n const prevProvidedSizeRef = useRef(providedSize);\n const isHorizontal = resizeEdge === 'right';\n\n // Resize state\n const [isDragging, setIsDragging] = useState(false);\n const [isHandlerHovered, setIsHandlerHovered] = useState(false);\n const [isHandlerFocused, setIsHandlerFocused] = useState(false);\n const debouncedHandlerHovered = useDebouncedValue(isHandlerHovered, 150);\n const [size, setSize] = useState<number>(() => {\n const initialSize =\n typeof providedSize === 'number'\n ? providedSize\n : typeof defaultSize === 'number'\n ? defaultSize\n : 200;\n\n return clampSize(initialSize, minSize, maxSize);\n });\n\n // Extract outer wrapper styles and inner content styles\n const outerStyles = extractStyles(otherProps, OUTER_STYLES);\n const innerStyles = extractStyles(otherProps, INNER_STYLES);\n\n const isTinyScrollbar = scrollbar === 'tiny';\n const { hoverProps, isHovered } = useHover({});\n\n const {\n handleVStyle,\n handleHStyle,\n hasOverflowY,\n hasOverflowX,\n isScrolling,\n } = useTinyScrollbar(internalInnerRef, isTinyScrollbar);\n\n // Clamp size to min/max constraints\n const clampValue = useCallback(\n (value: number) => clampSize(value, minSize, maxSize),\n [minSize, maxSize],\n );\n\n const { moveProps } = useMove({\n onMoveStart() {\n if (!isResizable) return;\n setIsDragging(true);\n },\n onMove(e) {\n if (!isResizable) return;\n\n let delta: number;\n\n if (e.pointerType === 'keyboard') {\n // Keyboard resize: 10px per step, 50px with Shift\n const step = e.shiftKey ? 50 : 10;\n const rawDelta = isHorizontal ? e.deltaX : e.deltaY;\n delta = rawDelta * step;\n } else {\n // Pointer resize: use exact delta values\n delta = isHorizontal ? e.deltaX : e.deltaY;\n }\n\n setSize((currentSize) => clampValue(currentSize + delta));\n },\n onMoveEnd() {\n setIsDragging(false);\n // Round to integer on release and notify parent\n setSize((currentSize) => {\n const finalSize = Math.round(clampValue(currentSize));\n onSizeChange?.(finalSize);\n return finalSize;\n });\n },\n });\n\n // Sync provided size with internal state (only when providedSize actually changes)\n // This prevents resetting size when only isDragging changes (which would cause a flash)\n useEffect(() => {\n if (prevProvidedSizeRef.current !== providedSize) {\n prevProvidedSizeRef.current = providedSize;\n if (typeof providedSize === 'number' && !isDragging) {\n setSize(clampValue(providedSize));\n }\n }\n }, [providedSize, isDragging, clampValue]);\n\n // Reset to default size on double-click\n const handleResetSize = useCallback(() => {\n const resetSize =\n typeof defaultSize === 'number' ? defaultSize : parseInt(defaultSize, 10);\n const clampedSize = clampValue(resetSize || 200);\n setSize(clampedSize);\n onSizeChange?.(clampedSize);\n }, [defaultSize, clampValue, onSizeChange]);\n\n const scrollbarStyle = useMemo(() => {\n if (!isTinyScrollbar) return {};\n\n return {\n ...handleVStyle,\n ...handleHStyle,\n };\n }, [isTinyScrollbar, handleVStyle, handleHStyle]);\n\n const paneMods = useMemo(\n () => ({\n scrollbar,\n hovered: isHovered,\n scrolling: isScrolling,\n handlerHovered: debouncedHandlerHovered,\n focused: isHandlerFocused,\n disabled: !isResizable,\n edge: resizeEdge,\n drag: isDragging,\n ...mods,\n }),\n [\n scrollbar,\n isHovered,\n isScrolling,\n debouncedHandlerHovered,\n isHandlerFocused,\n isResizable,\n resizeEdge,\n isDragging,\n mods,\n ],\n );\n\n // Merge styles: outer styles to root, inner styles to Inner element\n // Size is NOT included here - it's set via CSS custom property in paneStyle for performance\n const finalStyles = useMemo(() => {\n return mergeStyles(\n styles,\n outerStyles,\n innerStyles ? { Inner: innerStyles } : null,\n );\n }, [styles, outerStyles, innerStyles]);\n\n // Size is set via CSS custom property for performance during drag\n // This avoids expensive style recalculation on every mouse move\n const paneStyle = useMemo(\n () => ({\n ...scrollbarStyle,\n '--pane-size': `${size}px`,\n '--min-size': typeof minSize === 'number' ? `${minSize}px` : minSize,\n '--max-size': typeof maxSize === 'number' ? `${maxSize}px` : maxSize,\n }),\n [scrollbarStyle, size, minSize, maxSize],\n );\n\n return (\n <PaneElement\n ref={combinedRef}\n {...filterBaseProps(otherProps, { eventProps: true })}\n {...hoverProps}\n mods={paneMods}\n styles={finalStyles}\n style={paneStyle}\n >\n <div ref={combinedInnerRef} data-element=\"Inner\" {...innerProps}>\n <LayoutContextReset>{children}</LayoutContextReset>\n </div>\n {isTinyScrollbar && hasOverflowY && <div data-element=\"ScrollbarV\" />}\n {isTinyScrollbar && hasOverflowX && <div data-element=\"ScrollbarH\" />}\n {isResizable && (\n <PaneResizeHandler\n edge={resizeEdge}\n isDisabled={!isResizable}\n moveProps={moveProps}\n onDoubleClick={handleResetSize}\n onHoverChange={setIsHandlerHovered}\n onFocusChange={setIsHandlerFocused}\n />\n )}\n </PaneElement>\n );\n}\n\nconst _LayoutPane = forwardRef(LayoutPane);\n\n_LayoutPane.displayName = 'Layout.Pane';\n\nexport { _LayoutPane as LayoutPane };\n"],"mappings":"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"}
1
+ {"version":3,"file":"LayoutPane.js","names":["mergeProps"],"sources":["../../../../src/components/content/Layout/LayoutPane.tsx"],"sourcesContent":["import {\n BaseProps,\n ContainerStyleProps,\n extractStyles,\n filterBaseProps,\n INNER_STYLES,\n mergeStyles,\n OUTER_STYLES,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useFocusRing, useHover, useMove } from 'react-aria';\n\nimport { useDebouncedValue } from '../../../_internal/hooks';\nimport { mergeProps, useCombinedRefs } from '../../../utils/react';\n\nimport { useTinyScrollbar } from './hooks/useTinyScrollbar';\nimport { ScrollbarType } from './LayoutContent';\nimport { LayoutContextReset } from './LayoutContext';\nimport { clampSize } from './utils';\n\n// Handler dimensions\nconst HANDLER_WIDTH = 9; // Interactive area\nconst HANDLER_RESERVED = 5; // Space reserved in Inner padding\n\nconst PaneElement = tasty({\n as: 'div',\n qa: 'LayoutPane',\n styles: {\n container: 'pane / inline-size',\n position: 'relative',\n display: 'grid',\n gridColumns: '1sf',\n gridRows: '1sf',\n placeContent: 'stretch',\n placeItems: 'stretch',\n placeSelf: 'stretch',\n flexShrink: 0,\n flexGrow: 0,\n // Size is set via CSS custom property for performance during drag\n width: {\n '': 'auto',\n 'edge=right': '2x $pane-size $pane-size',\n },\n height: {\n '': '2x $pane-size $pane-size',\n 'edge=right': 'auto',\n },\n boxSizing: 'content-box',\n\n Inner: {\n $: '>',\n display: 'flex',\n flow: 'column',\n padding: '($content-padding, 1x)',\n // Reserve space for handler on resize edge\n paddingRight: {\n '': '($content-padding, 1x)',\n 'edge=right': `calc(($content-padding, 1x) + ${HANDLER_RESERVED}px)`,\n },\n paddingBottom: {\n '': '($content-padding, 1x)',\n 'edge=bottom': `calc(($content-padding, 1x) + ${HANDLER_RESERVED}px)`,\n },\n overflow: {\n '': 'auto',\n 'scrollbar=none': 'clip',\n },\n placeSelf: 'stretch',\n scrollbar: {\n '': 'thin',\n 'scrollbar=tiny | scrollbar=none': 'none',\n },\n\n '$layout-border-size': '0',\n },\n\n // Custom scrollbar handles (when scrollbar=\"tiny\")\n ScrollbarV: {\n position: 'absolute',\n right: {\n '': '1px',\n 'edge=right': `${HANDLER_RESERVED + 1}px`,\n },\n top: '$scrollbar-v-top',\n width: '1ow',\n height: '$scrollbar-v-height',\n radius: 'round',\n fill: '#dark.35',\n opacity: {\n '': 0,\n '(focused | scrolling) & scrollbar=tiny': 1,\n },\n transition: 'opacity 0.15s',\n pointerEvents: 'none',\n },\n\n ScrollbarH: {\n $: '>',\n position: 'absolute',\n bottom: {\n '': '1px',\n 'edge=bottom': `${HANDLER_RESERVED + 1}px`,\n },\n left: '$scrollbar-h-left',\n height: '1ow',\n width: '$scrollbar-h-width',\n radius: 'round',\n fill: '#dark.35',\n opacity: {\n '': 0,\n '(focused | scrolling) & scrollbar=tiny': 1,\n },\n transition: 'opacity 0.15s',\n pointerEvents: 'none',\n },\n\n // Compact resize handler - only drag dots\n ResizeHandler: {\n position: 'absolute',\n // Size: 9px interactive area\n width: {\n '': '100%',\n 'edge=right': `${HANDLER_WIDTH}px`,\n },\n height: {\n '': `${HANDLER_WIDTH}px`,\n 'edge=right': '100%',\n },\n // Position at edge, centered on the reserved space boundary\n right: {\n '': 'initial',\n 'edge=right': `${(HANDLER_RESERVED - HANDLER_WIDTH) / 2}px`,\n },\n bottom: {\n '': `${(HANDLER_RESERVED - HANDLER_WIDTH) / 2}px`,\n 'edge=right': 'initial',\n },\n top: {\n '': 'initial',\n 'edge=right': 0,\n },\n left: {\n '': 0,\n 'edge=right': 'initial',\n },\n cursor: {\n '': 'row-resize',\n 'edge=right': 'col-resize',\n disabled: 'not-allowed',\n },\n padding: 0,\n outline: 0,\n boxSizing: 'border-box',\n transition: 'theme',\n },\n\n Drag: {\n display: 'grid',\n gap: '2bw',\n border: 0,\n flow: {\n '': 'row',\n 'edge=right': 'column',\n },\n gridColumns: {\n '': '3px 3px 3px 3px 3px',\n 'edge=right': 'auto',\n },\n gridRows: {\n '': 'auto',\n 'edge=right': '3px 3px 3px 3px 3px',\n },\n width: {\n '': 'auto',\n 'edge=right': '3px',\n },\n height: {\n '': '3px',\n 'edge=right': 'auto',\n },\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n transition: 'theme',\n radius: 'round',\n outline: {\n '': '0',\n 'focused | drag': '1bw #primary-text',\n },\n outlineOffset: 1,\n },\n\n DragPart: {\n radius: true,\n fill: {\n '': '#dark-03',\n 'handlerHovered | drag | focused': '#primary-text',\n disabled: '#dark-04',\n },\n },\n },\n});\n\nexport type ResizeEdge = 'right' | 'bottom';\n\nexport interface CubeLayoutPaneProps extends BaseProps, ContainerStyleProps {\n /** Edge where resize handler appears */\n resizeEdge?: ResizeEdge;\n /** Enable resize functionality */\n isResizable?: boolean;\n /** Controlled size (width for right edge, height for bottom edge) */\n size?: number | string;\n /** Default size for uncontrolled state */\n defaultSize?: number | string;\n /** Minimum size constraint */\n minSize?: number | string;\n /** Maximum size constraint */\n maxSize?: number | string;\n /** Size change callback */\n onSizeChange?: (size: number) => void;\n /** Scrollbar style */\n scrollbar?: ScrollbarType;\n /** Custom styles */\n styles?: Styles;\n children?: ReactNode;\n /** Ref for the inner content element */\n innerRef?: ForwardedRef<HTMLDivElement>;\n /** Props to spread on the Inner sub-element */\n innerProps?: HTMLAttributes<HTMLDivElement>;\n}\n\ninterface PaneResizeHandlerProps {\n edge: ResizeEdge;\n isDisabled?: boolean;\n moveProps: ReturnType<typeof useMove>['moveProps'];\n onDoubleClick?: () => void;\n onHoverChange?: (isHovered: boolean) => void;\n onFocusChange?: (isFocused: boolean) => void;\n}\n\nfunction PaneResizeHandler(props: PaneResizeHandlerProps) {\n const {\n edge,\n isDisabled,\n moveProps,\n onDoubleClick,\n onHoverChange,\n onFocusChange,\n } = props;\n const { hoverProps, isHovered } = useHover({\n onHoverChange,\n });\n const { focusProps, isFocusVisible } = useFocusRing();\n const isHorizontal = edge === 'right';\n\n // Notify parent of focus changes\n useEffect(() => {\n onFocusChange?.(isFocusVisible);\n }, [isFocusVisible, onFocusChange]);\n\n return (\n <div\n data-element=\"ResizeHandler\"\n {...mergeProps(hoverProps, focusProps, isDisabled ? {} : moveProps, {\n tabIndex: isDisabled ? undefined : 0,\n role: 'separator',\n 'aria-orientation': isHorizontal ? 'vertical' : 'horizontal',\n 'aria-label': `Resize pane ${edge}`,\n onDoubleClick: isDisabled ? undefined : onDoubleClick,\n })}\n >\n {!isDisabled && (\n <div data-element=\"Drag\">\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n </div>\n )}\n </div>\n );\n}\n\nfunction LayoutPane(\n props: CubeLayoutPaneProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n resizeEdge = 'right',\n isResizable = false,\n size: providedSize,\n defaultSize = 200,\n minSize,\n maxSize,\n onSizeChange,\n scrollbar = 'thin',\n styles,\n mods,\n children,\n innerRef: innerRefProp,\n innerProps,\n ...otherProps\n } = props;\n\n const combinedRef = useCombinedRefs(ref);\n const internalInnerRef = useRef<HTMLDivElement>(null);\n const combinedInnerRef = useCombinedRefs(innerRefProp, internalInnerRef);\n const prevProvidedSizeRef = useRef(providedSize);\n const isHorizontal = resizeEdge === 'right';\n\n // Resize state\n const [isDragging, setIsDragging] = useState(false);\n const [isHandlerHovered, setIsHandlerHovered] = useState(false);\n const [isHandlerFocused, setIsHandlerFocused] = useState(false);\n const debouncedHandlerHovered = useDebouncedValue(isHandlerHovered, 150);\n const [size, setSize] = useState<number>(() => {\n const initialSize =\n typeof providedSize === 'number'\n ? providedSize\n : typeof defaultSize === 'number'\n ? defaultSize\n : 200;\n\n return clampSize(initialSize, minSize, maxSize);\n });\n\n // Extract outer wrapper styles and inner content styles\n const outerStyles = extractStyles(otherProps, OUTER_STYLES);\n const innerStyles = extractStyles(otherProps, INNER_STYLES);\n\n const isTinyScrollbar = scrollbar === 'tiny';\n const { hoverProps, isHovered } = useHover({});\n\n const {\n handleVStyle,\n handleHStyle,\n hasOverflowY,\n hasOverflowX,\n isScrolling,\n } = useTinyScrollbar(internalInnerRef, isTinyScrollbar);\n\n // Clamp size to min/max constraints\n const clampValue = useCallback(\n (value: number) => clampSize(value, minSize, maxSize),\n [minSize, maxSize],\n );\n\n const { moveProps } = useMove({\n onMoveStart() {\n if (!isResizable) return;\n setIsDragging(true);\n },\n onMove(e) {\n if (!isResizable) return;\n\n let delta: number;\n\n if (e.pointerType === 'keyboard') {\n // Keyboard resize: 10px per step, 50px with Shift\n const step = e.shiftKey ? 50 : 10;\n const rawDelta = isHorizontal ? e.deltaX : e.deltaY;\n delta = rawDelta * step;\n } else {\n // Pointer resize: use exact delta values\n delta = isHorizontal ? e.deltaX : e.deltaY;\n }\n\n setSize((currentSize) => clampValue(currentSize + delta));\n },\n onMoveEnd() {\n setIsDragging(false);\n // Round to integer on release and notify parent\n setSize((currentSize) => {\n const finalSize = Math.round(clampValue(currentSize));\n onSizeChange?.(finalSize);\n return finalSize;\n });\n },\n });\n\n // Sync provided size with internal state (only when providedSize actually changes)\n // This prevents resetting size when only isDragging changes (which would cause a flash)\n useEffect(() => {\n if (prevProvidedSizeRef.current !== providedSize) {\n prevProvidedSizeRef.current = providedSize;\n if (typeof providedSize === 'number' && !isDragging) {\n setSize(clampValue(providedSize));\n }\n }\n }, [providedSize, isDragging, clampValue]);\n\n // Reset to default size on double-click\n const handleResetSize = useCallback(() => {\n const resetSize =\n typeof defaultSize === 'number' ? defaultSize : parseInt(defaultSize, 10);\n const clampedSize = clampValue(resetSize || 200);\n setSize(clampedSize);\n onSizeChange?.(clampedSize);\n }, [defaultSize, clampValue, onSizeChange]);\n\n const scrollbarStyle = useMemo(() => {\n if (!isTinyScrollbar) return {};\n\n return {\n ...handleVStyle,\n ...handleHStyle,\n };\n }, [isTinyScrollbar, handleVStyle, handleHStyle]);\n\n const paneMods = useMemo(\n () => ({\n scrollbar,\n hovered: isHovered,\n scrolling: isScrolling,\n handlerHovered: debouncedHandlerHovered,\n focused: isHandlerFocused,\n disabled: !isResizable,\n edge: resizeEdge,\n drag: isDragging,\n ...mods,\n }),\n [\n scrollbar,\n isHovered,\n isScrolling,\n debouncedHandlerHovered,\n isHandlerFocused,\n isResizable,\n resizeEdge,\n isDragging,\n mods,\n ],\n );\n\n // Merge styles: outer styles to root, inner styles to Inner element\n // Size is NOT included here - it's set via CSS custom property in paneStyle for performance\n const finalStyles = useMemo(() => {\n return mergeStyles(\n styles,\n outerStyles,\n innerStyles ? { Inner: innerStyles } : null,\n );\n }, [styles, outerStyles, innerStyles]);\n\n // Size is set via CSS custom property for performance during drag\n // This avoids expensive style recalculation on every mouse move\n const paneStyle = useMemo(\n () => ({\n ...scrollbarStyle,\n '--pane-size': `${size}px`,\n '--min-size': typeof minSize === 'number' ? `${minSize}px` : minSize,\n '--max-size': typeof maxSize === 'number' ? `${maxSize}px` : maxSize,\n }),\n [scrollbarStyle, size, minSize, maxSize],\n );\n\n return (\n <PaneElement\n ref={combinedRef}\n {...filterBaseProps(otherProps, { eventProps: true })}\n {...hoverProps}\n mods={paneMods}\n styles={finalStyles}\n style={paneStyle}\n >\n <div ref={combinedInnerRef} data-element=\"Inner\" {...innerProps}>\n <LayoutContextReset>{children}</LayoutContextReset>\n </div>\n {isTinyScrollbar && hasOverflowY && <div data-element=\"ScrollbarV\" />}\n {isTinyScrollbar && hasOverflowX && <div data-element=\"ScrollbarH\" />}\n {isResizable && (\n <PaneResizeHandler\n edge={resizeEdge}\n isDisabled={!isResizable}\n moveProps={moveProps}\n onDoubleClick={handleResetSize}\n onHoverChange={setIsHandlerHovered}\n onFocusChange={setIsHandlerFocused}\n />\n )}\n </PaneElement>\n );\n}\n\nconst _LayoutPane = forwardRef(LayoutPane);\n\n_LayoutPane.displayName = 'Layout.Pane';\n\nexport { _LayoutPane as LayoutPane };\n"],"mappings":"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"}
@@ -1,9 +1,7 @@
1
1
 
2
- import { Styles } from "../../../tasty/styles/types.js";
3
- import { BaseProps, ContainerStyleProps } from "../../../tasty/types.js";
4
- import "../../../tasty/index.js";
5
2
  import { CubeDialogContainerProps } from "../../overlays/Dialog/DialogContainer.js";
6
3
  import { Side } from "./LayoutContext.js";
4
+ import { BaseProps, ContainerStyleProps, Styles } from "@tenphi/tasty";
7
5
  import * as react from "react";
8
6
  import { ReactNode } from "react";
9
7
 
@@ -1,9 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.117.0 | Cube Dev Team */
2
- import { extractStyles } from "../../../tasty/utils/styles.js";
3
- import { mergeStyles } from "../../../tasty/utils/merge-styles.js";
4
- import { CONTAINER_STYLES } from "../../../tasty/styles/list.js";
5
- import { tasty } from "../../../tasty/tasty.js";
6
- import { filterBaseProps } from "../../../tasty/utils/filter-base-props.js";
1
+ /** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
7
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
8
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
9
4
  import { useLocalStorage } from "../../../utils/react/useLocalStorage.js";
@@ -13,6 +8,7 @@ import { DialogContainer } from "../../overlays/Dialog/DialogContainer.js";
13
8
  import { Dialog } from "../../overlays/Dialog/Dialog.js";
14
9
  import { LayoutContextReset, LayoutPanelContext, useLayoutActionsContext, useLayoutRefsContext, useLayoutStateContext } from "./LayoutContext.js";
15
10
  import { clampSize, getOppositeSide, resolveCssSize } from "./utils.js";
11
+ import { CONTAINER_STYLES, extractStyles, filterBaseProps, mergeStyles, tasty } from "@tenphi/tasty";
16
12
  import { forwardRef, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
17
13
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
18
14
  import { useFocusRing, useHover, useMove } from "react-aria";
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutPanel.js","names":["mergeProps"],"sources":["../../../../src/components/content/Layout/LayoutPanel.tsx"],"sourcesContent":["import {\n ForwardedRef,\n forwardRef,\n HTMLAttributes,\n ReactNode,\n RefCallback,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useFocusRing, useHover, useMove } from 'react-aria';\nimport { createPortal } from 'react-dom';\n\nimport { useDebouncedValue } from '../../../_internal/hooks';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n extractStyles,\n filterBaseProps,\n mergeStyles,\n Styles,\n tasty,\n} from '../../../tasty';\nimport {\n mergeProps,\n useCombinedRefs,\n useLocalStorage,\n} from '../../../utils/react';\nimport { DisplayTransition } from '../../helpers/DisplayTransition/DisplayTransition';\nimport { Dialog } from '../../overlays/Dialog';\nimport {\n CubeDialogContainerProps,\n DialogContainer,\n} from '../../overlays/Dialog/DialogContainer';\n\nimport {\n LayoutContextReset,\n LayoutPanelContext,\n Side,\n useLayoutActionsContext,\n useLayoutRefsContext,\n useLayoutStateContext,\n} from './LayoutContext';\nimport { clampSize, getOppositeSide, resolveCssSize } from './utils';\n\n// Resize handler dimensions\nconst HANDLER_WIDTH = 9;\n// How far from panel edge to position handler's inner edge (centers the 3px track on the edge)\nconst HANDLER_OFFSET = 4;\n// Extra inset added for resizable panels (to accommodate handler grab area)\nconst RESIZABLE_INSET_OFFSET = 2;\n\nconst PanelElement = tasty({\n as: 'div',\n qa: 'LayoutPanel',\n styles: {\n container: 'panel / inline-size',\n position: 'absolute',\n display: 'flex',\n flow: 'column',\n overflow: 'hidden',\n boxSizing: 'border-box',\n\n '$content-padding': '1x',\n // Auto-border size for sub-components (panels are always vertical)\n '$layout-border-size': '1bw',\n\n // Position based on side prop\n top: {\n '': 0,\n 'side=bottom': 'initial',\n },\n right: {\n '': 0,\n 'side=left': 'initial',\n },\n bottom: {\n '': 0,\n 'side=top': 'initial',\n },\n left: {\n '': 0,\n 'side=right': 'initial',\n },\n\n // Size handling with CSS-level min/max clamping\n width: {\n '': '$min-size $panel-size $max-size',\n 'side=top | side=bottom': '100%',\n },\n height: {\n '': '100%',\n 'side=top | side=bottom': '$min-size $panel-size $max-size',\n },\n\n // Visual styling\n border: {\n 'side=left': 'right',\n 'side=right': 'left',\n 'side=top': 'bottom',\n 'side=bottom': 'top',\n },\n fill: '#white',\n\n // Transition styles - offscreen mod controls slide animation\n transform: {\n '': 'translateX(0) translateY(0)',\n 'offscreen & side=left': 'translateX(-100%)',\n 'offscreen & side=right': 'translateX(100%)',\n 'offscreen & side=top': 'translateY(-100%)',\n 'offscreen & side=bottom': 'translateY(100%)',\n },\n transition: {\n '': 'none',\n 'has-transition': 'transform $transition ease-out',\n },\n },\n});\n\n// Handler is positioned as sibling to panel (in Fragment), relative to Layout\nconst ResizeHandlerElement = tasty({\n qa: 'PanelResizeHandler',\n styles: {\n position: 'absolute',\n\n // Handler size\n width: {\n '': '100%',\n horizontal: `${HANDLER_WIDTH}px`,\n 'disabled & horizontal': '1bw',\n },\n height: {\n '': `${HANDLER_WIDTH}px`,\n horizontal: '100%',\n 'disabled & !horizontal': '1bw',\n },\n\n // Position handler with direct offset (no centering needed)\n top: {\n '': 0,\n 'side=top': `calc($panel-size - ${HANDLER_OFFSET}px)`,\n 'side=bottom': 'initial',\n },\n bottom: {\n '': 0,\n 'side=bottom': `calc($panel-size - ${HANDLER_OFFSET}px)`,\n 'side=top': 'initial',\n },\n left: {\n '': 0,\n 'side=left': `calc($panel-size - ${HANDLER_OFFSET}px)`,\n 'side=right': 'initial',\n },\n right: {\n '': 0,\n 'side=right': `calc($panel-size - ${HANDLER_OFFSET}px)`,\n 'side=left': 'initial',\n },\n\n // Offscreen transforms only (no centering needed with direct offset positioning)\n transform: {\n 'offscreen & side=left': `translateX(calc(-1 * $panel-size - ${HANDLER_WIDTH - HANDLER_OFFSET}px))`,\n 'offscreen & side=right': `translateX(calc($panel-size + ${HANDLER_WIDTH - HANDLER_OFFSET}px))`,\n 'offscreen & side=top': `translateY(calc(-1 * $panel-size - ${HANDLER_WIDTH - HANDLER_OFFSET}px))`,\n 'offscreen & side=bottom': `translateY(calc($panel-size + ${HANDLER_WIDTH - HANDLER_OFFSET}px))`,\n },\n\n cursor: {\n '': 'row-resize',\n horizontal: 'col-resize',\n disabled: 'not-allowed',\n },\n padding: 0,\n outline: 0,\n boxSizing: 'border-box',\n\n // Transition must match panel for synchronized animation\n transition: {\n '': 'theme',\n 'has-transition': 'transform $transition ease-out, theme',\n },\n\n Track: {\n width: {\n '': 'initial',\n horizontal: '3px',\n 'disabled & horizontal': '1px',\n },\n height: {\n '': '3px',\n horizontal: 'initial',\n 'disabled & !horizontal': '1px',\n },\n position: 'absolute',\n inset: {\n '': '3px 0',\n horizontal: '0 3px',\n disabled: '0 0',\n },\n fill: {\n '': '#border',\n '(hovered | drag | focused) & !disabled': '#purple-03',\n },\n border: 0,\n transition: 'theme',\n outline: {\n '': '1bw #primary-text.0',\n 'drag | focused': '1bw #primary-text',\n },\n outlineOffset: 1,\n },\n\n Drag: {\n display: 'grid',\n gap: '2bw',\n border: 0,\n flow: {\n '': 'row',\n horizontal: 'column',\n },\n gridColumns: {\n '': '3px 3px 3px 3px 3px',\n horizontal: 'auto',\n },\n gridRows: {\n '': 'auto',\n horizontal: '3px 3px 3px 3px 3px',\n },\n width: {\n '': 'auto',\n horizontal: '1px',\n },\n height: {\n '': '1px',\n horizontal: 'auto',\n },\n inset: {\n '': '4px 50% auto auto',\n horizontal: '50% 4px auto auto',\n },\n transform: {\n '': 'translate(-50%, 0)',\n horizontal: 'translate(0, -50%)',\n },\n position: 'absolute',\n transition: 'theme',\n },\n\n DragPart: {\n radius: true,\n fill: {\n '': '#dark-03',\n 'hovered | drag | focused': '#primary-text',\n disabled: '#dark-04',\n },\n },\n },\n});\n\n// Overlay backdrop for overlay mode - covers the content area behind the panel\nconst OverlayBackdrop = tasty({\n qa: 'PanelOverlay',\n styles: {\n position: 'absolute',\n inset: 0,\n // fill: '#white.2',\n backdropFilter: 'invert(.15)',\n cursor: 'pointer',\n opacity: {\n '': 0,\n visible: 1,\n },\n pointerEvents: {\n '': 'none',\n visible: 'auto',\n },\n transition: 'opacity .15s ease-out',\n },\n});\n\ninterface ResizeHandlerProps {\n side: Side;\n isDisabled?: boolean;\n mods?: Record<string, boolean>;\n moveProps: ReturnType<typeof useMove>['moveProps'];\n style?: Record<string, string | number | null | undefined>;\n onDoubleClick?: () => void;\n}\n\nfunction ResizeHandler(props: ResizeHandlerProps) {\n const { side, isDisabled, mods, moveProps, style, onDoubleClick } = props;\n const { hoverProps, isHovered } = useHover({});\n const { focusProps, isFocusVisible } = useFocusRing();\n const isHorizontal = side === 'left' || side === 'right';\n const localIsHovered = useDebouncedValue(isHovered, 150);\n\n return (\n <ResizeHandlerElement\n {...mergeProps(hoverProps, focusProps, moveProps, {\n mods: {\n hovered: localIsHovered,\n horizontal: isHorizontal,\n disabled: isDisabled,\n focused: isFocusVisible,\n side,\n ...mods,\n },\n style,\n tabIndex: isDisabled ? undefined : 0,\n role: 'separator',\n 'aria-orientation': isHorizontal ? 'vertical' : 'horizontal',\n 'aria-label': `Resize ${side} panel`,\n onDoubleClick: isDisabled ? undefined : onDoubleClick,\n })}\n >\n <div data-element=\"Track\" />\n {!isDisabled && (\n <div data-element=\"Drag\">\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n </div>\n )}\n </ResizeHandlerElement>\n );\n}\n\n/** Panel rendering mode */\nexport type LayoutPanelMode = 'default' | 'sticky' | 'overlay' | 'dialog';\n\nexport interface CubeLayoutPanelProps extends BaseProps, ContainerStyleProps {\n /** Side of the layout where panel is positioned */\n side: Side;\n /**\n * Panel rendering mode:\n * - `default`: Standard panel that pushes content aside\n * - `sticky`: Panel floats over content without pushing it\n * - `overlay`: Panel with dismissable backdrop overlay\n * - `dialog`: Panel renders as a modal dialog\n */\n mode?: LayoutPanelMode;\n /** Panel size (width for left/right, height for top/bottom) - controlled */\n size?: number | string;\n /** Default panel size for uncontrolled state */\n defaultSize?: number | string;\n /** Minimum panel size */\n minSize?: number | string;\n /** Maximum panel size */\n maxSize?: number | string;\n /** Enable resize functionality */\n isResizable?: boolean;\n /** Size change callback */\n onSizeChange?: (size: number) => void;\n /** Controlled open state */\n isOpen?: boolean;\n /** Default open state */\n defaultIsOpen?: boolean;\n /** Open state change callback */\n onOpenChange?: (isOpen: boolean) => void;\n /** Enable slide transition on open/close */\n hasTransition?: boolean;\n /**\n * Whether the panel can be dismissed by clicking the overlay (overlay mode) or pressing Escape.\n * Only applies to `overlay` and `dialog` modes. Default: true\n */\n isDismissable?: boolean;\n /** Styles for the overlay backdrop in overlay mode */\n overlayStyles?: Styles;\n /**\n * @deprecated Use `mode=\"dialog\"` instead. Switch to dialog mode (renders panel inside Dialog)\n */\n isDialog?: boolean;\n /** Controlled dialog open state (used with mode=\"dialog\") */\n isDialogOpen?: boolean;\n /** Default dialog open state */\n defaultIsDialogOpen?: boolean;\n /** Dialog open state change callback */\n onDialogOpenChange?: (isOpen: boolean) => void;\n /** Props passed to Dialog component when in dialog mode */\n dialogProps?: Omit<\n CubeDialogContainerProps,\n 'isDismissable' | 'onDismiss' | 'isOpen'\n >;\n /** Padding for content areas inside the panel. Default: '1x' */\n contentPadding?: Styles['padding'];\n /** localStorage key for persisting panel size. When provided, size is stored and restored across instances. */\n sizeStorageKey?: string;\n /** Styles for the panel */\n styles?: Styles;\n children?: ReactNode;\n}\n\nfunction LayoutPanel(\n props: CubeLayoutPanelProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const layoutActions = useLayoutActionsContext();\n const layoutState = useLayoutStateContext();\n const layoutRefs = useLayoutRefsContext();\n\n if (!layoutActions || !layoutState || !layoutRefs) {\n throw new Error(\n 'Layout.Panel must be used within a Layout component. ' +\n 'Ensure your panel is rendered inside a <Layout> parent.',\n );\n }\n\n const {\n side = 'left',\n mode: modeProp,\n size: providedSize,\n defaultSize = 280,\n minSize = 200,\n maxSize,\n isResizable = false,\n onSizeChange,\n isOpen: providedIsOpen,\n defaultIsOpen = true,\n onOpenChange,\n hasTransition: hasTransitionProp,\n isDismissable = true,\n overlayStyles,\n // Deprecated prop - use mode=\"dialog\" instead\n isDialog = false,\n isDialogOpen: providedIsDialogOpen,\n defaultIsDialogOpen = false,\n onDialogOpenChange,\n dialogProps,\n contentPadding,\n sizeStorageKey,\n children,\n styles,\n mods,\n ...otherProps\n } = props;\n\n // Resolve mode from prop or deprecated isDialog\n const mode: LayoutPanelMode = modeProp ?? (isDialog ? 'dialog' : 'default');\n const isDialogMode = mode === 'dialog';\n const isOverlayMode = mode === 'overlay';\n const isStickyMode = mode === 'sticky';\n\n // Use prop value if provided, otherwise fall back to context value\n const hasTransition = hasTransitionProp ?? layoutActions.hasTransition;\n\n const combinedRef = useCombinedRefs(ref);\n const prevProvidedSizeRef = useRef(providedSize);\n const isHorizontal = side === 'left' || side === 'right';\n\n // Natural boundary computation\n const { containerWidth, containerHeight } = layoutState;\n const { minContentSize } = layoutActions;\n const containerDimension = isHorizontal ? containerWidth : containerHeight;\n const oppositeSide = getOppositeSide(side);\n const oppositePanelSize = layoutState.panelSizes[oppositeSide];\n const ownInsetOffset = isResizable ? RESIZABLE_INSET_OFFSET : 0;\n const naturalMax = useMemo(\n () =>\n containerDimension > 0\n ? Math.max(\n 0,\n containerDimension -\n oppositePanelSize -\n minContentSize -\n ownInsetOffset,\n )\n : Infinity,\n [containerDimension, oppositePanelSize, minContentSize, ownInsetOffset],\n );\n\n // Panel open state\n const [internalIsOpen, setInternalIsOpen] = useState(defaultIsOpen);\n const isOpen = providedIsOpen ?? internalIsOpen;\n\n // Dialog open state\n const [internalIsDialogOpen, setInternalIsDialogOpen] =\n useState(defaultIsDialogOpen);\n const dialogOpen = providedIsDialogOpen ?? internalIsDialogOpen;\n\n // Persistent size storage\n const [storedSize, setStoredSize] = useLocalStorage<number | null>(\n sizeStorageKey ?? null,\n null,\n );\n\n // Resize state\n const [isDragging, setIsDragging] = useState(false);\n const [size, setSize] = useState<number>(() => {\n const initialSize =\n typeof providedSize === 'number'\n ? providedSize\n : storedSize != null\n ? storedSize\n : typeof defaultSize === 'number'\n ? defaultSize\n : 280;\n\n return clampSize(initialSize, minSize, maxSize);\n });\n\n const extractedStyles = extractStyles(otherProps, CONTAINER_STYLES);\n\n // Merge styles with contentPadding support\n const finalStyles = useMemo(\n () =>\n mergeStyles(\n styles,\n contentPadding != null ? { '$content-padding': contentPadding } : null,\n extractedStyles,\n ),\n [extractedStyles, contentPadding, styles],\n );\n\n // Resolve user's maxSize to pixels for JS-level clamping.\n // String values (e.g. \"50%\") can only be resolved once we know the container size.\n const resolvedMax = useMemo(() => {\n if (typeof maxSize === 'number') return maxSize;\n if (typeof maxSize === 'string' && containerDimension > 0) {\n return resolveCssSize(maxSize, containerDimension);\n }\n return undefined;\n }, [maxSize, containerDimension]);\n\n // Effective max combines user's maxSize with natural boundary\n const effectiveMax = useMemo(() => {\n const values: number[] = [];\n if (resolvedMax != null) values.push(resolvedMax);\n if (Number.isFinite(naturalMax)) values.push(naturalMax);\n return values.length > 0 ? Math.min(...values) : undefined;\n }, [resolvedMax, naturalMax]);\n\n // Clamp size to min/max constraints (including natural boundaries)\n const clampValue = useCallback(\n (value: number) => clampSize(value, minSize, undefined, effectiveMax),\n [minSize, effectiveMax],\n );\n\n const setContextDragging = layoutActions.setDragging;\n\n const { moveProps } = useMove({\n onMoveStart() {\n if (!isResizable) return;\n setIsDragging(true);\n setContextDragging(true);\n },\n onMove(e) {\n if (!isResizable) return;\n\n let delta: number;\n\n if (e.pointerType === 'keyboard') {\n // Keyboard resize: 10px per step, 50px with Shift\n const step = e.shiftKey ? 50 : 10;\n // For keyboard, deltaX/deltaY are direction indicators (-1, 0, 1)\n const rawDelta = isHorizontal ? e.deltaX : e.deltaY;\n const direction = side === 'right' || side === 'bottom' ? -1 : 1;\n delta = rawDelta * step * direction;\n } else {\n // Pointer resize: use exact delta values\n delta = isHorizontal\n ? e.deltaX * (side === 'right' ? -1 : 1)\n : e.deltaY * (side === 'bottom' ? -1 : 1);\n }\n\n setSize((currentSize) => clampValue(currentSize + delta));\n },\n onMoveEnd() {\n setIsDragging(false);\n setContextDragging(false);\n // Round to integer on release and notify parent\n setSize((currentSize) => {\n const finalSize = Math.round(clampValue(currentSize));\n // Call onSizeChange synchronously to ensure parent state is updated\n onSizeChange?.(finalSize);\n // Persist to localStorage if key is provided\n setStoredSize(finalSize);\n return finalSize;\n });\n },\n });\n\n // Sync provided size with internal state (only when providedSize actually changes)\n // This prevents resetting size when only isDragging changes (which would cause a flash)\n useEffect(() => {\n if (prevProvidedSizeRef.current !== providedSize) {\n prevProvidedSizeRef.current = providedSize;\n if (typeof providedSize === 'number' && !isDragging) {\n setSize(clampValue(providedSize));\n }\n }\n }, [providedSize, isDragging, clampValue]);\n\n // Auto-shrink: re-clamp when container resizes or opposite panel changes\n useEffect(() => {\n if (!isDragging && containerDimension > 0) {\n setSize((prev) => {\n const clamped = clampValue(prev);\n\n if (clamped !== prev) {\n onSizeChange?.(Math.round(clamped));\n setStoredSize(Math.round(clamped));\n }\n\n return clamped;\n });\n }\n }, [isDragging, clampValue, containerDimension]);\n\n // Register panel with layout context\n // Include handler outside portion (minus border overlap) for proper content inset\n // In sticky, overlay, and dialog modes, panel doesn't push content, so size is 0\n // NOTE: We intentionally use `size` (not `clampValue(size)`) here to avoid a feedback\n // loop. `clampValue` depends on the opposite panel's context size, so clamping here\n // would create a period-2 oscillation through shared context. CSS --max-size handles\n // visual clamping immediately; the auto-shrink effect converges `size` state.\n const effectivePanelSize = isOpen && mode === 'default' ? size : 0;\n const effectiveInsetSize = Math.round(\n effectivePanelSize +\n (isResizable && effectivePanelSize > 0 ? RESIZABLE_INSET_OFFSET : 0),\n );\n\n const { registerPanel, unregisterPanel, updatePanelSize } = layoutActions;\n const { isReady } = layoutState;\n\n // Track the last reported size to prevent unnecessary updates\n const lastSizeRef = useRef<number>(effectiveInsetSize);\n\n // Register on mount, unregister on unmount\n // Using useLayoutEffect ensures registration happens before browser paint\n useLayoutEffect(() => {\n registerPanel(side, lastSizeRef.current);\n\n return () => {\n unregisterPanel(side);\n };\n }, [side, registerPanel, unregisterPanel]);\n\n // Update size when it changes (after initial mount)\n // Using useLayoutEffect ensures size updates happen before browser paint\n useLayoutEffect(() => {\n if (lastSizeRef.current !== effectiveInsetSize) {\n lastSizeRef.current = effectiveInsetSize;\n updatePanelSize(side, effectiveInsetSize);\n }\n }, [side, effectiveInsetSize, updatePanelSize]);\n\n const handleOpenChange = useCallback(\n (newIsOpen: boolean) => {\n setInternalIsOpen(newIsOpen);\n onOpenChange?.(newIsOpen);\n },\n [onOpenChange],\n );\n\n // Dismiss handler for overlay mode (click on overlay)\n const handleDismiss = useCallback(() => {\n if (isDismissable) {\n handleOpenChange(false);\n }\n }, [isDismissable, handleOpenChange]);\n\n // Register overlay panel with Layout context for coordinated dismissal\n const { registerOverlayPanel } = layoutActions;\n\n useEffect(() => {\n // Only register if in overlay mode, open, and dismissable\n if (isOverlayMode && isOpen && isDismissable) {\n const unregister = registerOverlayPanel(() => handleOpenChange(false));\n return unregister;\n }\n }, [\n isOverlayMode,\n isOpen,\n isDismissable,\n registerOverlayPanel,\n handleOpenChange,\n ]);\n\n const handleDialogOpenChange = useCallback(\n (newIsOpen: boolean) => {\n setInternalIsDialogOpen(newIsOpen);\n onDialogOpenChange?.(newIsOpen);\n },\n [onDialogOpenChange],\n );\n\n // Panel context value for child components (like LayoutPanelHeader)\n const panelContextValue = useMemo(\n () => ({\n onOpenChange: handleOpenChange,\n isOpen,\n }),\n [handleOpenChange, isOpen],\n );\n\n // Dialog mode context value - uses dialog state instead of panel state\n const dialogPanelContextValue = useMemo(\n () => ({\n onOpenChange: handleDialogOpenChange,\n isOpen: dialogOpen,\n }),\n [handleDialogOpenChange, dialogOpen],\n );\n\n const panelMods = useMemo(\n () => ({\n side,\n drag: isDragging,\n horizontal: isHorizontal,\n // Only enable transition after layout is ready to prevent initial animation\n 'has-transition': hasTransition && isReady,\n ...mods,\n }),\n [side, isDragging, isHorizontal, hasTransition, isReady, mods],\n );\n\n // Build --max-size CSS variable combining user maxSize and natural boundary\n const maxSizeCss = useMemo(() => {\n const parts: string[] = [];\n\n if (maxSize != null) {\n parts.push(typeof maxSize === 'number' ? `${maxSize}px` : maxSize);\n }\n\n if (containerDimension > 0 && Number.isFinite(naturalMax)) {\n parts.push(`${naturalMax}px`);\n }\n\n if (parts.length === 0) return undefined;\n return parts.length === 1 ? parts[0] : `min(${parts.join(', ')})`;\n }, [maxSize, naturalMax, containerDimension]);\n\n const panelStyle = useMemo(\n () => ({\n '--panel-size': `${size}px`,\n '--min-size': typeof minSize === 'number' ? `${minSize}px` : minSize,\n '--max-size': maxSizeCss,\n }),\n [size, minSize, maxSizeCss],\n );\n\n // Combine refs for panel element\n const panelRefCallback = useCallback(\n (node: HTMLDivElement | null, transitionRef?: RefCallback<HTMLElement>) => {\n // Update the combined ref\n (combinedRef as { current: HTMLDivElement | null }).current = node;\n // Call transition ref if provided\n transitionRef?.(node);\n },\n [combinedRef],\n );\n\n // Reset to default size on double-click\n const handleResetSize = useCallback(() => {\n const resetSize =\n typeof defaultSize === 'number' ? defaultSize : parseInt(defaultSize, 10);\n const clampedSize = clampValue(resetSize || 280);\n setSize(clampedSize);\n onSizeChange?.(clampedSize);\n setStoredSize(clampedSize);\n }, [defaultSize, clampValue, onSizeChange, setStoredSize]);\n\n const renderPanelContent = (\n offscreen = false,\n transitionRef?: RefCallback<HTMLElement>,\n ) => {\n const showOverlay = isOverlayMode && !offscreen;\n\n return (\n <>\n {/* Overlay backdrop for overlay mode */}\n {isOverlayMode && (\n <OverlayBackdrop\n mods={{ visible: showOverlay }}\n styles={overlayStyles}\n aria-hidden=\"true\"\n onClick={handleDismiss}\n />\n )}\n <PanelElement\n ref={(node: HTMLDivElement | null) =>\n panelRefCallback(node, transitionRef)\n }\n {...filterBaseProps(otherProps, { eventProps: true })}\n mods={{ ...panelMods, offscreen }}\n styles={finalStyles}\n style={panelStyle}\n data-side={side}\n >\n <LayoutPanelContext.Provider value={panelContextValue}>\n <LayoutContextReset>{children}</LayoutContextReset>\n </LayoutPanelContext.Provider>\n </PanelElement>\n {isResizable && (\n <ResizeHandler\n side={side}\n isDisabled={!isResizable}\n mods={{\n drag: isDragging,\n offscreen,\n 'has-transition': hasTransition && isReady,\n }}\n moveProps={moveProps}\n style={panelStyle}\n onDoubleClick={handleResetSize}\n />\n )}\n </>\n );\n };\n\n // Dialog mode - uses its own portal via DialogContainer\n if (isDialogMode) {\n return (\n <DialogContainer\n isOpen={dialogOpen}\n isDismissable={isDismissable}\n onDismiss={() => handleDialogOpenChange(false)}\n {...dialogProps}\n >\n <Dialog isDismissable={false}>\n <LayoutPanelContext.Provider value={dialogPanelContextValue}>\n <LayoutContextReset>{children}</LayoutContextReset>\n </LayoutPanelContext.Provider>\n </Dialog>\n </DialogContainer>\n );\n }\n\n // Wait for portal container to be ready before rendering\n if (!layoutRefs.isPanelContainerReady) {\n return null;\n }\n\n const portalContainer = layoutRefs.panelContainerRef.current!;\n\n // Panel with transition - portal to panel container\n if (hasTransition) {\n return createPortal(\n <DisplayTransition isShown={isOpen} animateOnMount={false}>\n {({ isShown, ref: transitionRef }) =>\n renderPanelContent(!isShown, transitionRef)\n }\n </DisplayTransition>,\n portalContainer,\n );\n }\n\n // Simple panel (no transition) - portal to panel container\n if (!isOpen) return null;\n\n return createPortal(renderPanelContent(false), portalContainer);\n}\n\nconst _LayoutPanel = forwardRef(LayoutPanel);\n\n_LayoutPanel.displayName = 'Layout.Panel';\n\nexport { _LayoutPanel as LayoutPanel };\n"],"mappings":"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"}
1
+ {"version":3,"file":"LayoutPanel.js","names":["mergeProps"],"sources":["../../../../src/components/content/Layout/LayoutPanel.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 RefCallback,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useFocusRing, useHover, useMove } from 'react-aria';\nimport { createPortal } from 'react-dom';\n\nimport { useDebouncedValue } from '../../../_internal/hooks';\nimport {\n mergeProps,\n useCombinedRefs,\n useLocalStorage,\n} from '../../../utils/react';\nimport { DisplayTransition } from '../../helpers/DisplayTransition/DisplayTransition';\nimport { Dialog } from '../../overlays/Dialog';\nimport {\n CubeDialogContainerProps,\n DialogContainer,\n} from '../../overlays/Dialog/DialogContainer';\n\nimport {\n LayoutContextReset,\n LayoutPanelContext,\n Side,\n useLayoutActionsContext,\n useLayoutRefsContext,\n useLayoutStateContext,\n} from './LayoutContext';\nimport { clampSize, getOppositeSide, resolveCssSize } from './utils';\n\n// Resize handler dimensions\nconst HANDLER_WIDTH = 9;\n// How far from panel edge to position handler's inner edge (centers the 3px track on the edge)\nconst HANDLER_OFFSET = 4;\n// Extra inset added for resizable panels (to accommodate handler grab area)\nconst RESIZABLE_INSET_OFFSET = 2;\n\nconst PanelElement = tasty({\n as: 'div',\n qa: 'LayoutPanel',\n styles: {\n container: 'panel / inline-size',\n position: 'absolute',\n display: 'flex',\n flow: 'column',\n overflow: 'hidden',\n boxSizing: 'border-box',\n\n '$content-padding': '1x',\n // Auto-border size for sub-components (panels are always vertical)\n '$layout-border-size': '1bw',\n\n // Position based on side prop\n top: {\n '': 0,\n 'side=bottom': 'initial',\n },\n right: {\n '': 0,\n 'side=left': 'initial',\n },\n bottom: {\n '': 0,\n 'side=top': 'initial',\n },\n left: {\n '': 0,\n 'side=right': 'initial',\n },\n\n // Size handling with CSS-level min/max clamping\n width: {\n '': '$min-size $panel-size $max-size',\n 'side=top | side=bottom': '100%',\n },\n height: {\n '': '100%',\n 'side=top | side=bottom': '$min-size $panel-size $max-size',\n },\n\n // Visual styling\n border: {\n 'side=left': 'right',\n 'side=right': 'left',\n 'side=top': 'bottom',\n 'side=bottom': 'top',\n },\n fill: '#white',\n\n // Transition styles - offscreen mod controls slide animation\n transform: {\n '': 'translateX(0) translateY(0)',\n 'offscreen & side=left': 'translateX(-100%)',\n 'offscreen & side=right': 'translateX(100%)',\n 'offscreen & side=top': 'translateY(-100%)',\n 'offscreen & side=bottom': 'translateY(100%)',\n },\n transition: {\n '': 'none',\n 'has-transition': 'transform $transition ease-out',\n },\n },\n});\n\n// Handler is positioned as sibling to panel (in Fragment), relative to Layout\nconst ResizeHandlerElement = tasty({\n qa: 'PanelResizeHandler',\n styles: {\n position: 'absolute',\n\n // Handler size\n width: {\n '': '100%',\n horizontal: `${HANDLER_WIDTH}px`,\n 'disabled & horizontal': '1bw',\n },\n height: {\n '': `${HANDLER_WIDTH}px`,\n horizontal: '100%',\n 'disabled & !horizontal': '1bw',\n },\n\n // Position handler with direct offset (no centering needed)\n top: {\n '': 0,\n 'side=top': `calc($panel-size - ${HANDLER_OFFSET}px)`,\n 'side=bottom': 'initial',\n },\n bottom: {\n '': 0,\n 'side=bottom': `calc($panel-size - ${HANDLER_OFFSET}px)`,\n 'side=top': 'initial',\n },\n left: {\n '': 0,\n 'side=left': `calc($panel-size - ${HANDLER_OFFSET}px)`,\n 'side=right': 'initial',\n },\n right: {\n '': 0,\n 'side=right': `calc($panel-size - ${HANDLER_OFFSET}px)`,\n 'side=left': 'initial',\n },\n\n // Offscreen transforms only (no centering needed with direct offset positioning)\n transform: {\n 'offscreen & side=left': `translateX(calc(-1 * $panel-size - ${HANDLER_WIDTH - HANDLER_OFFSET}px))`,\n 'offscreen & side=right': `translateX(calc($panel-size + ${HANDLER_WIDTH - HANDLER_OFFSET}px))`,\n 'offscreen & side=top': `translateY(calc(-1 * $panel-size - ${HANDLER_WIDTH - HANDLER_OFFSET}px))`,\n 'offscreen & side=bottom': `translateY(calc($panel-size + ${HANDLER_WIDTH - HANDLER_OFFSET}px))`,\n },\n\n cursor: {\n '': 'row-resize',\n horizontal: 'col-resize',\n disabled: 'not-allowed',\n },\n padding: 0,\n outline: 0,\n boxSizing: 'border-box',\n\n // Transition must match panel for synchronized animation\n transition: {\n '': 'theme',\n 'has-transition': 'transform $transition ease-out, theme',\n },\n\n Track: {\n width: {\n '': 'initial',\n horizontal: '3px',\n 'disabled & horizontal': '1px',\n },\n height: {\n '': '3px',\n horizontal: 'initial',\n 'disabled & !horizontal': '1px',\n },\n position: 'absolute',\n inset: {\n '': '3px 0',\n horizontal: '0 3px',\n disabled: '0 0',\n },\n fill: {\n '': '#border',\n '(hovered | drag | focused) & !disabled': '#purple-03',\n },\n border: 0,\n transition: 'theme',\n outline: {\n '': '1bw #primary-text.0',\n 'drag | focused': '1bw #primary-text',\n },\n outlineOffset: 1,\n },\n\n Drag: {\n display: 'grid',\n gap: '2bw',\n border: 0,\n flow: {\n '': 'row',\n horizontal: 'column',\n },\n gridColumns: {\n '': '3px 3px 3px 3px 3px',\n horizontal: 'auto',\n },\n gridRows: {\n '': 'auto',\n horizontal: '3px 3px 3px 3px 3px',\n },\n width: {\n '': 'auto',\n horizontal: '1px',\n },\n height: {\n '': '1px',\n horizontal: 'auto',\n },\n inset: {\n '': '4px 50% auto auto',\n horizontal: '50% 4px auto auto',\n },\n transform: {\n '': 'translate(-50%, 0)',\n horizontal: 'translate(0, -50%)',\n },\n position: 'absolute',\n transition: 'theme',\n },\n\n DragPart: {\n radius: true,\n fill: {\n '': '#dark-03',\n 'hovered | drag | focused': '#primary-text',\n disabled: '#dark-04',\n },\n },\n },\n});\n\n// Overlay backdrop for overlay mode - covers the content area behind the panel\nconst OverlayBackdrop = tasty({\n qa: 'PanelOverlay',\n styles: {\n position: 'absolute',\n inset: 0,\n // fill: '#white.2',\n backdropFilter: 'invert(.15)',\n cursor: 'pointer',\n opacity: {\n '': 0,\n visible: 1,\n },\n pointerEvents: {\n '': 'none',\n visible: 'auto',\n },\n transition: 'opacity .15s ease-out',\n },\n});\n\ninterface ResizeHandlerProps {\n side: Side;\n isDisabled?: boolean;\n mods?: Record<string, boolean>;\n moveProps: ReturnType<typeof useMove>['moveProps'];\n style?: Record<string, string | number | null | undefined>;\n onDoubleClick?: () => void;\n}\n\nfunction ResizeHandler(props: ResizeHandlerProps) {\n const { side, isDisabled, mods, moveProps, style, onDoubleClick } = props;\n const { hoverProps, isHovered } = useHover({});\n const { focusProps, isFocusVisible } = useFocusRing();\n const isHorizontal = side === 'left' || side === 'right';\n const localIsHovered = useDebouncedValue(isHovered, 150);\n\n return (\n <ResizeHandlerElement\n {...mergeProps(hoverProps, focusProps, moveProps, {\n mods: {\n hovered: localIsHovered,\n horizontal: isHorizontal,\n disabled: isDisabled,\n focused: isFocusVisible,\n side,\n ...mods,\n },\n style,\n tabIndex: isDisabled ? undefined : 0,\n role: 'separator',\n 'aria-orientation': isHorizontal ? 'vertical' : 'horizontal',\n 'aria-label': `Resize ${side} panel`,\n onDoubleClick: isDisabled ? undefined : onDoubleClick,\n })}\n >\n <div data-element=\"Track\" />\n {!isDisabled && (\n <div data-element=\"Drag\">\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n <div data-element=\"DragPart\" />\n </div>\n )}\n </ResizeHandlerElement>\n );\n}\n\n/** Panel rendering mode */\nexport type LayoutPanelMode = 'default' | 'sticky' | 'overlay' | 'dialog';\n\nexport interface CubeLayoutPanelProps extends BaseProps, ContainerStyleProps {\n /** Side of the layout where panel is positioned */\n side: Side;\n /**\n * Panel rendering mode:\n * - `default`: Standard panel that pushes content aside\n * - `sticky`: Panel floats over content without pushing it\n * - `overlay`: Panel with dismissable backdrop overlay\n * - `dialog`: Panel renders as a modal dialog\n */\n mode?: LayoutPanelMode;\n /** Panel size (width for left/right, height for top/bottom) - controlled */\n size?: number | string;\n /** Default panel size for uncontrolled state */\n defaultSize?: number | string;\n /** Minimum panel size */\n minSize?: number | string;\n /** Maximum panel size */\n maxSize?: number | string;\n /** Enable resize functionality */\n isResizable?: boolean;\n /** Size change callback */\n onSizeChange?: (size: number) => void;\n /** Controlled open state */\n isOpen?: boolean;\n /** Default open state */\n defaultIsOpen?: boolean;\n /** Open state change callback */\n onOpenChange?: (isOpen: boolean) => void;\n /** Enable slide transition on open/close */\n hasTransition?: boolean;\n /**\n * Whether the panel can be dismissed by clicking the overlay (overlay mode) or pressing Escape.\n * Only applies to `overlay` and `dialog` modes. Default: true\n */\n isDismissable?: boolean;\n /** Styles for the overlay backdrop in overlay mode */\n overlayStyles?: Styles;\n /**\n * @deprecated Use `mode=\"dialog\"` instead. Switch to dialog mode (renders panel inside Dialog)\n */\n isDialog?: boolean;\n /** Controlled dialog open state (used with mode=\"dialog\") */\n isDialogOpen?: boolean;\n /** Default dialog open state */\n defaultIsDialogOpen?: boolean;\n /** Dialog open state change callback */\n onDialogOpenChange?: (isOpen: boolean) => void;\n /** Props passed to Dialog component when in dialog mode */\n dialogProps?: Omit<\n CubeDialogContainerProps,\n 'isDismissable' | 'onDismiss' | 'isOpen'\n >;\n /** Padding for content areas inside the panel. Default: '1x' */\n contentPadding?: Styles['padding'];\n /** localStorage key for persisting panel size. When provided, size is stored and restored across instances. */\n sizeStorageKey?: string;\n /** Styles for the panel */\n styles?: Styles;\n children?: ReactNode;\n}\n\nfunction LayoutPanel(\n props: CubeLayoutPanelProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const layoutActions = useLayoutActionsContext();\n const layoutState = useLayoutStateContext();\n const layoutRefs = useLayoutRefsContext();\n\n if (!layoutActions || !layoutState || !layoutRefs) {\n throw new Error(\n 'Layout.Panel must be used within a Layout component. ' +\n 'Ensure your panel is rendered inside a <Layout> parent.',\n );\n }\n\n const {\n side = 'left',\n mode: modeProp,\n size: providedSize,\n defaultSize = 280,\n minSize = 200,\n maxSize,\n isResizable = false,\n onSizeChange,\n isOpen: providedIsOpen,\n defaultIsOpen = true,\n onOpenChange,\n hasTransition: hasTransitionProp,\n isDismissable = true,\n overlayStyles,\n // Deprecated prop - use mode=\"dialog\" instead\n isDialog = false,\n isDialogOpen: providedIsDialogOpen,\n defaultIsDialogOpen = false,\n onDialogOpenChange,\n dialogProps,\n contentPadding,\n sizeStorageKey,\n children,\n styles,\n mods,\n ...otherProps\n } = props;\n\n // Resolve mode from prop or deprecated isDialog\n const mode: LayoutPanelMode = modeProp ?? (isDialog ? 'dialog' : 'default');\n const isDialogMode = mode === 'dialog';\n const isOverlayMode = mode === 'overlay';\n const isStickyMode = mode === 'sticky';\n\n // Use prop value if provided, otherwise fall back to context value\n const hasTransition = hasTransitionProp ?? layoutActions.hasTransition;\n\n const combinedRef = useCombinedRefs(ref);\n const prevProvidedSizeRef = useRef(providedSize);\n const isHorizontal = side === 'left' || side === 'right';\n\n // Natural boundary computation\n const { containerWidth, containerHeight } = layoutState;\n const { minContentSize } = layoutActions;\n const containerDimension = isHorizontal ? containerWidth : containerHeight;\n const oppositeSide = getOppositeSide(side);\n const oppositePanelSize = layoutState.panelSizes[oppositeSide];\n const ownInsetOffset = isResizable ? RESIZABLE_INSET_OFFSET : 0;\n const naturalMax = useMemo(\n () =>\n containerDimension > 0\n ? Math.max(\n 0,\n containerDimension -\n oppositePanelSize -\n minContentSize -\n ownInsetOffset,\n )\n : Infinity,\n [containerDimension, oppositePanelSize, minContentSize, ownInsetOffset],\n );\n\n // Panel open state\n const [internalIsOpen, setInternalIsOpen] = useState(defaultIsOpen);\n const isOpen = providedIsOpen ?? internalIsOpen;\n\n // Dialog open state\n const [internalIsDialogOpen, setInternalIsDialogOpen] =\n useState(defaultIsDialogOpen);\n const dialogOpen = providedIsDialogOpen ?? internalIsDialogOpen;\n\n // Persistent size storage\n const [storedSize, setStoredSize] = useLocalStorage<number | null>(\n sizeStorageKey ?? null,\n null,\n );\n\n // Resize state\n const [isDragging, setIsDragging] = useState(false);\n const [size, setSize] = useState<number>(() => {\n const initialSize =\n typeof providedSize === 'number'\n ? providedSize\n : storedSize != null\n ? storedSize\n : typeof defaultSize === 'number'\n ? defaultSize\n : 280;\n\n return clampSize(initialSize, minSize, maxSize);\n });\n\n const extractedStyles = extractStyles(otherProps, CONTAINER_STYLES);\n\n // Merge styles with contentPadding support\n const finalStyles = useMemo(\n () =>\n mergeStyles(\n styles,\n contentPadding != null ? { '$content-padding': contentPadding } : null,\n extractedStyles,\n ),\n [extractedStyles, contentPadding, styles],\n );\n\n // Resolve user's maxSize to pixels for JS-level clamping.\n // String values (e.g. \"50%\") can only be resolved once we know the container size.\n const resolvedMax = useMemo(() => {\n if (typeof maxSize === 'number') return maxSize;\n if (typeof maxSize === 'string' && containerDimension > 0) {\n return resolveCssSize(maxSize, containerDimension);\n }\n return undefined;\n }, [maxSize, containerDimension]);\n\n // Effective max combines user's maxSize with natural boundary\n const effectiveMax = useMemo(() => {\n const values: number[] = [];\n if (resolvedMax != null) values.push(resolvedMax);\n if (Number.isFinite(naturalMax)) values.push(naturalMax);\n return values.length > 0 ? Math.min(...values) : undefined;\n }, [resolvedMax, naturalMax]);\n\n // Clamp size to min/max constraints (including natural boundaries)\n const clampValue = useCallback(\n (value: number) => clampSize(value, minSize, undefined, effectiveMax),\n [minSize, effectiveMax],\n );\n\n const setContextDragging = layoutActions.setDragging;\n\n const { moveProps } = useMove({\n onMoveStart() {\n if (!isResizable) return;\n setIsDragging(true);\n setContextDragging(true);\n },\n onMove(e) {\n if (!isResizable) return;\n\n let delta: number;\n\n if (e.pointerType === 'keyboard') {\n // Keyboard resize: 10px per step, 50px with Shift\n const step = e.shiftKey ? 50 : 10;\n // For keyboard, deltaX/deltaY are direction indicators (-1, 0, 1)\n const rawDelta = isHorizontal ? e.deltaX : e.deltaY;\n const direction = side === 'right' || side === 'bottom' ? -1 : 1;\n delta = rawDelta * step * direction;\n } else {\n // Pointer resize: use exact delta values\n delta = isHorizontal\n ? e.deltaX * (side === 'right' ? -1 : 1)\n : e.deltaY * (side === 'bottom' ? -1 : 1);\n }\n\n setSize((currentSize) => clampValue(currentSize + delta));\n },\n onMoveEnd() {\n setIsDragging(false);\n setContextDragging(false);\n // Round to integer on release and notify parent\n setSize((currentSize) => {\n const finalSize = Math.round(clampValue(currentSize));\n // Call onSizeChange synchronously to ensure parent state is updated\n onSizeChange?.(finalSize);\n // Persist to localStorage if key is provided\n setStoredSize(finalSize);\n return finalSize;\n });\n },\n });\n\n // Sync provided size with internal state (only when providedSize actually changes)\n // This prevents resetting size when only isDragging changes (which would cause a flash)\n useEffect(() => {\n if (prevProvidedSizeRef.current !== providedSize) {\n prevProvidedSizeRef.current = providedSize;\n if (typeof providedSize === 'number' && !isDragging) {\n setSize(clampValue(providedSize));\n }\n }\n }, [providedSize, isDragging, clampValue]);\n\n // Auto-shrink: re-clamp when container resizes or opposite panel changes\n useEffect(() => {\n if (!isDragging && containerDimension > 0) {\n setSize((prev) => {\n const clamped = clampValue(prev);\n\n if (clamped !== prev) {\n onSizeChange?.(Math.round(clamped));\n setStoredSize(Math.round(clamped));\n }\n\n return clamped;\n });\n }\n }, [isDragging, clampValue, containerDimension]);\n\n // Register panel with layout context\n // Include handler outside portion (minus border overlap) for proper content inset\n // In sticky, overlay, and dialog modes, panel doesn't push content, so size is 0\n // NOTE: We intentionally use `size` (not `clampValue(size)`) here to avoid a feedback\n // loop. `clampValue` depends on the opposite panel's context size, so clamping here\n // would create a period-2 oscillation through shared context. CSS --max-size handles\n // visual clamping immediately; the auto-shrink effect converges `size` state.\n const effectivePanelSize = isOpen && mode === 'default' ? size : 0;\n const effectiveInsetSize = Math.round(\n effectivePanelSize +\n (isResizable && effectivePanelSize > 0 ? RESIZABLE_INSET_OFFSET : 0),\n );\n\n const { registerPanel, unregisterPanel, updatePanelSize } = layoutActions;\n const { isReady } = layoutState;\n\n // Track the last reported size to prevent unnecessary updates\n const lastSizeRef = useRef<number>(effectiveInsetSize);\n\n // Register on mount, unregister on unmount\n // Using useLayoutEffect ensures registration happens before browser paint\n useLayoutEffect(() => {\n registerPanel(side, lastSizeRef.current);\n\n return () => {\n unregisterPanel(side);\n };\n }, [side, registerPanel, unregisterPanel]);\n\n // Update size when it changes (after initial mount)\n // Using useLayoutEffect ensures size updates happen before browser paint\n useLayoutEffect(() => {\n if (lastSizeRef.current !== effectiveInsetSize) {\n lastSizeRef.current = effectiveInsetSize;\n updatePanelSize(side, effectiveInsetSize);\n }\n }, [side, effectiveInsetSize, updatePanelSize]);\n\n const handleOpenChange = useCallback(\n (newIsOpen: boolean) => {\n setInternalIsOpen(newIsOpen);\n onOpenChange?.(newIsOpen);\n },\n [onOpenChange],\n );\n\n // Dismiss handler for overlay mode (click on overlay)\n const handleDismiss = useCallback(() => {\n if (isDismissable) {\n handleOpenChange(false);\n }\n }, [isDismissable, handleOpenChange]);\n\n // Register overlay panel with Layout context for coordinated dismissal\n const { registerOverlayPanel } = layoutActions;\n\n useEffect(() => {\n // Only register if in overlay mode, open, and dismissable\n if (isOverlayMode && isOpen && isDismissable) {\n const unregister = registerOverlayPanel(() => handleOpenChange(false));\n return unregister;\n }\n }, [\n isOverlayMode,\n isOpen,\n isDismissable,\n registerOverlayPanel,\n handleOpenChange,\n ]);\n\n const handleDialogOpenChange = useCallback(\n (newIsOpen: boolean) => {\n setInternalIsDialogOpen(newIsOpen);\n onDialogOpenChange?.(newIsOpen);\n },\n [onDialogOpenChange],\n );\n\n // Panel context value for child components (like LayoutPanelHeader)\n const panelContextValue = useMemo(\n () => ({\n onOpenChange: handleOpenChange,\n isOpen,\n }),\n [handleOpenChange, isOpen],\n );\n\n // Dialog mode context value - uses dialog state instead of panel state\n const dialogPanelContextValue = useMemo(\n () => ({\n onOpenChange: handleDialogOpenChange,\n isOpen: dialogOpen,\n }),\n [handleDialogOpenChange, dialogOpen],\n );\n\n const panelMods = useMemo(\n () => ({\n side,\n drag: isDragging,\n horizontal: isHorizontal,\n // Only enable transition after layout is ready to prevent initial animation\n 'has-transition': hasTransition && isReady,\n ...mods,\n }),\n [side, isDragging, isHorizontal, hasTransition, isReady, mods],\n );\n\n // Build --max-size CSS variable combining user maxSize and natural boundary\n const maxSizeCss = useMemo(() => {\n const parts: string[] = [];\n\n if (maxSize != null) {\n parts.push(typeof maxSize === 'number' ? `${maxSize}px` : maxSize);\n }\n\n if (containerDimension > 0 && Number.isFinite(naturalMax)) {\n parts.push(`${naturalMax}px`);\n }\n\n if (parts.length === 0) return undefined;\n return parts.length === 1 ? parts[0] : `min(${parts.join(', ')})`;\n }, [maxSize, naturalMax, containerDimension]);\n\n const panelStyle = useMemo(\n () => ({\n '--panel-size': `${size}px`,\n '--min-size': typeof minSize === 'number' ? `${minSize}px` : minSize,\n '--max-size': maxSizeCss,\n }),\n [size, minSize, maxSizeCss],\n );\n\n // Combine refs for panel element\n const panelRefCallback = useCallback(\n (node: HTMLDivElement | null, transitionRef?: RefCallback<HTMLElement>) => {\n // Update the combined ref\n (combinedRef as { current: HTMLDivElement | null }).current = node;\n // Call transition ref if provided\n transitionRef?.(node);\n },\n [combinedRef],\n );\n\n // Reset to default size on double-click\n const handleResetSize = useCallback(() => {\n const resetSize =\n typeof defaultSize === 'number' ? defaultSize : parseInt(defaultSize, 10);\n const clampedSize = clampValue(resetSize || 280);\n setSize(clampedSize);\n onSizeChange?.(clampedSize);\n setStoredSize(clampedSize);\n }, [defaultSize, clampValue, onSizeChange, setStoredSize]);\n\n const renderPanelContent = (\n offscreen = false,\n transitionRef?: RefCallback<HTMLElement>,\n ) => {\n const showOverlay = isOverlayMode && !offscreen;\n\n return (\n <>\n {/* Overlay backdrop for overlay mode */}\n {isOverlayMode && (\n <OverlayBackdrop\n mods={{ visible: showOverlay }}\n styles={overlayStyles}\n aria-hidden=\"true\"\n onClick={handleDismiss}\n />\n )}\n <PanelElement\n ref={(node: HTMLDivElement | null) =>\n panelRefCallback(node, transitionRef)\n }\n {...filterBaseProps(otherProps, { eventProps: true })}\n mods={{ ...panelMods, offscreen }}\n styles={finalStyles}\n style={panelStyle}\n data-side={side}\n >\n <LayoutPanelContext.Provider value={panelContextValue}>\n <LayoutContextReset>{children}</LayoutContextReset>\n </LayoutPanelContext.Provider>\n </PanelElement>\n {isResizable && (\n <ResizeHandler\n side={side}\n isDisabled={!isResizable}\n mods={{\n drag: isDragging,\n offscreen,\n 'has-transition': hasTransition && isReady,\n }}\n moveProps={moveProps}\n style={panelStyle}\n onDoubleClick={handleResetSize}\n />\n )}\n </>\n );\n };\n\n // Dialog mode - uses its own portal via DialogContainer\n if (isDialogMode) {\n return (\n <DialogContainer\n isOpen={dialogOpen}\n isDismissable={isDismissable}\n onDismiss={() => handleDialogOpenChange(false)}\n {...dialogProps}\n >\n <Dialog isDismissable={false}>\n <LayoutPanelContext.Provider value={dialogPanelContextValue}>\n <LayoutContextReset>{children}</LayoutContextReset>\n </LayoutPanelContext.Provider>\n </Dialog>\n </DialogContainer>\n );\n }\n\n // Wait for portal container to be ready before rendering\n if (!layoutRefs.isPanelContainerReady) {\n return null;\n }\n\n const portalContainer = layoutRefs.panelContainerRef.current!;\n\n // Panel with transition - portal to panel container\n if (hasTransition) {\n return createPortal(\n <DisplayTransition isShown={isOpen} animateOnMount={false}>\n {({ isShown, ref: transitionRef }) =>\n renderPanelContent(!isShown, transitionRef)\n }\n </DisplayTransition>,\n portalContainer,\n );\n }\n\n // Simple panel (no transition) - portal to panel container\n if (!isOpen) return null;\n\n return createPortal(renderPanelContent(false), portalContainer);\n}\n\nconst _LayoutPanel = forwardRef(LayoutPanel);\n\n_LayoutPanel.displayName = 'Layout.Panel';\n\nexport { _LayoutPanel as LayoutPanel };\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
 
2
- import { BaseProps, ContainerStyleProps } from "../../../tasty/types.js";
3
- import "../../../tasty/index.js";
4
2
  import { CubeItemProps } from "../Item/Item.js";
3
+ import { BaseProps, ContainerStyleProps } from "@tenphi/tasty";
5
4
  import * as react from "react";
6
5
  import { ReactNode } from "react";
7
6
 
@@ -1,12 +1,10 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.117.0 | Cube Dev Team */
2
- import { extractStyles } from "../../../tasty/utils/styles.js";
3
- import { CONTAINER_STYLES } from "../../../tasty/styles/list.js";
4
- import { tasty } from "../../../tasty/tasty.js";
1
+ /** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
5
2
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
6
3
  import { _Item } from "../Item/Item.js";
7
4
  import { CloseIcon } from "../../../icons/CloseIcon.js";
8
5
  import { useDialogContext } from "../../overlays/Dialog/context.js";
9
6
  import { useLayoutPanelContext } from "./LayoutContext.js";
7
+ import { CONTAINER_STYLES, extractStyles, tasty } from "@tenphi/tasty";
10
8
  import { forwardRef, useCallback } from "react";
11
9
  import { jsx } from "react/jsx-runtime";
12
10
 
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutPanelHeader.js","names":["Item"],"sources":["../../../../src/components/content/Layout/LayoutPanelHeader.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef, ReactNode, useCallback } from 'react';\n\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n extractStyles,\n tasty,\n} from '../../../tasty';\nimport { ItemAction } from '../../actions/ItemAction';\nimport { useDialogContext } from '../../overlays/Dialog/context';\nimport { CubeItemProps, Item } from '../Item/Item';\n\nimport { useLayoutPanelContext } from './LayoutContext';\n\nconst PanelHeaderElement = tasty(Item, {\n qa: 'PanelHeader',\n shape: 'sharp',\n type: 'header',\n styles: {\n border: 'bottom',\n boxSizing: 'content-box',\n\n '$inline-padding': '($content-padding, 1x)',\n },\n});\n\nexport interface CubeLayoutPanelHeaderProps\n extends Omit<BaseProps, 'theme'>,\n ContainerStyleProps,\n CubeItemProps {\n /** Panel title */\n title?: ReactNode;\n /** Title heading level (affects semantics, not visual) */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /** Show close button */\n isClosable?: boolean;\n /** Close button click handler */\n onClose?: () => void;\n}\n\nfunction LayoutPanelHeader(\n props: CubeLayoutPanelHeaderProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n title,\n level = 3,\n isClosable,\n onClose,\n actions,\n children,\n ...otherProps\n } = props;\n\n // Extract container styles\n const styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n // Access dialog context if in dialog mode\n const dialogContext = useDialogContext();\n // Access panel context to update panel open state\n const panelContext = useLayoutPanelContext();\n\n // Close handler that works for both panel and dialog modes\n const handleClose = useCallback(() => {\n // Call user-provided onClose callback\n onClose?.();\n // Update panel's internal open state\n panelContext?.onOpenChange(false);\n // If in dialog mode, also close the dialog\n dialogContext?.onClose?.();\n }, [onClose, panelContext, dialogContext]);\n\n const closeAction = isClosable ? (\n <ItemAction\n icon={<CloseIcon />}\n aria-label=\"Close panel\"\n onPress={handleClose}\n />\n ) : null;\n\n const finalActions = actions ?? closeAction;\n\n return (\n <PanelHeaderElement\n ref={ref}\n level={level}\n size=\"large\"\n actions={finalActions}\n styles={styles}\n {...otherProps}\n >\n {title ?? children}\n </PanelHeaderElement>\n );\n}\n\nconst _LayoutPanelHeader = forwardRef(LayoutPanelHeader);\n\n_LayoutPanelHeader.displayName = 'Layout.PanelHeader';\n\nexport { _LayoutPanelHeader as LayoutPanelHeader };\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAM,qBAAqB,MAAMA,OAAM;CACrC,IAAI;CACJ,OAAO;CACP,MAAM;CACN,QAAQ;EACN,QAAQ;EACR,WAAW;EAEX,mBAAmB;EACpB;CACF,CAAC;AAgBF,SAAS,kBACP,OACA,KACA;CACA,MAAM,EACJ,OACA,QAAQ,GACR,YACA,SACA,SACA,UACA,GAAG,eACD;CAGJ,MAAM,SAAS,cAAc,YAAY,iBAAiB;CAG1D,MAAM,gBAAgB,kBAAkB;CAExC,MAAM,eAAe,uBAAuB;CAG5C,MAAM,cAAc,kBAAkB;AAEpC,aAAW;AAEX,gBAAc,aAAa,MAAM;AAEjC,iBAAe,WAAW;IACzB;EAAC;EAAS;EAAc;EAAc,CAAC;AAY1C,QACE,oBAAC;EACM;EACE;EACP,MAAK;EACL,SAPiB,YARD,aAClB,oBAAC;GACC,MAAM,oBAAC,cAAY;GACnB,cAAW;GACX,SAAS;IACT,GACA;EAUQ;EACR,GAAI;YAEH,SAAS;GACS;;AAIzB,MAAM,qBAAqB,WAAW,kBAAkB;AAExD,mBAAmB,cAAc"}
1
+ {"version":3,"file":"LayoutPanelHeader.js","names":["Item"],"sources":["../../../../src/components/content/Layout/LayoutPanelHeader.tsx"],"sourcesContent":["import {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n extractStyles,\n tasty,\n} from '@tenphi/tasty';\nimport { ForwardedRef, forwardRef, ReactNode, useCallback } from 'react';\n\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { ItemAction } from '../../actions/ItemAction';\nimport { useDialogContext } from '../../overlays/Dialog/context';\nimport { CubeItemProps, Item } from '../Item/Item';\n\nimport { useLayoutPanelContext } from './LayoutContext';\n\nconst PanelHeaderElement = tasty(Item, {\n qa: 'PanelHeader',\n shape: 'sharp',\n type: 'header',\n styles: {\n border: 'bottom',\n boxSizing: 'content-box',\n\n '$inline-padding': '($content-padding, 1x)',\n },\n});\n\nexport interface CubeLayoutPanelHeaderProps\n extends Omit<BaseProps, 'theme'>,\n ContainerStyleProps,\n CubeItemProps {\n /** Panel title */\n title?: ReactNode;\n /** Title heading level (affects semantics, not visual) */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /** Show close button */\n isClosable?: boolean;\n /** Close button click handler */\n onClose?: () => void;\n}\n\nfunction LayoutPanelHeader(\n props: CubeLayoutPanelHeaderProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n title,\n level = 3,\n isClosable,\n onClose,\n actions,\n children,\n ...otherProps\n } = props;\n\n // Extract container styles\n const styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n // Access dialog context if in dialog mode\n const dialogContext = useDialogContext();\n // Access panel context to update panel open state\n const panelContext = useLayoutPanelContext();\n\n // Close handler that works for both panel and dialog modes\n const handleClose = useCallback(() => {\n // Call user-provided onClose callback\n onClose?.();\n // Update panel's internal open state\n panelContext?.onOpenChange(false);\n // If in dialog mode, also close the dialog\n dialogContext?.onClose?.();\n }, [onClose, panelContext, dialogContext]);\n\n const closeAction = isClosable ? (\n <ItemAction\n icon={<CloseIcon />}\n aria-label=\"Close panel\"\n onPress={handleClose}\n />\n ) : null;\n\n const finalActions = actions ?? closeAction;\n\n return (\n <PanelHeaderElement\n ref={ref}\n level={level}\n size=\"large\"\n actions={finalActions}\n styles={styles}\n {...otherProps}\n >\n {title ?? children}\n </PanelHeaderElement>\n );\n}\n\nconst _LayoutPanelHeader = forwardRef(LayoutPanelHeader);\n\n_LayoutPanelHeader.displayName = 'Layout.PanelHeader';\n\nexport { _LayoutPanelHeader as LayoutPanelHeader };\n"],"mappings":";;;;;;;;;;;AAgBA,MAAM,qBAAqB,MAAMA,OAAM;CACrC,IAAI;CACJ,OAAO;CACP,MAAM;CACN,QAAQ;EACN,QAAQ;EACR,WAAW;EAEX,mBAAmB;EACpB;CACF,CAAC;AAgBF,SAAS,kBACP,OACA,KACA;CACA,MAAM,EACJ,OACA,QAAQ,GACR,YACA,SACA,SACA,UACA,GAAG,eACD;CAGJ,MAAM,SAAS,cAAc,YAAY,iBAAiB;CAG1D,MAAM,gBAAgB,kBAAkB;CAExC,MAAM,eAAe,uBAAuB;CAG5C,MAAM,cAAc,kBAAkB;AAEpC,aAAW;AAEX,gBAAc,aAAa,MAAM;AAEjC,iBAAe,WAAW;IACzB;EAAC;EAAS;EAAc;EAAc,CAAC;AAY1C,QACE,oBAAC;EACM;EACE;EACP,MAAK;EACL,SAPiB,YARD,aAClB,oBAAC;GACC,MAAM,oBAAC,cAAY;GACnB,cAAW;GACX,SAAS;IACT,GACA;EAUQ;EACR,GAAI;YAEH,SAAS;GACS;;AAIzB,MAAM,qBAAqB,WAAW,kBAAkB;AAExD,mBAAmB,cAAc"}
@@ -1,6 +1,6 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.117.0 | Cube Dev Team */
2
- import { tasty } from "../../../tasty/tasty.js";
1
+ /** @license MIT | @cube-dev/ui-kit v0.119.0 | Cube Dev Team */
3
2
  import { _LayoutContent } from "./LayoutContent.js";
3
+ import { tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6