@cube-dev/ui-kit 0.0.0-canary-1672a95 → 0.0.0-canary-448aeb3

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 (579) 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.js +1 -1
  18. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  19. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  20. package/dist/components/actions/ButtonSplit/context.js +1 -1
  21. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  22. package/dist/components/actions/CommandMenu/styled.js +1 -1
  23. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  24. package/dist/components/actions/ItemActionContext.js +1 -1
  25. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  26. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  27. package/dist/components/actions/Link/Link.js +1 -1
  28. package/dist/components/actions/Menu/Menu.js +1 -1
  29. package/dist/components/actions/Menu/MenuItem.js +1 -1
  30. package/dist/components/actions/Menu/MenuSection.js +1 -1
  31. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  32. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  34. package/dist/components/actions/Menu/context.js +1 -1
  35. package/dist/components/actions/Menu/styled.js +1 -1
  36. package/dist/components/actions/actions-run.js +1 -1
  37. package/dist/components/actions/index.js +1 -1
  38. package/dist/components/actions/use-action.js +1 -1
  39. package/dist/components/actions/use-anchored-menu.js +1 -1
  40. package/dist/components/actions/use-context-menu.js +1 -1
  41. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  42. package/dist/components/content/Alert/Alert.js +1 -1
  43. package/dist/components/content/Alert/use-alert.js +1 -1
  44. package/dist/components/content/Avatar/Avatar.js +1 -1
  45. package/dist/components/content/Badge/Badge.js +1 -1
  46. package/dist/components/content/Card/Card.js +1 -1
  47. package/dist/components/content/Content.js +1 -1
  48. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  49. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  50. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  51. package/dist/components/content/Divider.js +1 -1
  52. package/dist/components/content/Footer.js +1 -1
  53. package/dist/components/content/Header.js +1 -1
  54. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  55. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  56. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  57. package/dist/components/content/Item/Item.js +1 -1
  58. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  59. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  60. package/dist/components/content/Layout/GridLayout.js +1 -1
  61. package/dist/components/content/Layout/Layout.js +1 -1
  62. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  63. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  64. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  65. package/dist/components/content/Layout/LayoutContent.js +1 -1
  66. package/dist/components/content/Layout/LayoutContext.js +1 -1
  67. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  68. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  69. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  70. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  71. package/dist/components/content/Layout/LayoutPane.js +1 -1
  72. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  73. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  74. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  75. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  76. package/dist/components/content/Layout/index.js +1 -1
  77. package/dist/components/content/Layout/utils.js +1 -1
  78. package/dist/components/content/Paragraph.js +1 -1
  79. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  80. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  81. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  82. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  83. package/dist/components/content/Result/Result.js +1 -1
  84. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  85. package/dist/components/content/Tag/Tag.js +1 -1
  86. package/dist/components/content/Text.js +1 -1
  87. package/dist/components/content/TextItem/TextItem.js +1 -1
  88. package/dist/components/content/Title.js +1 -1
  89. package/dist/components/content/Tree/Tree.js +1 -1
  90. package/dist/components/content/Tree/TreeNode.js +1 -1
  91. package/dist/components/content/Tree/styled.js +1 -1
  92. package/dist/components/content/Tree/tree-index.js +1 -1
  93. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  94. package/dist/components/content/Tree/use-load-data.js +1 -1
  95. package/dist/components/content/highlightText.js +1 -1
  96. package/dist/components/content/use-auto-tooltip.js +1 -1
  97. package/dist/components/data/DataTable/DataTable.js +1 -1
  98. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  99. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  100. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  103. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  104. package/dist/components/data/TableBase/RowCollection.js +1 -1
  105. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  106. package/dist/components/data/TableBase/TableRow.js +1 -1
  107. package/dist/components/data/TableBase/TableView.js +1 -1
  108. package/dist/components/data/TableBase/column-menu.js +1 -1
  109. package/dist/components/data/TableBase/column-tint.js +1 -1
  110. package/dist/components/data/TableBase/row-menu.js +1 -1
  111. package/dist/components/data/TableBase/styled.js +1 -1
  112. package/dist/components/data/TableBase/table-tree.js +1 -1
  113. package/dist/components/data/TableBase/types.js +1 -1
  114. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  115. package/dist/components/data/TableBase/use-column-order.js +1 -1
  116. package/dist/components/data/TableBase/use-container-width.js +1 -1
  117. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  118. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  119. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  120. package/dist/components/data/TableBase/use-table-search.js +1 -1
  121. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  122. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  123. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  124. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  125. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  126. package/dist/components/fields/Checkbox/Checkbox.d.ts +1 -1
  127. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  128. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  129. package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +1 -1
  130. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  131. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  132. package/dist/components/fields/Checkbox/context.js +1 -1
  133. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  134. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  135. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  136. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  137. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  138. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  139. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  140. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  141. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  142. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  143. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  144. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  145. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  146. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  147. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  148. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  149. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  150. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  151. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  152. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  153. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  154. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  155. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  156. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  157. package/dist/components/fields/DatePicker/period.js +1 -1
  158. package/dist/components/fields/DatePicker/props.js +1 -1
  159. package/dist/components/fields/DatePicker/utils.js +1 -1
  160. package/dist/components/fields/FileInput/FileInput.d.ts +1 -1
  161. package/dist/components/fields/FileInput/FileInput.js +1 -1
  162. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  163. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  164. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  165. package/dist/components/fields/Input/Input.js +1 -1
  166. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  167. package/dist/components/fields/ListBox/ListBox.js +1 -1
  168. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  169. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  170. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  171. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  172. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  173. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  174. package/dist/components/fields/Picker/Picker.js +1 -1
  175. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  176. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +1 -1
  177. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  178. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  179. package/dist/components/fields/RadioGroup/context.js +1 -1
  180. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  181. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  182. package/dist/components/fields/Select/Select.js +1 -1
  183. package/dist/components/fields/Slider/Gradation.js +1 -1
  184. package/dist/components/fields/Slider/HueSlider.js +1 -1
  185. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  186. package/dist/components/fields/Slider/Slider.js +1 -1
  187. package/dist/components/fields/Slider/SliderBase.js +1 -1
  188. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  189. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  190. package/dist/components/fields/Slider/elements.js +1 -1
  191. package/dist/components/fields/Slider/index.js +1 -1
  192. package/dist/components/fields/Slider/types.d.ts +1 -1
  193. package/dist/components/fields/Switch/Switch.d.ts +1 -1
  194. package/dist/components/fields/Switch/Switch.js +1 -1
  195. package/dist/components/fields/Switch/Switch.js.map +1 -1
  196. package/dist/components/fields/TextArea/TextArea.js +1 -1
  197. package/dist/components/fields/TextInput/TextInput.js +1 -1
  198. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  199. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  200. package/dist/components/fields/TextInputMapper/TextInputMapper.d.ts +1 -1
  201. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  202. package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
  203. package/dist/components/fields/TriggerActions.js +1 -1
  204. package/dist/components/fields/color/ColorPanel.js +1 -1
  205. package/dist/components/fields/color/channels.js +1 -1
  206. package/dist/components/fields/color/color.js +1 -1
  207. package/dist/components/fields/color/context.js +1 -1
  208. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  209. package/dist/components/form/Form/Field.js +1 -1
  210. package/dist/components/form/Form/Form.js +1 -1
  211. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  212. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  213. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  214. package/dist/components/form/Form/SubmitError.js +1 -1
  215. package/dist/components/form/Form/backend.js +1 -1
  216. package/dist/components/form/Form/index.js +1 -1
  217. package/dist/components/form/Form/modern/actions.js +1 -1
  218. package/dist/components/form/Form/modern/context.d.ts +3 -0
  219. package/dist/components/form/Form/modern/context.js +1 -1
  220. package/dist/components/form/Form/modern/controller.js +1 -1
  221. package/dist/components/form/Form/modern/field-binding.js +2 -2
  222. package/dist/components/form/Form/modern/field-binding.js.map +1 -1
  223. package/dist/components/form/Form/modern/field.js +2 -2
  224. package/dist/components/form/Form/modern/field.js.map +1 -1
  225. package/dist/components/form/Form/modern/react.js +1 -1
  226. package/dist/components/form/Form/modern/read-types.d.ts +5 -2
  227. package/dist/components/form/Form/modern/store.js +12 -11
  228. package/dist/components/form/Form/modern/store.js.map +1 -1
  229. package/dist/components/form/Form/modern/types.d.ts +1 -8
  230. package/dist/components/form/Form/modern/validation.js +1 -1
  231. package/dist/components/form/Form/modern/values.js +6 -2
  232. package/dist/components/form/Form/modern/values.js.map +1 -1
  233. package/dist/components/form/Form/use-field/use-field-binding.js +3 -6
  234. package/dist/components/form/Form/use-field/use-field-binding.js.map +1 -1
  235. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  236. package/dist/components/form/Form/use-field/use-field.js +1 -1
  237. package/dist/components/form/Form/use-form.js +1 -1
  238. package/dist/components/form/Form/validation.js +1 -1
  239. package/dist/components/form/Label.js +1 -1
  240. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  241. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  242. package/dist/components/form/validation/use-validation-props.js +1 -1
  243. package/dist/components/form/wrapper.js +1 -1
  244. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  245. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  246. package/dist/components/layout/Board/Board.js +1 -1
  247. package/dist/components/layout/Board/BoardProvider.js +1 -1
  248. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  249. package/dist/components/layout/Board/Widget.js +1 -1
  250. package/dist/components/layout/Board/WidgetHost.js +1 -1
  251. package/dist/components/layout/Board/board-context.js +1 -1
  252. package/dist/components/layout/Board/board-store.js +1 -1
  253. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  254. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  255. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  256. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  257. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  258. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  259. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  260. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  261. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  262. package/dist/components/layout/Board/index.js +1 -1
  263. package/dist/components/layout/Board/responsive-utils.js +1 -1
  264. package/dist/components/layout/Board/use-board-layout.js +1 -1
  265. package/dist/components/layout/Board/use-board-registry.js +1 -1
  266. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  267. package/dist/components/layout/Board/use-board-selection.js +1 -1
  268. package/dist/components/layout/Flex.js +1 -1
  269. package/dist/components/layout/Flow.js +1 -1
  270. package/dist/components/layout/Grid.js +1 -1
  271. package/dist/components/layout/Panel.js +1 -1
  272. package/dist/components/layout/Prefix.js +1 -1
  273. package/dist/components/layout/ResizablePanel.js +1 -1
  274. package/dist/components/layout/Space.js +1 -1
  275. package/dist/components/layout/Suffix.js +1 -1
  276. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  277. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  278. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  279. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  280. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  281. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  282. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  283. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  284. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  285. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  286. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  287. package/dist/components/navigation/Tabs/styled.js +1 -1
  288. package/dist/components/navigation/Tabs/types.js +1 -1
  289. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  290. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  291. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  292. package/dist/components/other/Calendar/Calendar.js +1 -1
  293. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  294. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  295. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  296. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  297. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  298. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  299. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  300. package/dist/components/other/Calendar/styled.js +1 -1
  301. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  302. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  303. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  304. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  305. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  306. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  307. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  308. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  309. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  310. package/dist/components/overlays/Dialog/context.js +1 -1
  311. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  312. package/dist/components/overlays/Modal/Modal.js +1 -1
  313. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  314. package/dist/components/overlays/Modal/Overlay.js +1 -1
  315. package/dist/components/overlays/Modal/Popover.js +1 -1
  316. package/dist/components/overlays/Modal/Tray.js +1 -1
  317. package/dist/components/overlays/Modal/Underlay.js +1 -1
  318. package/dist/components/overlays/Notifications/Notification.js +1 -1
  319. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  320. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  321. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  322. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  323. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  324. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  325. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  326. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  327. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  328. package/dist/components/overlays/Notifications/index.js +1 -1
  329. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  330. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  331. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  332. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  333. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  334. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  335. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  336. package/dist/components/overlays/Toast/index.js +1 -1
  337. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  338. package/dist/components/overlays/Toast/useToast.js +1 -1
  339. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  340. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  341. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  342. package/dist/components/overlays/Tooltip/context.js +1 -1
  343. package/dist/components/portal/Portal.js +1 -1
  344. package/dist/components/portal/PortalProvider.js +1 -1
  345. package/dist/components/portal/usePortal.js +1 -1
  346. package/dist/components/shared/DraggableCollection.js +1 -1
  347. package/dist/components/shared/InvalidIcon.js +1 -1
  348. package/dist/components/shared/ValidIcon.js +1 -1
  349. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  350. package/dist/components/status/Spin/Cube.js +1 -1
  351. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  352. package/dist/components/status/Spin/Spin.js +1 -1
  353. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  354. package/dist/data/item-themes.js +1 -1
  355. package/dist/data/themes.js +1 -1
  356. package/dist/eslint-plugin/defaults.generated.js +1 -1
  357. package/dist/eslint-plugin/index.js +1 -1
  358. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  359. package/dist/i18n/I18nProvider.js +1 -1
  360. package/dist/i18n/createFormatter.js +1 -1
  361. package/dist/i18n/index.js +1 -1
  362. package/dist/i18n/instance.js +1 -1
  363. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  364. package/dist/i18n/locales/en-US/uikit.js +1 -1
  365. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  366. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  367. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  368. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  369. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  370. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  371. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  372. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  373. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  374. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  375. package/dist/i18n/locales.js +1 -1
  376. package/dist/i18n/useFormatter.js +1 -1
  377. package/dist/i18n/useI18n.js +1 -1
  378. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  379. package/dist/icons/AdjustmentsIcon.js +1 -1
  380. package/dist/icons/AiIcon.js +1 -1
  381. package/dist/icons/AreaChartIcon.js +1 -1
  382. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  383. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  384. package/dist/icons/BackwardIcon.js +1 -1
  385. package/dist/icons/BarChartIcon.js +1 -1
  386. package/dist/icons/BellFilledIcon.js +1 -1
  387. package/dist/icons/BellIcon.js +1 -1
  388. package/dist/icons/BooleanIcon.js +1 -1
  389. package/dist/icons/CalendarEditIcon.js +1 -1
  390. package/dist/icons/CalendarIcon.js +1 -1
  391. package/dist/icons/CaretDownIcon.js +1 -1
  392. package/dist/icons/CaretUpIcon.js +1 -1
  393. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  394. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  395. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  396. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  397. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  398. package/dist/icons/ChartBarLineIcon.js +1 -1
  399. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  400. package/dist/icons/ChartBarStackedIcon.js +1 -1
  401. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  402. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  403. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  404. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  405. package/dist/icons/ChartBubbleIcon.js +1 -1
  406. package/dist/icons/ChartDonut2Icon.js +1 -1
  407. package/dist/icons/ChartFunnelIcon.js +1 -1
  408. package/dist/icons/ChartHeatmapIcon.js +1 -1
  409. package/dist/icons/ChartKPIIcon.js +1 -1
  410. package/dist/icons/ChartPie2Icon.js +1 -1
  411. package/dist/icons/ChartScatterIcon.js +1 -1
  412. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  413. package/dist/icons/CheckCircleIcon.js +1 -1
  414. package/dist/icons/CheckIcon.js +1 -1
  415. package/dist/icons/CircleFilledIcon.js +1 -1
  416. package/dist/icons/ClearIcon.js +1 -1
  417. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  418. package/dist/icons/CloseCircleIcon.js +1 -1
  419. package/dist/icons/CloseIcon.js +1 -1
  420. package/dist/icons/CodeIcon.js +1 -1
  421. package/dist/icons/ColumnTotalIcon.js +1 -1
  422. package/dist/icons/CopyIcon.js +1 -1
  423. package/dist/icons/CountIcon.js +1 -1
  424. package/dist/icons/CubeIcon.js +1 -1
  425. package/dist/icons/CubePauseIcon.js +1 -1
  426. package/dist/icons/CubePlayIcon.js +1 -1
  427. package/dist/icons/CurrencyDollarIcon.js +1 -1
  428. package/dist/icons/DangerIcon.js +1 -1
  429. package/dist/icons/DashboardIcon.js +1 -1
  430. package/dist/icons/DatabaseIcon.js +1 -1
  431. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  432. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  433. package/dist/icons/DirectionIcon.js +1 -1
  434. package/dist/icons/DonutIcon.js +1 -1
  435. package/dist/icons/DownIcon.js +1 -1
  436. package/dist/icons/EditIcon.js +1 -1
  437. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  438. package/dist/icons/ExclamationCircleIcon.js +1 -1
  439. package/dist/icons/ExclamationIcon.js +1 -1
  440. package/dist/icons/EyeIcon.js +1 -1
  441. package/dist/icons/EyeInvisibleIcon.js +1 -1
  442. package/dist/icons/FilterIcon.js +1 -1
  443. package/dist/icons/FolderFilledIcon.js +1 -1
  444. package/dist/icons/FolderIcon.js +1 -1
  445. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  446. package/dist/icons/FolderOpenIcon.js +1 -1
  447. package/dist/icons/ForwardIcon.js +1 -1
  448. package/dist/icons/GripVerticalIcon.js +1 -1
  449. package/dist/icons/HierarchyIcon.js +1 -1
  450. package/dist/icons/HierarchyOpenIcon.js +1 -1
  451. package/dist/icons/Icon.js +1 -1
  452. package/dist/icons/InfoCircleIcon.js +1 -1
  453. package/dist/icons/InfoIcon.js +1 -1
  454. package/dist/icons/KeyIcon.js +1 -1
  455. package/dist/icons/LeftIcon.js +1 -1
  456. package/dist/icons/LineChartIcon.js +1 -1
  457. package/dist/icons/LoadingIcon.js +1 -1
  458. package/dist/icons/LockFilledIcon.js +1 -1
  459. package/dist/icons/LockIcon.js +1 -1
  460. package/dist/icons/MoreIcon.js +1 -1
  461. package/dist/icons/NotAllowedIcon.js +1 -1
  462. package/dist/icons/Number123Icon.js +1 -1
  463. package/dist/icons/NumberIcon.js +1 -1
  464. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  465. package/dist/icons/PauseCircleIcon.js +1 -1
  466. package/dist/icons/PauseIcon.js +1 -1
  467. package/dist/icons/PercentageIcon.js +1 -1
  468. package/dist/icons/PieChartIcon.js +1 -1
  469. package/dist/icons/PipetteIcon.js +1 -1
  470. package/dist/icons/PlayCircleIcon.js +1 -1
  471. package/dist/icons/PlayIcon.js +1 -1
  472. package/dist/icons/PlusIcon.js +1 -1
  473. package/dist/icons/ProgressBarIcon.js +1 -1
  474. package/dist/icons/ReloadIcon.js +1 -1
  475. package/dist/icons/ReportIcon.js +1 -1
  476. package/dist/icons/ReturnIcon.js +1 -1
  477. package/dist/icons/RightIcon.js +1 -1
  478. package/dist/icons/RowTotalsIcon.js +1 -1
  479. package/dist/icons/SchemeIcon.js +1 -1
  480. package/dist/icons/SearchIcon.js +1 -1
  481. package/dist/icons/SemanticQueryIcon.js +1 -1
  482. package/dist/icons/SettingsIcon.js +1 -1
  483. package/dist/icons/ShieldFilledIcon.js +1 -1
  484. package/dist/icons/ShieldIcon.js +1 -1
  485. package/dist/icons/SlashIcon.js +1 -1
  486. package/dist/icons/SparklesIcon.js +1 -1
  487. package/dist/icons/SqlIcon.js +1 -1
  488. package/dist/icons/StatsIcon.js +1 -1
  489. package/dist/icons/StopIcon.js +1 -1
  490. package/dist/icons/StringIcon.js +1 -1
  491. package/dist/icons/SubtotalsIcon.js +1 -1
  492. package/dist/icons/SwitchIcon.js +1 -1
  493. package/dist/icons/TableIcon.js +1 -1
  494. package/dist/icons/ThumbsDownIcon.js +1 -1
  495. package/dist/icons/ThumbsUpIcon.js +1 -1
  496. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  497. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  498. package/dist/icons/ThunderboltIcon.js +1 -1
  499. package/dist/icons/TimeIcon.js +1 -1
  500. package/dist/icons/TrashIcon.js +1 -1
  501. package/dist/icons/UnlockIcon.js +1 -1
  502. package/dist/icons/UpIcon.js +1 -1
  503. package/dist/icons/UserGroupIcon.js +1 -1
  504. package/dist/icons/UserIcon.js +1 -1
  505. package/dist/icons/UserLockIcon.js +1 -1
  506. package/dist/icons/ViewIcon.js +1 -1
  507. package/dist/icons/WarningFilledIcon.js +1 -1
  508. package/dist/icons/WarningIcon.js +1 -1
  509. package/dist/icons/wrap-icon.js +1 -1
  510. package/dist/index.js +1 -1
  511. package/dist/probe/canonicalize.js +1 -1
  512. package/dist/probe/css.js +1 -1
  513. package/dist/probe/index.js +1 -1
  514. package/dist/provider.js +1 -1
  515. package/dist/providers/TrackingProvider.js +1 -1
  516. package/dist/providers/navigationAdapter.default.js +1 -1
  517. package/dist/tokens/all-tokens.js +1 -1
  518. package/dist/tokens/base.js +1 -1
  519. package/dist/tokens/color-seed.js +1 -1
  520. package/dist/tokens/color-theme.js +1 -1
  521. package/dist/tokens/colors.js +1 -1
  522. package/dist/tokens/layout.js +1 -1
  523. package/dist/tokens/lazy-styles.js +1 -1
  524. package/dist/tokens/legacy-color.js +1 -1
  525. package/dist/tokens/palette-config.js +1 -1
  526. package/dist/tokens/palette.js +1 -1
  527. package/dist/tokens/resolve.js +1 -1
  528. package/dist/tokens/shadows.js +1 -1
  529. package/dist/tokens/sizes.js +1 -1
  530. package/dist/tokens/spacing.js +1 -1
  531. package/dist/tokens/typography.js +1 -1
  532. package/dist/utils/ResizeSensor.js +1 -1
  533. package/dist/utils/colors.js +1 -1
  534. package/dist/utils/dotize.js +1 -1
  535. package/dist/utils/is-dev-env.js +1 -1
  536. package/dist/utils/modules.js +1 -1
  537. package/dist/utils/promise.js +1 -1
  538. package/dist/utils/raf.js +1 -1
  539. package/dist/utils/random.js +1 -1
  540. package/dist/utils/range.js +1 -1
  541. package/dist/utils/react/RenderCache.js +1 -1
  542. package/dist/utils/react/Slots.js +1 -1
  543. package/dist/utils/react/chain.js +1 -1
  544. package/dist/utils/react/disabledProps.js +1 -1
  545. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  546. package/dist/utils/react/index.js +1 -1
  547. package/dist/utils/react/interactions.js +1 -1
  548. package/dist/utils/react/isTextOnly.js +1 -1
  549. package/dist/utils/react/mapProps.js +1 -1
  550. package/dist/utils/react/mergeProps.js +1 -1
  551. package/dist/utils/react/nullableValue.js +1 -1
  552. package/dist/utils/react/resolveIcon.js +1 -1
  553. package/dist/utils/react/sharedStore.js +1 -1
  554. package/dist/utils/react/useBufferedValue.js +1 -1
  555. package/dist/utils/react/useCombinedRefs.js +1 -1
  556. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  557. package/dist/utils/react/useEventBus.js +1 -1
  558. package/dist/utils/react/useId.js +1 -1
  559. package/dist/utils/react/useIsDarwin.js +1 -1
  560. package/dist/utils/react/useKeySymbols.js +1 -1
  561. package/dist/utils/react/useLayoutEffect.js +1 -1
  562. package/dist/utils/react/useLocalStorage.js +1 -1
  563. package/dist/utils/react/useMergeStyles.js +1 -1
  564. package/dist/utils/react/usePopoverSync.js +1 -1
  565. package/dist/utils/react/useQaProps.js +1 -1
  566. package/dist/utils/react/useScheme.js +1 -1
  567. package/dist/utils/react/useViewportSize.js +1 -1
  568. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  569. package/dist/utils/selection.js +1 -1
  570. package/dist/utils/styles.js +1 -1
  571. package/dist/utils/tree.js +1 -1
  572. package/dist/utils/warnings.js +1 -1
  573. package/dist/version.js +2 -2
  574. package/docs/CreateComponent.md +1 -1
  575. package/docs/FieldProperties.md +10 -3
  576. package/docs/Usage.md +1 -1
  577. package/docs/components/form/Form.md +5 -5
  578. package/docs/modern-form-migration.md +36 -34
  579. package/package.json +1 -1
@@ -15,7 +15,7 @@ Creating a component involves several optional but recommended elements:
15
15
 
16
16
  Everything is optional - you can create simplified components without all features, but exported UI Kit components should be feature-rich and consistent.
17
17
 
18
- Form-aware inputs use `useFieldProps` for both legacy instances and modern controllers. Map the control’s value API with `valuePropsMapper` and pass the resolved props to `wrapWithField`. The hook owns modern registration after commit, narrow subscriptions, cleanup, and unique accessible ids. Do not register during render, call the legacy adapter directly, or wrap a modern control in `Form.Item`. Modern validation options (`rules`, `deps`, `dependsOn`, `rulesKey`, `validationDelay`, `validateTrigger`, `errorPolicy`) flow through the same hook. Validators receive an AbortSignal and return or reject with a message; use `deps` for external closure inputs. Extend `FieldBaseProps<Value>` to constrain typed modern descriptors to the control’s actual value API; `useFieldProps` resolves descriptors and strips them before DOM forwarding. See [Form](./components/form/Form.md) for the integration contract.
18
+ Form-aware inputs use `useFieldProps` for both legacy instances and modern controllers. Map the control’s value API with `valuePropsMapper` and pass the resolved props to `wrapWithField`. The hook owns modern registration after commit, narrow subscriptions, cleanup, and unique accessible ids. Do not register during render, call the legacy adapter directly, or wrap a modern control in `Form.Item`. Modern validation options (`rules`, `deps`, `dependsOn`, `rulesKey`, `validationDelay`, `validateTrigger`, `errorPolicy`) flow through the same hook. Validators receive an AbortSignal and return or reject with a message; use `deps` for external closure inputs. Extend `FieldBaseProps<Value>` to constrain typed modern descriptors to accepted model values, including `null | undefined` when supported even if change callbacks emit only non-null values; `useFieldProps` resolves descriptors and strips them before DOM forwarding. Descriptor options override only the input options they explicitly supply; put custom validation and structural rules together on the descriptor. See [Form](./components/form/Form.md) for the integration contract.
19
19
 
20
20
  The [compiled custom-control example](https://github.com/cube-js/cube-ui-kit/blob/main/typecheck/consumer/modern-form-examples.tsx) shows explicit DOM forwarding, async validation, and default adoption. Shared input rule props accept existing legacy validators; use `ModernValidationRule` for strict modern success/error return types, and adapt legacy validators that resolve data before migrating them.
21
21
 
@@ -6,9 +6,12 @@ When used inside a [Form](./components/form/Form.md), these properties are autom
6
6
 
7
7
  ## Identity & Form Integration
8
8
 
9
- - **`name`** `string` — Field name for form data binding. Required when used within a Form.
10
- - **`form`** `CubeFormInstance` — Form instance. 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.
11
- - **`defaultValue`** `any` — Default value for the field in uncontrolled mode.
9
+ - **`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.
10
+ - **`name`** `string` — Field name for form data binding when a descriptor is not supplied.
11
+ - **`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.
12
+ - **`defaultValue`** `any` — Initial field value. Modern controller values/defaults take precedence, including explicit `null` and `undefined`.
13
+ - **`preserve`** `boolean` (modern default: `true`) — Retain the value after the last input for this field unmounts.
14
+ - **`isEqual`** `(previous, next) => boolean` — Modern field dirty-value comparator.
12
15
  - **`id`** `string` — Unique ID for the field element.
13
16
  - **`idPrefix`** `string` — ID prefix to avoid collisions between multiple forms.
14
17
 
@@ -67,6 +70,10 @@ When used inside a [Form](./components/form/Form.md), these properties are autom
67
70
  - **`rules`** `ValidationRule[]` — Array of validation rules for the field.
68
71
  - **`validateTrigger`** `'onBlur' | 'onChange' | 'onSubmit'` — When to trigger validation.
69
72
  - **`validationDelay`** `number` — Debounce delay in milliseconds before running validation.
73
+ - **`deps`** `readonly unknown[]` — Modern validator inputs captured from outside the form. Compared with `Object.is`; changes invalidate prior validation.
74
+ - **`dependsOn`** `readonly FormPath[]` — Explicit modern field dependencies. Validator reads also track dependencies automatically.
75
+ - **`rulesKey`** `string` — Explicit modern validator revision, checked alongside structural rule constraints.
76
+ - **`errorPolicy`** `'first' | 'all'` — Modern rule error collection policy, inherited from the controller by default.
70
77
  - **`showValid`** `boolean` — Whether to show the valid state icon after successful validation.
71
78
  - **`errorMessage`** `ReactNode` — Error message always displayed in danger state, regardless of validation state.
72
79
  - **`message`** `ReactNode` — _(deprecated)_ Use `errorMessage` for errors and `description` for help text.
package/docs/Usage.md CHANGED
@@ -473,7 +473,7 @@ const [form] = useForm();
473
473
 
474
474
  `Form.useController()` is the explicit modern alternative. Its creator does not subscribe; use `Form.useSelector(controller, selector, { isEqual })` or `<Form.Subscribe>` for reactive reads, and `Form.useControllerContext()` for descendant access. Named UI Kit inputs bind to modern controllers through commit-time registration and per-field subscriptions. Custom controls use `useFieldProps`; `Form.Item` remains legacy-only. Modern rules support cancellation, delayed validation, and ReactNode errors. Root callbacks and `Form.Submit`, `Form.Reset`, and `Form.SubmitError` use the modern pipeline; native action forms keep browser submission. Known keys and nested tuple commands infer their value types; dynamic paths stay supported. See the [Form documentation](./components/form/Form.md) for scope, defaults, and SSR contracts, and the [migration checklist](https://github.com/cube-js/cube-ui-kit/blob/main/docs/modern-form-migration.md) before converting an existing form.
475
475
 
476
- For new modern forms, prefer `<TextInput field={form.field('email', { validate, deps })} />`; descriptors check names and value types and support nested tuple paths. `Form.useValue(form, path)` and `Form.useFieldState(form, path)` provide narrow reactive reads. Hook callbacks stay fresh after commit; defaults change through explicit commands. Validator field reads track dependencies automatically; external captures belong in `deps`. Submission failures are discriminated by `status`, and explicit-controller action/error helpers work in external footers. `<Form submitValues="all">` includes retained values while continuing to validate active fields.
476
+ For new modern forms, prefer `<TextInput field={form.field('email', { validate, deps })} />`; descriptors check names and value types and support nested tuple paths. Built-in bindings accept nullable model values without replacing stored `null` with display fallbacks; declare `null` in the model when it can come from the API. `Form.useValue(form, path)` and `Form.useFieldState(form, path)` provide narrow reactive reads; date-control values retain their methods and types. Hook callbacks stay fresh after commit; defaults change through explicit commands. Validator field reads track dependencies automatically; external captures belong in `deps`. Submission failures are discriminated by `status`, and explicit-controller action/error helpers work in external footers. `<Form submitValues="all">` includes retained values while continuing to validate active fields.
477
477
 
478
478
  Returns a `CubeFormInstance` with:
479
479
 
@@ -42,7 +42,9 @@ Removing a field removes it from `activeValues` immediately and retains its valu
42
42
 
43
43
  ### Typed fields and focused reads
44
44
 
45
- Prefer typed descriptors for new modern forms. `form.field(path, options)` is pure configuration: it does not read current values, register a field, or subscribe the owner. Inputs register after commit and infer their allowed value type from `FieldBaseProps<Value>`. A descriptor takes precedence over `form`/`name`; its options take precedence over matching input validation/default options. Keep presentation such as labels and `isRequired` on the input. Existing `name` bindings remain available for legacy-compatible controls.
45
+ Prefer typed descriptors for new modern forms. `form.field(path, options)` is pure configuration: it does not read current values, register a field, or subscribe the owner. Inputs register after commit and infer their allowed value type from `FieldBaseProps<Value>`. A descriptor takes precedence over `form`/`name`; only options it supplies override matching input options. Put `rules` and `validate` together on the descriptor: supplying either replaces input-level `rules`, while a descriptor with neither preserves them. Keep presentation such as labels and `isRequired` on the input. Existing `name` bindings remain available for legacy-compatible controls.
46
+
47
+ Typed built-in field bindings accept `null` and `undefined` alongside their normal model value, so nullable API responses can be used directly. Display normalization does not change the stored value: a switch displays `null` as unchecked and a text input displays it as empty, while the form retains `null` until an edit or explicit command changes it. Controls keep their existing change payloads (for example, switches emit booleans), and reset restores nullable defaults. Declare nullable fields in the model so validators and value selectors also include `null`.
46
48
 
47
49
  ```tsx
48
50
  const form = Form.useController<Profile>({
@@ -62,13 +64,13 @@ const form = Form.useController<Profile>({
62
64
 
63
65
  `validate(value, context)` infers the field value and checked paths in `context.getValue(path)`. Declare external inputs with `deps`, compared by `Object.is`. Field reads through `getValue` automatically become dependencies; `getValues()` depends on the whole values object. `dependsOn` can declare paths before the validator reads them. Each run reads one captured snapshot. Changes abort obsolete work, invalidate the dependent result, and revalidate previously validated or validating fields (unless a value command requests `validate: 'never'`). Rule/dependency changes preserve visible errors while the replacement run is pending. Inline function identity does not restart validation, so change `deps` when captured inputs change.
64
66
 
65
- Use `Form.useValue(form, path)` for a reactive value and `Form.useFieldState(form, path)` for typed value/defaults, errors, status, dirty/touched, and active state. Both support nested tuples and subscribe only to their selection; place them in leaf components when the form owner should not rerender. State may be `undefined` before a field has registered. Snapshot read types are deeply readonly and potentially incomplete; use controller commands for writes.
67
+ Use `Form.useValue(form, path)` for a reactive value and `Form.useFieldState(form, path)` for typed value/defaults, errors, status, dirty/touched, and active state. Both support nested tuples and subscribe only to their selection; place them in leaf components when the form owner should not rerender. State may be `undefined` before a field has registered. Plain objects and arrays have deeply readonly, potentially incomplete read types; use controller commands for writes. Platform values and date-control values (`CalendarDate`, `CalendarDateTime`, `ZonedDateTime`, and `Time`) retain their types and methods.
66
68
 
67
69
  ### Modern actions and errors
68
70
 
69
71
  `<Form submitValues="all">` includes retained values for native Enter and button submission; the default is `active`. Validation still targets active registrations. Explicit-controller Submit buttons target that controller even in an external footer or another DOM form, preserve native action forms, and submit once. `disableOnInvalid={false}` allows a modern Submit button to run validation while errors are visible; the default remains `true`. Reset is enabled when values, interaction state, validation state, or submit errors can be reset; root reset cancellation is honored.
70
72
 
71
- Root business callbacks override hook callbacks while mounted. Omitted or undefined root callbacks restore the latest committed hook callback. Changing defaults remains an explicit command. Unmounting the owning root cancels pending submission.
73
+ Root business callbacks override hook callbacks while mounted. Omitted or undefined root callbacks restore the latest committed hook callback. Changing defaults remains an explicit command. Unmounting the owning root cancels pending submission. Use one owning root per controller; duplicate roots report a development error and the newest binding wins.
72
74
 
73
75
  `onSubmitFailed` receives `{ status: 'invalid', errors }` for validation failures and `{ status: 'failed', error }` for submission exceptions. `<Form.SubmitError form={form} renderError={error => ...} />` supports external placement and application-specific formatting. Omit `renderError` for the existing safe generic fallback.
74
76
 
@@ -80,8 +82,6 @@ Use `rules`, `isRequired`, `validateTrigger`, and `validationDelay` on named inp
80
82
 
81
83
  `errorPolicy: 'first' | 'all'` controls rule-order errors (default `first`), on the creator or individual field. Equivalent inline rules do not restart validation: primitive constraints and RegExp source/flags form the signature; messages and function identity/source do not. Use `deps` for external captured inputs. `rulesKey` remains an additional revision key and never suppresses structural constraint checks. The latest updated duplicate registration owns its rules and trigger.
82
84
 
83
- `<Form onSubmit={save} onSubmitFailed={report} onValuesChange={changed}>` binds the current callbacks after commit. A callback changed to `undefined` falls back to the creator's initial callback. Unmount releases only that root's binding and cancels its pending submission. Use one owning root per controller; duplicate roots report a development error and the newest binding wins.
84
-
85
85
  `form.submit()` validates and submits `activeValues`; `form.submit({ include: 'all' })` includes retained values deliberately. `onSubmit(values, { include, signal })` may return a promise. Concurrent submissions return `{ status: 'ignored', reason: 'submitting' }`; other results are `submitted`, `invalid` with an error map, `failed` with an error, or `stale` after cancellation. Validation failures call `onSubmitFailed({ status: 'invalid', errors })` without setting `submitError`; submission failures call it with `{ status: 'failed', error }` and set the error. Submit start and reset clear `submitError`; ordinary edits keep it. Explicit error commands remain available. A modern root without `action` prevents navigation and routes submission to the controller. A native `action`/`method` form preserves browser submission and bypasses the controller pipeline.
86
86
 
87
87
  For SSR, seed the controller with the same serializable `defaultValues` on server and client. Server rendering and initial hydration select the cached creation snapshot; after hydration, subscribers catch up to current client state. Prepare server data before creating the controller. Each mount owns a separate controller, and subscriptions clean up on unmount; Strict Mode effect replay does not dispose live controllers.
@@ -33,6 +33,32 @@ The following API mapping describes migration choices; names are not mechanicall
33
33
 
34
34
  `DialogForm` and Cloud's `NarrowForm` / `SaveableCard` currently expose legacy instance contracts. Keep their callers legacy until the wrapper itself is migrated and verified. Passing a modern controller through a cast does not migrate the wrapper. `Form.Item`, legacy mutable flags, and the legacy `Form.Context` instance shape remain compatibility APIs.
35
35
 
36
+ ## Typed fields and focused reads
37
+
38
+ Prefer typed descriptors for new modern forms. `form.field(path, options)` is pure configuration: it does not read current values, register a field, or subscribe the owner. Inputs register after commit and infer their allowed value type from `FieldBaseProps<Value>`. A descriptor takes precedence over `form`/`name`; only options it supplies override matching input options. Put `rules` and `validate` together on the descriptor: supplying either replaces input-level `rules`, while a descriptor with neither preserves them. Keep presentation such as labels and `isRequired` on the input. Existing `name` bindings remain available for legacy-compatible controls.
39
+
40
+ Typed built-in field bindings accept `null` and `undefined` alongside their normal model value, so nullable API responses can be used directly. Display normalization does not change the stored value: a switch displays `null` as unchecked and a text input displays it as empty, while the form retains `null` until an edit or explicit command changes it. Controls keep their existing change payloads (for example, switches emit booleans), and reset restores nullable defaults. Declare nullable fields in the model so validators and value selectors also include `null`.
41
+
42
+ ```tsx
43
+ const form = Form.useController<Profile>({
44
+ defaultValues: initialProfile,
45
+ onSubmit: (values, { signal }) => save(accountId, values, signal),
46
+ });
47
+
48
+ <TextInput field={form.field(['profile', 'name'])} label="Name" />;
49
+ <TextInput
50
+ field={form.field('email', {
51
+ deps: [organizationId],
52
+ validate: (value, { signal }) => checkEmail(organizationId, value, signal),
53
+ })}
54
+ label="Email"
55
+ />;
56
+ ```
57
+
58
+ `validate(value, context)` infers the field value and checked paths in `context.getValue(path)`. Declare external inputs with `deps`, compared by `Object.is`. Field reads through `getValue` automatically become dependencies; `getValues()` depends on the whole values object. `dependsOn` can declare paths before the validator reads them. Each run reads one captured snapshot. Changes abort obsolete work, invalidate the dependent result, and revalidate previously validated or validating fields (unless a value command requests `validate: 'never'`). Rule/dependency changes preserve visible errors while the replacement run is pending. Inline function identity does not restart validation, so change `deps` when captured inputs change.
59
+
60
+ Use `Form.useValue(form, path)` for a reactive value and `Form.useFieldState(form, path)` for typed value/defaults, errors, status, dirty/touched, and active state. Both support nested tuples and subscribe only to their selection; place them in leaf components when the form owner should not rerender. State may be `undefined` before a field has registered. Plain objects and arrays have deeply readonly, potentially incomplete read types; use controller commands for writes. Platform values and date-control values (`CalendarDate`, `CalendarDateTime`, `ZonedDateTime`, and `Time`) retain their types and methods.
61
+
36
62
  ## Subscribe where the UI reads state
37
63
 
38
64
  Creation does not subscribe the component. A selector subscribes its caller; a `Form.Subscribe` render function subscribes only that subtree. A colocated selector is valid when the whole creator should render on that selection. Otherwise place the selector in a child or use `Subscribe`.
@@ -84,53 +110,29 @@ Built-in named inputs register after commit and select only their value, errors,
84
110
 
85
111
  For modern custom validators, return an error (including a ReactNode), or throw/reject it. Return undefined, null, or an empty string on success. A legacy validator that resolves a data object must be adapted: a modern validator treats that result as an error. Use `ModernValidationRule` to check authored modern rules strictly; shared input props remain permissive enough for existing legacy rules. Legacy forms keep their existing validator behavior.
86
112
 
87
- Validators receive `{ signal, name, getValue, getValues }` as the third argument. Pass the signal to network requests. Superseded work settles as stale even if the validator ignores cancellation. Use `rulesKey` for dependencies captured by a validator whose function source stays the same (for example, an organization id). Keep service callbacks stable or include their revision in that key too. Equivalent rule signatures do not restart pending validation.
113
+ Validators receive `{ signal, name, getValue, getValues }` as the third argument. Pass the signal to network requests. Superseded work settles as stale even if the validator ignores cancellation. List external captured inputs in `deps` (for example, `deps: [organizationId, checkEmail]`). Field reads track dependencies automatically; use `dependsOn` to declare them before an asynchronous validator reads them. `rulesKey` is an optional explicit revision. Function identity and source text do not restart validation; structural rule changes, changed `deps`, and changed `rulesKey` do.
88
114
 
89
115
  `validationDelay` coalesces automatic validation; explicit validation and submission run immediately by default. Auto writes revalidate on-change fields and fields already showing errors. On-blur fields otherwise wait for blur. `errorPolicy` chooses first/all rule errors. Errors remain visible while revalidating and clear on nonvalidating edits.
90
116
 
91
117
  Root `onSubmit` receives the selected payload and an abort signal; `onSubmitFailed` receives `{ status: 'invalid', errors }` or `{ status: 'failed', error }`. Concurrent submits are ignored. Reset and owning-root release cancel pending submission. Submit start and reset clear `submitError`; ordinary edits keep it. `Form.Submit`, `Form.Reset`, and `Form.SubmitError` subscribe to the modern state. Native `action`/`method` forms continue browser navigation and bypass this pipeline.
92
118
 
119
+ ## Modern actions and errors
120
+
121
+ `<Form submitValues="all">` includes retained values for native Enter and button submission; the default is `active`. Validation still targets active registrations. Explicit-controller Submit buttons target that controller even in an external footer or another DOM form, preserve native action forms, and submit once. `disableOnInvalid={false}` allows a modern Submit button to run validation while errors are visible; the default remains `true`. Reset is enabled when values, interaction state, validation state, or submit errors can be reset; root reset cancellation is honored.
122
+
123
+ Root business callbacks override hook callbacks while mounted. Omitted or undefined root callbacks restore the latest committed hook callback. Changing defaults remains an explicit command. Unmounting the owning root cancels pending submission.
124
+
125
+ `onSubmitFailed` receives `{ status: 'invalid', errors }` for validation failures and `{ status: 'failed', error }` for submission exceptions. `<Form.SubmitError form={form} renderError={error => ...} />` supports external placement and application-specific formatting. Omit `renderError` for the existing safe generic fallback.
126
+
93
127
  ## Per-form migration checklist
94
128
 
95
129
  1. Record existing defaults, validation timing, dynamic names, conditionally mounted fields, and submitted payloads. Keep the legacy form available for a rollback.
96
130
  2. Check surrounding wrappers. Migrate a wrapper explicitly or choose a form that does not rely on its legacy instance API.
97
131
  3. Create a typed controller and move initial defaults into its creation options. Choose adoption/reset semantics for later data.
98
132
  4. Replace render-time getters and flags with narrow selectors or `Subscribe`. Update custom controls through `useFieldProps`.
99
- 5. Adapt validators' success values and cancellation, and version captured dependencies with `rulesKey`.
133
+ 5. Adapt validators' success values and cancellation, and declare external captured inputs in `deps`.
100
134
  6. Decide whether hidden fields are retained and whether submission uses active or all values. Verify the actual payload with conditional sections both visible and hidden.
101
135
  7. Test required/async errors, double submit, server failure, reset, unmount during requests, keyboard focus, and navigation guards. Confirm unaffected fields and the creator do not rerender on each keystroke.
102
136
  8. Run source and built-consumer type checks, the frozen legacy contract suite, React 18/19 compiler checks, and relevant browser checks. Review visual changes before merging.
103
137
 
104
138
  To revert a migrated form, render the preserved legacy component again and restore its legacy defaults/callback/validator contracts. Remount the boundary and deliberately transfer serializable draft values if needed. Do not cast the modern controller to a legacy instance or toggle hook implementations in place.
105
-
106
- ### Typed fields and focused reads
107
-
108
- Prefer typed descriptors for new modern forms. `form.field(path, options)` is pure configuration: it does not read current values, register a field, or subscribe the owner. Inputs register after commit and infer their allowed value type from `FieldBaseProps<Value>`. A descriptor takes precedence over `form`/`name`; its options take precedence over matching input validation/default options. Keep presentation such as labels and `isRequired` on the input. Existing `name` bindings remain available for legacy-compatible controls.
109
-
110
- ```tsx
111
- const form = Form.useController<Profile>({
112
- defaultValues: initialProfile,
113
- onSubmit: (values, { signal }) => save(accountId, values, signal),
114
- });
115
-
116
- <TextInput field={form.field(['profile', 'name'])} label="Name" />;
117
- <TextInput
118
- field={form.field('email', {
119
- deps: [organizationId],
120
- validate: (value, { signal }) => checkEmail(organizationId, value, signal),
121
- })}
122
- label="Email"
123
- />;
124
- ```
125
-
126
- `validate(value, context)` infers the field value and checked paths in `context.getValue(path)`. Declare external inputs with `deps`, compared by `Object.is`. Field reads through `getValue` automatically become dependencies; `getValues()` depends on the whole values object. `dependsOn` can declare paths before the validator reads them. Each run reads one captured snapshot. Changes abort obsolete work, invalidate the dependent result, and revalidate previously validated or validating fields (unless a value command requests `validate: 'never'`). Rule/dependency changes preserve visible errors while the replacement run is pending. Inline function identity does not restart validation, so change `deps` when captured inputs change.
127
-
128
- Use `Form.useValue(form, path)` for a reactive value and `Form.useFieldState(form, path)` for typed value/defaults, errors, status, dirty/touched, and active state. Both support nested tuples and subscribe only to their selection; place them in leaf components when the form owner should not rerender. State may be `undefined` before a field has registered. Snapshot read types are deeply readonly and potentially incomplete; use controller commands for writes.
129
-
130
- ### Modern actions and errors
131
-
132
- `<Form submitValues="all">` includes retained values for native Enter and button submission; the default is `active`. Validation still targets active registrations. Explicit-controller Submit buttons target that controller even in an external footer or another DOM form, preserve native action forms, and submit once. `disableOnInvalid={false}` allows a modern Submit button to run validation while errors are visible; the default remains `true`. Reset is enabled when values, interaction state, validation state, or submit errors can be reset; root reset cancellation is honored.
133
-
134
- Root business callbacks override hook callbacks while mounted. Omitted or undefined root callbacks restore the latest committed hook callback. Changing defaults remains an explicit command. Unmounting the owning root cancels pending submission.
135
-
136
- `onSubmitFailed` receives `{ status: 'invalid', errors }` for validation failures and `{ status: 'failed', error }` for submission exceptions. `<Form.SubmitError form={form} renderError={error => ...} />` supports external placement and application-specific formatting. Omit `renderError` for the existing safe generic fallback.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cube-dev/ui-kit",
3
- "version": "0.0.0-canary-1672a95",
3
+ "version": "0.0.0-canary-448aeb3",
4
4
  "type": "module",
5
5
  "description": "UIKit for Cube Projects",
6
6
  "repository": {