@cube-dev/ui-kit 0.0.0-canary-08f0089 → 0.0.0-canary-0ff010b

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 (620) hide show
  1. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  2. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  3. package/dist/_internal/hooks/use-event.js +1 -1
  4. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  5. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  6. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  7. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  8. package/dist/_internal/hooks/use-warn.js +1 -1
  9. package/dist/components/Block.js +1 -1
  10. package/dist/components/CollectionItem.js +1 -1
  11. package/dist/components/GlobalStyles.js +1 -1
  12. package/dist/components/GridProvider.js +1 -1
  13. package/dist/components/HiddenInput.js +1 -1
  14. package/dist/components/Root.js +1 -1
  15. package/dist/components/actions/Action/Action.js +1 -1
  16. package/dist/components/actions/Banner/Banner.js +1 -1
  17. package/dist/components/actions/Button/Button.d.ts +0 -1
  18. package/dist/components/actions/Button/Button.js +3 -3
  19. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  20. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  21. package/dist/components/actions/ButtonSplit/context.js +1 -1
  22. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  23. package/dist/components/actions/CommandMenu/styled.js +1 -1
  24. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  25. package/dist/components/actions/ItemActionContext.js +1 -1
  26. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  27. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  28. package/dist/components/actions/Link/Link.js +1 -1
  29. package/dist/components/actions/Menu/Menu.js +1 -1
  30. package/dist/components/actions/Menu/MenuItem.js +1 -1
  31. package/dist/components/actions/Menu/MenuSection.js +1 -1
  32. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  35. package/dist/components/actions/Menu/context.js +1 -1
  36. package/dist/components/actions/Menu/styled.js +1 -1
  37. package/dist/components/actions/actions-run.js +1 -1
  38. package/dist/components/actions/index.js +1 -1
  39. package/dist/components/actions/use-action.js +1 -1
  40. package/dist/components/actions/use-anchored-menu.js +1 -1
  41. package/dist/components/actions/use-context-menu.js +1 -1
  42. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  43. package/dist/components/content/Alert/Alert.js +1 -1
  44. package/dist/components/content/Alert/use-alert.js +1 -1
  45. package/dist/components/content/Avatar/Avatar.js +1 -1
  46. package/dist/components/content/Badge/Badge.js +1 -1
  47. package/dist/components/content/Card/Card.js +1 -1
  48. package/dist/components/content/Content.js +1 -1
  49. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  50. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  51. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  52. package/dist/components/content/Divider.js +1 -1
  53. package/dist/components/content/Footer.js +1 -1
  54. package/dist/components/content/Header.js +1 -1
  55. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  56. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  57. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  58. package/dist/components/content/Item/Item.js +2 -2
  59. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  60. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  61. package/dist/components/content/Layout/GridLayout.js +1 -1
  62. package/dist/components/content/Layout/Layout.js +1 -1
  63. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  64. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  65. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  66. package/dist/components/content/Layout/LayoutContent.js +1 -1
  67. package/dist/components/content/Layout/LayoutContext.js +1 -1
  68. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  69. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  70. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  71. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  72. package/dist/components/content/Layout/LayoutPane.js +1 -1
  73. package/dist/components/content/Layout/LayoutPanel.js +2 -2
  74. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  75. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  76. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  77. package/dist/components/content/Layout/index.js +1 -1
  78. package/dist/components/content/Layout/utils.js +1 -1
  79. package/dist/components/content/Paragraph.js +1 -1
  80. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  81. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  82. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  83. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  84. package/dist/components/content/Result/Result.js +1 -1
  85. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  86. package/dist/components/content/Tag/Tag.js +1 -1
  87. package/dist/components/content/Text.d.ts +14 -14
  88. package/dist/components/content/Text.js +1 -1
  89. package/dist/components/content/TextItem/TextItem.js +1 -1
  90. package/dist/components/content/Title.js +1 -1
  91. package/dist/components/content/Tree/Tree.js +1 -1
  92. package/dist/components/content/Tree/TreeNode.js +1 -1
  93. package/dist/components/content/Tree/styled.js +1 -1
  94. package/dist/components/content/Tree/tree-index.js +1 -1
  95. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  96. package/dist/components/content/Tree/use-load-data.js +1 -1
  97. package/dist/components/content/highlightText.js +1 -1
  98. package/dist/components/content/use-auto-tooltip.js +1 -1
  99. package/dist/components/data/DataTable/DataTable.js +1 -1
  100. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  104. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  105. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  106. package/dist/components/data/TableBase/RowCollection.js +1 -1
  107. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  108. package/dist/components/data/TableBase/TableRow.js +1 -1
  109. package/dist/components/data/TableBase/TableView.js +1 -1
  110. package/dist/components/data/TableBase/column-menu.js +1 -1
  111. package/dist/components/data/TableBase/column-tint.js +1 -1
  112. package/dist/components/data/TableBase/row-menu.js +1 -1
  113. package/dist/components/data/TableBase/styled.d.ts +1 -2
  114. package/dist/components/data/TableBase/styled.js +1 -1
  115. package/dist/components/data/TableBase/table-tree.js +1 -1
  116. package/dist/components/data/TableBase/types.js +1 -1
  117. package/dist/components/data/TableBase/use-cell-selection.d.ts +0 -1
  118. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  119. package/dist/components/data/TableBase/use-column-order.js +1 -1
  120. package/dist/components/data/TableBase/use-container-width.js +1 -1
  121. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  122. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  123. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  124. package/dist/components/data/TableBase/use-table-search.js +1 -1
  125. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  126. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  127. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  128. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  129. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  130. package/dist/components/fields/Checkbox/Checkbox.d.ts +0 -2
  131. package/dist/components/fields/Checkbox/Checkbox.js +5 -4
  132. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  133. package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +1 -1
  134. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  135. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  136. package/dist/components/fields/Checkbox/context.js +1 -1
  137. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  138. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  139. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  140. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  141. package/dist/components/fields/ComboBox/ComboBox.js +2 -8
  142. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  143. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  144. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  145. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  146. package/dist/components/fields/DatePicker/DateInput.d.ts +1 -1
  147. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  148. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  149. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  150. package/dist/components/fields/DatePicker/DatePicker.d.ts +1 -1
  151. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  152. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  153. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  154. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  155. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  156. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  157. package/dist/components/fields/DatePicker/DateRangePicker.d.ts +1 -1
  158. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  159. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  160. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +1 -1
  161. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  162. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  163. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  164. package/dist/components/fields/DatePicker/PeriodPicker.d.ts +1 -1
  165. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  166. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  167. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  168. package/dist/components/fields/DatePicker/TimeInput.d.ts +1 -1
  169. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  170. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  171. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  172. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  173. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  174. package/dist/components/fields/DatePicker/period.js +1 -1
  175. package/dist/components/fields/DatePicker/props.js +1 -1
  176. package/dist/components/fields/DatePicker/utils.js +1 -1
  177. package/dist/components/fields/FileInput/FileInput.d.ts +0 -3
  178. package/dist/components/fields/FileInput/FileInput.js +29 -38
  179. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  180. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  181. package/dist/components/fields/FilterPicker/FilterPicker.js +4 -2
  182. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  183. package/dist/components/fields/Input/Input.js +1 -1
  184. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  185. package/dist/components/fields/ListBox/ListBox.js +6 -3
  186. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  187. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  188. package/dist/components/fields/ListBoxPopover/index.d.ts +0 -1
  189. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  190. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  191. package/dist/components/fields/NumberInput/NumberInput.d.ts +1 -1
  192. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  193. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  194. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  195. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  196. package/dist/components/fields/Picker/Picker.js +4 -2
  197. package/dist/components/fields/Picker/Picker.js.map +1 -1
  198. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  199. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +1 -1
  200. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  201. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  202. package/dist/components/fields/RadioGroup/context.js +1 -1
  203. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  204. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  205. package/dist/components/fields/Select/Select.d.ts +1 -1
  206. package/dist/components/fields/Select/Select.js +16 -2
  207. package/dist/components/fields/Select/Select.js.map +1 -1
  208. package/dist/components/fields/Slider/Gradation.js +1 -1
  209. package/dist/components/fields/Slider/HueSlider.js +1 -1
  210. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  211. package/dist/components/fields/Slider/Slider.js +1 -1
  212. package/dist/components/fields/Slider/SliderBase.js +1 -1
  213. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  214. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  215. package/dist/components/fields/Slider/elements.js +1 -1
  216. package/dist/components/fields/Slider/index.js +1 -1
  217. package/dist/components/fields/Slider/types.d.ts +1 -1
  218. package/dist/components/fields/Switch/Switch.d.ts +0 -2
  219. package/dist/components/fields/Switch/Switch.js +1 -1
  220. package/dist/components/fields/Switch/Switch.js.map +1 -1
  221. package/dist/components/fields/TextArea/TextArea.js +1 -1
  222. package/dist/components/fields/TextInput/TextInput.js +1 -1
  223. package/dist/components/fields/TextInput/TextInputBase.d.ts +1 -1
  224. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  225. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  226. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  227. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  228. package/dist/components/fields/TriggerActions.js +1 -1
  229. package/dist/components/fields/color/ColorPanel.js +1 -1
  230. package/dist/components/fields/color/channels.js +1 -1
  231. package/dist/components/fields/color/color.js +1 -1
  232. package/dist/components/fields/color/context.js +1 -1
  233. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  234. package/dist/components/form/Form/Field.d.ts +0 -2
  235. package/dist/components/form/Form/Field.js +1 -1
  236. package/dist/components/form/Form/Field.js.map +1 -1
  237. package/dist/components/form/Form/Form.js +1 -1
  238. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  239. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  240. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  241. package/dist/components/form/Form/SubmitError.js +1 -1
  242. package/dist/components/form/Form/backend.js +1 -1
  243. package/dist/components/form/Form/index.js +1 -1
  244. package/dist/components/form/Form/modern/actions.js +1 -1
  245. package/dist/components/form/Form/modern/context.d.ts +0 -1
  246. package/dist/components/form/Form/modern/context.js +1 -1
  247. package/dist/components/form/Form/modern/controller.js +1 -1
  248. package/dist/components/form/Form/modern/field-binding.js +1 -1
  249. package/dist/components/form/Form/modern/field.js +1 -1
  250. package/dist/components/form/Form/modern/react.js +1 -1
  251. package/dist/components/form/Form/modern/store.js +1 -1
  252. package/dist/components/form/Form/modern/validation.js +1 -1
  253. package/dist/components/form/Form/modern/values.js +1 -1
  254. package/dist/components/form/Form/use-field/use-field-binding.js +5 -10
  255. package/dist/components/form/Form/use-field/use-field-binding.js.map +1 -1
  256. package/dist/components/form/Form/use-field/use-field-props.d.ts +1 -3
  257. package/dist/components/form/Form/use-field/use-field-props.js +3 -7
  258. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  259. package/dist/components/form/Form/use-field/use-field.d.ts +1 -3
  260. package/dist/components/form/Form/use-field/use-field.js +1 -1
  261. package/dist/components/form/Form/use-field/use-field.js.map +1 -1
  262. package/dist/components/form/Form/use-form.js +1 -1
  263. package/dist/components/form/Form/validation.js +1 -1
  264. package/dist/components/form/Label.js +1 -1
  265. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  266. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  267. package/dist/components/form/validation/use-validation-props.js +1 -1
  268. package/dist/components/form/wrapper.js +1 -1
  269. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  270. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  271. package/dist/components/layout/Board/Board.js +1 -1
  272. package/dist/components/layout/Board/BoardProvider.js +1 -1
  273. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  274. package/dist/components/layout/Board/Widget.js +1 -1
  275. package/dist/components/layout/Board/WidgetHost.js +1 -1
  276. package/dist/components/layout/Board/board-context.js +1 -1
  277. package/dist/components/layout/Board/board-store.js +1 -1
  278. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  279. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  280. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  281. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  282. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  283. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  284. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  285. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  286. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  287. package/dist/components/layout/Board/index.js +1 -1
  288. package/dist/components/layout/Board/responsive-utils.js +1 -1
  289. package/dist/components/layout/Board/use-board-layout.js +1 -1
  290. package/dist/components/layout/Board/use-board-registry.js +1 -1
  291. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  292. package/dist/components/layout/Board/use-board-selection.js +1 -1
  293. package/dist/components/layout/Flex.js +1 -1
  294. package/dist/components/layout/Flow.js +1 -1
  295. package/dist/components/layout/Grid.js +1 -1
  296. package/dist/components/layout/Panel.js +1 -1
  297. package/dist/components/layout/Prefix.js +1 -1
  298. package/dist/components/layout/ResizablePanel.js +1 -1
  299. package/dist/components/layout/Space.js +1 -1
  300. package/dist/components/layout/Suffix.js +1 -1
  301. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  302. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  303. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  304. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  305. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  306. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  307. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  308. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  309. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  310. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  311. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  312. package/dist/components/navigation/Tabs/styled.js +1 -1
  313. package/dist/components/navigation/Tabs/types.js +1 -1
  314. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  315. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  316. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  317. package/dist/components/other/Calendar/Calendar.js +1 -1
  318. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  319. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  320. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  321. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  322. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  323. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  324. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  325. package/dist/components/other/Calendar/styled.js +1 -1
  326. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  327. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  328. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  329. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  330. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  331. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  332. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  333. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  334. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  335. package/dist/components/overlays/Dialog/context.js +1 -1
  336. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  337. package/dist/components/overlays/Modal/Modal.d.ts +1 -2
  338. package/dist/components/overlays/Modal/Modal.js +1 -1
  339. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  340. package/dist/components/overlays/Modal/Overlay.d.ts +0 -1
  341. package/dist/components/overlays/Modal/Overlay.js +1 -1
  342. package/dist/components/overlays/Modal/Popover.js +4 -2
  343. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  344. package/dist/components/overlays/Modal/Tray.js +1 -1
  345. package/dist/components/overlays/Modal/Underlay.js +1 -1
  346. package/dist/components/overlays/Modal/types.d.ts +0 -1
  347. package/dist/components/overlays/Notifications/Notification.js +1 -1
  348. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  349. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  350. package/dist/components/overlays/Notifications/NotificationContext.d.ts +0 -2
  351. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  352. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  353. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  354. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  355. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  356. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  357. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  358. package/dist/components/overlays/Notifications/index.js +1 -1
  359. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  360. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  361. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  362. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  363. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  364. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  365. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  366. package/dist/components/overlays/Toast/index.js +1 -1
  367. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  368. package/dist/components/overlays/Toast/useToast.js +1 -1
  369. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  370. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  371. package/dist/components/overlays/Tooltip/TooltipTrigger.js +12 -2
  372. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  373. package/dist/components/overlays/Tooltip/context.js +1 -1
  374. package/dist/components/portal/Portal.js +1 -1
  375. package/dist/components/portal/PortalProvider.js +1 -1
  376. package/dist/components/portal/index.d.ts +0 -1
  377. package/dist/components/portal/usePortal.js +1 -1
  378. package/dist/components/shared/DraggableCollection.js +1 -1
  379. package/dist/components/shared/InvalidIcon.js +1 -1
  380. package/dist/components/shared/ValidIcon.js +1 -1
  381. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  382. package/dist/components/status/Spin/Cube.js +1 -1
  383. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  384. package/dist/components/status/Spin/Spin.js +1 -1
  385. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  386. package/dist/data/item-themes.js +1 -1
  387. package/dist/data/themes.js +1 -1
  388. package/dist/eslint-plugin/defaults.generated.js +1 -1
  389. package/dist/eslint-plugin/index.js +1 -1
  390. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  391. package/dist/i18n/I18nProvider.js +1 -1
  392. package/dist/i18n/createFormatter.js +1 -1
  393. package/dist/i18n/index.js +1 -1
  394. package/dist/i18n/instance.js +1 -1
  395. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  396. package/dist/i18n/locales/en-US/uikit.js +1 -1
  397. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  398. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  399. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  400. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  401. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  402. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  403. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  404. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  405. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  406. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  407. package/dist/i18n/locales.js +1 -1
  408. package/dist/i18n/useFormatter.js +1 -1
  409. package/dist/i18n/useI18n.js +1 -1
  410. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  411. package/dist/icons/AdjustmentsIcon.js +1 -1
  412. package/dist/icons/AiIcon.js +1 -1
  413. package/dist/icons/AreaChartIcon.js +1 -1
  414. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  415. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  416. package/dist/icons/BackwardIcon.js +1 -1
  417. package/dist/icons/BarChartIcon.js +1 -1
  418. package/dist/icons/BellFilledIcon.js +1 -1
  419. package/dist/icons/BellIcon.js +1 -1
  420. package/dist/icons/BooleanIcon.js +1 -1
  421. package/dist/icons/CalendarEditIcon.js +1 -1
  422. package/dist/icons/CalendarIcon.js +1 -1
  423. package/dist/icons/CaretDownIcon.js +1 -1
  424. package/dist/icons/CaretUpIcon.js +1 -1
  425. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  426. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  427. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  428. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  429. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  430. package/dist/icons/ChartBarLineIcon.js +1 -1
  431. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  432. package/dist/icons/ChartBarStackedIcon.js +1 -1
  433. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  434. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  435. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  436. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  437. package/dist/icons/ChartBubbleIcon.js +1 -1
  438. package/dist/icons/ChartDonut2Icon.js +1 -1
  439. package/dist/icons/ChartFunnelIcon.js +1 -1
  440. package/dist/icons/ChartHeatmapIcon.js +1 -1
  441. package/dist/icons/ChartKPIIcon.js +1 -1
  442. package/dist/icons/ChartPie2Icon.js +1 -1
  443. package/dist/icons/ChartScatterIcon.js +1 -1
  444. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  445. package/dist/icons/CheckCircleIcon.js +1 -1
  446. package/dist/icons/CheckIcon.js +1 -1
  447. package/dist/icons/CircleFilledIcon.js +1 -1
  448. package/dist/icons/ClearIcon.js +1 -1
  449. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  450. package/dist/icons/CloseCircleIcon.js +1 -1
  451. package/dist/icons/CloseIcon.js +1 -1
  452. package/dist/icons/CodeIcon.js +1 -1
  453. package/dist/icons/ColumnTotalIcon.js +1 -1
  454. package/dist/icons/CopyIcon.js +1 -1
  455. package/dist/icons/CountIcon.js +1 -1
  456. package/dist/icons/CubeIcon.js +1 -1
  457. package/dist/icons/CubePauseIcon.js +1 -1
  458. package/dist/icons/CubePlayIcon.js +1 -1
  459. package/dist/icons/CurrencyDollarIcon.js +1 -1
  460. package/dist/icons/DangerIcon.js +1 -1
  461. package/dist/icons/DashboardIcon.js +1 -1
  462. package/dist/icons/DatabaseIcon.js +1 -1
  463. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  464. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  465. package/dist/icons/DirectionIcon.js +1 -1
  466. package/dist/icons/DonutIcon.js +1 -1
  467. package/dist/icons/DownIcon.js +1 -1
  468. package/dist/icons/EditIcon.js +1 -1
  469. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  470. package/dist/icons/ExclamationCircleIcon.js +1 -1
  471. package/dist/icons/ExclamationIcon.js +1 -1
  472. package/dist/icons/EyeIcon.js +1 -1
  473. package/dist/icons/EyeInvisibleIcon.js +1 -1
  474. package/dist/icons/FilterIcon.js +1 -1
  475. package/dist/icons/FolderFilledIcon.js +1 -1
  476. package/dist/icons/FolderIcon.js +1 -1
  477. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  478. package/dist/icons/FolderOpenIcon.js +1 -1
  479. package/dist/icons/ForwardIcon.js +1 -1
  480. package/dist/icons/GripVerticalIcon.js +1 -1
  481. package/dist/icons/HierarchyIcon.js +1 -1
  482. package/dist/icons/HierarchyOpenIcon.js +1 -1
  483. package/dist/icons/Icon.js +1 -1
  484. package/dist/icons/InfoCircleIcon.js +1 -1
  485. package/dist/icons/InfoIcon.js +1 -1
  486. package/dist/icons/KeyIcon.js +1 -1
  487. package/dist/icons/LeftIcon.js +1 -1
  488. package/dist/icons/LineChartIcon.js +1 -1
  489. package/dist/icons/LoadingIcon.js +1 -1
  490. package/dist/icons/LockFilledIcon.js +1 -1
  491. package/dist/icons/LockIcon.js +1 -1
  492. package/dist/icons/MoreIcon.js +1 -1
  493. package/dist/icons/NotAllowedIcon.js +1 -1
  494. package/dist/icons/Number123Icon.js +1 -1
  495. package/dist/icons/NumberIcon.js +1 -1
  496. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  497. package/dist/icons/PauseCircleIcon.js +1 -1
  498. package/dist/icons/PauseIcon.js +1 -1
  499. package/dist/icons/PercentageIcon.js +1 -1
  500. package/dist/icons/PieChartIcon.js +1 -1
  501. package/dist/icons/PipetteIcon.js +1 -1
  502. package/dist/icons/PlayCircleIcon.js +1 -1
  503. package/dist/icons/PlayIcon.js +1 -1
  504. package/dist/icons/PlusIcon.js +1 -1
  505. package/dist/icons/ProgressBarIcon.js +1 -1
  506. package/dist/icons/ReloadIcon.js +1 -1
  507. package/dist/icons/ReportIcon.js +1 -1
  508. package/dist/icons/ReturnIcon.js +1 -1
  509. package/dist/icons/RightIcon.js +1 -1
  510. package/dist/icons/RowTotalsIcon.js +1 -1
  511. package/dist/icons/SchemeIcon.js +1 -1
  512. package/dist/icons/SearchIcon.js +1 -1
  513. package/dist/icons/SemanticQueryIcon.js +1 -1
  514. package/dist/icons/SettingsIcon.js +1 -1
  515. package/dist/icons/ShieldFilledIcon.js +1 -1
  516. package/dist/icons/ShieldIcon.js +1 -1
  517. package/dist/icons/SlashIcon.js +1 -1
  518. package/dist/icons/SparklesIcon.js +1 -1
  519. package/dist/icons/SqlIcon.js +1 -1
  520. package/dist/icons/StatsIcon.js +1 -1
  521. package/dist/icons/StopIcon.js +1 -1
  522. package/dist/icons/StringIcon.js +1 -1
  523. package/dist/icons/SubtotalsIcon.js +1 -1
  524. package/dist/icons/SwitchIcon.js +1 -1
  525. package/dist/icons/TableIcon.js +1 -1
  526. package/dist/icons/ThumbsDownIcon.js +1 -1
  527. package/dist/icons/ThumbsUpIcon.js +1 -1
  528. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  529. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  530. package/dist/icons/ThunderboltIcon.js +1 -1
  531. package/dist/icons/TimeIcon.js +1 -1
  532. package/dist/icons/TrashIcon.js +1 -1
  533. package/dist/icons/UnlockIcon.js +1 -1
  534. package/dist/icons/UpIcon.js +1 -1
  535. package/dist/icons/UserGroupIcon.js +1 -1
  536. package/dist/icons/UserIcon.js +1 -1
  537. package/dist/icons/UserLockIcon.js +1 -1
  538. package/dist/icons/ViewIcon.js +1 -1
  539. package/dist/icons/WarningFilledIcon.js +1 -1
  540. package/dist/icons/WarningIcon.js +1 -1
  541. package/dist/icons/wrap-icon.js +1 -1
  542. package/dist/index.js +2 -2
  543. package/dist/probe/canonicalize.js +1 -1
  544. package/dist/probe/css.js +1 -1
  545. package/dist/probe/index.js +1 -1
  546. package/dist/provider.js +1 -1
  547. package/dist/providers/TrackingProvider.js +1 -1
  548. package/dist/providers/navigationAdapter.default.js +1 -1
  549. package/dist/shared/form.d.ts +2 -2
  550. package/dist/tokens/all-tokens.js +1 -1
  551. package/dist/tokens/base.js +1 -1
  552. package/dist/tokens/color-seed.js +1 -1
  553. package/dist/tokens/color-theme.js +1 -1
  554. package/dist/tokens/colors.js +1 -1
  555. package/dist/tokens/layout.js +1 -1
  556. package/dist/tokens/lazy-styles.js +1 -1
  557. package/dist/tokens/legacy-color.js +1 -1
  558. package/dist/tokens/palette-config.js +1 -1
  559. package/dist/tokens/palette.js +1 -1
  560. package/dist/tokens/resolve.js +1 -1
  561. package/dist/tokens/shadows.js +1 -1
  562. package/dist/tokens/sizes.js +1 -1
  563. package/dist/tokens/spacing.js +1 -1
  564. package/dist/tokens/typography.js +1 -1
  565. package/dist/utils/ResizeSensor.js +1 -1
  566. package/dist/utils/colors.js +1 -1
  567. package/dist/utils/dotize.js +1 -1
  568. package/dist/utils/is-dev-env.js +1 -1
  569. package/dist/utils/modules.js +1 -1
  570. package/dist/utils/promise.js +1 -1
  571. package/dist/utils/raf.js +1 -1
  572. package/dist/utils/random.js +1 -1
  573. package/dist/utils/range.js +1 -1
  574. package/dist/utils/react/RenderCache.js +1 -1
  575. package/dist/utils/react/Slots.js +1 -1
  576. package/dist/utils/react/chain.js +1 -1
  577. package/dist/utils/react/disabledProps.js +1 -1
  578. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  579. package/dist/utils/react/index.js +1 -1
  580. package/dist/utils/react/interactions.js +1 -1
  581. package/dist/utils/react/isTextOnly.js +1 -1
  582. package/dist/utils/react/mapProps.js +1 -1
  583. package/dist/utils/react/mergeProps.js +1 -1
  584. package/dist/utils/react/nullableValue.js +1 -1
  585. package/dist/utils/react/programmaticFocus.js +42 -0
  586. package/dist/utils/react/programmaticFocus.js.map +1 -0
  587. package/dist/utils/react/resolveIcon.js +1 -1
  588. package/dist/utils/react/sharedStore.js +1 -1
  589. package/dist/utils/react/useBufferedValue.js +1 -1
  590. package/dist/utils/react/useCombinedRefs.js +1 -1
  591. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  592. package/dist/utils/react/useEventBus.js +1 -1
  593. package/dist/utils/react/useId.js +1 -1
  594. package/dist/utils/react/useIsDarwin.js +1 -1
  595. package/dist/utils/react/useKeySymbols.js +1 -1
  596. package/dist/utils/react/useLayoutEffect.js +1 -1
  597. package/dist/utils/react/useLocalStorage.js +1 -1
  598. package/dist/utils/react/useMergeStyles.js +1 -1
  599. package/dist/utils/react/useOverlayEscapeGuard.js +41 -0
  600. package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -0
  601. package/dist/utils/react/usePopoverSync.js +1 -1
  602. package/dist/utils/react/useQaProps.js +1 -1
  603. package/dist/utils/react/useScheme.js +1 -1
  604. package/dist/utils/react/useViewportSize.js +1 -1
  605. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  606. package/dist/utils/selection.js +1 -1
  607. package/dist/utils/styles.js +1 -1
  608. package/dist/utils/tree.js +1 -1
  609. package/dist/utils/warnings.js +1 -1
  610. package/dist/version.js +2 -2
  611. package/docs/FieldProperties.md +4 -5
  612. package/docs/Usage.md +3 -3
  613. package/docs/components/fields/FileInput.md +0 -4
  614. package/docs/components/form/Form.md +1 -3
  615. package/docs/components/form/ModernForm.md +9 -10
  616. package/docs/modern-form-guide.md +9 -10
  617. package/docs/modern-form-migration.md +1 -1
  618. package/package.json +1 -1
  619. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +0 -2
  620. package/dist/components/portal/PortalProvider.d.ts +0 -2
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  import { createSharedStore } from "./sharedStore.js";
3
3
  import { useEffect } from "react";
4
4
  import { useFocusVisible } from "react-aria";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef } from "react";
3
3
 
4
4
  //#region src/utils/react/useEventBus.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "./useLayoutEffect.js";
3
3
  import { useEffect, useRef, useState } from "react";
4
4
  import { useSSRSafeId } from "@react-aria/ssr";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  import { useEffect, useState } from "react";
3
3
 
4
4
  //#region src/utils/react/useIsDarwin.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  import { useIsDarwin } from "./useIsDarwin.js";
3
3
  import { useMemo } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  import * as React$1 from "react";
3
3
 
4
4
  //#region src/utils/react/useLayoutEffect.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  import { useEvent } from "../../_internal/hooks/use-event.js";
3
3
  import { useCallback, useSyncExternalStore } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  import { mergeStyles } from "@tenphi/tasty";
3
3
  import { useMemo } from "react";
4
4
 
@@ -0,0 +1,41 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
+ import { useEvent } from "../../_internal/hooks/use-event.js";
3
+
4
+ //#region src/utils/react/useOverlayEscapeGuard.ts
5
+ /**
6
+ * Stops a CLOSED overlay from answering for `Escape` (CUB-4839).
7
+ *
8
+ * `useOverlay`'s `Escape` handler calls `stopPropagation()` and
9
+ * `preventDefault()` for every `Escape` it sees, and only THEN asks whether
10
+ * this overlay is the topmost one allowed to act on it — unlike
11
+ * `onInteractOutside`, which it gates on `isOpen` up front. An overlay that has
12
+ * already closed therefore consumes the key and does nothing with it, so the
13
+ * `Escape` meant for the Dialog around it closes nothing at all.
14
+ *
15
+ * That is reachable here because our overlays stay mounted for their exit
16
+ * transition while still holding DOM focus: pick an option from a list inside a
17
+ * Dialog and the very next `Escape` lands in the closing list.
18
+ *
19
+ * Passing `useOverlay` an `isKeyboardDismissDisabled` of its own does NOT work,
20
+ * and that is the reason this exists. `DisplayTransition` preserves content
21
+ * across an exit by replaying the children it stored while the overlay was
22
+ * open, so every value that subtree captured — `isKeyboardDismissDisabled`
23
+ * included — stays frozen at its open-state reading for exactly the window
24
+ * this has to guard. `useEvent` gets around it by returning a handler whose
25
+ * identity never changes while its body always runs the latest render's
26
+ * closure, so the frozen copy still sees the current `isOpen`.
27
+ */
28
+ function useOverlayEscapeGuard(overlayProps, isOpen) {
29
+ const onKeyDown = useEvent((event) => {
30
+ if (event.key === "Escape" && !isOpen) return;
31
+ overlayProps.onKeyDown?.(event);
32
+ });
33
+ return {
34
+ ...overlayProps,
35
+ onKeyDown
36
+ };
37
+ }
38
+
39
+ //#endregion
40
+ export { useOverlayEscapeGuard };
41
+ //# sourceMappingURL=useOverlayEscapeGuard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOverlayEscapeGuard.js","names":[],"sources":["../../../src/utils/react/useOverlayEscapeGuard.ts"],"sourcesContent":["import { useEvent } from '../../_internal';\n\nimport type { DOMAttributes, KeyboardEvent } from 'react';\n\ntype OverlayDOMProps = DOMAttributes<any>;\n\n/**\n * Stops a CLOSED overlay from answering for `Escape` (CUB-4839).\n *\n * `useOverlay`'s `Escape` handler calls `stopPropagation()` and\n * `preventDefault()` for every `Escape` it sees, and only THEN asks whether\n * this overlay is the topmost one allowed to act on it — unlike\n * `onInteractOutside`, which it gates on `isOpen` up front. An overlay that has\n * already closed therefore consumes the key and does nothing with it, so the\n * `Escape` meant for the Dialog around it closes nothing at all.\n *\n * That is reachable here because our overlays stay mounted for their exit\n * transition while still holding DOM focus: pick an option from a list inside a\n * Dialog and the very next `Escape` lands in the closing list.\n *\n * Passing `useOverlay` an `isKeyboardDismissDisabled` of its own does NOT work,\n * and that is the reason this exists. `DisplayTransition` preserves content\n * across an exit by replaying the children it stored while the overlay was\n * open, so every value that subtree captured — `isKeyboardDismissDisabled`\n * included — stays frozen at its open-state reading for exactly the window\n * this has to guard. `useEvent` gets around it by returning a handler whose\n * identity never changes while its body always runs the latest render's\n * closure, so the frozen copy still sees the current `isOpen`.\n */\nexport function useOverlayEscapeGuard<T extends OverlayDOMProps>(\n overlayProps: T,\n isOpen: boolean | undefined,\n): T {\n const onKeyDown = useEvent((event: KeyboardEvent<any>) => {\n // Decline it, so it reaches whoever can actually act on it.\n if (event.key === 'Escape' && !isOpen) return;\n\n overlayProps.onKeyDown?.(event);\n });\n\n return { ...overlayProps, onKeyDown };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,SAAgB,sBACd,cACA,QACG;CACH,MAAM,YAAY,UAAU,UAA8B;AAExD,MAAI,MAAM,QAAQ,YAAY,CAAC,OAAQ;AAEvC,eAAa,YAAY,MAAM;GAC/B;AAEF,QAAO;EAAE,GAAG;EAAc;EAAW"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  import { EventBusContext, useEventBus } from "./useEventBus.js";
3
3
  import { useCallback, useContext, useEffect, useRef } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  //#region src/utils/react/useQaProps.ts
3
3
  /**
4
4
  * Processes QA props.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  import { useSyncExternalStore } from "react";
3
3
 
4
4
  //#region src/utils/react/useScheme.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  import { useEffect, useState } from "react";
3
3
 
4
4
  //#region src/utils/react/useViewportSize.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  import { isValidElement } from "react";
3
3
  import { isFragment } from "react-is";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  //#region src/utils/selection.ts
3
3
  /**
4
4
  * Deduplicate/toggle keys in a selection: if a key appears twice it is
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  //#region src/utils/styles.ts
3
3
  /**
4
4
  * Split properties into style and non-style properties.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  //#region src/utils/tree.ts
3
3
  function toFlatTree(tree, includingFolders) {
4
4
  return tree.reduce((result, node) => {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  import { isDevEnvOrTest } from "./is-dev-env.js";
3
3
 
4
4
  //#region src/utils/warnings.ts
package/dist/version.js CHANGED
@@ -1,6 +1,6 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-08f0089 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0ff010b | Cube Dev Team */
2
2
  //#region src/version.ts
3
- const VERSION = "0.0.0-canary-08f0089";
3
+ const VERSION = "0.0.0-canary-0ff010b";
4
4
  const TASTY_VERSION = "3.9.2";
5
5
  if (typeof window !== "undefined") {
6
6
  const version = VERSION;
@@ -4,12 +4,12 @@ All input components in UI Kit (`TextInput`, `Select`, `ComboBox`, `Checkbox`, `
4
4
 
5
5
  When used inside a [Form](./components/form/Form.md), these properties are automatically inherited from the form context and can be overridden at the field level.
6
6
 
7
- For modern forms, follow the [use-case guide](./components/form/ModernForm.md). Bind with `name` and put validation options on the input, or choose `field={form.field(path, options)}` for model-aware type checking and validator inference. Keep presentation props on the input. These binding styles are alternatives; descriptors are not required for nested data.
7
+ For modern forms, follow the [use-case guide](./components/form/ModernForm.md). Put binding and validation options on `form.field(path, options)` and presentation props on the input. The prop reference below also covers `name` bindings for shared controls and legacy forms; these are alternatives to the typed descriptor, not additional required setup.
8
8
 
9
9
  ## Identity & Form Integration
10
10
 
11
11
  - **`field`** `FormField<Value>` — Typed modern binding created by `form.field(path, options)`. Supports nested paths and takes precedence over `form` and `name`. Built-in bindings accept `null` and `undefined` alongside their normal model value; display fallbacks do not replace stored nulls.
12
- - **`name`** `string | readonly (string | number)[]` — Field name when a descriptor is not supplied. Modern forms accept literal strings or nested tuple paths, such as `['users', 0, 'email']`. Legacy forms accept strings only and retain dot notation.
12
+ - **`name`** `string` — Field name for form data binding when a descriptor is not supplied.
13
13
  - **`form`** `CubeFormInstance | FormController<T>` — Legacy instance or modern controller. Automatically provided when inside a Form context. Pass it explicitly to link an input to a form it is not nested in, or to override the surrounding form.
14
14
  - **`defaultValue`** `any` — Initial field value. Modern controller values/defaults take precedence, including explicit `null` and `undefined`.
15
15
  - **`preserve`** `boolean` (modern default: `true`) — Retain the value after the last input for this field unmounts.
@@ -122,15 +122,14 @@ function ExampleForm() {
122
122
  return (
123
123
  <Form form={form}>
124
124
  <TextInput
125
- name="name"
126
- rules={[{ min: 2 }]}
125
+ field={form.field('name', { rules: [{ min: 2 }] })}
127
126
  label="Full Name"
128
127
  description="As it appears on your ID"
129
128
  isRequired
130
129
  />
131
130
 
132
131
  <Select
133
- name="role"
132
+ field={form.field('role')}
134
133
  label="Role"
135
134
  tooltip="Your primary role in the organization"
136
135
  necessityIndicator="label"
package/docs/Usage.md CHANGED
@@ -458,7 +458,7 @@ DataTable also accepts nested column definitions for already-shaped pivot result
458
458
 
459
459
  ### Modern forms
460
460
 
461
- For a new modern form, create a typed controller, put defaults on the controller, and bind inputs with `name`. Modern names accept strings and nested tuples; `field` is an optional typed binding:
461
+ For a new modern form, create a typed controller, put defaults on the controller, and bind inputs with descriptors:
462
462
 
463
463
  ```tsx
464
464
  const form = Form.useController<{ email: string | null }>({
@@ -466,7 +466,7 @@ const form = Form.useController<{ email: string | null }>({
466
466
  });
467
467
 
468
468
  <Form form={form} onSubmit={(values, { signal }) => save(values, signal)}>
469
- <TextInput name="email" label="Email" isRequired />
469
+ <TextInput field={form.field('email')} label="Email" isRequired />
470
470
  <Form.SubmitError />
471
471
  <Form.Submit>Save</Form.Submit>
472
472
  </Form>
@@ -482,4 +482,4 @@ Inputs subscribe to their own values and errors. For other reactive UI, use `For
482
482
 
483
483
  ### Shared field integration
484
484
 
485
- Built-in inputs have field support; they do not need a `Field` wrapper. Modern `name` and `field` bindings, and legacy string `name` bindings, connect through `useFieldProps`. Custom controls use that hook and `wrapWithField`. [Field Properties](./FieldProperties.md) documents shared labels, validation, state, and presentation props.
485
+ Built-in inputs have field support; they do not need a `Field` wrapper. Modern descriptors and legacy `name` bindings both connect through `useFieldProps`. Custom controls use that hook and `wrapWithField`. [Field Properties](./FieldProperties.md) documents shared labels, validation, state, and presentation props.
@@ -87,10 +87,6 @@ The `mods` property accepts the following modifiers you can override:
87
87
  />
88
88
  ```
89
89
 
90
- ### Form Values and Resets
91
-
92
- When bound to a legacy or modern form, resetting updates the displayed filename and clears any obsolete native file selection. This also allows choosing the same file again. A nonempty string value can display a filename, but it cannot restore file bytes; the user must select the file again. With `type="text"`, the form stores the file's text content.
93
-
94
90
  ### With Validation
95
91
 
96
92
  Pass `isValid` or `isInvalid` to tint the border and show the matching state icon.
@@ -14,7 +14,7 @@ function EmailForm() {
14
14
 
15
15
  return (
16
16
  <Form form={form} onSubmit={(values, { signal }) => save(values, signal)}>
17
- <TextInput name="email" label="Email" isRequired />
17
+ <TextInput field={form.field('email')} label="Email" isRequired />
18
18
  <Form.SubmitError />
19
19
  <Form.Submit>Save</Form.Submit>
20
20
  </Form>
@@ -22,8 +22,6 @@ function EmailForm() {
22
22
  }
23
23
  ```
24
24
 
25
- `name` is sufficient to bind an input. Modern forms also accept `name={['user', 'email']}` for nested data; `field={form.field(path)}` is optional and adds model-aware type checking and validator inference.
26
-
27
25
  `Form.useForm()` and roots without a modern controller keep the legacy backend. Existing forms need no API changes when upgrading. Use the [migration checklist](https://github.com/cube-js/cube-ui-kit/blob/main/docs/modern-form-migration.md) before converting one; `DialogForm` and `Form.Item` still require legacy forms.
28
26
 
29
27
  **The reference and examples below describe the legacy backend.** Its instance methods, root `defaultValues`, and dot-separated paths do not apply to modern controllers. Shared layout and field presentation props work with both backends. See [Modern Form](./ModernForm.md) for modern defaults and commands.
@@ -1,6 +1,6 @@
1
1
  # Modern Form: choose the API for the job
2
2
 
3
- For a new modern form, start with `Form.useController<Model>()`, bind inputs with `name="email"` or a nested tuple such as `name={['user', 'email']}`, and submit through `<Form onSubmit={...}>` and `<Form.Submit>`. Add subscriptions only where other UI needs to read form state. The input components already subscribe to their own values and errors. `field={form.field(path)}` is an optional alternative when you want model-checked paths, input value compatibility checks, or inferred custom-validator types.
3
+ For a new modern form, start with `Form.useController<Model>()`, bind inputs with `field={form.field(path)}`, and submit through `<Form onSubmit={...}>` and `<Form.Submit>`. Add subscriptions only where other UI needs to read form state. The input components already subscribe to their own values and errors.
4
4
 
5
5
  Existing `Form.useForm()` forms and roots without a modern controller use the legacy backend. Follow the [migration checklist](https://github.com/cube-js/cube-ui-kit/blob/main/docs/modern-form-migration.md) when converting one. `DialogForm` still requires a legacy instance; do not pass a modern controller through a cast.
6
6
 
@@ -29,12 +29,13 @@ function ProfileForm({
29
29
  return (
30
30
  <Form form={form} onSubmit={(values, { signal }) => save(values, signal)}>
31
31
  <TextInput
32
- name="email"
33
- rules={[{ type: 'email', message: 'Enter a valid email' }]}
32
+ field={form.field('email', {
33
+ rules: [{ type: 'email', message: 'Enter a valid email' }],
34
+ })}
34
35
  label="Email"
35
36
  isRequired
36
37
  />
37
- <Switch name="notifications" label="Notifications" />
38
+ <Switch field={form.field('notifications')} label="Notifications" />
38
39
  <Form.SubmitError />
39
40
  <Form.Submit>Save</Form.Submit>
40
41
  <Form.Reset>Reset</Form.Reset>
@@ -51,17 +52,15 @@ The model describes possible values, including API `null`s. A text input display
51
52
 
52
53
  | Concern | Start here | Use the alternative when… |
53
54
  | --- | --- | --- |
54
- | Connect an input | `name="email"` for a literal name, or `name={['user', 'email']}` for a nested modern path | `field={form.field(path, options)}` adds model-checked paths, input value compatibility, and validator inference. Neither binding requires the other. |
55
+ | Connect an input | `field={form.field(path, options)}` | `name="email"` keeps a shared legacy/modern wrapper working. Names are not checked against the controller's model. |
55
56
  | Locate the controller | Use the controller you created, or pass it as a prop | `Form.useControllerContext<Model>()` avoids prop threading in a descendant. It reads context without subscribing. |
56
- | Configure a field | With `name`, put `rules`, dependencies, and retention on the input | With `field`, put these options and typed `validate` on the descriptor. Avoid configuring the same option in both places. |
57
+ | Configure a field | Put `rules`, `validate`, dependencies, and retention on the descriptor | Input-level registration props support reusable controls with their own defaults and legacy callers. Avoid configuring the same option in both places. |
57
58
  | Present a field | Input props such as `label`, `description`, `isRequired` | `rules: [{ required: true }]` is useful when required validation needs a custom message or no visible required marker. |
58
59
  | Handle submit/change/failure | Callbacks on the owning `<Form>` | Hook callbacks let a controller own behavior independently of a root, or provide defaults to a wrapper. Choose one location per callback. |
59
60
  | Initialize values | Controller `defaultValues` | Field `defaultValue` supplies a fallback for a reusable field missing from the controller's data. |
60
61
 
61
62
  `Form.Submit`, `Form.Reset`, and `Form.SubmitError` are aliases of the exported `SubmitButton`, `ResetButton`, and `SubmitError` components. This guide uses the `Form.*` names consistently; importing a standalone name does not select a different implementation.
62
63
 
63
- `name` uses the surrounding form, or an explicit `form={form}` outside it. Tuple names accept string and numeric segments and readonly arrays; inline tuples do not need memoization. Names are not checked against the surrounding controller's model because React context cannot infer its type. Tuple names require a modern controller; legacy forms retain string names and dot notation.
64
-
65
64
  A descriptor is pure configuration, so creating it inline is expected. It neither reads state nor registers a field; the mounted input registers after commit. It supplies the controller and path even outside the root, so adding `form` or `name` to the same input is unnecessary. If both are present, the descriptor wins. Descriptor options override only matching options they supply. In particular, descriptor `rules` or `validate` replaces input-level `rules`; put built-in rules and a custom validator together on the descriptor to run both.
66
65
 
67
66
  Controller values and defaults take precedence over field defaults, including explicit `null` and `undefined`. Root callbacks override the corresponding hook callback while mounted; omitted or undefined root callbacks fall back to the hook callback. Business callbacks update after every committed render. Defaults, `errorPolicy`, and diagnostic handlers are creation options; update values through commands and override error policy per field when needed.
@@ -172,7 +171,7 @@ Use `setValue(path, value)` for one path and `setValues(partial)` for several to
172
171
  | Validation case | Start here |
173
172
  | --- | --- |
174
173
  | Required field with a visible marker | Input `isRequired`; it adds required validation too. |
175
- | Email, length, range, pattern, or enum | Input `rules` using the built-in constraints, or descriptor `rules` when using `field`. |
174
+ | Email, length, range, pattern, or enum | Descriptor `rules` using the built-in constraints. |
176
175
  | Custom domain check | Descriptor `validate(value, context)` for an inferred field value and checked reads. |
177
176
  | Several custom rules or existing shared rule objects | `rules: [{ validator(rule, value, context) { ... } }]`; use `ModernValidationRule` for strict modern rule typing. |
178
177
  | Validation depends on another form value | `dependsOn: ['password']`, or nested tuples such as `dependsOn: [['account', 'password']]`. |
@@ -236,7 +235,7 @@ Unmounting the last input at a path removes it from `activeValues` immediately a
236
235
 
237
236
  For a wizard, validate a step before unmounting it and choose `submitValues="all"` if previous steps belong in the final payload. That does not revalidate unmounted steps. If final submission must validate every step against the latest data, keep the relevant inputs mounted or perform whole-payload validation explicitly. A form with no active fields is invalid.
238
237
 
239
- Bind nested leaves directly with `name={['rows', index, 'email']}`. The optional typed equivalent is `field={form.field(['rows', index, 'email'])}`. A string such as `'user.email'` is one literal key, not dot notation. Numeric indices and numeric string segments address the same path. Removing an array path does not shift the other indices. Registering a parent object makes its complete value active; register leaf paths when only selected children belong in the active payload. Descriptor and controller-command literal paths are checked against the model; `name` accepts dynamic paths without those checks. The declaration surface requires TypeScript 5.4 or newer.
238
+ Bind nested leaves with tuples: `field={form.field(['rows', index, 'email'])}`. A string such as `'user.email'` is one literal key, not dot notation. Numeric indices and numeric string segments address the same path. Removing an array path does not shift the other indices. Registering a parent object makes its complete value active; register leaf paths when only selected children belong in the active payload. Known literal paths are typechecked; widened dynamic paths are supported. The declaration surface requires TypeScript 5.4 or newer.
240
239
 
241
240
  `getValues()` / `state.values` contains all retained data; `getActiveValues()` / `state.activeValues` contains registered paths. Dirty/touched metadata includes retained fields, while validity concerns active fields.
242
241
 
@@ -1,6 +1,6 @@
1
1
  # Modern Form: choose the API for the job
2
2
 
3
- For a new modern form, start with `Form.useController<Model>()`, bind inputs with `name="email"` or a nested tuple such as `name={['user', 'email']}`, and submit through `<Form onSubmit={...}>` and `<Form.Submit>`. Add subscriptions only where other UI needs to read form state. The input components already subscribe to their own values and errors. `field={form.field(path)}` is an optional alternative when you want model-checked paths, input value compatibility checks, or inferred custom-validator types.
3
+ For a new modern form, start with `Form.useController<Model>()`, bind inputs with `field={form.field(path)}`, and submit through `<Form onSubmit={...}>` and `<Form.Submit>`. Add subscriptions only where other UI needs to read form state. The input components already subscribe to their own values and errors.
4
4
 
5
5
  Existing `Form.useForm()` forms and roots without a modern controller use the legacy backend. Follow the [migration checklist](https://github.com/cube-js/cube-ui-kit/blob/main/docs/modern-form-migration.md) when converting one. `DialogForm` still requires a legacy instance; do not pass a modern controller through a cast.
6
6
 
@@ -29,12 +29,13 @@ function ProfileForm({
29
29
  return (
30
30
  <Form form={form} onSubmit={(values, { signal }) => save(values, signal)}>
31
31
  <TextInput
32
- name="email"
33
- rules={[{ type: 'email', message: 'Enter a valid email' }]}
32
+ field={form.field('email', {
33
+ rules: [{ type: 'email', message: 'Enter a valid email' }],
34
+ })}
34
35
  label="Email"
35
36
  isRequired
36
37
  />
37
- <Switch name="notifications" label="Notifications" />
38
+ <Switch field={form.field('notifications')} label="Notifications" />
38
39
  <Form.SubmitError />
39
40
  <Form.Submit>Save</Form.Submit>
40
41
  <Form.Reset>Reset</Form.Reset>
@@ -51,17 +52,15 @@ The model describes possible values, including API `null`s. A text input display
51
52
 
52
53
  | Concern | Start here | Use the alternative when… |
53
54
  | --- | --- | --- |
54
- | Connect an input | `name="email"` for a literal name, or `name={['user', 'email']}` for a nested modern path | `field={form.field(path, options)}` adds model-checked paths, input value compatibility, and validator inference. Neither binding requires the other. |
55
+ | Connect an input | `field={form.field(path, options)}` | `name="email"` keeps a shared legacy/modern wrapper working. Names are not checked against the controller's model. |
55
56
  | Locate the controller | Use the controller you created, or pass it as a prop | `Form.useControllerContext<Model>()` avoids prop threading in a descendant. It reads context without subscribing. |
56
- | Configure a field | With `name`, put `rules`, dependencies, and retention on the input | With `field`, put these options and typed `validate` on the descriptor. Avoid configuring the same option in both places. |
57
+ | Configure a field | Put `rules`, `validate`, dependencies, and retention on the descriptor | Input-level registration props support reusable controls with their own defaults and legacy callers. Avoid configuring the same option in both places. |
57
58
  | Present a field | Input props such as `label`, `description`, `isRequired` | `rules: [{ required: true }]` is useful when required validation needs a custom message or no visible required marker. |
58
59
  | Handle submit/change/failure | Callbacks on the owning `<Form>` | Hook callbacks let a controller own behavior independently of a root, or provide defaults to a wrapper. Choose one location per callback. |
59
60
  | Initialize values | Controller `defaultValues` | Field `defaultValue` supplies a fallback for a reusable field missing from the controller's data. |
60
61
 
61
62
  `Form.Submit`, `Form.Reset`, and `Form.SubmitError` are aliases of the exported `SubmitButton`, `ResetButton`, and `SubmitError` components. This guide uses the `Form.*` names consistently; importing a standalone name does not select a different implementation.
62
63
 
63
- `name` uses the surrounding form, or an explicit `form={form}` outside it. Tuple names accept string and numeric segments and readonly arrays; inline tuples do not need memoization. Names are not checked against the surrounding controller's model because React context cannot infer its type. Tuple names require a modern controller; legacy forms retain string names and dot notation.
64
-
65
64
  A descriptor is pure configuration, so creating it inline is expected. It neither reads state nor registers a field; the mounted input registers after commit. It supplies the controller and path even outside the root, so adding `form` or `name` to the same input is unnecessary. If both are present, the descriptor wins. Descriptor options override only matching options they supply. In particular, descriptor `rules` or `validate` replaces input-level `rules`; put built-in rules and a custom validator together on the descriptor to run both.
66
65
 
67
66
  Controller values and defaults take precedence over field defaults, including explicit `null` and `undefined`. Root callbacks override the corresponding hook callback while mounted; omitted or undefined root callbacks fall back to the hook callback. Business callbacks update after every committed render. Defaults, `errorPolicy`, and diagnostic handlers are creation options; update values through commands and override error policy per field when needed.
@@ -172,7 +171,7 @@ Use `setValue(path, value)` for one path and `setValues(partial)` for several to
172
171
  | Validation case | Start here |
173
172
  | --- | --- |
174
173
  | Required field with a visible marker | Input `isRequired`; it adds required validation too. |
175
- | Email, length, range, pattern, or enum | Input `rules` using the built-in constraints, or descriptor `rules` when using `field`. |
174
+ | Email, length, range, pattern, or enum | Descriptor `rules` using the built-in constraints. |
176
175
  | Custom domain check | Descriptor `validate(value, context)` for an inferred field value and checked reads. |
177
176
  | Several custom rules or existing shared rule objects | `rules: [{ validator(rule, value, context) { ... } }]`; use `ModernValidationRule` for strict modern rule typing. |
178
177
  | Validation depends on another form value | `dependsOn: ['password']`, or nested tuples such as `dependsOn: [['account', 'password']]`. |
@@ -236,7 +235,7 @@ Unmounting the last input at a path removes it from `activeValues` immediately a
236
235
 
237
236
  For a wizard, validate a step before unmounting it and choose `submitValues="all"` if previous steps belong in the final payload. That does not revalidate unmounted steps. If final submission must validate every step against the latest data, keep the relevant inputs mounted or perform whole-payload validation explicitly. A form with no active fields is invalid.
238
237
 
239
- Bind nested leaves directly with `name={['rows', index, 'email']}`. The optional typed equivalent is `field={form.field(['rows', index, 'email'])}`. A string such as `'user.email'` is one literal key, not dot notation. Numeric indices and numeric string segments address the same path. Removing an array path does not shift the other indices. Registering a parent object makes its complete value active; register leaf paths when only selected children belong in the active payload. Descriptor and controller-command literal paths are checked against the model; `name` accepts dynamic paths without those checks. The declaration surface requires TypeScript 5.4 or newer.
238
+ Bind nested leaves with tuples: `field={form.field(['rows', index, 'email'])}`. A string such as `'user.email'` is one literal key, not dot notation. Numeric indices and numeric string segments address the same path. Removing an array path does not shift the other indices. Registering a parent object makes its complete value active; register leaf paths when only selected children belong in the active payload. Known literal paths are typechecked; widened dynamic paths are supported. The declaration surface requires TypeScript 5.4 or newer.
240
239
 
241
240
  `getValues()` / `state.values` contains all retained data; `getActiveValues()` / `state.activeValues` contains registered paths. Dirty/touched metadata includes retained fields, while validity concerns active fields.
242
241
 
@@ -39,7 +39,7 @@ The [Modern Form guide](modern-form-guide.md) is the reference for implementing
39
39
 
40
40
  | Area | Migration decision |
41
41
  | --- | --- |
42
- | Field bindings and paths | Use `name={path}` for ordinary binding or `field={form.field(path, options)}` for model-aware type checking. Strings are literal keys; convert legacy dot notation to tuple names for nested data. Do not configure the same binding through `field`, `name`, and `form`. |
42
+ | Field bindings and paths | Prefer `field={form.field(path, options)}`. Strings are literal keys; convert legacy dot notation to tuples for nested data. Do not configure the same binding through `field`, `name`, and `form`. |
43
43
  | Empty API values | Include `null` in the model where the API returns it. Built-in typed bindings display an empty state without rewriting the stored null. |
44
44
  | Render-time reads | Use `useValue`, `useFieldState`, or selectors. Imperative getters and the controller creator do not subscribe React. |
45
45
  | Late defaults | Defaults initialize once. Choose adoption to preserve edits, reset for a new editing session, or baseline-only updates deliberately. |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cube-dev/ui-kit",
3
- "version": "0.0.0-canary-08f0089",
3
+ "version": "0.0.0-canary-0ff010b",
4
4
  "type": "module",
5
5
  "description": "UIKit for Cube Projects",
6
6
  "repository": {
@@ -1,2 +0,0 @@
1
-
2
- import React, { RefObject } from "react";
@@ -1,2 +0,0 @@
1
-
2
- import { RefObject } from "react";