@cube-dev/ui-kit 0.181.0 → 0.183.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 (1133) hide show
  1. package/dist/CHANGELOG.md +34 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +48 -31
  3. package/dist/_internal/hooks/use-debounced-value.js.map +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +22 -7
  5. package/dist/_internal/hooks/use-deprecation-warning.js.map +1 -1
  6. package/dist/_internal/hooks/use-event.js +1 -1
  7. package/dist/_internal/hooks/use-event.js.map +1 -1
  8. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  9. package/dist/_internal/hooks/use-is-first-render.js.map +1 -1
  10. package/dist/_internal/hooks/use-sync-ref.js +12 -4
  11. package/dist/_internal/hooks/use-sync-ref.js.map +1 -1
  12. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  13. package/dist/_internal/hooks/use-timer/timer.js.map +1 -1
  14. package/dist/_internal/hooks/use-timer/use-timer.js +90 -20
  15. package/dist/_internal/hooks/use-timer/use-timer.js.map +1 -1
  16. package/dist/_internal/hooks/use-warn.js +4 -4
  17. package/dist/_internal/hooks/use-warn.js.map +1 -1
  18. package/dist/components/Block.js +29 -7
  19. package/dist/components/Block.js.map +1 -1
  20. package/dist/components/CollectionItem.js +1 -1
  21. package/dist/components/CollectionItem.js.map +1 -1
  22. package/dist/components/GlobalStyles.js +33 -9
  23. package/dist/components/GlobalStyles.js.map +1 -1
  24. package/dist/components/GridProvider.js +4 -4
  25. package/dist/components/GridProvider.js.map +1 -1
  26. package/dist/components/HiddenInput.js +1 -1
  27. package/dist/components/HiddenInput.js.map +1 -1
  28. package/dist/components/Root.js +137 -42
  29. package/dist/components/Root.js.map +1 -1
  30. package/dist/components/actions/Action/Action.js +20 -8
  31. package/dist/components/actions/Action/Action.js.map +1 -1
  32. package/dist/components/actions/Banner/Banner.js +91 -22
  33. package/dist/components/actions/Banner/Banner.js.map +1 -1
  34. package/dist/components/actions/Button/Button.js +7 -5
  35. package/dist/components/actions/Button/Button.js.map +1 -1
  36. package/dist/components/actions/ButtonGroup/ButtonGroup.js +15 -5
  37. package/dist/components/actions/ButtonGroup/ButtonGroup.js.map +1 -1
  38. package/dist/components/actions/ButtonSplit/ButtonSplit.js +6 -4
  39. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
  40. package/dist/components/actions/ButtonSplit/context.js +1 -1
  41. package/dist/components/actions/ButtonSplit/context.js.map +1 -1
  42. package/dist/components/actions/CommandMenu/CommandMenu.js +76 -76
  43. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  44. package/dist/components/actions/CommandMenu/styled.js +1 -1
  45. package/dist/components/actions/CommandMenu/styled.js.map +1 -1
  46. package/dist/components/actions/ItemAction/ItemAction.js +205 -68
  47. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  48. package/dist/components/actions/ItemActionContext.js +26 -7
  49. package/dist/components/actions/ItemActionContext.js.map +1 -1
  50. package/dist/components/actions/ItemActionsWrapper.js +215 -84
  51. package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
  52. package/dist/components/actions/ItemButton/ItemButton.js +2 -2
  53. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  54. package/dist/components/actions/Link/Link.js +16 -7
  55. package/dist/components/actions/Link/Link.js.map +1 -1
  56. package/dist/components/actions/Menu/Menu.js +127 -72
  57. package/dist/components/actions/Menu/Menu.js.map +1 -1
  58. package/dist/components/actions/Menu/MenuItem.js +116 -43
  59. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  60. package/dist/components/actions/Menu/MenuSection.js +85 -30
  61. package/dist/components/actions/Menu/MenuSection.js.map +1 -1
  62. package/dist/components/actions/Menu/MenuTrigger.js +316 -112
  63. package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
  64. package/dist/components/actions/Menu/SubMenuTrigger.js +6 -6
  65. package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
  66. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  67. package/dist/components/actions/Menu/SubmenuTriggerContext.js.map +1 -1
  68. package/dist/components/actions/Menu/context.js +1 -1
  69. package/dist/components/actions/Menu/context.js.map +1 -1
  70. package/dist/components/actions/Menu/styled.js +1 -1
  71. package/dist/components/actions/Menu/styled.js.map +1 -1
  72. package/dist/components/actions/actions-run.js +1 -1
  73. package/dist/components/actions/actions-run.js.map +1 -1
  74. package/dist/components/actions/index.js +1 -1
  75. package/dist/components/actions/index.js.map +1 -1
  76. package/dist/components/actions/use-action.js +3 -3
  77. package/dist/components/actions/use-action.js.map +1 -1
  78. package/dist/components/actions/use-anchored-menu.js +6 -6
  79. package/dist/components/actions/use-anchored-menu.js.map +1 -1
  80. package/dist/components/actions/use-context-menu.js +12 -12
  81. package/dist/components/actions/use-context-menu.js.map +1 -1
  82. package/dist/components/content/ActiveZone/ActiveZone.js +84 -18
  83. package/dist/components/content/ActiveZone/ActiveZone.js.map +1 -1
  84. package/dist/components/content/Alert/Alert.js +18 -7
  85. package/dist/components/content/Alert/Alert.js.map +1 -1
  86. package/dist/components/content/Alert/use-alert.js +53 -15
  87. package/dist/components/content/Alert/use-alert.js.map +1 -1
  88. package/dist/components/content/Avatar/Avatar.js +51 -13
  89. package/dist/components/content/Avatar/Avatar.js.map +1 -1
  90. package/dist/components/content/Badge/Badge.js +43 -10
  91. package/dist/components/content/Badge/Badge.js.map +1 -1
  92. package/dist/components/content/Card/Card.js +29 -7
  93. package/dist/components/content/Card/Card.js.map +1 -1
  94. package/dist/components/content/Content.js +29 -7
  95. package/dist/components/content/Content.js.map +1 -1
  96. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +2 -2
  97. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
  98. package/dist/components/content/CopySnippet/CopySnippet.js +220 -60
  99. package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
  100. package/dist/components/content/Disclosure/Disclosure.js +453 -194
  101. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  102. package/dist/components/content/Divider.js +52 -14
  103. package/dist/components/content/Divider.js.map +1 -1
  104. package/dist/components/content/Footer.js +29 -7
  105. package/dist/components/content/Footer.js.map +1 -1
  106. package/dist/components/content/Header.js +29 -7
  107. package/dist/components/content/Header.js.map +1 -1
  108. package/dist/components/content/HotKeys/HotKeys.js +55 -27
  109. package/dist/components/content/HotKeys/HotKeys.js.map +1 -1
  110. package/dist/components/content/InfoBadge/InfoBadge.js +8 -8
  111. package/dist/components/content/InfoBadge/InfoBadge.js.map +1 -1
  112. package/dist/components/content/InlineInput/InlineInput.js +429 -188
  113. package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
  114. package/dist/components/content/Item/Item.js +414 -155
  115. package/dist/components/content/Item/Item.js.map +1 -1
  116. package/dist/components/content/ItemBadge/ItemBadge.js +173 -59
  117. package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
  118. package/dist/components/content/ItemCard/ItemCard.js +34 -9
  119. package/dist/components/content/ItemCard/ItemCard.js.map +1 -1
  120. package/dist/components/content/Layout/GridLayout.js +38 -10
  121. package/dist/components/content/Layout/GridLayout.js.map +1 -1
  122. package/dist/components/content/Layout/Layout.js +30 -13
  123. package/dist/components/content/Layout/Layout.js.map +1 -1
  124. package/dist/components/content/Layout/LayoutBlock.js +33 -8
  125. package/dist/components/content/Layout/LayoutBlock.js.map +1 -1
  126. package/dist/components/content/Layout/LayoutCenter.js +48 -11
  127. package/dist/components/content/Layout/LayoutCenter.js.map +1 -1
  128. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  129. package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
  130. package/dist/components/content/Layout/LayoutContent.js +1 -1
  131. package/dist/components/content/Layout/LayoutContent.js.map +1 -1
  132. package/dist/components/content/Layout/LayoutContext.js +30 -21
  133. package/dist/components/content/Layout/LayoutContext.js.map +1 -1
  134. package/dist/components/content/Layout/LayoutFlex.js +33 -8
  135. package/dist/components/content/Layout/LayoutFlex.js.map +1 -1
  136. package/dist/components/content/Layout/LayoutFooter.js +53 -14
  137. package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
  138. package/dist/components/content/Layout/LayoutGrid.js +48 -11
  139. package/dist/components/content/Layout/LayoutGrid.js.map +1 -1
  140. package/dist/components/content/Layout/LayoutHeader.js +211 -57
  141. package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
  142. package/dist/components/content/Layout/LayoutPane.js +60 -14
  143. package/dist/components/content/Layout/LayoutPane.js.map +1 -1
  144. package/dist/components/content/Layout/LayoutPanel.js +59 -17
  145. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  146. package/dist/components/content/Layout/LayoutPanelHeader.js +89 -27
  147. package/dist/components/content/Layout/LayoutPanelHeader.js.map +1 -1
  148. package/dist/components/content/Layout/LayoutToolbar.js +33 -8
  149. package/dist/components/content/Layout/LayoutToolbar.js.map +1 -1
  150. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +206 -119
  151. package/dist/components/content/Layout/hooks/useTinyScrollbar.js.map +1 -1
  152. package/dist/components/content/Layout/index.js +1 -1
  153. package/dist/components/content/Layout/index.js.map +1 -1
  154. package/dist/components/content/Layout/utils.js +1 -1
  155. package/dist/components/content/Layout/utils.js.map +1 -1
  156. package/dist/components/content/Paragraph.js +25 -9
  157. package/dist/components/content/Paragraph.js.map +1 -1
  158. package/dist/components/content/Placeholder/Placeholder.js +52 -14
  159. package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
  160. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  161. package/dist/components/content/PrismCode/PrismCode.js.map +1 -1
  162. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  163. package/dist/components/content/PrismCode/prismSetup.js.map +1 -1
  164. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +52 -17
  165. package/dist/components/content/PrismDiffCode/PrismDiffCode.js.map +1 -1
  166. package/dist/components/content/Result/Result.js +117 -38
  167. package/dist/components/content/Result/Result.js.map +1 -1
  168. package/dist/components/content/Skeleton/Skeleton.js +26 -17
  169. package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
  170. package/dist/components/content/Tag/Tag.js +68 -13
  171. package/dist/components/content/Tag/Tag.js.map +1 -1
  172. package/dist/components/content/Text.d.ts +14 -14
  173. package/dist/components/content/Text.js +61 -14
  174. package/dist/components/content/Text.js.map +1 -1
  175. package/dist/components/content/TextItem/TextItem.js +37 -16
  176. package/dist/components/content/TextItem/TextItem.js.map +1 -1
  177. package/dist/components/content/Title.js +98 -23
  178. package/dist/components/content/Title.js.map +1 -1
  179. package/dist/components/content/Tree/Tree.js +32 -32
  180. package/dist/components/content/Tree/Tree.js.map +1 -1
  181. package/dist/components/content/Tree/TreeNode.js +10 -10
  182. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  183. package/dist/components/content/Tree/styled.js +1 -1
  184. package/dist/components/content/Tree/styled.js.map +1 -1
  185. package/dist/components/content/Tree/tree-index.js +1 -1
  186. package/dist/components/content/Tree/tree-index.js.map +1 -1
  187. package/dist/components/content/Tree/use-checkbox-tree.js +123 -89
  188. package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -1
  189. package/dist/components/content/Tree/use-load-data.js +52 -21
  190. package/dist/components/content/Tree/use-load-data.js.map +1 -1
  191. package/dist/components/content/highlightText.js +1 -1
  192. package/dist/components/content/highlightText.js.map +1 -1
  193. package/dist/components/content/use-auto-tooltip.js +1 -1
  194. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  195. package/dist/components/data/DataTable/DataTable.js +31 -31
  196. package/dist/components/data/DataTable/DataTable.js.map +1 -1
  197. package/dist/components/data/ItemTable/ItemTable.js +41 -41
  198. package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
  199. package/dist/components/data/ItemTable/ItemTableBulkBar.js +11 -11
  200. package/dist/components/data/ItemTable/ItemTableBulkBar.js.map +1 -1
  201. package/dist/components/data/ItemTable/ItemTableDragPreview.js +41 -4
  202. package/dist/components/data/ItemTable/ItemTableDragPreview.js.map +1 -1
  203. package/dist/components/data/ItemTable/ItemTableFooter.js +67 -30
  204. package/dist/components/data/ItemTable/ItemTableFooter.js.map +1 -1
  205. package/dist/components/data/ItemTable/ItemTableToolbar.js +95 -28
  206. package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
  207. package/dist/components/data/TableBase/ColumnResizer.js +90 -41
  208. package/dist/components/data/TableBase/ColumnResizer.js.map +1 -1
  209. package/dist/components/data/TableBase/RowCollection.js +1 -1
  210. package/dist/components/data/TableBase/RowCollection.js.map +1 -1
  211. package/dist/components/data/TableBase/TableHeaderCell.js +154 -64
  212. package/dist/components/data/TableBase/TableHeaderCell.js.map +1 -1
  213. package/dist/components/data/TableBase/TableRow.js +211 -69
  214. package/dist/components/data/TableBase/TableRow.js.map +1 -1
  215. package/dist/components/data/TableBase/TableView.js +119 -80
  216. package/dist/components/data/TableBase/TableView.js.map +1 -1
  217. package/dist/components/data/TableBase/column-menu.js +1 -1
  218. package/dist/components/data/TableBase/column-menu.js.map +1 -1
  219. package/dist/components/data/TableBase/column-tint.js +1 -1
  220. package/dist/components/data/TableBase/column-tint.js.map +1 -1
  221. package/dist/components/data/TableBase/row-menu.js +1 -1
  222. package/dist/components/data/TableBase/row-menu.js.map +1 -1
  223. package/dist/components/data/TableBase/styled.js +1 -1
  224. package/dist/components/data/TableBase/styled.js.map +1 -1
  225. package/dist/components/data/TableBase/table-tree.js +1 -1
  226. package/dist/components/data/TableBase/table-tree.js.map +1 -1
  227. package/dist/components/data/TableBase/types.js +1 -1
  228. package/dist/components/data/TableBase/types.js.map +1 -1
  229. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  230. package/dist/components/data/TableBase/use-cell-selection.js.map +1 -1
  231. package/dist/components/data/TableBase/use-column-order.js +56 -12
  232. package/dist/components/data/TableBase/use-column-order.js.map +1 -1
  233. package/dist/components/data/TableBase/use-container-width.js +24 -10
  234. package/dist/components/data/TableBase/use-container-width.js.map +1 -1
  235. package/dist/components/data/TableBase/use-row-move-animation.js +68 -49
  236. package/dist/components/data/TableBase/use-row-move-animation.js.map +1 -1
  237. package/dist/components/data/TableBase/use-scrollability.js +32 -18
  238. package/dist/components/data/TableBase/use-scrollability.js.map +1 -1
  239. package/dist/components/data/TableBase/use-table-columns.js +130 -60
  240. package/dist/components/data/TableBase/use-table-columns.js.map +1 -1
  241. package/dist/components/data/TableBase/use-table-search.js +1 -1
  242. package/dist/components/data/TableBase/use-table-search.js.map +1 -1
  243. package/dist/components/data/TableBase/use-table-selection.js +39 -39
  244. package/dist/components/data/TableBase/use-table-selection.js.map +1 -1
  245. package/dist/components/data/TableBase/use-table-sort.js +132 -68
  246. package/dist/components/data/TableBase/use-table-sort.js.map +1 -1
  247. package/dist/components/data/TableBase/use-table-sorts.js +168 -101
  248. package/dist/components/data/TableBase/use-table-sorts.js.map +1 -1
  249. package/dist/components/data/TableBase/use-table-storage.js +2 -2
  250. package/dist/components/data/TableBase/use-table-storage.js.map +1 -1
  251. package/dist/components/data/TableBase/use-table-tree-state.js +181 -86
  252. package/dist/components/data/TableBase/use-table-tree-state.js.map +1 -1
  253. package/dist/components/fields/Checkbox/Checkbox.js +13 -6
  254. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  255. package/dist/components/fields/Checkbox/CheckboxGroup.js +101 -33
  256. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  257. package/dist/components/fields/Checkbox/context.js +1 -1
  258. package/dist/components/fields/Checkbox/context.js.map +1 -1
  259. package/dist/components/fields/ColorInput/ColorInput.js +329 -150
  260. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  261. package/dist/components/fields/ColorPicker/ColorPicker.js +16 -16
  262. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  263. package/dist/components/fields/ColorSwatch/ColorSwatch.js +52 -13
  264. package/dist/components/fields/ColorSwatch/ColorSwatch.js.map +1 -1
  265. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +90 -28
  266. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
  267. package/dist/components/fields/ComboBox/ComboBox.js +216 -134
  268. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  269. package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +21 -1
  270. package/dist/components/fields/CommandTextArea/CommandTextArea.js +26 -7
  271. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  272. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  273. package/dist/components/fields/CommandTextArea/caretPosition.js.map +1 -1
  274. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +88 -49
  275. package/dist/components/fields/CommandTextArea/useCaretAnchor.js.map +1 -1
  276. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  277. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  278. package/dist/components/fields/DatePicker/DateInputBase.js +129 -34
  279. package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
  280. package/dist/components/fields/DatePicker/DatePicker.js +194 -66
  281. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  282. package/dist/components/fields/DatePicker/DatePickerButton.js +39 -8
  283. package/dist/components/fields/DatePicker/DatePickerButton.js.map +1 -1
  284. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  285. package/dist/components/fields/DatePicker/DatePickerElement.js.map +1 -1
  286. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  287. package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
  288. package/dist/components/fields/DatePicker/DatePickerSegment.js +109 -29
  289. package/dist/components/fields/DatePicker/DatePickerSegment.js.map +1 -1
  290. package/dist/components/fields/DatePicker/DateRangePicker.js +224 -85
  291. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  292. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +473 -177
  293. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  294. package/dist/components/fields/DatePicker/MonthPicker.js +15 -6
  295. package/dist/components/fields/DatePicker/MonthPicker.js.map +1 -1
  296. package/dist/components/fields/DatePicker/PeriodPicker.js +288 -91
  297. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  298. package/dist/components/fields/DatePicker/QuarterPicker.js +15 -6
  299. package/dist/components/fields/DatePicker/QuarterPicker.js.map +1 -1
  300. package/dist/components/fields/DatePicker/TimeInput.js +15 -7
  301. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  302. package/dist/components/fields/DatePicker/WeekPicker.js +15 -6
  303. package/dist/components/fields/DatePicker/WeekPicker.js.map +1 -1
  304. package/dist/components/fields/DatePicker/YearPicker.js +15 -6
  305. package/dist/components/fields/DatePicker/YearPicker.js.map +1 -1
  306. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  307. package/dist/components/fields/DatePicker/parseDate.js.map +1 -1
  308. package/dist/components/fields/DatePicker/period.js +1 -1
  309. package/dist/components/fields/DatePicker/period.js.map +1 -1
  310. package/dist/components/fields/DatePicker/props.js +1 -1
  311. package/dist/components/fields/DatePicker/props.js.map +1 -1
  312. package/dist/components/fields/DatePicker/utils.js +15 -8
  313. package/dist/components/fields/DatePicker/utils.js.map +1 -1
  314. package/dist/components/fields/FileInput/FileInput.js +3 -3
  315. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  316. package/dist/components/fields/FilterListBox/FilterListBox.js +87 -87
  317. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  318. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +2 -0
  319. package/dist/components/fields/FilterPicker/FilterPicker.js +24 -23
  320. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  321. package/dist/components/fields/Input/Input.js +1 -1
  322. package/dist/components/fields/Input/Input.js.map +1 -1
  323. package/dist/components/fields/ListBox/DraggableListBox.js +23 -10
  324. package/dist/components/fields/ListBox/DraggableListBox.js.map +1 -1
  325. package/dist/components/fields/ListBox/ListBox.js +138 -53
  326. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  327. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +156 -37
  328. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  329. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  330. package/dist/components/fields/ListBoxPopover/listNavigation.js.map +1 -1
  331. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +61 -33
  332. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -1
  333. package/dist/components/fields/NumberInput/NumberInput.js +123 -33
  334. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  335. package/dist/components/fields/NumberInput/StepButton.js +53 -15
  336. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  337. package/dist/components/fields/PasswordInput/PasswordInput.js +149 -45
  338. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  339. package/dist/components/fields/Picker/Picker.d.ts +2 -0
  340. package/dist/components/fields/Picker/Picker.js +10 -9
  341. package/dist/components/fields/Picker/Picker.js.map +1 -1
  342. package/dist/components/fields/RadioGroup/Radio.js +273 -104
  343. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  344. package/dist/components/fields/RadioGroup/RadioGroup.js +149 -48
  345. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  346. package/dist/components/fields/RadioGroup/context.js +1 -1
  347. package/dist/components/fields/RadioGroup/context.js.map +1 -1
  348. package/dist/components/fields/SearchComboBox/SearchComboBox.js +80 -65
  349. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  350. package/dist/components/fields/SearchInput/SearchInput.js +91 -28
  351. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  352. package/dist/components/fields/Select/Select.d.ts +2 -0
  353. package/dist/components/fields/Select/Select.js +373 -118
  354. package/dist/components/fields/Select/Select.js.map +1 -1
  355. package/dist/components/fields/Slider/Gradation.js +45 -10
  356. package/dist/components/fields/Slider/Gradation.js.map +1 -1
  357. package/dist/components/fields/Slider/HueSlider.js +121 -32
  358. package/dist/components/fields/Slider/HueSlider.js.map +1 -1
  359. package/dist/components/fields/Slider/RangeSlider.js +46 -10
  360. package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
  361. package/dist/components/fields/Slider/Slider.js +108 -23
  362. package/dist/components/fields/Slider/Slider.js.map +1 -1
  363. package/dist/components/fields/Slider/SliderBase.js +2 -2
  364. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  365. package/dist/components/fields/Slider/SliderThumb.js +96 -37
  366. package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
  367. package/dist/components/fields/Slider/SliderTrack.js +64 -23
  368. package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
  369. package/dist/components/fields/Slider/elements.js +1 -1
  370. package/dist/components/fields/Slider/elements.js.map +1 -1
  371. package/dist/components/fields/Slider/index.js +1 -1
  372. package/dist/components/fields/Switch/Switch.js +190 -66
  373. package/dist/components/fields/Switch/Switch.js.map +1 -1
  374. package/dist/components/fields/TextArea/TextArea.js +137 -47
  375. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  376. package/dist/components/fields/TextInput/TextInput.js +80 -27
  377. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  378. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  379. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  380. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  381. package/dist/components/fields/TextInput/useAutoSizeTextArea.js.map +1 -1
  382. package/dist/components/fields/TextInputMapper/TextInputMapper.js +156 -83
  383. package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
  384. package/dist/components/fields/TriggerActions.js +11 -2
  385. package/dist/components/fields/TriggerActions.js.map +1 -1
  386. package/dist/components/fields/color/ColorPanel.js +237 -59
  387. package/dist/components/fields/color/ColorPanel.js.map +1 -1
  388. package/dist/components/fields/color/channels.js +1 -1
  389. package/dist/components/fields/color/channels.js.map +1 -1
  390. package/dist/components/fields/color/color.js +1 -1
  391. package/dist/components/fields/color/color.js.map +1 -1
  392. package/dist/components/fields/color/context.js +1 -1
  393. package/dist/components/fields/color/context.js.map +1 -1
  394. package/dist/components/form/FieldWrapper/FieldWrapper.js +195 -72
  395. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  396. package/dist/components/form/Form/Field.js +23 -9
  397. package/dist/components/form/Form/Field.js.map +1 -1
  398. package/dist/components/form/Form/Form.js +76 -30
  399. package/dist/components/form/Form/Form.js.map +1 -1
  400. package/dist/components/form/Form/ModernFormRoot.js +294 -81
  401. package/dist/components/form/Form/ModernFormRoot.js.map +1 -1
  402. package/dist/components/form/Form/ResetButton/ResetButton.js +32 -10
  403. package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
  404. package/dist/components/form/Form/SubmitButton/SubmitButton.js +32 -10
  405. package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
  406. package/dist/components/form/Form/SubmitError.js +130 -32
  407. package/dist/components/form/Form/SubmitError.js.map +1 -1
  408. package/dist/components/form/Form/backend.js +1 -1
  409. package/dist/components/form/Form/backend.js.map +1 -1
  410. package/dist/components/form/Form/index.js +1 -1
  411. package/dist/components/form/Form/index.js.map +1 -1
  412. package/dist/components/form/Form/modern/actions.js +140 -45
  413. package/dist/components/form/Form/modern/actions.js.map +1 -1
  414. package/dist/components/form/Form/modern/context.js +1 -1
  415. package/dist/components/form/Form/modern/context.js.map +1 -1
  416. package/dist/components/form/Form/modern/controller.js +1 -1
  417. package/dist/components/form/Form/modern/controller.js.map +1 -1
  418. package/dist/components/form/Form/modern/field-binding.js +1 -1
  419. package/dist/components/form/Form/modern/field-binding.js.map +1 -1
  420. package/dist/components/form/Form/modern/field.js +1 -1
  421. package/dist/components/form/Form/modern/field.js.map +1 -1
  422. package/dist/components/form/Form/modern/react.js +102 -19
  423. package/dist/components/form/Form/modern/react.js.map +1 -1
  424. package/dist/components/form/Form/modern/store.js +13 -3
  425. package/dist/components/form/Form/modern/store.js.map +1 -1
  426. package/dist/components/form/Form/modern/types.d.ts +3 -1
  427. package/dist/components/form/Form/modern/validation.js +1 -1
  428. package/dist/components/form/Form/modern/validation.js.map +1 -1
  429. package/dist/components/form/Form/modern/values.js +1 -1
  430. package/dist/components/form/Form/modern/values.js.map +1 -1
  431. package/dist/components/form/Form/use-field/use-field-binding.js +236 -63
  432. package/dist/components/form/Form/use-field/use-field-binding.js.map +1 -1
  433. package/dist/components/form/Form/use-field/use-field-props.js +106 -61
  434. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  435. package/dist/components/form/Form/use-field/use-field.js +5 -4
  436. package/dist/components/form/Form/use-field/use-field.js.map +1 -1
  437. package/dist/components/form/Form/use-form.js +2 -1
  438. package/dist/components/form/Form/use-form.js.map +1 -1
  439. package/dist/components/form/Form/validation.js +1 -1
  440. package/dist/components/form/Form/validation.js.map +1 -1
  441. package/dist/components/form/Label.js +127 -37
  442. package/dist/components/form/Label.js.map +1 -1
  443. package/dist/components/form/validation/ValidationIndicator.js +20 -5
  444. package/dist/components/form/validation/ValidationIndicator.js.map +1 -1
  445. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  446. package/dist/components/form/validation/resolve-validation-props.js.map +1 -1
  447. package/dist/components/form/validation/use-validation-props.js +36 -10
  448. package/dist/components/form/validation/use-validation-props.js.map +1 -1
  449. package/dist/components/form/wrapper.js +1 -1
  450. package/dist/components/form/wrapper.js.map +1 -1
  451. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +49 -29
  452. package/dist/components/helpers/DisplayTransition/DisplayTransition.js.map +1 -1
  453. package/dist/components/helpers/IconSwitch/IconSwitch.js +8 -8
  454. package/dist/components/helpers/IconSwitch/IconSwitch.js.map +1 -1
  455. package/dist/components/layout/Board/Board.js +27 -9
  456. package/dist/components/layout/Board/Board.js.map +1 -1
  457. package/dist/components/layout/Board/BoardProvider.js +1 -1
  458. package/dist/components/layout/Board/BoardProvider.js.map +1 -1
  459. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  460. package/dist/components/layout/Board/BoardResponsive.js.map +1 -1
  461. package/dist/components/layout/Board/Widget.js +1 -1
  462. package/dist/components/layout/Board/Widget.js.map +1 -1
  463. package/dist/components/layout/Board/WidgetHost.js +159 -121
  464. package/dist/components/layout/Board/WidgetHost.js.map +1 -1
  465. package/dist/components/layout/Board/board-context.js +14 -5
  466. package/dist/components/layout/Board/board-context.js.map +1 -1
  467. package/dist/components/layout/Board/board-store.js +1 -1
  468. package/dist/components/layout/Board/board-store.js.map +1 -1
  469. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  470. package/dist/components/layout/Board/grid-core/calculate.js.map +1 -1
  471. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  472. package/dist/components/layout/Board/grid-core/collision-modes.js.map +1 -1
  473. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  474. package/dist/components/layout/Board/grid-core/collision.js.map +1 -1
  475. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  476. package/dist/components/layout/Board/grid-core/compactors.js.map +1 -1
  477. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  478. package/dist/components/layout/Board/grid-core/constraints.js.map +1 -1
  479. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  480. package/dist/components/layout/Board/grid-core/group-move.js.map +1 -1
  481. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  482. package/dist/components/layout/Board/grid-core/layout.js.map +1 -1
  483. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  484. package/dist/components/layout/Board/grid-core/placement.js.map +1 -1
  485. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  486. package/dist/components/layout/Board/grid-core/sort.js.map +1 -1
  487. package/dist/components/layout/Board/index.js +1 -1
  488. package/dist/components/layout/Board/index.js.map +1 -1
  489. package/dist/components/layout/Board/responsive-utils.js +1 -1
  490. package/dist/components/layout/Board/responsive-utils.js.map +1 -1
  491. package/dist/components/layout/Board/use-board-layout.js +8 -8
  492. package/dist/components/layout/Board/use-board-layout.js.map +1 -1
  493. package/dist/components/layout/Board/use-board-registry.js +257 -257
  494. package/dist/components/layout/Board/use-board-registry.js.map +1 -1
  495. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  496. package/dist/components/layout/Board/use-board-select-modifier-key.js.map +1 -1
  497. package/dist/components/layout/Board/use-board-selection.js +16 -16
  498. package/dist/components/layout/Board/use-board-selection.js.map +1 -1
  499. package/dist/components/layout/Flex.js +29 -7
  500. package/dist/components/layout/Flex.js.map +1 -1
  501. package/dist/components/layout/Flow.js +29 -7
  502. package/dist/components/layout/Flow.js.map +1 -1
  503. package/dist/components/layout/Grid.js +30 -7
  504. package/dist/components/layout/Grid.js.map +1 -1
  505. package/dist/components/layout/Panel.js +9 -9
  506. package/dist/components/layout/Panel.js.map +1 -1
  507. package/dist/components/layout/Prefix.js +59 -16
  508. package/dist/components/layout/Prefix.js.map +1 -1
  509. package/dist/components/layout/ResizablePanel.js +62 -32
  510. package/dist/components/layout/ResizablePanel.js.map +1 -1
  511. package/dist/components/layout/Space.js +55 -11
  512. package/dist/components/layout/Space.js.map +1 -1
  513. package/dist/components/layout/Suffix.js +59 -16
  514. package/dist/components/layout/Suffix.js.map +1 -1
  515. package/dist/components/navigation/Pagination/Pagination.js +394 -164
  516. package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
  517. package/dist/components/navigation/Pagination/use-pagination.js +69 -26
  518. package/dist/components/navigation/Pagination/use-pagination.js.map +1 -1
  519. package/dist/components/navigation/Tabs/DraggableTabList.js +25 -10
  520. package/dist/components/navigation/Tabs/DraggableTabList.js.map +1 -1
  521. package/dist/components/navigation/Tabs/TabButton.js +604 -235
  522. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  523. package/dist/components/navigation/Tabs/TabDropIndicator.js +65 -23
  524. package/dist/components/navigation/Tabs/TabDropIndicator.js.map +1 -1
  525. package/dist/components/navigation/Tabs/TabPanel.js +47 -19
  526. package/dist/components/navigation/Tabs/TabPanel.js.map +1 -1
  527. package/dist/components/navigation/Tabs/TabPicker.js +105 -33
  528. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  529. package/dist/components/navigation/Tabs/Tabs.js +45 -45
  530. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  531. package/dist/components/navigation/Tabs/TabsAction.js +53 -19
  532. package/dist/components/navigation/Tabs/TabsAction.js.map +1 -1
  533. package/dist/components/navigation/Tabs/TabsContext.js +16 -6
  534. package/dist/components/navigation/Tabs/TabsContext.js.map +1 -1
  535. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  536. package/dist/components/navigation/Tabs/popover-placement.js.map +1 -1
  537. package/dist/components/navigation/Tabs/styled.js +1 -1
  538. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  539. package/dist/components/navigation/Tabs/types.js +1 -1
  540. package/dist/components/navigation/Tabs/types.js.map +1 -1
  541. package/dist/components/navigation/Tabs/use-tab-editing.js +50 -13
  542. package/dist/components/navigation/Tabs/use-tab-editing.js.map +1 -1
  543. package/dist/components/navigation/Tabs/use-tab-indicator.js +111 -63
  544. package/dist/components/navigation/Tabs/use-tab-indicator.js.map +1 -1
  545. package/dist/components/organisms/StatsCard/StatsCard.js +54 -14
  546. package/dist/components/organisms/StatsCard/StatsCard.js.map +1 -1
  547. package/dist/components/other/Calendar/Calendar.js +79 -31
  548. package/dist/components/other/Calendar/Calendar.js.map +1 -1
  549. package/dist/components/other/Calendar/CalendarCell.js +66 -20
  550. package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
  551. package/dist/components/other/Calendar/CalendarGrid.js +90 -40
  552. package/dist/components/other/Calendar/CalendarGrid.js.map +1 -1
  553. package/dist/components/other/Calendar/CalendarHeader.js +80 -17
  554. package/dist/components/other/Calendar/CalendarHeader.js.map +1 -1
  555. package/dist/components/other/Calendar/CalendarPanel.js +568 -144
  556. package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
  557. package/dist/components/other/Calendar/PeriodCalendar.js +425 -134
  558. package/dist/components/other/Calendar/PeriodCalendar.js.map +1 -1
  559. package/dist/components/other/Calendar/PeriodGrid.js +6 -6
  560. package/dist/components/other/Calendar/PeriodGrid.js.map +1 -1
  561. package/dist/components/other/Calendar/RangeCalendar.js +50 -24
  562. package/dist/components/other/Calendar/RangeCalendar.js.map +1 -1
  563. package/dist/components/other/Calendar/styled.js +1 -1
  564. package/dist/components/other/Calendar/styled.js.map +1 -1
  565. package/dist/components/other/CubeLogo/CubeLogo.js +95 -34
  566. package/dist/components/other/CubeLogo/CubeLogo.js.map +1 -1
  567. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  568. package/dist/components/other/NoDataIcon/NoDataIcon.js.map +1 -1
  569. package/dist/components/overlays/AlertDialog/AlertDialog.js +153 -42
  570. package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
  571. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +76 -54
  572. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
  573. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +146 -39
  574. package/dist/components/overlays/AlertDialog/AlertDialogZone.js.map +1 -1
  575. package/dist/components/overlays/Dialog/Dialog.js +26 -10
  576. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  577. package/dist/components/overlays/Dialog/DialogContainer.js +13 -13
  578. package/dist/components/overlays/Dialog/DialogContainer.js.map +1 -1
  579. package/dist/components/overlays/Dialog/DialogForm.d.ts +12 -7
  580. package/dist/components/overlays/Dialog/DialogForm.js +18 -7
  581. package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
  582. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +1 -1
  583. package/dist/components/overlays/Dialog/DialogTrigger.js +214 -59
  584. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  585. package/dist/components/overlays/Dialog/ModernDialogForm.js +350 -0
  586. package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -0
  587. package/dist/components/overlays/Dialog/context.js +1 -1
  588. package/dist/components/overlays/Dialog/context.js.map +1 -1
  589. package/dist/components/overlays/Dialog/index.d.ts +1 -1
  590. package/dist/components/overlays/Dialog/use-dialog-container.js +6 -6
  591. package/dist/components/overlays/Dialog/use-dialog-container.js.map +1 -1
  592. package/dist/components/overlays/Modal/Modal.js +140 -27
  593. package/dist/components/overlays/Modal/Modal.js.map +1 -1
  594. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  595. package/dist/components/overlays/Modal/OpenTransitionContext.js.map +1 -1
  596. package/dist/components/overlays/Modal/Overlay.js +4 -4
  597. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  598. package/dist/components/overlays/Modal/Popover.js +131 -29
  599. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  600. package/dist/components/overlays/Modal/Tray.js +142 -30
  601. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  602. package/dist/components/overlays/Modal/Underlay.js +36 -7
  603. package/dist/components/overlays/Modal/Underlay.js.map +1 -1
  604. package/dist/components/overlays/Notifications/Notification.js +69 -32
  605. package/dist/components/overlays/Notifications/Notification.js.map +1 -1
  606. package/dist/components/overlays/Notifications/NotificationAction.js +79 -26
  607. package/dist/components/overlays/Notifications/NotificationAction.js.map +1 -1
  608. package/dist/components/overlays/Notifications/NotificationCard.js +138 -33
  609. package/dist/components/overlays/Notifications/NotificationCard.js.map +1 -1
  610. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  611. package/dist/components/overlays/Notifications/NotificationContext.js.map +1 -1
  612. package/dist/components/overlays/Notifications/NotificationItem.js +63 -16
  613. package/dist/components/overlays/Notifications/NotificationItem.js.map +1 -1
  614. package/dist/components/overlays/Notifications/OverlayContainer.js +312 -151
  615. package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
  616. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  617. package/dist/components/overlays/Notifications/OverlayProvider.js.map +1 -1
  618. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +210 -58
  619. package/dist/components/overlays/Notifications/PersistentNotificationsList.js.map +1 -1
  620. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  621. package/dist/components/overlays/Notifications/dismissed-storage.js.map +1 -1
  622. package/dist/components/overlays/Notifications/format-relative-time.d.ts +1 -1
  623. package/dist/components/overlays/Notifications/format-relative-time.js +3 -3
  624. package/dist/components/overlays/Notifications/format-relative-time.js.map +1 -1
  625. package/dist/components/overlays/Notifications/index.js +1 -1
  626. package/dist/components/overlays/Notifications/index.js.map +1 -1
  627. package/dist/components/overlays/Notifications/use-notification-state.js +51 -51
  628. package/dist/components/overlays/Notifications/use-notification-state.js.map +1 -1
  629. package/dist/components/overlays/Notifications/use-notifications.js +12 -12
  630. package/dist/components/overlays/Notifications/use-notifications.js.map +1 -1
  631. package/dist/components/overlays/Notifications/use-overlay-timers.js +10 -10
  632. package/dist/components/overlays/Notifications/use-overlay-timers.js.map +1 -1
  633. package/dist/components/overlays/Notifications/use-persistent-notifications.js +24 -5
  634. package/dist/components/overlays/Notifications/use-persistent-notifications.js.map +1 -1
  635. package/dist/components/overlays/Notifications/use-persistent-state.js +145 -43
  636. package/dist/components/overlays/Notifications/use-persistent-state.js.map +1 -1
  637. package/dist/components/overlays/Notifications/use-toast-state.js +25 -25
  638. package/dist/components/overlays/Notifications/use-toast-state.js.map +1 -1
  639. package/dist/components/overlays/Toast/ToastItem.js +68 -15
  640. package/dist/components/overlays/Toast/ToastItem.js.map +1 -1
  641. package/dist/components/overlays/Toast/index.js +100 -34
  642. package/dist/components/overlays/Toast/index.js.map +1 -1
  643. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  644. package/dist/components/overlays/Toast/useProgressToast.js.map +1 -1
  645. package/dist/components/overlays/Toast/useToast.js +9 -9
  646. package/dist/components/overlays/Toast/useToast.js.map +1 -1
  647. package/dist/components/overlays/Tooltip/Tooltip.js +88 -31
  648. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  649. package/dist/components/overlays/Tooltip/TooltipProvider.js +75 -10
  650. package/dist/components/overlays/Tooltip/TooltipProvider.js.map +1 -1
  651. package/dist/components/overlays/Tooltip/TooltipTrigger.js +186 -77
  652. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  653. package/dist/components/overlays/Tooltip/context.js +1 -1
  654. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  655. package/dist/components/portal/Portal.js +18 -3
  656. package/dist/components/portal/Portal.js.map +1 -1
  657. package/dist/components/portal/PortalProvider.js +11 -2
  658. package/dist/components/portal/PortalProvider.js.map +1 -1
  659. package/dist/components/portal/usePortal.js +1 -1
  660. package/dist/components/portal/usePortal.js.map +1 -1
  661. package/dist/components/shared/DraggableCollection.js +23 -23
  662. package/dist/components/shared/DraggableCollection.js.map +1 -1
  663. package/dist/components/shared/InvalidIcon.js +1 -1
  664. package/dist/components/shared/InvalidIcon.js.map +1 -1
  665. package/dist/components/shared/ValidIcon.js +1 -1
  666. package/dist/components/shared/ValidIcon.js.map +1 -1
  667. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +156 -48
  668. package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
  669. package/dist/components/status/Spin/Cube.js +12 -3
  670. package/dist/components/status/Spin/Cube.js.map +1 -1
  671. package/dist/components/status/Spin/InternalSpinner.js +21 -6
  672. package/dist/components/status/Spin/InternalSpinner.js.map +1 -1
  673. package/dist/components/status/Spin/Spin.js +31 -7
  674. package/dist/components/status/Spin/Spin.js.map +1 -1
  675. package/dist/components/status/Spin/SpinsContainer.js +23 -6
  676. package/dist/components/status/Spin/SpinsContainer.js.map +1 -1
  677. package/dist/data/item-themes.js +1 -1
  678. package/dist/data/item-themes.js.map +1 -1
  679. package/dist/data/themes.js +1 -1
  680. package/dist/data/themes.js.map +1 -1
  681. package/dist/eslint-plugin/defaults.generated.js +18 -7
  682. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  683. package/dist/eslint-plugin/index.js +1 -1
  684. package/dist/eslint-plugin/index.js.map +1 -1
  685. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  686. package/dist/eslint-plugin/rules/no-redundant-default-prop.js.map +1 -1
  687. package/dist/i18n/I18nProvider.js +54 -13
  688. package/dist/i18n/I18nProvider.js.map +1 -1
  689. package/dist/i18n/createFormatter.js +1 -1
  690. package/dist/i18n/createFormatter.js.map +1 -1
  691. package/dist/i18n/index.js +1 -1
  692. package/dist/i18n/index.js.map +1 -1
  693. package/dist/i18n/instance.js +1 -1
  694. package/dist/i18n/instance.js.map +1 -1
  695. package/dist/i18n/locales/de-DE/uikit.js +5 -2
  696. package/dist/i18n/locales/en-US/uikit.js +5 -2
  697. package/dist/i18n/locales/en-US/uikit.json.d.ts +15 -5
  698. package/dist/i18n/locales/es-ES/uikit.js +5 -2
  699. package/dist/i18n/locales/es-MX/uikit.js +5 -2
  700. package/dist/i18n/locales/fr-FR/uikit.js +5 -2
  701. package/dist/i18n/locales/it-IT/uikit.js +5 -2
  702. package/dist/i18n/locales/ja-JP/uikit.js +5 -2
  703. package/dist/i18n/locales/nb-NO/uikit.js +5 -2
  704. package/dist/i18n/locales/pt-BR/uikit.js +5 -2
  705. package/dist/i18n/locales/pt-PT/uikit.js +5 -2
  706. package/dist/i18n/locales/sv-SE/uikit.js +5 -2
  707. package/dist/i18n/locales/vi-VN/uikit.js +5 -2
  708. package/dist/i18n/locales.js +1 -1
  709. package/dist/i18n/locales.js.map +1 -1
  710. package/dist/i18n/useFormatter.js +10 -3
  711. package/dist/i18n/useFormatter.js.map +1 -1
  712. package/dist/i18n/useI18n.js +1 -1
  713. package/dist/i18n/useI18n.js.map +1 -1
  714. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  715. package/dist/icons/AdjustmentsHorizontalIcon.js.map +1 -1
  716. package/dist/icons/AdjustmentsIcon.js +1 -1
  717. package/dist/icons/AdjustmentsIcon.js.map +1 -1
  718. package/dist/icons/AiIcon.js +1 -1
  719. package/dist/icons/AiIcon.js.map +1 -1
  720. package/dist/icons/AreaChartIcon.js +1 -1
  721. package/dist/icons/AreaChartIcon.js.map +1 -1
  722. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  723. package/dist/icons/ArrowNarrowDownIcon.js.map +1 -1
  724. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  725. package/dist/icons/ArrowNarrowUpIcon.js.map +1 -1
  726. package/dist/icons/BackwardIcon.js +1 -1
  727. package/dist/icons/BackwardIcon.js.map +1 -1
  728. package/dist/icons/BarChartIcon.js +1 -1
  729. package/dist/icons/BarChartIcon.js.map +1 -1
  730. package/dist/icons/BellFilledIcon.js +1 -1
  731. package/dist/icons/BellFilledIcon.js.map +1 -1
  732. package/dist/icons/BellIcon.js +1 -1
  733. package/dist/icons/BellIcon.js.map +1 -1
  734. package/dist/icons/BooleanIcon.js +1 -1
  735. package/dist/icons/BooleanIcon.js.map +1 -1
  736. package/dist/icons/CalendarEditIcon.js +1 -1
  737. package/dist/icons/CalendarEditIcon.js.map +1 -1
  738. package/dist/icons/CalendarIcon.js +1 -1
  739. package/dist/icons/CalendarIcon.js.map +1 -1
  740. package/dist/icons/CaretDownIcon.js +1 -1
  741. package/dist/icons/CaretDownIcon.js.map +1 -1
  742. package/dist/icons/CaretUpIcon.js +1 -1
  743. package/dist/icons/CaretUpIcon.js.map +1 -1
  744. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  745. package/dist/icons/ChartAreaStackedIcon.js.map +1 -1
  746. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  747. package/dist/icons/ChartAreaStackedPercentageIcon.js.map +1 -1
  748. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  749. package/dist/icons/ChartBarGroupedHorizontalIcon.js.map +1 -1
  750. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  751. package/dist/icons/ChartBarGroupedIcon.js.map +1 -1
  752. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  753. package/dist/icons/ChartBarHorizontalIcon.js.map +1 -1
  754. package/dist/icons/ChartBarLineIcon.js +1 -1
  755. package/dist/icons/ChartBarLineIcon.js.map +1 -1
  756. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  757. package/dist/icons/ChartBarStackedHorizontalIcon.js.map +1 -1
  758. package/dist/icons/ChartBarStackedIcon.js +1 -1
  759. package/dist/icons/ChartBarStackedIcon.js.map +1 -1
  760. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  761. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js.map +1 -1
  762. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  763. package/dist/icons/ChartBarStackedPercentageIcon.js.map +1 -1
  764. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  765. package/dist/icons/ChartBoxPlot2Icon.js.map +1 -1
  766. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  767. package/dist/icons/ChartBoxPlotIcon.js.map +1 -1
  768. package/dist/icons/ChartBubbleIcon.js +1 -1
  769. package/dist/icons/ChartBubbleIcon.js.map +1 -1
  770. package/dist/icons/ChartDonut2Icon.js +1 -1
  771. package/dist/icons/ChartDonut2Icon.js.map +1 -1
  772. package/dist/icons/ChartFunnelIcon.js +1 -1
  773. package/dist/icons/ChartFunnelIcon.js.map +1 -1
  774. package/dist/icons/ChartHeatmapIcon.js +1 -1
  775. package/dist/icons/ChartHeatmapIcon.js.map +1 -1
  776. package/dist/icons/ChartKPIIcon.js +1 -1
  777. package/dist/icons/ChartKPIIcon.js.map +1 -1
  778. package/dist/icons/ChartPie2Icon.js +1 -1
  779. package/dist/icons/ChartPie2Icon.js.map +1 -1
  780. package/dist/icons/ChartScatterIcon.js +1 -1
  781. package/dist/icons/ChartScatterIcon.js.map +1 -1
  782. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  783. package/dist/icons/CheckCircleFilledIcon.js.map +1 -1
  784. package/dist/icons/CheckCircleIcon.js +1 -1
  785. package/dist/icons/CheckCircleIcon.js.map +1 -1
  786. package/dist/icons/CheckIcon.js +1 -1
  787. package/dist/icons/CheckIcon.js.map +1 -1
  788. package/dist/icons/CircleFilledIcon.js +1 -1
  789. package/dist/icons/CircleFilledIcon.js.map +1 -1
  790. package/dist/icons/ClearIcon.js +1 -1
  791. package/dist/icons/ClearIcon.js.map +1 -1
  792. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  793. package/dist/icons/CloseCircleFilledIcon.js.map +1 -1
  794. package/dist/icons/CloseCircleIcon.js +1 -1
  795. package/dist/icons/CloseCircleIcon.js.map +1 -1
  796. package/dist/icons/CloseIcon.js +1 -1
  797. package/dist/icons/CloseIcon.js.map +1 -1
  798. package/dist/icons/CodeIcon.js +1 -1
  799. package/dist/icons/CodeIcon.js.map +1 -1
  800. package/dist/icons/ColumnTotalIcon.js +1 -1
  801. package/dist/icons/ColumnTotalIcon.js.map +1 -1
  802. package/dist/icons/CopyIcon.js +1 -1
  803. package/dist/icons/CopyIcon.js.map +1 -1
  804. package/dist/icons/CountIcon.js +1 -1
  805. package/dist/icons/CountIcon.js.map +1 -1
  806. package/dist/icons/CubeIcon.js +1 -1
  807. package/dist/icons/CubeIcon.js.map +1 -1
  808. package/dist/icons/CubePauseIcon.js +1 -1
  809. package/dist/icons/CubePauseIcon.js.map +1 -1
  810. package/dist/icons/CubePlayIcon.js +1 -1
  811. package/dist/icons/CubePlayIcon.js.map +1 -1
  812. package/dist/icons/CurrencyDollarIcon.js +1 -1
  813. package/dist/icons/CurrencyDollarIcon.js.map +1 -1
  814. package/dist/icons/DangerIcon.js +1 -1
  815. package/dist/icons/DangerIcon.js.map +1 -1
  816. package/dist/icons/DashboardIcon.js +1 -1
  817. package/dist/icons/DashboardIcon.js.map +1 -1
  818. package/dist/icons/DatabaseIcon.js +1 -1
  819. package/dist/icons/DatabaseIcon.js.map +1 -1
  820. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  821. package/dist/icons/DecimalDecreaseIcon.js.map +1 -1
  822. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  823. package/dist/icons/DecimalIncreaseIcon.js.map +1 -1
  824. package/dist/icons/DirectionIcon.js +67 -22
  825. package/dist/icons/DirectionIcon.js.map +1 -1
  826. package/dist/icons/DonutIcon.js +1 -1
  827. package/dist/icons/DonutIcon.js.map +1 -1
  828. package/dist/icons/DownIcon.js +1 -1
  829. package/dist/icons/DownIcon.js.map +1 -1
  830. package/dist/icons/EditIcon.js +1 -1
  831. package/dist/icons/EditIcon.js.map +1 -1
  832. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  833. package/dist/icons/ExclamationCircleFilledIcon.js.map +1 -1
  834. package/dist/icons/ExclamationCircleIcon.js +1 -1
  835. package/dist/icons/ExclamationCircleIcon.js.map +1 -1
  836. package/dist/icons/ExclamationIcon.js +1 -1
  837. package/dist/icons/ExclamationIcon.js.map +1 -1
  838. package/dist/icons/EyeIcon.js +1 -1
  839. package/dist/icons/EyeIcon.js.map +1 -1
  840. package/dist/icons/EyeInvisibleIcon.js +1 -1
  841. package/dist/icons/EyeInvisibleIcon.js.map +1 -1
  842. package/dist/icons/FilterIcon.js +1 -1
  843. package/dist/icons/FilterIcon.js.map +1 -1
  844. package/dist/icons/FolderFilledIcon.js +1 -1
  845. package/dist/icons/FolderFilledIcon.js.map +1 -1
  846. package/dist/icons/FolderIcon.js +1 -1
  847. package/dist/icons/FolderIcon.js.map +1 -1
  848. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  849. package/dist/icons/FolderOpenFilledIcon.js.map +1 -1
  850. package/dist/icons/FolderOpenIcon.js +1 -1
  851. package/dist/icons/FolderOpenIcon.js.map +1 -1
  852. package/dist/icons/ForwardIcon.js +1 -1
  853. package/dist/icons/ForwardIcon.js.map +1 -1
  854. package/dist/icons/GripVerticalIcon.js +1 -1
  855. package/dist/icons/GripVerticalIcon.js.map +1 -1
  856. package/dist/icons/HierarchyIcon.js +1 -1
  857. package/dist/icons/HierarchyIcon.js.map +1 -1
  858. package/dist/icons/HierarchyOpenIcon.js +1 -1
  859. package/dist/icons/HierarchyOpenIcon.js.map +1 -1
  860. package/dist/icons/Icon.js +60 -16
  861. package/dist/icons/Icon.js.map +1 -1
  862. package/dist/icons/InfoCircleIcon.js +1 -1
  863. package/dist/icons/InfoCircleIcon.js.map +1 -1
  864. package/dist/icons/InfoIcon.js +1 -1
  865. package/dist/icons/InfoIcon.js.map +1 -1
  866. package/dist/icons/KeyIcon.js +1 -1
  867. package/dist/icons/KeyIcon.js.map +1 -1
  868. package/dist/icons/LeftIcon.js +1 -1
  869. package/dist/icons/LeftIcon.js.map +1 -1
  870. package/dist/icons/LineChartIcon.js +1 -1
  871. package/dist/icons/LineChartIcon.js.map +1 -1
  872. package/dist/icons/LoadingIcon.js +1 -1
  873. package/dist/icons/LoadingIcon.js.map +1 -1
  874. package/dist/icons/LockFilledIcon.js +1 -1
  875. package/dist/icons/LockFilledIcon.js.map +1 -1
  876. package/dist/icons/LockIcon.js +1 -1
  877. package/dist/icons/LockIcon.js.map +1 -1
  878. package/dist/icons/MoreIcon.js +1 -1
  879. package/dist/icons/MoreIcon.js.map +1 -1
  880. package/dist/icons/NotAllowedIcon.js +1 -1
  881. package/dist/icons/NotAllowedIcon.js.map +1 -1
  882. package/dist/icons/Number123Icon.js +1 -1
  883. package/dist/icons/Number123Icon.js.map +1 -1
  884. package/dist/icons/NumberIcon.js +1 -1
  885. package/dist/icons/NumberIcon.js.map +1 -1
  886. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  887. package/dist/icons/PauseCircleFilledIcon.js.map +1 -1
  888. package/dist/icons/PauseCircleIcon.js +1 -1
  889. package/dist/icons/PauseCircleIcon.js.map +1 -1
  890. package/dist/icons/PauseIcon.js +1 -1
  891. package/dist/icons/PauseIcon.js.map +1 -1
  892. package/dist/icons/PercentageIcon.js +1 -1
  893. package/dist/icons/PercentageIcon.js.map +1 -1
  894. package/dist/icons/PieChartIcon.js +1 -1
  895. package/dist/icons/PieChartIcon.js.map +1 -1
  896. package/dist/icons/PipetteIcon.js +1 -1
  897. package/dist/icons/PipetteIcon.js.map +1 -1
  898. package/dist/icons/PlayCircleIcon.js +1 -1
  899. package/dist/icons/PlayCircleIcon.js.map +1 -1
  900. package/dist/icons/PlayIcon.js +1 -1
  901. package/dist/icons/PlayIcon.js.map +1 -1
  902. package/dist/icons/PlusIcon.js +1 -1
  903. package/dist/icons/PlusIcon.js.map +1 -1
  904. package/dist/icons/ProgressBarIcon.js +1 -1
  905. package/dist/icons/ProgressBarIcon.js.map +1 -1
  906. package/dist/icons/ReloadIcon.js +1 -1
  907. package/dist/icons/ReloadIcon.js.map +1 -1
  908. package/dist/icons/ReportIcon.js +1 -1
  909. package/dist/icons/ReportIcon.js.map +1 -1
  910. package/dist/icons/ReturnIcon.js +1 -1
  911. package/dist/icons/ReturnIcon.js.map +1 -1
  912. package/dist/icons/RightIcon.js +1 -1
  913. package/dist/icons/RightIcon.js.map +1 -1
  914. package/dist/icons/RowTotalsIcon.js +1 -1
  915. package/dist/icons/RowTotalsIcon.js.map +1 -1
  916. package/dist/icons/SchemeIcon.js +1 -1
  917. package/dist/icons/SchemeIcon.js.map +1 -1
  918. package/dist/icons/SearchIcon.js +1 -1
  919. package/dist/icons/SearchIcon.js.map +1 -1
  920. package/dist/icons/SemanticQueryIcon.js +1 -1
  921. package/dist/icons/SemanticQueryIcon.js.map +1 -1
  922. package/dist/icons/SettingsIcon.js +1 -1
  923. package/dist/icons/SettingsIcon.js.map +1 -1
  924. package/dist/icons/ShieldFilledIcon.js +1 -1
  925. package/dist/icons/ShieldFilledIcon.js.map +1 -1
  926. package/dist/icons/ShieldIcon.js +1 -1
  927. package/dist/icons/ShieldIcon.js.map +1 -1
  928. package/dist/icons/SlashIcon.js +1 -1
  929. package/dist/icons/SlashIcon.js.map +1 -1
  930. package/dist/icons/SparklesIcon.js +1 -1
  931. package/dist/icons/SparklesIcon.js.map +1 -1
  932. package/dist/icons/SqlIcon.js +1 -1
  933. package/dist/icons/SqlIcon.js.map +1 -1
  934. package/dist/icons/StatsIcon.js +1 -1
  935. package/dist/icons/StatsIcon.js.map +1 -1
  936. package/dist/icons/StopIcon.js +1 -1
  937. package/dist/icons/StopIcon.js.map +1 -1
  938. package/dist/icons/StringIcon.js +1 -1
  939. package/dist/icons/StringIcon.js.map +1 -1
  940. package/dist/icons/SubtotalsIcon.js +1 -1
  941. package/dist/icons/SubtotalsIcon.js.map +1 -1
  942. package/dist/icons/SwitchIcon.js +1 -1
  943. package/dist/icons/SwitchIcon.js.map +1 -1
  944. package/dist/icons/TableIcon.js +1 -1
  945. package/dist/icons/TableIcon.js.map +1 -1
  946. package/dist/icons/ThumbsDownIcon.js +1 -1
  947. package/dist/icons/ThumbsDownIcon.js.map +1 -1
  948. package/dist/icons/ThumbsUpIcon.js +1 -1
  949. package/dist/icons/ThumbsUpIcon.js.map +1 -1
  950. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  951. package/dist/icons/ThunderboltCrossedIcon.js.map +1 -1
  952. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  953. package/dist/icons/ThunderboltFilledIcon.js.map +1 -1
  954. package/dist/icons/ThunderboltIcon.js +1 -1
  955. package/dist/icons/ThunderboltIcon.js.map +1 -1
  956. package/dist/icons/TimeIcon.js +1 -1
  957. package/dist/icons/TimeIcon.js.map +1 -1
  958. package/dist/icons/TrashIcon.js +1 -1
  959. package/dist/icons/TrashIcon.js.map +1 -1
  960. package/dist/icons/UnlockIcon.js +1 -1
  961. package/dist/icons/UnlockIcon.js.map +1 -1
  962. package/dist/icons/UpIcon.js +1 -1
  963. package/dist/icons/UpIcon.js.map +1 -1
  964. package/dist/icons/UserGroupIcon.js +1 -1
  965. package/dist/icons/UserGroupIcon.js.map +1 -1
  966. package/dist/icons/UserIcon.js +1 -1
  967. package/dist/icons/UserIcon.js.map +1 -1
  968. package/dist/icons/UserLockIcon.js +1 -1
  969. package/dist/icons/UserLockIcon.js.map +1 -1
  970. package/dist/icons/ViewIcon.js +1 -1
  971. package/dist/icons/ViewIcon.js.map +1 -1
  972. package/dist/icons/WarningFilledIcon.js +1 -1
  973. package/dist/icons/WarningFilledIcon.js.map +1 -1
  974. package/dist/icons/WarningIcon.js +1 -1
  975. package/dist/icons/WarningIcon.js.map +1 -1
  976. package/dist/icons/wrap-icon.js +15 -7
  977. package/dist/icons/wrap-icon.js.map +1 -1
  978. package/dist/index.d.ts +22 -22
  979. package/dist/index.js +1 -1
  980. package/dist/index.js.map +1 -1
  981. package/dist/probe/canonicalize.js +2 -2
  982. package/dist/probe/canonicalize.js.map +1 -1
  983. package/dist/probe/css.js +1 -1
  984. package/dist/probe/css.js.map +1 -1
  985. package/dist/probe/index.js +1 -1
  986. package/dist/provider.js +17 -7
  987. package/dist/provider.js.map +1 -1
  988. package/dist/providers/TrackingProvider.js +33 -9
  989. package/dist/providers/TrackingProvider.js.map +1 -1
  990. package/dist/providers/navigationAdapter.default.js +1 -1
  991. package/dist/providers/navigationAdapter.default.js.map +1 -1
  992. package/dist/tokens/all-tokens.js +1 -1
  993. package/dist/tokens/all-tokens.js.map +1 -1
  994. package/dist/tokens/base.js +2 -2
  995. package/dist/tokens/base.js.map +1 -1
  996. package/dist/tokens/color-seed.js +1 -1
  997. package/dist/tokens/color-seed.js.map +1 -1
  998. package/dist/tokens/color-theme.js +18 -3
  999. package/dist/tokens/color-theme.js.map +1 -1
  1000. package/dist/tokens/colors.js +1 -1
  1001. package/dist/tokens/colors.js.map +1 -1
  1002. package/dist/tokens/layout.js +1 -1
  1003. package/dist/tokens/layout.js.map +1 -1
  1004. package/dist/tokens/lazy-styles.js +1 -1
  1005. package/dist/tokens/lazy-styles.js.map +1 -1
  1006. package/dist/tokens/legacy-color.js +1 -1
  1007. package/dist/tokens/legacy-color.js.map +1 -1
  1008. package/dist/tokens/palette-config.js +9 -2
  1009. package/dist/tokens/palette-config.js.map +1 -1
  1010. package/dist/tokens/palette.js +1 -1
  1011. package/dist/tokens/palette.js.map +1 -1
  1012. package/dist/tokens/resolve.js +85 -21
  1013. package/dist/tokens/resolve.js.map +1 -1
  1014. package/dist/tokens/shadows.js +1 -1
  1015. package/dist/tokens/shadows.js.map +1 -1
  1016. package/dist/tokens/sizes.js +1 -1
  1017. package/dist/tokens/sizes.js.map +1 -1
  1018. package/dist/tokens/spacing.js +1 -1
  1019. package/dist/tokens/spacing.js.map +1 -1
  1020. package/dist/tokens/typography.js +1 -1
  1021. package/dist/tokens/typography.js.map +1 -1
  1022. package/dist/utils/ResizeSensor.js +1 -1
  1023. package/dist/utils/ResizeSensor.js.map +1 -1
  1024. package/dist/utils/colors.js +1 -1
  1025. package/dist/utils/colors.js.map +1 -1
  1026. package/dist/utils/dotize.js +1 -1
  1027. package/dist/utils/dotize.js.map +1 -1
  1028. package/dist/utils/is-dev-env.js +1 -1
  1029. package/dist/utils/is-dev-env.js.map +1 -1
  1030. package/dist/utils/modules.js +1 -1
  1031. package/dist/utils/modules.js.map +1 -1
  1032. package/dist/utils/promise.js +1 -1
  1033. package/dist/utils/promise.js.map +1 -1
  1034. package/dist/utils/raf.js +1 -1
  1035. package/dist/utils/raf.js.map +1 -1
  1036. package/dist/utils/random.js +1 -1
  1037. package/dist/utils/random.js.map +1 -1
  1038. package/dist/utils/range.js +1 -1
  1039. package/dist/utils/range.js.map +1 -1
  1040. package/dist/utils/react/RenderCache.js +2 -2
  1041. package/dist/utils/react/RenderCache.js.map +1 -1
  1042. package/dist/utils/react/Slots.js +67 -24
  1043. package/dist/utils/react/Slots.js.map +1 -1
  1044. package/dist/utils/react/chain.js +1 -1
  1045. package/dist/utils/react/chain.js.map +1 -1
  1046. package/dist/utils/react/disabledProps.js +1 -1
  1047. package/dist/utils/react/disabledProps.js.map +1 -1
  1048. package/dist/utils/react/escapePropagation.js +1 -1
  1049. package/dist/utils/react/escapePropagation.js.map +1 -1
  1050. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  1051. package/dist/utils/react/forwardRefWithGenerics.js.map +1 -1
  1052. package/dist/utils/react/index.js +1 -1
  1053. package/dist/utils/react/interactions.js +35 -12
  1054. package/dist/utils/react/interactions.js.map +1 -1
  1055. package/dist/utils/react/isTextOnly.js +1 -1
  1056. package/dist/utils/react/isTextOnly.js.map +1 -1
  1057. package/dist/utils/react/mapProps.js +1 -1
  1058. package/dist/utils/react/mapProps.js.map +1 -1
  1059. package/dist/utils/react/mergeProps.js +1 -1
  1060. package/dist/utils/react/mergeProps.js.map +1 -1
  1061. package/dist/utils/react/nullableValue.js +1 -1
  1062. package/dist/utils/react/nullableValue.js.map +1 -1
  1063. package/dist/utils/react/programmaticFocus.js +1 -1
  1064. package/dist/utils/react/programmaticFocus.js.map +1 -1
  1065. package/dist/utils/react/resolveIcon.js +1 -1
  1066. package/dist/utils/react/resolveIcon.js.map +1 -1
  1067. package/dist/utils/react/sharedStore.js +13 -2
  1068. package/dist/utils/react/sharedStore.js.map +1 -1
  1069. package/dist/utils/react/useBufferedValue.js +5 -5
  1070. package/dist/utils/react/useBufferedValue.js.map +1 -1
  1071. package/dist/utils/react/useCombinedRefs.js +20 -5
  1072. package/dist/utils/react/useCombinedRefs.js.map +1 -1
  1073. package/dist/utils/react/useControlledFocusVisible.js +53 -17
  1074. package/dist/utils/react/useControlledFocusVisible.js.map +1 -1
  1075. package/dist/utils/react/useEventBus.js +43 -18
  1076. package/dist/utils/react/useEventBus.js.map +1 -1
  1077. package/dist/utils/react/useId.js +2 -1
  1078. package/dist/utils/react/useId.js.map +1 -1
  1079. package/dist/utils/react/useIsDarwin.js +29 -16
  1080. package/dist/utils/react/useIsDarwin.js.map +1 -1
  1081. package/dist/utils/react/useKeySymbols.js +23 -9
  1082. package/dist/utils/react/useKeySymbols.js.map +1 -1
  1083. package/dist/utils/react/useLayoutEffect.js +1 -1
  1084. package/dist/utils/react/useLayoutEffect.js.map +1 -1
  1085. package/dist/utils/react/useLocalStorage.js +75 -30
  1086. package/dist/utils/react/useLocalStorage.js.map +1 -1
  1087. package/dist/utils/react/useMergeStyles.js +1 -1
  1088. package/dist/utils/react/useMergeStyles.js.map +1 -1
  1089. package/dist/utils/react/useOverlayEscapeGuard.js +25 -9
  1090. package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -1
  1091. package/dist/utils/react/usePopoverSync.js +175 -73
  1092. package/dist/utils/react/usePopoverSync.js.map +1 -1
  1093. package/dist/utils/react/useQaProps.js +1 -1
  1094. package/dist/utils/react/useQaProps.js.map +1 -1
  1095. package/dist/utils/react/useScheme.js +1 -1
  1096. package/dist/utils/react/useScheme.js.map +1 -1
  1097. package/dist/utils/react/useViewportSize.js +43 -19
  1098. package/dist/utils/react/useViewportSize.js.map +1 -1
  1099. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  1100. package/dist/utils/react/wrapNodeIfPlain.js.map +1 -1
  1101. package/dist/utils/selection.js +1 -1
  1102. package/dist/utils/selection.js.map +1 -1
  1103. package/dist/utils/styles.js +1 -1
  1104. package/dist/utils/styles.js.map +1 -1
  1105. package/dist/utils/tree.js +1 -1
  1106. package/dist/utils/tree.js.map +1 -1
  1107. package/dist/utils/warnings.js +1 -1
  1108. package/dist/utils/warnings.js.map +1 -1
  1109. package/dist/version.js +2 -2
  1110. package/dist/version.js.map +1 -1
  1111. package/docs/Usage.md +9 -1
  1112. package/docs/components/actions/Button.md +1 -1
  1113. package/docs/components/content/InlineInput.md +1 -1
  1114. package/docs/components/content/Item.md +19 -0
  1115. package/docs/components/fields/ColorInput.md +13 -8
  1116. package/docs/components/fields/ColorPicker.md +13 -8
  1117. package/docs/components/fields/ComboBox.md +16 -12
  1118. package/docs/components/fields/CommandTextArea.md +3 -1
  1119. package/docs/components/fields/FilterListBox.md +24 -19
  1120. package/docs/components/fields/FilterPicker.md +25 -19
  1121. package/docs/components/fields/ListBox.md +36 -26
  1122. package/docs/components/fields/Picker.md +28 -21
  1123. package/docs/components/fields/Select.md +17 -12
  1124. package/docs/components/form/Field.md +2 -2
  1125. package/docs/components/form/Form.md +60 -579
  1126. package/docs/components/form/ModernForm.md +22 -1
  1127. package/docs/components/overlays/Dialog.md +26 -0
  1128. package/docs/components/overlays/DialogForm.md +121 -263
  1129. package/docs/components/overlays/DialogTrigger.md +1 -1
  1130. package/docs/components/overlays/UseDialogContainer.md +11 -13
  1131. package/docs/modern-form-guide.md +22 -1
  1132. package/docs/modern-form-migration.md +1 -1
  1133. package/package.json +7 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ValidationIndicator.js","names":[],"sources":["../../../../src/components/form/validation/ValidationIndicator.tsx"],"sourcesContent":["import { ReactElement } from 'react';\n\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { ValidationProps } from '../../../shared/index';\nimport { InvalidIcon } from '../../shared/InvalidIcon';\nimport { ValidIcon } from '../../shared/ValidIcon';\n\nimport { hasValidationState } from './resolve-validation-props';\n\nexport interface ValidationIndicatorProps extends ValidationProps {\n isLoading?: boolean;\n}\n\n/** The validation icon for the current state, or `null` when there is nothing to show */\nexport function getValidationIcon({\n isInvalid,\n isValid,\n}: ValidationProps): ReactElement | null {\n if (isInvalid) return InvalidIcon;\n if (isValid) return ValidIcon;\n\n return null;\n}\n\n/**\n * Whether an input needs to render the `data-element=\"State\"` block. The loading indicator replaces the\n * validation icon while the input is loading.\n */\nexport function hasValidationIndicator(props: ValidationIndicatorProps) {\n return !!props.isLoading || hasValidationState(props);\n}\n\n/**\n * Renders the validation state of an input as a suffix: either the validation icon or, while loading, the\n * loading indicator.\n */\nexport function ValidationIndicator(props: ValidationIndicatorProps) {\n const { isLoading } = props;\n\n if (!hasValidationIndicator(props)) {\n return null;\n }\n\n return (\n <div data-element=\"State\">\n {isLoading ? (\n <LoadingIcon data-element=\"InputIcon\" />\n ) : (\n getValidationIcon(props)\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;AAcA,SAAgB,kBAAkB,EAChC,WACA,WACuC;AACvC,KAAI,UAAW,QAAO;AACtB,KAAI,QAAS,QAAO;AAEpB,QAAO;;;;;;AAOT,SAAgB,uBAAuB,OAAiC;AACtE,QAAO,CAAC,CAAC,MAAM,aAAa,mBAAmB,MAAM;;;;;;AAOvD,SAAgB,oBAAoB,OAAiC;CACnE,MAAM,EAAE,cAAc;AAEtB,KAAI,CAAC,uBAAuB,MAAM,CAChC,QAAO;AAGT,QACE,oBAAC;EAAI,gBAAa;YACf,YACC,oBAAC,eAAY,gBAAa,cAAc,GAExC,kBAAkB,MAAM;GAEtB"}
1
+ {"version":3,"file":"ValidationIndicator.js","names":["ReactElement","LoadingIcon","ValidationProps","InvalidIcon","ValidIcon","hasValidationState","ValidationIndicatorProps","isLoading","getValidationIcon","isInvalid","isValid","hasValidationIndicator","props","ValidationIndicator","$","_c","t0","t1"],"sources":["../../../../src/components/form/validation/ValidationIndicator.tsx"],"sourcesContent":["import { ReactElement } from 'react';\n\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { ValidationProps } from '../../../shared/index';\nimport { InvalidIcon } from '../../shared/InvalidIcon';\nimport { ValidIcon } from '../../shared/ValidIcon';\n\nimport { hasValidationState } from './resolve-validation-props';\n\nexport interface ValidationIndicatorProps extends ValidationProps {\n isLoading?: boolean;\n}\n\n/** The validation icon for the current state, or `null` when there is nothing to show */\nexport function getValidationIcon({\n isInvalid,\n isValid,\n}: ValidationProps): ReactElement | null {\n if (isInvalid) return InvalidIcon;\n if (isValid) return ValidIcon;\n\n return null;\n}\n\n/**\n * Whether an input needs to render the `data-element=\"State\"` block. The loading indicator replaces the\n * validation icon while the input is loading.\n */\nexport function hasValidationIndicator(props: ValidationIndicatorProps) {\n return !!props.isLoading || hasValidationState(props);\n}\n\n/**\n * Renders the validation state of an input as a suffix: either the validation icon or, while loading, the\n * loading indicator.\n */\nexport function ValidationIndicator(props: ValidationIndicatorProps) {\n const { isLoading } = props;\n\n if (!hasValidationIndicator(props)) {\n return null;\n }\n\n return (\n <div data-element=\"State\">\n {isLoading ? (\n <LoadingIcon data-element=\"InputIcon\" />\n ) : (\n getValidationIcon(props)\n )}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;AAcA,SAAgBQ,kBAAkB,EAChCC,WACAC,WACuC;AACvC,KAAID,UAAW,QAAON;AACtB,KAAIO,QAAS,QAAON;AAEpB,QAAO;;;;;;AAOT,SAAgBO,uBAAuBC,OAAiC;AACtE,QAAO,CAAC,CAACA,MAAML,aAAaF,mBAAmBO,MAAM;;;;;;AAOvD,SAAOC,oBAAAD,OAAA;CAAA,MAAAE,IAAAC,EAAA,EAAA;CACL,MAAA,EAAAR,cAAsBK;AAEtB,KAAI,CAACD,uBAAuBC,MAAM,CAAA,QACzB;CACR,IAAAI;AAAA,KAAAF,EAAA,OAAAP,aAAAO,EAAA,OAAAF,OAAA;AAIII,OAAAT,YACC,oBAAC,eAAyB,gBAAA,cAG3B,GADCC,kBAAkBI,MACnB;AAAAE,IAAA,KAAAP;AAAAO,IAAA,KAAAF;AAAAE,IAAA,KAAAE;OAAAA,MAAAF,EAAA;CAAA,IAAAG;AAAA,KAAAH,EAAA,OAAAE,IAAA;AALHC,OAAA,oBAAA;GAAkB,gBAAA;aACfD;IAKG;AAAAF,IAAA,KAAAE;AAAAF,IAAA,KAAAG;OAAAA,MAAAH,EAAA;AAAA,QANNG"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.181.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.183.0 | Cube Dev Team */
2
2
  //#region src/components/form/validation/resolve-validation-props.ts
3
3
  /**
4
4
  * Normalizes the validation props of a field into a pair of booleans.
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-validation-props.js","names":[],"sources":["../../../../src/components/form/validation/resolve-validation-props.ts"],"sourcesContent":["import { ValidationProps, ValidationState } from '../../../shared/index';\n\nexport interface ResolvableValidationProps extends ValidationProps {\n /** @deprecated Use `isInvalid` / `isValid` instead. */\n validationState?: ValidationState;\n}\n\nexport interface ResolvedValidationProps {\n isInvalid: boolean | undefined;\n isValid: boolean | undefined;\n}\n\n/**\n * Normalizes the validation props of a field into a pair of booleans.\n *\n * When none of `isInvalid`, `isValid` and the deprecated `validationState` is provided, both flags stay\n * `undefined` so the caller can fall back to a derived state (form errors, `showValid`, …). As soon as any\n * of them is provided, both flags become definite booleans and no fallback applies.\n *\n * `isInvalid` always wins over `isValid`.\n */\nexport function resolveValidationProps(\n props: ResolvableValidationProps,\n): ResolvedValidationProps {\n const { isInvalid, isValid, validationState } = props;\n\n if (\n isInvalid === undefined &&\n isValid === undefined &&\n validationState === undefined\n ) {\n return { isInvalid: undefined, isValid: undefined };\n }\n\n const resolvedIsInvalid = isInvalid ?? validationState === 'invalid';\n\n return {\n isInvalid: resolvedIsInvalid,\n isValid: resolvedIsInvalid ? false : isValid ?? validationState === 'valid',\n };\n}\n\n/** Whether the field has a validation state worth rendering an indicator for */\nexport function hasValidationState({\n isInvalid,\n isValid,\n}: ValidationProps): boolean {\n return !!isInvalid || !!isValid;\n}\n\n/** Tasty modifiers for the validation state. Use instead of hand-writing `invalid`/`valid` mods. */\nexport function getValidationMods({ isInvalid, isValid }: ValidationProps) {\n return {\n invalid: !!isInvalid,\n valid: !!isValid && !isInvalid,\n };\n}\n\n/**\n * Maps the validation state onto a theme name for triggers and items.\n *\n * By default only the invalid state is mapped, which keeps neutral triggers neutral while the suffix icon\n * communicates the valid state. Pass `includeValid` to also map the valid state onto `success`.\n */\nexport function getValidationTheme<T extends string | undefined>(\n theme: T,\n { isInvalid, isValid }: ValidationProps,\n options: { includeValid?: boolean } = {},\n): T | 'danger' | 'success' {\n if (isInvalid) return 'danger';\n if (options.includeValid && isValid) return 'success';\n\n return theme;\n}\n"],"mappings":";;;;;;;;;;;AAqBA,SAAgB,uBACd,OACyB;CACzB,MAAM,EAAE,WAAW,SAAS,oBAAoB;AAEhD,KACE,cAAc,UACd,YAAY,UACZ,oBAAoB,OAEpB,QAAO;EAAE,WAAW;EAAW,SAAS;EAAW;CAGrD,MAAM,oBAAoB,aAAa,oBAAoB;AAE3D,QAAO;EACL,WAAW;EACX,SAAS,oBAAoB,QAAQ,WAAW,oBAAoB;EACrE;;;AAIH,SAAgB,mBAAmB,EACjC,WACA,WAC2B;AAC3B,QAAO,CAAC,CAAC,aAAa,CAAC,CAAC;;;AAI1B,SAAgB,kBAAkB,EAAE,WAAW,WAA4B;AACzE,QAAO;EACL,SAAS,CAAC,CAAC;EACX,OAAO,CAAC,CAAC,WAAW,CAAC;EACtB;;;;;;;;AASH,SAAgB,mBACd,OACA,EAAE,WAAW,WACb,UAAsC,EAAE,EACd;AAC1B,KAAI,UAAW,QAAO;AACtB,KAAI,QAAQ,gBAAgB,QAAS,QAAO;AAE5C,QAAO"}
1
+ {"version":3,"file":"resolve-validation-props.js","names":["ValidationProps","ValidationState","ResolvableValidationProps","validationState","ResolvedValidationProps","isInvalid","isValid","resolveValidationProps","props","undefined","resolvedIsInvalid","hasValidationState","getValidationMods","invalid","valid","getValidationTheme","theme","T","options","includeValid"],"sources":["../../../../src/components/form/validation/resolve-validation-props.ts"],"sourcesContent":["import { ValidationProps, ValidationState } from '../../../shared/index';\n\nexport interface ResolvableValidationProps extends ValidationProps {\n /** @deprecated Use `isInvalid` / `isValid` instead. */\n validationState?: ValidationState;\n}\n\nexport interface ResolvedValidationProps {\n isInvalid: boolean | undefined;\n isValid: boolean | undefined;\n}\n\n/**\n * Normalizes the validation props of a field into a pair of booleans.\n *\n * When none of `isInvalid`, `isValid` and the deprecated `validationState` is provided, both flags stay\n * `undefined` so the caller can fall back to a derived state (form errors, `showValid`, …). As soon as any\n * of them is provided, both flags become definite booleans and no fallback applies.\n *\n * `isInvalid` always wins over `isValid`.\n */\nexport function resolveValidationProps(\n props: ResolvableValidationProps,\n): ResolvedValidationProps {\n const { isInvalid, isValid, validationState } = props;\n\n if (\n isInvalid === undefined &&\n isValid === undefined &&\n validationState === undefined\n ) {\n return { isInvalid: undefined, isValid: undefined };\n }\n\n const resolvedIsInvalid = isInvalid ?? validationState === 'invalid';\n\n return {\n isInvalid: resolvedIsInvalid,\n isValid: resolvedIsInvalid ? false : isValid ?? validationState === 'valid',\n };\n}\n\n/** Whether the field has a validation state worth rendering an indicator for */\nexport function hasValidationState({\n isInvalid,\n isValid,\n}: ValidationProps): boolean {\n return !!isInvalid || !!isValid;\n}\n\n/** Tasty modifiers for the validation state. Use instead of hand-writing `invalid`/`valid` mods. */\nexport function getValidationMods({ isInvalid, isValid }: ValidationProps) {\n return {\n invalid: !!isInvalid,\n valid: !!isValid && !isInvalid,\n };\n}\n\n/**\n * Maps the validation state onto a theme name for triggers and items.\n *\n * By default only the invalid state is mapped, which keeps neutral triggers neutral while the suffix icon\n * communicates the valid state. Pass `includeValid` to also map the valid state onto `success`.\n */\nexport function getValidationTheme<T extends string | undefined>(\n theme: T,\n { isInvalid, isValid }: ValidationProps,\n options: { includeValid?: boolean } = {},\n): T | 'danger' | 'success' {\n if (isInvalid) return 'danger';\n if (options.includeValid && isValid) return 'success';\n\n return theme;\n}\n"],"mappings":";;;;;;;;;;;AAqBA,SAAgBO,uBACdC,OACyB;CACzB,MAAM,EAAEH,WAAWC,SAASH,oBAAoBK;AAEhD,KACEH,cAAcI,UACdH,YAAYG,UACZN,oBAAoBM,OAEpB,QAAO;EAAEJ,WAAWI;EAAWH,SAASG;EAAW;CAGrD,MAAMC,oBAAoBL,aAAaF,oBAAoB;AAE3D,QAAO;EACLE,WAAWK;EACXJ,SAASI,oBAAoB,QAAQJ,WAAWH,oBAAoB;EACrE;;;AAIH,SAAgBQ,mBAAmB,EACjCN,WACAC,WAC2B;AAC3B,QAAO,CAAC,CAACD,aAAa,CAAC,CAACC;;;AAI1B,SAAgBM,kBAAkB,EAAEP,WAAWC,WAA4B;AACzE,QAAO;EACLO,SAAS,CAAC,CAACR;EACXS,OAAO,CAAC,CAACR,WAAW,CAACD;EACtB;;;;;;;;AASH,SAAgBU,mBACdC,OACA,EAAEX,WAAWC,WACbY,UAAsC,EAAE,EACd;AAC1B,KAAIb,UAAW,QAAO;AACtB,KAAIa,QAAQC,gBAAgBb,QAAS,QAAO;AAE5C,QAAOU"}
@@ -1,6 +1,7 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.181.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.183.0 | Cube Dev Team */
2
2
  import { useWarn } from "../../../_internal/hooks/use-warn.js";
3
3
  import { resolveValidationProps } from "./resolve-validation-props.js";
4
+ import { c } from "react-compiler-runtime";
4
5
 
5
6
  //#region src/components/form/validation/use-validation-props.ts
6
7
  /**
@@ -12,16 +13,41 @@ import { resolveValidationProps } from "./resolve-validation-props.js";
12
13
  * check of an all-optional constraint.
13
14
  */
14
15
  function useValidationProps(props) {
15
- useWarn(props.validationState !== void 0, {
16
- key: "validation-state-deprecated",
17
- args: ["The \"validationState\" property is deprecated. Use \"isInvalid\" and \"isValid\" instead."]
18
- });
16
+ const $ = c(8);
17
+ let t0;
18
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
19
+ t0 = {
20
+ key: "validation-state-deprecated",
21
+ args: ["The \"validationState\" property is deprecated. Use \"isInvalid\" and \"isValid\" instead."]
22
+ };
23
+ $[0] = t0;
24
+ } else t0 = $[0];
25
+ useWarn(props.validationState !== void 0, t0);
19
26
  if (props.validationState === void 0 && props.isInvalid === void 0 && props.isValid === void 0) return props;
20
- const { validationState: _validationState, ...rest } = props;
21
- return {
22
- ...rest,
23
- ...resolveValidationProps(props)
24
- };
27
+ let rest;
28
+ if ($[1] !== props) {
29
+ const { validationState: _validationState, ...t1 } = props;
30
+ rest = t1;
31
+ $[1] = props;
32
+ $[2] = rest;
33
+ } else rest = $[2];
34
+ let t1;
35
+ if ($[3] !== props) {
36
+ t1 = resolveValidationProps(props);
37
+ $[3] = props;
38
+ $[4] = t1;
39
+ } else t1 = $[4];
40
+ let t2;
41
+ if ($[5] !== rest || $[6] !== t1) {
42
+ t2 = {
43
+ ...rest,
44
+ ...t1
45
+ };
46
+ $[5] = rest;
47
+ $[6] = t1;
48
+ $[7] = t2;
49
+ } else t2 = $[7];
50
+ return t2;
25
51
  }
26
52
 
27
53
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"use-validation-props.js","names":[],"sources":["../../../../src/components/form/validation/use-validation-props.ts"],"sourcesContent":["import { useWarn } from '../../../_internal/index';\n\nimport {\n ResolvableValidationProps,\n resolveValidationProps,\n} from './resolve-validation-props';\n\n/**\n * Resolves `isInvalid` / `isValid` from the props and removes the deprecated `validationState` prop, so\n * component bodies only ever deal with booleans.\n *\n * The validation props are intersected into the parameter instead of constraining `T`, because prop types\n * built with `Omit` over a `Props` index signature expose no named properties and would fail the weak type\n * check of an all-optional constraint.\n */\nexport function useValidationProps<T>(props: T & ResolvableValidationProps): T {\n useWarn(props.validationState !== undefined, {\n key: 'validation-state-deprecated',\n args: [\n 'The \"validationState\" property is deprecated. Use \"isInvalid\" and \"isValid\" instead.',\n ],\n });\n\n if (\n props.validationState === undefined &&\n props.isInvalid === undefined &&\n props.isValid === undefined\n ) {\n return props;\n }\n\n const { validationState: _validationState, ...rest } = props;\n\n return { ...rest, ...resolveValidationProps(props) } as T;\n}\n"],"mappings":";;;;;;;;;;;;;AAeA,SAAgB,mBAAsB,OAAyC;AAC7E,SAAQ,MAAM,oBAAoB,QAAW;EAC3C,KAAK;EACL,MAAM,CACJ,6FACD;EACF,CAAC;AAEF,KACE,MAAM,oBAAoB,UAC1B,MAAM,cAAc,UACpB,MAAM,YAAY,OAElB,QAAO;CAGT,MAAM,EAAE,iBAAiB,kBAAkB,GAAG,SAAS;AAEvD,QAAO;EAAE,GAAG;EAAM,GAAG,uBAAuB,MAAM;EAAE"}
1
+ {"version":3,"file":"use-validation-props.js","names":["useWarn","ResolvableValidationProps","resolveValidationProps","useValidationProps","props","$","_c","t0","Symbol","for","key","args","validationState","undefined","isInvalid","isValid","rest","_validationState","t1","t2","T"],"sources":["../../../../src/components/form/validation/use-validation-props.ts"],"sourcesContent":["import { useWarn } from '../../../_internal/index';\n\nimport {\n ResolvableValidationProps,\n resolveValidationProps,\n} from './resolve-validation-props';\n\n/**\n * Resolves `isInvalid` / `isValid` from the props and removes the deprecated `validationState` prop, so\n * component bodies only ever deal with booleans.\n *\n * The validation props are intersected into the parameter instead of constraining `T`, because prop types\n * built with `Omit` over a `Props` index signature expose no named properties and would fail the weak type\n * check of an all-optional constraint.\n */\nexport function useValidationProps<T>(props: T & ResolvableValidationProps): T {\n useWarn(props.validationState !== undefined, {\n key: 'validation-state-deprecated',\n args: [\n 'The \"validationState\" property is deprecated. Use \"isInvalid\" and \"isValid\" instead.',\n ],\n });\n\n if (\n props.validationState === undefined &&\n props.isInvalid === undefined &&\n props.isValid === undefined\n ) {\n return props;\n }\n\n const { validationState: _validationState, ...rest } = props;\n\n return { ...rest, ...resolveValidationProps(props) } as T;\n}\n"],"mappings":";;;;;;;;;;;;;;AAeA,SAAOG,mBAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;AAAA,KAAAF,EAAA,OAAAG,OAAAC,IAAA,4BAAA,EAAA;AACwCF,OAAA;GAAAG,KACtC;GAA6BC,MAC5B,CACJ,6FAAsF;GAEzF;AAAAN,IAAA,KAAAE;OAAAA,MAAAF,EAAA;AALDL,SAAQI,MAAKQ,oBAAqBC,QAAWN,GAK3C;AAEF,KACEH,MAAKQ,oBAAqBC,UAC1BT,MAAKU,cAAeD,UACpBT,MAAKW,YAAaF,OAAS,QAEpBT;CACR,IAAAY;AAAA,KAAAX,EAAA,OAAAD,OAAA;EAED,MAAA,EAAAQ,iBAAAK,kBAAA,GAAAC,OAAuDd;AAAvDY,SAAAE;AAA6Db,IAAA,KAAAD;AAAAC,IAAA,KAAAW;OAAAA,QAAAX,EAAA;CAAA,IAAAa;AAAA,KAAAb,EAAA,OAAAD,OAAA;AAExCc,OAAAhB,uBAAuBE,MAAM;AAAAC,IAAA,KAAAD;AAAAC,IAAA,KAAAa;OAAAA,MAAAb,EAAA;CAAA,IAAAc;AAAA,KAAAd,EAAA,OAAAW,QAAAX,EAAA,OAAAa,IAAA;AAA3CC,OAAA;GAAA,GAAKH;GAAI,GAAKE;GAA+B;AAAAb,IAAA,KAAAW;AAAAX,IAAA,KAAAa;AAAAb,IAAA,KAAAc;OAAAA,MAAAd,EAAA;AAAA,QAA7Cc"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.181.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.183.0 | Cube Dev Team */
2
2
  import { mergeProps } from "../../utils/react/mergeProps.js";
3
3
  import { FieldWrapper } from "./FieldWrapper/FieldWrapper.js";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.js","names":[],"sources":["../../../src/components/form/wrapper.tsx"],"sourcesContent":["import { DOMRef, FocusableRef } from '@react-types/shared';\nimport { BaseProps } from '@tenphi/tasty';\nimport { ReactElement, RefObject } from 'react';\n\nimport { FieldBaseProps, FormBaseProps } from '../../shared/index';\nimport { mergeProps } from '../../utils/react/index';\n\nimport { FieldWrapper } from './FieldWrapper/index';\n\n// `children` is intentionally omitted: the input is passed as `component`, never through props.\ninterface WrapWithFieldProps\n extends FieldBaseProps,\n Omit<BaseProps, 'children'>,\n FormBaseProps {}\n\n/**\n * Wraps an input with the field chrome (label, description, message) when it has a `label` or `forceField`.\n * Only the field wrapper props are forwarded, so callers can pass their whole props object as is.\n */\nexport function wrapWithField<T extends WrapWithFieldProps>(\n component: ReactElement,\n ref: RefObject<unknown> | FocusableRef<HTMLElement> | DOMRef<HTMLElement>,\n props: T,\n) {\n let {\n forceField,\n label,\n extra,\n labelPosition = 'top',\n labelStyles,\n isRequired,\n isOptional,\n isDisabled,\n necessityIndicator,\n message,\n messageStyles,\n description,\n errorMessage,\n isInvalid,\n isValid,\n labelProps,\n fieldProps,\n fieldStyles,\n requiredMark = true,\n tooltip,\n isHidden,\n labelSuffix,\n } = props;\n\n if (!label && !forceField) {\n return component;\n }\n\n // Merge fieldStyles as shorthand for fieldProps.styles (fieldStyles takes priority)\n const mergedFieldProps = fieldStyles\n ? mergeProps(fieldProps, { styles: fieldStyles })\n : fieldProps;\n\n // Merge labelStyles as shorthand for labelProps.styles (labelStyles takes priority)\n const mergedLabelProps = labelStyles\n ? mergeProps(labelProps, { styles: labelStyles })\n : labelProps;\n\n // Remove id from fieldProps to avoid duplication (id should be on the input element, not the field wrapper)\n const { id: _id, ...fieldPropsWithoutId } = (mergedFieldProps as any) || {};\n\n return (\n <FieldWrapper\n {...{\n label,\n extra,\n labelPosition,\n isRequired,\n isOptional,\n isDisabled,\n necessityIndicator,\n labelProps: mergedLabelProps,\n fieldProps: fieldPropsWithoutId,\n message,\n messageStyles,\n description,\n errorMessage,\n isInvalid,\n isValid,\n requiredMark,\n tooltip,\n isHidden,\n labelSuffix,\n Component: component,\n ref,\n }}\n />\n );\n}\n"],"mappings":";;;;;;;;;;AAmBA,SAAgB,cACd,WACA,KACA,OACA;CACA,IAAI,EACF,YACA,OACA,OACA,gBAAgB,OAChB,aACA,YACA,YACA,YACA,oBACA,SACA,eACA,aACA,cACA,WACA,SACA,YACA,YACA,aACA,eAAe,MACf,SACA,UACA,gBACE;AAEJ,KAAI,CAAC,SAAS,CAAC,WACb,QAAO;CAIT,MAAM,mBAAmB,cACrB,WAAW,YAAY,EAAE,QAAQ,aAAa,CAAC,GAC/C;CAGJ,MAAM,mBAAmB,cACrB,WAAW,YAAY,EAAE,QAAQ,aAAa,CAAC,GAC/C;CAGJ,MAAM,EAAE,IAAI,KAAK,GAAG,wBAAyB,oBAA4B,EAAE;AAE3E,QACE,oBAAC;EAEG;EACA;EACA;EACA;EACA;EACA;EACA;EACA,YAAY;EACZ,YAAY;EACZ;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,WAAW;EACX;GAEF"}
1
+ {"version":3,"file":"wrapper.js","names":["DOMRef","FocusableRef","BaseProps","ReactElement","RefObject","FieldBaseProps","FormBaseProps","mergeProps","FieldWrapper","WrapWithFieldProps","Omit","wrapWithField","component","ref","HTMLElement","props","T","forceField","label","extra","labelPosition","labelStyles","isRequired","isOptional","isDisabled","necessityIndicator","message","messageStyles","description","errorMessage","isInvalid","isValid","labelProps","fieldProps","fieldStyles","requiredMark","tooltip","isHidden","labelSuffix","mergedFieldProps","styles","mergedLabelProps","id","_id","fieldPropsWithoutId","Component"],"sources":["../../../src/components/form/wrapper.tsx"],"sourcesContent":["import { DOMRef, FocusableRef } from '@react-types/shared';\nimport { BaseProps } from '@tenphi/tasty';\nimport { ReactElement, RefObject } from 'react';\n\nimport { FieldBaseProps, FormBaseProps } from '../../shared/index';\nimport { mergeProps } from '../../utils/react/index';\n\nimport { FieldWrapper } from './FieldWrapper/index';\n\n// `children` is intentionally omitted: the input is passed as `component`, never through props.\ninterface WrapWithFieldProps\n extends FieldBaseProps,\n Omit<BaseProps, 'children'>,\n FormBaseProps {}\n\n/**\n * Wraps an input with the field chrome (label, description, message) when it has a `label` or `forceField`.\n * Only the field wrapper props are forwarded, so callers can pass their whole props object as is.\n */\nexport function wrapWithField<T extends WrapWithFieldProps>(\n component: ReactElement,\n ref: RefObject<unknown> | FocusableRef<HTMLElement> | DOMRef<HTMLElement>,\n props: T,\n) {\n let {\n forceField,\n label,\n extra,\n labelPosition = 'top',\n labelStyles,\n isRequired,\n isOptional,\n isDisabled,\n necessityIndicator,\n message,\n messageStyles,\n description,\n errorMessage,\n isInvalid,\n isValid,\n labelProps,\n fieldProps,\n fieldStyles,\n requiredMark = true,\n tooltip,\n isHidden,\n labelSuffix,\n } = props;\n\n if (!label && !forceField) {\n return component;\n }\n\n // Merge fieldStyles as shorthand for fieldProps.styles (fieldStyles takes priority)\n const mergedFieldProps = fieldStyles\n ? mergeProps(fieldProps, { styles: fieldStyles })\n : fieldProps;\n\n // Merge labelStyles as shorthand for labelProps.styles (labelStyles takes priority)\n const mergedLabelProps = labelStyles\n ? mergeProps(labelProps, { styles: labelStyles })\n : labelProps;\n\n // Remove id from fieldProps to avoid duplication (id should be on the input element, not the field wrapper)\n const { id: _id, ...fieldPropsWithoutId } = (mergedFieldProps as any) || {};\n\n return (\n <FieldWrapper\n {...{\n label,\n extra,\n labelPosition,\n isRequired,\n isOptional,\n isDisabled,\n necessityIndicator,\n labelProps: mergedLabelProps,\n fieldProps: fieldPropsWithoutId,\n message,\n messageStyles,\n description,\n errorMessage,\n isInvalid,\n isValid,\n requiredMark,\n tooltip,\n isHidden,\n labelSuffix,\n Component: component,\n ref,\n }}\n />\n );\n}\n"],"mappings":";;;;;;;;;;AAmBA,SAAgBW,cACdC,WACAC,KACAE,OACA;CACA,IAAI,EACFE,YACAC,OACAC,OACAC,gBAAgB,OAChBC,aACAC,YACAC,YACAC,YACAC,oBACAC,SACAC,eACAC,aACAC,cACAC,WACAC,SACAC,YACAC,YACAC,aACAC,eAAe,MACfC,SACAC,UACAC,gBACEvB;AAEJ,KAAI,CAACG,SAAS,CAACD,WACb,QAAOL;CAIT,MAAM2B,mBAAmBL,cACrB3B,WAAW0B,YAAY,EAAEO,QAAQN,aAAa,CAAC,GAC/CD;CAGJ,MAAMQ,mBAAmBpB,cACrBd,WAAWyB,YAAY,EAAEQ,QAAQnB,aAAa,CAAC,GAC/CW;CAGJ,MAAM,EAAEU,IAAIC,KAAK,GAAGC,wBAAyBL,oBAA4B,EAAE;AAE3E,QACE,oBAAC;EAEGrB;EACAC;EACAC;EACAE;EACAC;EACAC;EACAC;EACAO,YAAYS;EACZR,YAAYW;EACZlB;EACAC;EACAC;EACAC;EACAC;EACAC;EACAI;EACAC;EACAC;EACAC;EACAO,WAAWjC;EACXC;GAEF"}
@@ -1,16 +1,36 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.181.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.183.0 | Cube Dev Team */
2
+ import { c } from "react-compiler-runtime";
2
3
  import { useCallback, useLayoutEffect, useRef, useState } from "react";
3
4
 
4
5
  //#region src/components/helpers/DisplayTransition/DisplayTransition.tsx
5
6
  const AUTO_FALLBACK_DURATION = 500;
6
7
  function useEvent(fn) {
8
+ const $ = c(4);
7
9
  const ref = useRef(fn);
8
- useLayoutEffect(() => {
9
- ref.current = fn;
10
- }, [fn]);
11
- return useCallback((...args) => {
12
- return ref.current?.(...args);
13
- }, []);
10
+ let t0;
11
+ let t1;
12
+ if ($[0] !== fn) {
13
+ t0 = () => {
14
+ ref.current = fn;
15
+ };
16
+ t1 = [fn];
17
+ $[0] = fn;
18
+ $[1] = t0;
19
+ $[2] = t1;
20
+ } else {
21
+ t0 = $[1];
22
+ t1 = $[2];
23
+ }
24
+ useLayoutEffect(t0, t1);
25
+ let t2;
26
+ if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
27
+ t2 = (...t3) => {
28
+ const args = t3;
29
+ return ref.current?.(...args);
30
+ };
31
+ $[3] = t2;
32
+ } else t2 = $[3];
33
+ return t2;
14
34
  }
15
35
  function DisplayTransition({ isShown: targetShown, duration, onRest, onPhaseChange, onToggle, exposeUnmounted = false, animateOnMount = true, respectReducedMotion = true, preserveContent = true, children }) {
16
36
  const dur = respectReducedMotion && typeof window !== "undefined" && window.matchMedia?.("(prefers-reduced-motion: reduce)")?.matches ? 0 : duration;
@@ -62,43 +82,43 @@ function DisplayTransition({ isShown: targetShown, duration, onRest, onPhaseChan
62
82
  eventListenersRef.current = null;
63
83
  }
64
84
  };
65
- const afterDuration = (cb) => {
66
- const flow = flowRef.current;
85
+ const afterDuration = (cb_0) => {
86
+ const flow_0 = flowRef.current;
67
87
  if (dur === void 0) {
68
- const element = elementRef.current;
88
+ const element_0 = elementRef.current;
69
89
  cleanupEventListeners();
70
90
  transitionStartedRef.current = false;
71
91
  let completed = false;
72
92
  const complete = () => {
73
- if (completed || flowRef.current !== flow) return;
93
+ if (completed || flowRef.current !== flow_0) return;
74
94
  completed = true;
75
95
  clearTimer();
76
96
  cleanupEventListeners();
77
- cb();
97
+ cb_0();
78
98
  };
79
- if (!element) {
99
+ if (!element_0) {
80
100
  clearTimer();
81
101
  timerRef.current = setTimeout(() => {
82
- if (flowRef.current !== flow) return;
102
+ if (flowRef.current !== flow_0) return;
83
103
  timerRef.current = null;
84
104
  complete();
85
105
  }, AUTO_FALLBACK_DURATION);
86
106
  return;
87
107
  }
88
108
  const onTransitionStart = (e) => {
89
- if (e.target !== element) return;
90
- if (flowRef.current !== flow) return;
109
+ if (e.target !== element_0) return;
110
+ if (flowRef.current !== flow_0) return;
91
111
  transitionStartedRef.current = true;
92
112
  clearTimer();
93
113
  };
94
- const onTransitionEnd = (e) => {
95
- if (e.target !== element) return;
96
- if (flowRef.current !== flow) return;
114
+ const onTransitionEnd = (e_0) => {
115
+ if (e_0.target !== element_0) return;
116
+ if (flowRef.current !== flow_0) return;
97
117
  complete();
98
118
  };
99
- const onTransitionCancel = (e) => {
100
- if (e.target !== element) return;
101
- if (flowRef.current !== flow) return;
119
+ const onTransitionCancel = (e_1) => {
120
+ if (e_1.target !== element_0) return;
121
+ if (flowRef.current !== flow_0) return;
102
122
  complete();
103
123
  };
104
124
  eventListenersRef.current = {
@@ -106,24 +126,24 @@ function DisplayTransition({ isShown: targetShown, duration, onRest, onPhaseChan
106
126
  onTransitionEnd,
107
127
  onTransitionCancel
108
128
  };
109
- element.addEventListener("transitionstart", onTransitionStart);
110
- element.addEventListener("transitionend", onTransitionEnd);
111
- element.addEventListener("transitioncancel", onTransitionCancel);
129
+ element_0.addEventListener("transitionstart", onTransitionStart);
130
+ element_0.addEventListener("transitionend", onTransitionEnd);
131
+ element_0.addEventListener("transitioncancel", onTransitionCancel);
112
132
  timerRef.current = setTimeout(() => {
113
- if (flowRef.current !== flow) return;
133
+ if (flowRef.current !== flow_0) return;
114
134
  if (!transitionStartedRef.current) complete();
115
135
  }, 150);
116
136
  return;
117
137
  }
118
138
  if (dur <= 0) {
119
- cb();
139
+ cb_0();
120
140
  return;
121
141
  }
122
142
  clearTimer();
123
143
  timerRef.current = setTimeout(() => {
124
- if (flowRef.current !== flow) return;
144
+ if (flowRef.current !== flow_0) return;
125
145
  timerRef.current = null;
126
- cb();
146
+ cb_0();
127
147
  }, dur);
128
148
  };
129
149
  const ensureEnterFlow = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"DisplayTransition.js","names":[],"sources":["../../../../src/components/helpers/DisplayTransition/DisplayTransition.tsx"],"sourcesContent":["import {\n ReactNode,\n RefCallback,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nconst AUTO_FALLBACK_DURATION = 500;\n\ntype Phase = 'enter' | 'entered' | 'exit-pending' | 'exit' | 'unmounted';\nexport type ReportedPhase = 'enter' | 'entered' | 'exit' | 'unmounted';\n\nexport type DisplayTransitionProps = {\n /** Desired visibility (driver). */\n isShown: boolean;\n /** Times enter->entered and exit->unmounted. 0 => immediate. If undefined, uses native transition events. */\n duration?: number;\n /** Fires after enter settles or after exit completes (unmount). */\n onRest?: (transition: 'enter' | 'exit') => void;\n /** Fires when phase changes. */\n onPhaseChange?: (phase: ReportedPhase) => void;\n /** Fires when isShown (derived from phase) changes. */\n onToggle?: (isShown: boolean) => void;\n /** Keep calling children during \"unmounted\" (you decide what to render). */\n exposeUnmounted?: boolean;\n /** If false and initially shown, start at \"entered\" (no first-mount animation/SSR pop). */\n animateOnMount?: boolean;\n /** Respect prefers-reduced-motion by collapsing duration to 0. */\n respectReducedMotion?: boolean;\n /** Preserve children content during exit transition. When true, uses stored children from when content was visible. @default true */\n preserveContent?: boolean;\n /** Render-prop gets { phase, isShown, ref }. Bind ref to the transitioned element for native event detection. */\n children: (props: {\n phase: ReportedPhase;\n isShown: boolean;\n ref: RefCallback<HTMLElement>;\n }) => ReactNode;\n};\n\n// Stable callback to avoid stale closures\nfunction useEvent<T extends (...a: any[]) => any>(fn?: T) {\n const ref = useRef(fn);\n useLayoutEffect(() => {\n ref.current = fn;\n }, [fn]);\n return useCallback((...args: Parameters<NonNullable<T>>) => {\n return ref.current?.(...args);\n }, []);\n}\n\nexport function DisplayTransition({\n isShown: targetShown,\n duration,\n onRest,\n onPhaseChange,\n onToggle,\n exposeUnmounted = false,\n animateOnMount = true,\n respectReducedMotion = true,\n preserveContent = true,\n children,\n}: DisplayTransitionProps) {\n // Reduced motion → collapse timing\n const prefersReduced =\n respectReducedMotion &&\n typeof window !== 'undefined' &&\n window.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches;\n const dur = prefersReduced ? 0 : duration;\n\n // Store children to preserve content during exit transitions\n const storedChildrenRef = useRef<typeof children>(children);\n\n // For native transition event detection\n const elementRef = useRef<HTMLElement | null>(null);\n const transitionStartedRef = useRef(false);\n const eventListenersRef = useRef<{\n onTransitionStart: (e: TransitionEvent) => void;\n onTransitionEnd: (e: TransitionEvent) => void;\n onTransitionCancel: (e: TransitionEvent) => void;\n } | null>(null);\n\n // Initial phase (optionally skip first-mount animation)\n const [phase, setPhase] = useState<Phase>(\n targetShown ? (animateOnMount ? 'enter' : 'entered') : 'unmounted',\n );\n const phaseRef = useRef(phase);\n phaseRef.current = phase;\n\n // Advance phase synchronously during render so the overlay element\n // exists in the same commit. This lets useOverlayPosition (and similar\n // hooks) find the element on their first layout-effect run.\n if (targetShown && phase === 'unmounted') {\n setPhase('enter');\n }\n\n const onRestEvent = useEvent(onRest);\n const onPhaseChangeEvent = useEvent(onPhaseChange);\n const onToggleEvent = useEvent(onToggle);\n\n // Versioned scheduling (Strict Mode & rapid toggles safe)\n const flowRef = useRef(0);\n const rafRef = useRef<number | null>(null);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const cancelRAF = () => {\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n const clearTimer = () => {\n if (timerRef.current != null) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n };\n\n // Double-rAF ensures at least one paint with \"enter\" before flipping to \"entered\".\n const nextPaint = (cb: () => void) => {\n cancelRAF();\n const flow = flowRef.current;\n rafRef.current = requestAnimationFrame(() => {\n if (flowRef.current !== flow) return;\n rafRef.current = requestAnimationFrame(() => {\n if (flowRef.current !== flow) return;\n rafRef.current = null;\n cb();\n });\n });\n };\n\n const cleanupEventListeners = () => {\n const element = elementRef.current;\n const listeners = eventListenersRef.current;\n if (element && listeners) {\n element.removeEventListener(\n 'transitionstart',\n listeners.onTransitionStart,\n );\n element.removeEventListener('transitionend', listeners.onTransitionEnd);\n element.removeEventListener(\n 'transitioncancel',\n listeners.onTransitionCancel,\n );\n eventListenersRef.current = null;\n }\n };\n\n const afterDuration = (cb: () => void) => {\n const flow = flowRef.current;\n\n // If using native event detection\n if (dur === undefined) {\n const element = elementRef.current;\n\n cleanupEventListeners();\n transitionStartedRef.current = false;\n\n let completed = false;\n const complete = () => {\n if (completed || flowRef.current !== flow) return;\n completed = true;\n clearTimer();\n cleanupEventListeners();\n cb();\n };\n\n if (!element) {\n // No element to listen on - use fallback timer to avoid immediate completion\n clearTimer();\n timerRef.current = setTimeout(() => {\n if (flowRef.current !== flow) return;\n timerRef.current = null;\n complete();\n }, AUTO_FALLBACK_DURATION);\n\n return;\n }\n\n const onTransitionStart = (e: TransitionEvent) => {\n // Ignore bubbled events from children - only react to our own element's transitions\n if (e.target !== element) return;\n if (flowRef.current !== flow) return;\n transitionStartedRef.current = true;\n clearTimer(); // Cancel fallback timer once transition starts\n };\n\n const onTransitionEnd = (e: TransitionEvent) => {\n // Ignore bubbled events from children - only react to our own element's transitions\n if (e.target !== element) return;\n if (flowRef.current !== flow) return;\n complete();\n };\n\n const onTransitionCancel = (e: TransitionEvent) => {\n // Ignore bubbled events from children - only react to our own element's transitions\n if (e.target !== element) return;\n if (flowRef.current !== flow) return;\n complete();\n };\n\n eventListenersRef.current = {\n onTransitionStart,\n onTransitionEnd,\n onTransitionCancel,\n };\n\n element.addEventListener('transitionstart', onTransitionStart);\n element.addEventListener('transitionend', onTransitionEnd);\n element.addEventListener('transitioncancel', onTransitionCancel);\n\n // Fallback: if no transitionstart fires within 150ms, assume no transition\n timerRef.current = setTimeout(() => {\n if (flowRef.current !== flow) return;\n if (!transitionStartedRef.current) {\n complete();\n }\n }, 150);\n\n return;\n }\n\n // If using explicit duration\n if (dur <= 0) {\n cb();\n return;\n }\n clearTimer();\n timerRef.current = setTimeout(() => {\n if (flowRef.current !== flow) return;\n timerRef.current = null;\n cb();\n }, dur);\n };\n\n const ensureEnterFlow = () => {\n if (phaseRef.current !== 'enter') {\n return;\n }\n\n // Element ref is only required for native transition event detection (duration === undefined).\n // When using explicit duration, setTimeout handles timing so no element is needed.\n if (dur === undefined && !elementRef.current) {\n return;\n }\n\n // frame N: \"enter\" (hidden) → frame N+1: \"entered\" (shown) → after dur: onRest(\"enter\")\n nextPaint(() => {\n if (phaseRef.current !== 'enter') return;\n setPhase('entered');\n afterDuration(() => onRestEvent?.('enter'));\n });\n };\n\n const ensureExitFlow = () => {\n // \"exit\" (hidden) → after dur → \"unmounted\" → onRest(\"exit\")\n afterDuration(() => {\n setPhase('unmounted');\n onRestEvent?.('exit');\n });\n };\n\n // frame N: \"exit-pending\" (still shown) → frame N+1: \"exit\" (hidden) → ensureExitFlow.\n // Idempotent and re-callable, mirroring ensureEnterFlow: whoever cancels the\n // pending rAF is responsible for re-arming it.\n const ensureExitPendingFlow = () => {\n nextPaint(() => {\n if (phaseRef.current !== 'exit-pending') return;\n setPhase('exit');\n ensureExitFlow();\n });\n };\n\n useLayoutEffect(() => {\n ++flowRef.current; // invalidate any pending work\n const current = phaseRef.current;\n\n if (targetShown) {\n if (current === 'unmounted' || current === 'exit') {\n setPhase('enter');\n ensureEnterFlow();\n } else if (current === 'enter') {\n ensureEnterFlow();\n } else if (current === 'exit-pending') {\n // User toggled back before exit started, cancel and stay entered\n cancelRAF();\n clearTimer();\n setPhase('entered');\n } else {\n // already \"entered\"\n cancelRAF();\n clearTimer();\n }\n } else {\n if (current === 'unmounted') {\n cancelRAF();\n clearTimer();\n } else if (current !== 'exit' && current !== 'exit-pending') {\n // Set intermediate phase to trigger re-render, RAF will be scheduled from layout effect\n setPhase('exit-pending');\n } else if (current === 'exit') {\n ensureExitFlow();\n } else {\n // Still \"exit-pending\": our own cleanup just cancelled the rAF the\n // [phase] effect scheduled, and that effect will not re-run because\n // `phase` did not change. Re-arm it here or the content stays visible\n // forever while the driver reports hidden.\n ensureExitPendingFlow();\n }\n }\n\n return () => {\n cancelRAF();\n clearTimer();\n cleanupEventListeners();\n };\n }, [targetShown, dur, onRestEvent]);\n\n // Schedule RAF from layout effect for both enter and exit-pending to ensure symmetric timing\n useLayoutEffect(() => {\n if (phaseRef.current === 'enter') {\n ensureEnterFlow();\n } else if (phaseRef.current === 'exit-pending') {\n // Schedule RAF for exit, mirroring the enter flow timing\n ensureExitPendingFlow();\n }\n return cancelRAF;\n }, [phase]);\n\n // Map internal phase to reported phase (exit-pending is reported as 'entered')\n const reportedPhase: ReportedPhase =\n phase === 'exit-pending' ? 'entered' : phase;\n\n // Call onPhaseChange when reported phase changes\n const prevReportedPhaseRef = useRef(reportedPhase);\n useLayoutEffect(() => {\n if (prevReportedPhaseRef.current !== reportedPhase) {\n prevReportedPhaseRef.current = reportedPhase;\n onPhaseChangeEvent?.(reportedPhase);\n }\n }, [reportedPhase, onPhaseChangeEvent]);\n\n // Render-time boolean (true only when visually shown)\n const isShownNow = phase === 'entered' || phase === 'exit-pending';\n const prevIsShownRef = useRef(isShownNow);\n\n // Call onToggle when isShown changes\n useLayoutEffect(() => {\n if (prevIsShownRef.current !== isShownNow) {\n prevIsShownRef.current = isShownNow;\n onToggleEvent?.(isShownNow);\n }\n }, [isShownNow, onToggleEvent]);\n\n // Ref callback to attach to transitioned element\n // MUST be memoized so React doesn't re-call it on re-renders,\n // which would cleanup event listeners mid-transition\n const refCallback: RefCallback<HTMLElement> = useCallback((node) => {\n if (node) {\n elementRef.current = node;\n // Don't call ensureEnterFlow() here - useLayoutEffect handles RAF scheduling\n // to ensure symmetric timing with exit flow\n } else {\n cleanupEventListeners();\n elementRef.current = null;\n }\n }, []);\n\n // Update stored children only when showing (enter/entered phase and targetShown is true)\n // This prevents overwriting during exit transitions, preserving content for the animation\n const isShowingContent =\n (phase === 'enter' || phase === 'entered') && targetShown;\n\n if (isShowingContent) {\n storedChildrenRef.current = children;\n }\n\n // When preserveContent is enabled, always use stored children:\n // - During show: stored is updated above, so it equals current children\n // - During hide: stored keeps the last shown content for the exit animation\n const effectiveChildren = preserveContent\n ? storedChildrenRef.current\n : children;\n\n if (phase === 'unmounted' && !exposeUnmounted) return null;\n return effectiveChildren({\n phase:\n reportedPhase === 'enter' && duration !== undefined && !duration\n ? 'entered'\n : reportedPhase,\n isShown: isShownNow,\n ref: refCallback,\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DisplayTransition.js","names":["ReactNode","RefCallback","useCallback","useLayoutEffect","useRef","useState","AUTO_FALLBACK_DURATION","Phase","ReportedPhase","DisplayTransitionProps","isShown","duration","onRest","transition","onPhaseChange","phase","onToggle","exposeUnmounted","animateOnMount","respectReducedMotion","preserveContent","children","props","ref","HTMLElement","useEvent","fn","$","_c","t0","t1","current","t2","Symbol","for","t3","args","DisplayTransition","targetShown","prefersReduced","window","matchMedia","matches","dur","storedChildrenRef","elementRef","transitionStartedRef","eventListenersRef","onTransitionStart","e","TransitionEvent","onTransitionEnd","onTransitionCancel","setPhase","phaseRef","onRestEvent","onPhaseChangeEvent","onToggleEvent","flowRef","rafRef","timerRef","ReturnType","setTimeout","cancelRAF","cancelAnimationFrame","clearTimer","clearTimeout","nextPaint","cb","flow","requestAnimationFrame","cleanupEventListeners","element","listeners","removeEventListener","afterDuration","undefined","completed","complete","target","addEventListener","ensureEnterFlow","ensureExitFlow","ensureExitPendingFlow","reportedPhase","prevReportedPhaseRef","isShownNow","prevIsShownRef","refCallback","node","isShowingContent","effectiveChildren"],"sources":["../../../../src/components/helpers/DisplayTransition/DisplayTransition.tsx"],"sourcesContent":["import {\n ReactNode,\n RefCallback,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nconst AUTO_FALLBACK_DURATION = 500;\n\ntype Phase = 'enter' | 'entered' | 'exit-pending' | 'exit' | 'unmounted';\nexport type ReportedPhase = 'enter' | 'entered' | 'exit' | 'unmounted';\n\nexport type DisplayTransitionProps = {\n /** Desired visibility (driver). */\n isShown: boolean;\n /** Times enter->entered and exit->unmounted. 0 => immediate. If undefined, uses native transition events. */\n duration?: number;\n /** Fires after enter settles or after exit completes (unmount). */\n onRest?: (transition: 'enter' | 'exit') => void;\n /** Fires when phase changes. */\n onPhaseChange?: (phase: ReportedPhase) => void;\n /** Fires when isShown (derived from phase) changes. */\n onToggle?: (isShown: boolean) => void;\n /** Keep calling children during \"unmounted\" (you decide what to render). */\n exposeUnmounted?: boolean;\n /** If false and initially shown, start at \"entered\" (no first-mount animation/SSR pop). */\n animateOnMount?: boolean;\n /** Respect prefers-reduced-motion by collapsing duration to 0. */\n respectReducedMotion?: boolean;\n /** Preserve children content during exit transition. When true, uses stored children from when content was visible. @default true */\n preserveContent?: boolean;\n /** Render-prop gets { phase, isShown, ref }. Bind ref to the transitioned element for native event detection. */\n children: (props: {\n phase: ReportedPhase;\n isShown: boolean;\n ref: RefCallback<HTMLElement>;\n }) => ReactNode;\n};\n\n// Stable callback to avoid stale closures\nfunction useEvent<T extends (...a: any[]) => any>(fn?: T) {\n const ref = useRef(fn);\n useLayoutEffect(() => {\n ref.current = fn;\n }, [fn]);\n return useCallback((...args: Parameters<NonNullable<T>>) => {\n return ref.current?.(...args);\n }, []);\n}\n\nexport function DisplayTransition({\n isShown: targetShown,\n duration,\n onRest,\n onPhaseChange,\n onToggle,\n exposeUnmounted = false,\n animateOnMount = true,\n respectReducedMotion = true,\n preserveContent = true,\n children,\n}: DisplayTransitionProps) {\n // Reduced motion → collapse timing\n const prefersReduced =\n respectReducedMotion &&\n typeof window !== 'undefined' &&\n window.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches;\n const dur = prefersReduced ? 0 : duration;\n\n // Store children to preserve content during exit transitions\n const storedChildrenRef = useRef<typeof children>(children);\n\n // For native transition event detection\n const elementRef = useRef<HTMLElement | null>(null);\n const transitionStartedRef = useRef(false);\n const eventListenersRef = useRef<{\n onTransitionStart: (e: TransitionEvent) => void;\n onTransitionEnd: (e: TransitionEvent) => void;\n onTransitionCancel: (e: TransitionEvent) => void;\n } | null>(null);\n\n // Initial phase (optionally skip first-mount animation)\n const [phase, setPhase] = useState<Phase>(\n targetShown ? (animateOnMount ? 'enter' : 'entered') : 'unmounted',\n );\n const phaseRef = useRef(phase);\n phaseRef.current = phase;\n\n // Advance phase synchronously during render so the overlay element\n // exists in the same commit. This lets useOverlayPosition (and similar\n // hooks) find the element on their first layout-effect run.\n if (targetShown && phase === 'unmounted') {\n setPhase('enter');\n }\n\n const onRestEvent = useEvent(onRest);\n const onPhaseChangeEvent = useEvent(onPhaseChange);\n const onToggleEvent = useEvent(onToggle);\n\n // Versioned scheduling (Strict Mode & rapid toggles safe)\n const flowRef = useRef(0);\n const rafRef = useRef<number | null>(null);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const cancelRAF = () => {\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n const clearTimer = () => {\n if (timerRef.current != null) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n };\n\n // Double-rAF ensures at least one paint with \"enter\" before flipping to \"entered\".\n const nextPaint = (cb: () => void) => {\n cancelRAF();\n const flow = flowRef.current;\n rafRef.current = requestAnimationFrame(() => {\n if (flowRef.current !== flow) return;\n rafRef.current = requestAnimationFrame(() => {\n if (flowRef.current !== flow) return;\n rafRef.current = null;\n cb();\n });\n });\n };\n\n const cleanupEventListeners = () => {\n const element = elementRef.current;\n const listeners = eventListenersRef.current;\n if (element && listeners) {\n element.removeEventListener(\n 'transitionstart',\n listeners.onTransitionStart,\n );\n element.removeEventListener('transitionend', listeners.onTransitionEnd);\n element.removeEventListener(\n 'transitioncancel',\n listeners.onTransitionCancel,\n );\n eventListenersRef.current = null;\n }\n };\n\n const afterDuration = (cb: () => void) => {\n const flow = flowRef.current;\n\n // If using native event detection\n if (dur === undefined) {\n const element = elementRef.current;\n\n cleanupEventListeners();\n transitionStartedRef.current = false;\n\n let completed = false;\n const complete = () => {\n if (completed || flowRef.current !== flow) return;\n completed = true;\n clearTimer();\n cleanupEventListeners();\n cb();\n };\n\n if (!element) {\n // No element to listen on - use fallback timer to avoid immediate completion\n clearTimer();\n timerRef.current = setTimeout(() => {\n if (flowRef.current !== flow) return;\n timerRef.current = null;\n complete();\n }, AUTO_FALLBACK_DURATION);\n\n return;\n }\n\n const onTransitionStart = (e: TransitionEvent) => {\n // Ignore bubbled events from children - only react to our own element's transitions\n if (e.target !== element) return;\n if (flowRef.current !== flow) return;\n transitionStartedRef.current = true;\n clearTimer(); // Cancel fallback timer once transition starts\n };\n\n const onTransitionEnd = (e: TransitionEvent) => {\n // Ignore bubbled events from children - only react to our own element's transitions\n if (e.target !== element) return;\n if (flowRef.current !== flow) return;\n complete();\n };\n\n const onTransitionCancel = (e: TransitionEvent) => {\n // Ignore bubbled events from children - only react to our own element's transitions\n if (e.target !== element) return;\n if (flowRef.current !== flow) return;\n complete();\n };\n\n eventListenersRef.current = {\n onTransitionStart,\n onTransitionEnd,\n onTransitionCancel,\n };\n\n element.addEventListener('transitionstart', onTransitionStart);\n element.addEventListener('transitionend', onTransitionEnd);\n element.addEventListener('transitioncancel', onTransitionCancel);\n\n // Fallback: if no transitionstart fires within 150ms, assume no transition\n timerRef.current = setTimeout(() => {\n if (flowRef.current !== flow) return;\n if (!transitionStartedRef.current) {\n complete();\n }\n }, 150);\n\n return;\n }\n\n // If using explicit duration\n if (dur <= 0) {\n cb();\n return;\n }\n clearTimer();\n timerRef.current = setTimeout(() => {\n if (flowRef.current !== flow) return;\n timerRef.current = null;\n cb();\n }, dur);\n };\n\n const ensureEnterFlow = () => {\n if (phaseRef.current !== 'enter') {\n return;\n }\n\n // Element ref is only required for native transition event detection (duration === undefined).\n // When using explicit duration, setTimeout handles timing so no element is needed.\n if (dur === undefined && !elementRef.current) {\n return;\n }\n\n // frame N: \"enter\" (hidden) → frame N+1: \"entered\" (shown) → after dur: onRest(\"enter\")\n nextPaint(() => {\n if (phaseRef.current !== 'enter') return;\n setPhase('entered');\n afterDuration(() => onRestEvent?.('enter'));\n });\n };\n\n const ensureExitFlow = () => {\n // \"exit\" (hidden) → after dur → \"unmounted\" → onRest(\"exit\")\n afterDuration(() => {\n setPhase('unmounted');\n onRestEvent?.('exit');\n });\n };\n\n // frame N: \"exit-pending\" (still shown) → frame N+1: \"exit\" (hidden) → ensureExitFlow.\n // Idempotent and re-callable, mirroring ensureEnterFlow: whoever cancels the\n // pending rAF is responsible for re-arming it.\n const ensureExitPendingFlow = () => {\n nextPaint(() => {\n if (phaseRef.current !== 'exit-pending') return;\n setPhase('exit');\n ensureExitFlow();\n });\n };\n\n useLayoutEffect(() => {\n ++flowRef.current; // invalidate any pending work\n const current = phaseRef.current;\n\n if (targetShown) {\n if (current === 'unmounted' || current === 'exit') {\n setPhase('enter');\n ensureEnterFlow();\n } else if (current === 'enter') {\n ensureEnterFlow();\n } else if (current === 'exit-pending') {\n // User toggled back before exit started, cancel and stay entered\n cancelRAF();\n clearTimer();\n setPhase('entered');\n } else {\n // already \"entered\"\n cancelRAF();\n clearTimer();\n }\n } else {\n if (current === 'unmounted') {\n cancelRAF();\n clearTimer();\n } else if (current !== 'exit' && current !== 'exit-pending') {\n // Set intermediate phase to trigger re-render, RAF will be scheduled from layout effect\n setPhase('exit-pending');\n } else if (current === 'exit') {\n ensureExitFlow();\n } else {\n // Still \"exit-pending\": our own cleanup just cancelled the rAF the\n // [phase] effect scheduled, and that effect will not re-run because\n // `phase` did not change. Re-arm it here or the content stays visible\n // forever while the driver reports hidden.\n ensureExitPendingFlow();\n }\n }\n\n return () => {\n cancelRAF();\n clearTimer();\n cleanupEventListeners();\n };\n }, [targetShown, dur, onRestEvent]);\n\n // Schedule RAF from layout effect for both enter and exit-pending to ensure symmetric timing\n useLayoutEffect(() => {\n if (phaseRef.current === 'enter') {\n ensureEnterFlow();\n } else if (phaseRef.current === 'exit-pending') {\n // Schedule RAF for exit, mirroring the enter flow timing\n ensureExitPendingFlow();\n }\n return cancelRAF;\n }, [phase]);\n\n // Map internal phase to reported phase (exit-pending is reported as 'entered')\n const reportedPhase: ReportedPhase =\n phase === 'exit-pending' ? 'entered' : phase;\n\n // Call onPhaseChange when reported phase changes\n const prevReportedPhaseRef = useRef(reportedPhase);\n useLayoutEffect(() => {\n if (prevReportedPhaseRef.current !== reportedPhase) {\n prevReportedPhaseRef.current = reportedPhase;\n onPhaseChangeEvent?.(reportedPhase);\n }\n }, [reportedPhase, onPhaseChangeEvent]);\n\n // Render-time boolean (true only when visually shown)\n const isShownNow = phase === 'entered' || phase === 'exit-pending';\n const prevIsShownRef = useRef(isShownNow);\n\n // Call onToggle when isShown changes\n useLayoutEffect(() => {\n if (prevIsShownRef.current !== isShownNow) {\n prevIsShownRef.current = isShownNow;\n onToggleEvent?.(isShownNow);\n }\n }, [isShownNow, onToggleEvent]);\n\n // Ref callback to attach to transitioned element\n // MUST be memoized so React doesn't re-call it on re-renders,\n // which would cleanup event listeners mid-transition\n const refCallback: RefCallback<HTMLElement> = useCallback((node) => {\n if (node) {\n elementRef.current = node;\n // Don't call ensureEnterFlow() here - useLayoutEffect handles RAF scheduling\n // to ensure symmetric timing with exit flow\n } else {\n cleanupEventListeners();\n elementRef.current = null;\n }\n }, []);\n\n // Update stored children only when showing (enter/entered phase and targetShown is true)\n // This prevents overwriting during exit transitions, preserving content for the animation\n const isShowingContent =\n (phase === 'enter' || phase === 'entered') && targetShown;\n\n if (isShowingContent) {\n storedChildrenRef.current = children;\n }\n\n // When preserveContent is enabled, always use stored children:\n // - During show: stored is updated above, so it equals current children\n // - During hide: stored keeps the last shown content for the exit animation\n const effectiveChildren = preserveContent\n ? storedChildrenRef.current\n : children;\n\n if (phase === 'unmounted' && !exposeUnmounted) return null;\n return effectiveChildren({\n phase:\n reportedPhase === 'enter' && duration !== undefined && !duration\n ? 'entered'\n : reportedPhase,\n isShown: isShownNow,\n ref: refCallback,\n });\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.181.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.183.0 | Cube Dev Team */
2
2
  import { DisplayTransition } from "../DisplayTransition/DisplayTransition.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { isValidElement, useCallback, useLayoutEffect, useRef, useState } from "react";
@@ -88,20 +88,20 @@ function IconSwitch(props) {
88
88
  prevChildrenRef.current = children;
89
89
  }, [children, effectiveKey]);
90
90
  const handleExitComplete = useCallback((exitedKey) => {
91
- setIcons((prev) => prev.filter((icon) => icon.key !== exitedKey));
91
+ setIcons((prev_0) => prev_0.filter((icon) => icon.key !== exitedKey));
92
92
  }, []);
93
93
  const latestKey = icons[icons.length - 1]?.key;
94
94
  const isKeyChangePending = effectiveKey !== prevEffectiveKeyRef.current;
95
95
  const isNullishChangePending = isNullishContent(children) !== isNullishContent(prevChildrenRef.current);
96
96
  const isTransitionPending = isKeyChangePending || isNullishChangePending;
97
- const content = icons.map((icon) => {
98
- const isActive = icon.key === latestKey;
99
- const displayContent = isActive && !isTransitionPending ? children : icon.content;
97
+ const content = icons.map((icon_0) => {
98
+ const isActive = icon_0.key === latestKey;
99
+ const displayContent = isActive && !isTransitionPending ? children : icon_0.content;
100
100
  return /* @__PURE__ */ jsx(DisplayTransition, {
101
101
  isShown: isActive,
102
- animateOnMount: icon.key !== 0,
102
+ animateOnMount: icon_0.key !== 0,
103
103
  onRest: (transition) => {
104
- if (transition === "exit") handleExitComplete(icon.key);
104
+ if (transition === "exit") handleExitComplete(icon_0.key);
105
105
  },
106
106
  children: ({ isShown, phase, ref }) => /* @__PURE__ */ jsx(IconSlotElement, {
107
107
  ref,
@@ -111,7 +111,7 @@ function IconSwitch(props) {
111
111
  },
112
112
  children: displayContent
113
113
  })
114
- }, icon.key);
114
+ }, icon_0.key);
115
115
  });
116
116
  if (noWrapper) return /* @__PURE__ */ jsx(Fragment$1, { children: content });
117
117
  return /* @__PURE__ */ jsx(IconSwitchElement, {
@@ -1 +1 @@
1
- {"version":3,"file":"IconSwitch.js","names":[],"sources":["../../../../src/components/helpers/IconSwitch/IconSwitch.tsx"],"sourcesContent":["import { BaseProps, tasty } from '@tenphi/tasty';\nimport {\n isValidElement,\n ReactNode,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { DisplayTransition } from '../DisplayTransition/DisplayTransition';\n\nexport interface CubeIconSwitchProps extends BaseProps {\n /** The icon to display */\n children: ReactNode;\n /** Override the default key derivation for detecting icon changes */\n contentKey?: string | number;\n /** When true, renders without wrapper element, expecting parent to provide grid context */\n noWrapper?: boolean;\n}\n\ninterface IconEntry {\n key: number;\n content: ReactNode;\n}\n\nfunction isNullishContent(node: ReactNode) {\n // React treats `null`, `undefined`, and `false` as \"render nothing\"\n return node == null || node === false;\n}\n\nconst typeIds = new WeakMap<object, number>();\nlet lastTypeId = 0;\n\nfunction getTypeId(type: object) {\n const existing = typeIds.get(type);\n if (existing != null) return existing;\n const next = (lastTypeId += 1);\n typeIds.set(type, next);\n return next;\n}\n\n/**\n * Best-effort key derivation for icon switching when `contentKey` is not provided.\n * The goal is to:\n * - Transition when icon component type changes\n * - Not transition when only props change for the same icon type (self-animating icons)\n * - Transition when toggling to/from nullish content\n */\nfunction deriveContentKey(children: ReactNode): string {\n if (isNullishContent(children)) return 'nullish';\n if (!isValidElement(children)) return `non-element:${typeof children}`;\n\n const { type, key } = children;\n const keyPart = key == null ? '' : `:${String(key)}`;\n\n if (typeof type === 'string') return `host:${type}${keyPart}`;\n if (typeof type === 'function') return `fn:${getTypeId(type)}${keyPart}`;\n if (typeof type === 'object' && type != null)\n return `obj:${getTypeId(type)}${keyPart}`;\n if (typeof type === 'symbol') return `sym:${String(type)}${keyPart}`;\n\n return `unknown${keyPart}`;\n}\n\nconst IconSwitchElement = tasty({\n styles: {\n display: 'grid',\n placeItems: 'center',\n },\n});\n\nconst IconSlotElement = tasty({\n styles: {\n gridArea: '1 / 1',\n display: 'grid',\n placeItems: 'center',\n placeSelf: 'stretch',\n opacity: {\n '': 0,\n entered: 1,\n },\n transition: {\n '': 'theme $transition ease-out',\n 'exit | entered': 'theme $transition ease-in',\n },\n },\n});\n\n/**\n * A component that cross-fades between icons when children change.\n * Useful for animated icon transitions in buttons, items, etc.\n *\n * When `contentKey` changes, a transition is triggered.\n * When only `children` changes (same `contentKey`), content is updated in-place\n * without transition, allowing self-animating icons (like DirectionIcon) to work.\n */\nexport function IconSwitch(props: CubeIconSwitchProps) {\n const { children, contentKey, noWrapper, ...rest } = props;\n\n const keyCounterRef = useRef(0);\n const effectiveKey = contentKey ?? deriveContentKey(children);\n const prevEffectiveKeyRef = useRef<string | number>(effectiveKey);\n const prevChildrenRef = useRef<ReactNode>(children);\n\n const [icons, setIcons] = useState<IconEntry[]>(() => [\n { key: keyCounterRef.current, content: children },\n ]);\n\n useLayoutEffect(() => {\n const prevKey = prevEffectiveKeyRef.current;\n const prevChildren = prevChildrenRef.current;\n\n const hasKeyChanged = effectiveKey !== prevKey;\n const hasNullishToggled =\n isNullishContent(children) !== isNullishContent(prevChildren);\n\n // Transition rules:\n // - If key changed -> transition (add new icon entry)\n // - If we toggled nullish <-> non-nullish -> transition (even if key did not change)\n // - Otherwise -> no state update (children reference changes are handled at render time)\n if (hasKeyChanged || hasNullishToggled) {\n keyCounterRef.current += 1;\n const newEntry: IconEntry = {\n key: keyCounterRef.current,\n content: children,\n };\n setIcons((prev) => [...prev, newEntry]);\n }\n\n prevEffectiveKeyRef.current = effectiveKey;\n prevChildrenRef.current = children;\n }, [children, effectiveKey]);\n\n const handleExitComplete = useCallback((exitedKey: number) => {\n setIcons((prev) => prev.filter((icon) => icon.key !== exitedKey));\n }, []);\n\n const latestKey = icons[icons.length - 1]?.key;\n\n // Detect if we're in an intermediate render (transition pending but effect hasn't added new entry yet).\n // In this state, we must use stored content to avoid flashing the new icon before the transition.\n const isKeyChangePending = effectiveKey !== prevEffectiveKeyRef.current;\n const isNullishChangePending =\n isNullishContent(children) !== isNullishContent(prevChildrenRef.current);\n const isTransitionPending = isKeyChangePending || isNullishChangePending;\n\n const content = icons.map((icon) => {\n const isActive = icon.key === latestKey;\n // Use current children for active icon ONLY when no transition is pending.\n // During intermediate renders (before effect adds new entry), use stored content.\n // For exiting icons, always use stored content to preserve appearance during fade-out.\n const displayContent =\n isActive && !isTransitionPending ? children : icon.content;\n\n return (\n <DisplayTransition\n key={icon.key}\n isShown={isActive}\n animateOnMount={icon.key !== 0}\n onRest={(transition) => {\n if (transition === 'exit') {\n handleExitComplete(icon.key);\n }\n }}\n >\n {({ isShown, phase, ref }) => (\n <IconSlotElement\n ref={ref}\n mods={{\n entered: isShown,\n phase,\n }}\n >\n {displayContent}\n </IconSlotElement>\n )}\n </DisplayTransition>\n );\n });\n\n if (noWrapper) {\n return <>{content}</>;\n }\n\n return <IconSwitchElement {...rest}>{content}</IconSwitchElement>;\n}\n\nexport type { CubeIconSwitchProps as IconSwitchProps };\n"],"mappings":"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"}
1
+ {"version":3,"file":"IconSwitch.js","names":["BaseProps","tasty","isValidElement","ReactNode","useCallback","useLayoutEffect","useRef","useState","DisplayTransition","CubeIconSwitchProps","children","contentKey","noWrapper","IconEntry","key","content","isNullishContent","node","typeIds","WeakMap","lastTypeId","getTypeId","type","existing","get","next","set","deriveContentKey","keyPart","String","IconSwitchElement","styles","display","placeItems","IconSlotElement","gridArea","placeSelf","opacity","entered","transition","IconSwitch","props","rest","keyCounterRef","effectiveKey","prevEffectiveKeyRef","prevChildrenRef","icons","setIcons","current","prevKey","prevChildren","hasKeyChanged","hasNullishToggled","newEntry","prev","handleExitComplete","exitedKey","filter","icon","latestKey","length","isKeyChangePending","isNullishChangePending","isTransitionPending","map","isActive","displayContent","isShown","phase","ref","IconSwitchProps"],"sources":["../../../../src/components/helpers/IconSwitch/IconSwitch.tsx"],"sourcesContent":["import { BaseProps, tasty } from '@tenphi/tasty';\nimport {\n isValidElement,\n ReactNode,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react';\n\nimport { DisplayTransition } from '../DisplayTransition/DisplayTransition';\n\nexport interface CubeIconSwitchProps extends BaseProps {\n /** The icon to display */\n children: ReactNode;\n /** Override the default key derivation for detecting icon changes */\n contentKey?: string | number;\n /** When true, renders without wrapper element, expecting parent to provide grid context */\n noWrapper?: boolean;\n}\n\ninterface IconEntry {\n key: number;\n content: ReactNode;\n}\n\nfunction isNullishContent(node: ReactNode) {\n // React treats `null`, `undefined`, and `false` as \"render nothing\"\n return node == null || node === false;\n}\n\nconst typeIds = new WeakMap<object, number>();\nlet lastTypeId = 0;\n\nfunction getTypeId(type: object) {\n const existing = typeIds.get(type);\n if (existing != null) return existing;\n const next = (lastTypeId += 1);\n typeIds.set(type, next);\n return next;\n}\n\n/**\n * Best-effort key derivation for icon switching when `contentKey` is not provided.\n * The goal is to:\n * - Transition when icon component type changes\n * - Not transition when only props change for the same icon type (self-animating icons)\n * - Transition when toggling to/from nullish content\n */\nfunction deriveContentKey(children: ReactNode): string {\n if (isNullishContent(children)) return 'nullish';\n if (!isValidElement(children)) return `non-element:${typeof children}`;\n\n const { type, key } = children;\n const keyPart = key == null ? '' : `:${String(key)}`;\n\n if (typeof type === 'string') return `host:${type}${keyPart}`;\n if (typeof type === 'function') return `fn:${getTypeId(type)}${keyPart}`;\n if (typeof type === 'object' && type != null)\n return `obj:${getTypeId(type)}${keyPart}`;\n if (typeof type === 'symbol') return `sym:${String(type)}${keyPart}`;\n\n return `unknown${keyPart}`;\n}\n\nconst IconSwitchElement = tasty({\n styles: {\n display: 'grid',\n placeItems: 'center',\n },\n});\n\nconst IconSlotElement = tasty({\n styles: {\n gridArea: '1 / 1',\n display: 'grid',\n placeItems: 'center',\n placeSelf: 'stretch',\n opacity: {\n '': 0,\n entered: 1,\n },\n transition: {\n '': 'theme $transition ease-out',\n 'exit | entered': 'theme $transition ease-in',\n },\n },\n});\n\n/**\n * A component that cross-fades between icons when children change.\n * Useful for animated icon transitions in buttons, items, etc.\n *\n * When `contentKey` changes, a transition is triggered.\n * When only `children` changes (same `contentKey`), content is updated in-place\n * without transition, allowing self-animating icons (like DirectionIcon) to work.\n */\nexport function IconSwitch(props: CubeIconSwitchProps) {\n const { children, contentKey, noWrapper, ...rest } = props;\n\n const keyCounterRef = useRef(0);\n const effectiveKey = contentKey ?? deriveContentKey(children);\n const prevEffectiveKeyRef = useRef<string | number>(effectiveKey);\n const prevChildrenRef = useRef<ReactNode>(children);\n\n const [icons, setIcons] = useState<IconEntry[]>(() => [\n { key: keyCounterRef.current, content: children },\n ]);\n\n useLayoutEffect(() => {\n const prevKey = prevEffectiveKeyRef.current;\n const prevChildren = prevChildrenRef.current;\n\n const hasKeyChanged = effectiveKey !== prevKey;\n const hasNullishToggled =\n isNullishContent(children) !== isNullishContent(prevChildren);\n\n // Transition rules:\n // - If key changed -> transition (add new icon entry)\n // - If we toggled nullish <-> non-nullish -> transition (even if key did not change)\n // - Otherwise -> no state update (children reference changes are handled at render time)\n if (hasKeyChanged || hasNullishToggled) {\n keyCounterRef.current += 1;\n const newEntry: IconEntry = {\n key: keyCounterRef.current,\n content: children,\n };\n setIcons((prev) => [...prev, newEntry]);\n }\n\n prevEffectiveKeyRef.current = effectiveKey;\n prevChildrenRef.current = children;\n }, [children, effectiveKey]);\n\n const handleExitComplete = useCallback((exitedKey: number) => {\n setIcons((prev) => prev.filter((icon) => icon.key !== exitedKey));\n }, []);\n\n const latestKey = icons[icons.length - 1]?.key;\n\n // Detect if we're in an intermediate render (transition pending but effect hasn't added new entry yet).\n // In this state, we must use stored content to avoid flashing the new icon before the transition.\n const isKeyChangePending = effectiveKey !== prevEffectiveKeyRef.current;\n const isNullishChangePending =\n isNullishContent(children) !== isNullishContent(prevChildrenRef.current);\n const isTransitionPending = isKeyChangePending || isNullishChangePending;\n\n const content = icons.map((icon) => {\n const isActive = icon.key === latestKey;\n // Use current children for active icon ONLY when no transition is pending.\n // During intermediate renders (before effect adds new entry), use stored content.\n // For exiting icons, always use stored content to preserve appearance during fade-out.\n const displayContent =\n isActive && !isTransitionPending ? children : icon.content;\n\n return (\n <DisplayTransition\n key={icon.key}\n isShown={isActive}\n animateOnMount={icon.key !== 0}\n onRest={(transition) => {\n if (transition === 'exit') {\n handleExitComplete(icon.key);\n }\n }}\n >\n {({ isShown, phase, ref }) => (\n <IconSlotElement\n ref={ref}\n mods={{\n entered: isShown,\n phase,\n }}\n >\n {displayContent}\n </IconSlotElement>\n )}\n </DisplayTransition>\n );\n });\n\n if (noWrapper) {\n return <>{content}</>;\n }\n\n return <IconSwitchElement {...rest}>{content}</IconSwitchElement>;\n}\n\nexport type { CubeIconSwitchProps as IconSwitchProps };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.181.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.183.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -15,6 +15,7 @@ import { useBoardLayout } from "./use-board-layout.js";
15
15
  import { useBoardSelectModifierKey } from "./use-board-select-modifier-key.js";
16
16
  import { useBoardSelection } from "./use-board-selection.js";
17
17
  import { WidgetHost } from "./WidgetHost.js";
18
+ import { c } from "react-compiler-runtime";
18
19
  import { CONTAINER_STYLES, filterBaseProps, mergeStyles, tasty } from "@tenphi/tasty";
19
20
  import { forwardRef, useEffect, useId, useMemo, useRef, useState, useSyncExternalStore } from "react";
20
21
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -738,14 +739,31 @@ const BoardInnerForwarded = forwardRef(BoardInner);
738
739
  * `BoardProvider` to enable dragging widgets between them.
739
740
  */
740
741
  const Board = forwardRef(function Board(props, ref) {
741
- if (useBoardRegistry()) return /* @__PURE__ */ jsx(BoardInnerForwarded, {
742
- ...props,
743
- ref
744
- });
745
- return /* @__PURE__ */ jsx(BoardProvider, { children: /* @__PURE__ */ jsx(BoardInnerForwarded, {
746
- ...props,
747
- ref
748
- }) });
742
+ const $ = c(6);
743
+ if (useBoardRegistry()) {
744
+ let t0;
745
+ if ($[0] !== props || $[1] !== ref) {
746
+ t0 = /* @__PURE__ */ jsx(BoardInnerForwarded, {
747
+ ...props,
748
+ ref
749
+ });
750
+ $[0] = props;
751
+ $[1] = ref;
752
+ $[2] = t0;
753
+ } else t0 = $[2];
754
+ return t0;
755
+ }
756
+ let t0;
757
+ if ($[3] !== props || $[4] !== ref) {
758
+ t0 = /* @__PURE__ */ jsx(BoardProvider, { children: /* @__PURE__ */ jsx(BoardInnerForwarded, {
759
+ ...props,
760
+ ref
761
+ }) });
762
+ $[3] = props;
763
+ $[4] = ref;
764
+ $[5] = t0;
765
+ } else t0 = $[5];
766
+ return t0;
749
767
  });
750
768
 
751
769
  //#endregion