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

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 (585) 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 +1 -0
  18. package/dist/components/actions/Button/Button.js +1 -1
  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 +1 -1
  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 +1 -1
  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 +2 -1
  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 +1 -0
  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.js +1 -1
  131. package/dist/components/fields/Checkbox/CheckboxGroup.js +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.js +1 -1
  161. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  162. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  163. package/dist/components/fields/Input/Input.js +1 -1
  164. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  165. package/dist/components/fields/ListBox/ListBox.js +1 -1
  166. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  167. package/dist/components/fields/ListBoxPopover/index.d.ts +1 -0
  168. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  169. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +2 -0
  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.js +1 -1
  177. package/dist/components/fields/RadioGroup/context.js +1 -1
  178. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  179. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  180. package/dist/components/fields/Select/Select.js +1 -1
  181. package/dist/components/fields/Slider/Gradation.js +1 -1
  182. package/dist/components/fields/Slider/HueSlider.js +1 -1
  183. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  184. package/dist/components/fields/Slider/Slider.js +1 -1
  185. package/dist/components/fields/Slider/SliderBase.js +1 -1
  186. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  187. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  188. package/dist/components/fields/Slider/elements.js +1 -1
  189. package/dist/components/fields/Slider/index.js +1 -1
  190. package/dist/components/fields/Switch/Switch.js +1 -1
  191. package/dist/components/fields/TextArea/TextArea.js +1 -1
  192. package/dist/components/fields/TextInput/TextInput.js +1 -1
  193. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  194. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  195. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  196. package/dist/components/fields/TriggerActions.js +1 -1
  197. package/dist/components/fields/color/ColorPanel.js +1 -1
  198. package/dist/components/fields/color/channels.js +1 -1
  199. package/dist/components/fields/color/color.js +1 -1
  200. package/dist/components/fields/color/context.js +1 -1
  201. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  202. package/dist/components/form/Form/Field.js +1 -1
  203. package/dist/components/form/Form/Form.js +1 -1
  204. package/dist/components/form/Form/ModernFormRoot.d.ts +3 -1
  205. package/dist/components/form/Form/ModernFormRoot.js +2 -3
  206. package/dist/components/form/Form/ModernFormRoot.js.map +1 -1
  207. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  208. package/dist/components/form/Form/SubmitButton/SubmitButton.d.ts +1 -1
  209. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  210. package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
  211. package/dist/components/form/Form/SubmitError.js +1 -1
  212. package/dist/components/form/Form/backend.js +1 -1
  213. package/dist/components/form/Form/index.js +1 -1
  214. package/dist/components/form/Form/modern/actions.js +11 -7
  215. package/dist/components/form/Form/modern/actions.js.map +1 -1
  216. package/dist/components/form/Form/modern/context.d.ts +1 -0
  217. package/dist/components/form/Form/modern/context.js +1 -1
  218. package/dist/components/form/Form/modern/controller.js +1 -1
  219. package/dist/components/form/Form/modern/field-binding.js +1 -1
  220. package/dist/components/form/Form/modern/field.js +9 -3
  221. package/dist/components/form/Form/modern/field.js.map +1 -1
  222. package/dist/components/form/Form/modern/react.js +6 -4
  223. package/dist/components/form/Form/modern/react.js.map +1 -1
  224. package/dist/components/form/Form/modern/store.js +28 -13
  225. package/dist/components/form/Form/modern/store.js.map +1 -1
  226. package/dist/components/form/Form/modern/types.d.ts +11 -1
  227. package/dist/components/form/Form/modern/validation.js +4 -4
  228. package/dist/components/form/Form/modern/validation.js.map +1 -1
  229. package/dist/components/form/Form/modern/values.js +12 -2
  230. package/dist/components/form/Form/modern/values.js.map +1 -1
  231. package/dist/components/form/Form/use-field/use-field-binding.js +4 -4
  232. package/dist/components/form/Form/use-field/use-field-binding.js.map +1 -1
  233. package/dist/components/form/Form/use-field/use-field-props.js +2 -2
  234. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  235. package/dist/components/form/Form/use-field/use-field.js +1 -1
  236. package/dist/components/form/Form/use-form.js +1 -1
  237. package/dist/components/form/Form/validation.js +1 -1
  238. package/dist/components/form/Label.js +1 -1
  239. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  240. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  241. package/dist/components/form/validation/use-validation-props.js +1 -1
  242. package/dist/components/form/wrapper.js +1 -1
  243. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  244. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  245. package/dist/components/layout/Board/Board.js +1 -1
  246. package/dist/components/layout/Board/BoardProvider.js +1 -1
  247. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  248. package/dist/components/layout/Board/Widget.js +1 -1
  249. package/dist/components/layout/Board/WidgetHost.js +1 -1
  250. package/dist/components/layout/Board/board-context.js +1 -1
  251. package/dist/components/layout/Board/board-store.js +1 -1
  252. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  253. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  254. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  255. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  256. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  257. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  258. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  259. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  260. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  261. package/dist/components/layout/Board/index.js +1 -1
  262. package/dist/components/layout/Board/responsive-utils.js +1 -1
  263. package/dist/components/layout/Board/use-board-layout.js +1 -1
  264. package/dist/components/layout/Board/use-board-registry.js +1 -1
  265. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  266. package/dist/components/layout/Board/use-board-selection.js +1 -1
  267. package/dist/components/layout/Flex.js +1 -1
  268. package/dist/components/layout/Flow.js +1 -1
  269. package/dist/components/layout/Grid.js +1 -1
  270. package/dist/components/layout/Panel.js +1 -1
  271. package/dist/components/layout/Prefix.js +1 -1
  272. package/dist/components/layout/ResizablePanel.js +1 -1
  273. package/dist/components/layout/Space.js +1 -1
  274. package/dist/components/layout/Suffix.js +1 -1
  275. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  276. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  277. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  278. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  279. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  280. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  281. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  282. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  283. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  284. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  285. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  286. package/dist/components/navigation/Tabs/styled.js +1 -1
  287. package/dist/components/navigation/Tabs/types.js +1 -1
  288. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  289. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  290. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  291. package/dist/components/other/Calendar/Calendar.js +1 -1
  292. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  293. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  294. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  295. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  296. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  297. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  298. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  299. package/dist/components/other/Calendar/styled.js +1 -1
  300. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  301. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  302. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  303. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  304. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  305. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  306. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  307. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  308. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  309. package/dist/components/overlays/Dialog/context.js +1 -1
  310. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  311. package/dist/components/overlays/Modal/Modal.d.ts +2 -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.d.ts +1 -0
  315. package/dist/components/overlays/Modal/Overlay.js +1 -1
  316. package/dist/components/overlays/Modal/Popover.js +1 -1
  317. package/dist/components/overlays/Modal/Tray.js +1 -1
  318. package/dist/components/overlays/Modal/Underlay.js +1 -1
  319. package/dist/components/overlays/Modal/types.d.ts +1 -0
  320. package/dist/components/overlays/Notifications/Notification.js +1 -1
  321. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  322. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  323. package/dist/components/overlays/Notifications/NotificationContext.d.ts +2 -0
  324. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  325. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  326. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  327. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  328. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  329. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  330. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  331. package/dist/components/overlays/Notifications/index.js +1 -1
  332. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  333. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  334. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  335. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  336. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  337. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  338. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  339. package/dist/components/overlays/Toast/index.js +1 -1
  340. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  341. package/dist/components/overlays/Toast/useToast.js +1 -1
  342. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  343. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  344. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  345. package/dist/components/overlays/Tooltip/context.js +1 -1
  346. package/dist/components/portal/Portal.js +1 -1
  347. package/dist/components/portal/PortalProvider.d.ts +2 -0
  348. package/dist/components/portal/PortalProvider.js +1 -1
  349. package/dist/components/portal/index.d.ts +1 -0
  350. package/dist/components/portal/usePortal.js +1 -1
  351. package/dist/components/shared/DraggableCollection.js +1 -1
  352. package/dist/components/shared/InvalidIcon.js +1 -1
  353. package/dist/components/shared/ValidIcon.js +1 -1
  354. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  355. package/dist/components/status/Spin/Cube.js +1 -1
  356. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  357. package/dist/components/status/Spin/Spin.js +1 -1
  358. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  359. package/dist/data/item-themes.js +1 -1
  360. package/dist/data/themes.js +1 -1
  361. package/dist/eslint-plugin/defaults.generated.js +1 -1
  362. package/dist/eslint-plugin/index.js +1 -1
  363. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  364. package/dist/i18n/I18nProvider.js +1 -1
  365. package/dist/i18n/createFormatter.js +1 -1
  366. package/dist/i18n/index.js +1 -1
  367. package/dist/i18n/instance.js +1 -1
  368. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  369. package/dist/i18n/locales/en-US/uikit.js +1 -1
  370. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  371. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  372. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  373. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  374. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  375. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  376. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  377. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  378. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  379. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  380. package/dist/i18n/locales.js +1 -1
  381. package/dist/i18n/useFormatter.js +1 -1
  382. package/dist/i18n/useI18n.js +1 -1
  383. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  384. package/dist/icons/AdjustmentsIcon.js +1 -1
  385. package/dist/icons/AiIcon.js +1 -1
  386. package/dist/icons/AreaChartIcon.js +1 -1
  387. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  388. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  389. package/dist/icons/BackwardIcon.js +1 -1
  390. package/dist/icons/BarChartIcon.js +1 -1
  391. package/dist/icons/BellFilledIcon.js +1 -1
  392. package/dist/icons/BellIcon.js +1 -1
  393. package/dist/icons/BooleanIcon.js +1 -1
  394. package/dist/icons/CalendarEditIcon.js +1 -1
  395. package/dist/icons/CalendarIcon.js +1 -1
  396. package/dist/icons/CaretDownIcon.js +1 -1
  397. package/dist/icons/CaretUpIcon.js +1 -1
  398. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  399. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  400. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  401. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  402. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  403. package/dist/icons/ChartBarLineIcon.js +1 -1
  404. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  405. package/dist/icons/ChartBarStackedIcon.js +1 -1
  406. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  407. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  408. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  409. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  410. package/dist/icons/ChartBubbleIcon.js +1 -1
  411. package/dist/icons/ChartDonut2Icon.js +1 -1
  412. package/dist/icons/ChartFunnelIcon.js +1 -1
  413. package/dist/icons/ChartHeatmapIcon.js +1 -1
  414. package/dist/icons/ChartKPIIcon.js +1 -1
  415. package/dist/icons/ChartPie2Icon.js +1 -1
  416. package/dist/icons/ChartScatterIcon.js +1 -1
  417. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  418. package/dist/icons/CheckCircleIcon.js +1 -1
  419. package/dist/icons/CheckIcon.js +1 -1
  420. package/dist/icons/CircleFilledIcon.js +1 -1
  421. package/dist/icons/ClearIcon.js +1 -1
  422. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  423. package/dist/icons/CloseCircleIcon.js +1 -1
  424. package/dist/icons/CloseIcon.js +1 -1
  425. package/dist/icons/CodeIcon.js +1 -1
  426. package/dist/icons/ColumnTotalIcon.js +1 -1
  427. package/dist/icons/CopyIcon.js +1 -1
  428. package/dist/icons/CountIcon.js +1 -1
  429. package/dist/icons/CubeIcon.js +1 -1
  430. package/dist/icons/CubePauseIcon.js +1 -1
  431. package/dist/icons/CubePlayIcon.js +1 -1
  432. package/dist/icons/CurrencyDollarIcon.js +1 -1
  433. package/dist/icons/DangerIcon.js +1 -1
  434. package/dist/icons/DashboardIcon.js +1 -1
  435. package/dist/icons/DatabaseIcon.js +1 -1
  436. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  437. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  438. package/dist/icons/DirectionIcon.js +1 -1
  439. package/dist/icons/DonutIcon.js +1 -1
  440. package/dist/icons/DownIcon.js +1 -1
  441. package/dist/icons/EditIcon.js +1 -1
  442. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  443. package/dist/icons/ExclamationCircleIcon.js +1 -1
  444. package/dist/icons/ExclamationIcon.js +1 -1
  445. package/dist/icons/EyeIcon.js +1 -1
  446. package/dist/icons/EyeInvisibleIcon.js +1 -1
  447. package/dist/icons/FilterIcon.js +1 -1
  448. package/dist/icons/FolderFilledIcon.js +1 -1
  449. package/dist/icons/FolderIcon.js +1 -1
  450. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  451. package/dist/icons/FolderOpenIcon.js +1 -1
  452. package/dist/icons/ForwardIcon.js +1 -1
  453. package/dist/icons/GripVerticalIcon.js +1 -1
  454. package/dist/icons/HierarchyIcon.js +1 -1
  455. package/dist/icons/HierarchyOpenIcon.js +1 -1
  456. package/dist/icons/Icon.js +1 -1
  457. package/dist/icons/InfoCircleIcon.js +1 -1
  458. package/dist/icons/InfoIcon.js +1 -1
  459. package/dist/icons/KeyIcon.js +1 -1
  460. package/dist/icons/LeftIcon.js +1 -1
  461. package/dist/icons/LineChartIcon.js +1 -1
  462. package/dist/icons/LoadingIcon.js +1 -1
  463. package/dist/icons/LockFilledIcon.js +1 -1
  464. package/dist/icons/LockIcon.js +1 -1
  465. package/dist/icons/MoreIcon.js +1 -1
  466. package/dist/icons/NotAllowedIcon.js +1 -1
  467. package/dist/icons/Number123Icon.js +1 -1
  468. package/dist/icons/NumberIcon.js +1 -1
  469. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  470. package/dist/icons/PauseCircleIcon.js +1 -1
  471. package/dist/icons/PauseIcon.js +1 -1
  472. package/dist/icons/PercentageIcon.js +1 -1
  473. package/dist/icons/PieChartIcon.js +1 -1
  474. package/dist/icons/PipetteIcon.js +1 -1
  475. package/dist/icons/PlayCircleIcon.js +1 -1
  476. package/dist/icons/PlayIcon.js +1 -1
  477. package/dist/icons/PlusIcon.js +1 -1
  478. package/dist/icons/ProgressBarIcon.js +1 -1
  479. package/dist/icons/ReloadIcon.js +1 -1
  480. package/dist/icons/ReportIcon.js +1 -1
  481. package/dist/icons/ReturnIcon.js +1 -1
  482. package/dist/icons/RightIcon.js +1 -1
  483. package/dist/icons/RowTotalsIcon.js +1 -1
  484. package/dist/icons/SchemeIcon.js +1 -1
  485. package/dist/icons/SearchIcon.js +1 -1
  486. package/dist/icons/SemanticQueryIcon.js +1 -1
  487. package/dist/icons/SettingsIcon.js +1 -1
  488. package/dist/icons/ShieldFilledIcon.js +1 -1
  489. package/dist/icons/ShieldIcon.js +1 -1
  490. package/dist/icons/SlashIcon.js +1 -1
  491. package/dist/icons/SparklesIcon.js +1 -1
  492. package/dist/icons/SqlIcon.js +1 -1
  493. package/dist/icons/StatsIcon.js +1 -1
  494. package/dist/icons/StopIcon.js +1 -1
  495. package/dist/icons/StringIcon.js +1 -1
  496. package/dist/icons/SubtotalsIcon.js +1 -1
  497. package/dist/icons/SwitchIcon.js +1 -1
  498. package/dist/icons/TableIcon.js +1 -1
  499. package/dist/icons/ThumbsDownIcon.js +1 -1
  500. package/dist/icons/ThumbsUpIcon.js +1 -1
  501. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  502. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  503. package/dist/icons/ThunderboltIcon.js +1 -1
  504. package/dist/icons/TimeIcon.js +1 -1
  505. package/dist/icons/TrashIcon.js +1 -1
  506. package/dist/icons/UnlockIcon.js +1 -1
  507. package/dist/icons/UpIcon.js +1 -1
  508. package/dist/icons/UserGroupIcon.js +1 -1
  509. package/dist/icons/UserIcon.js +1 -1
  510. package/dist/icons/UserLockIcon.js +1 -1
  511. package/dist/icons/ViewIcon.js +1 -1
  512. package/dist/icons/WarningFilledIcon.js +1 -1
  513. package/dist/icons/WarningIcon.js +1 -1
  514. package/dist/icons/wrap-icon.js +1 -1
  515. package/dist/index.js +1 -1
  516. package/dist/probe/canonicalize.js +1 -1
  517. package/dist/probe/css.js +1 -1
  518. package/dist/probe/index.js +1 -1
  519. package/dist/provider.js +1 -1
  520. package/dist/providers/TrackingProvider.js +1 -1
  521. package/dist/providers/navigationAdapter.default.js +1 -1
  522. package/dist/shared/form.d.ts +4 -2
  523. package/dist/tokens/all-tokens.js +1 -1
  524. package/dist/tokens/base.js +1 -1
  525. package/dist/tokens/color-seed.js +1 -1
  526. package/dist/tokens/color-theme.js +1 -1
  527. package/dist/tokens/colors.js +1 -1
  528. package/dist/tokens/layout.js +1 -1
  529. package/dist/tokens/lazy-styles.js +1 -1
  530. package/dist/tokens/legacy-color.js +1 -1
  531. package/dist/tokens/palette-config.js +1 -1
  532. package/dist/tokens/palette.js +1 -1
  533. package/dist/tokens/resolve.js +1 -1
  534. package/dist/tokens/shadows.js +1 -1
  535. package/dist/tokens/sizes.js +1 -1
  536. package/dist/tokens/spacing.js +1 -1
  537. package/dist/tokens/typography.js +1 -1
  538. package/dist/utils/ResizeSensor.js +1 -1
  539. package/dist/utils/colors.js +1 -1
  540. package/dist/utils/dotize.js +1 -1
  541. package/dist/utils/is-dev-env.js +1 -1
  542. package/dist/utils/modules.js +1 -1
  543. package/dist/utils/promise.js +1 -1
  544. package/dist/utils/raf.js +1 -1
  545. package/dist/utils/random.js +1 -1
  546. package/dist/utils/range.js +1 -1
  547. package/dist/utils/react/RenderCache.js +1 -1
  548. package/dist/utils/react/Slots.js +1 -1
  549. package/dist/utils/react/chain.js +1 -1
  550. package/dist/utils/react/disabledProps.js +1 -1
  551. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  552. package/dist/utils/react/index.js +1 -1
  553. package/dist/utils/react/interactions.js +1 -1
  554. package/dist/utils/react/isTextOnly.js +1 -1
  555. package/dist/utils/react/mapProps.js +1 -1
  556. package/dist/utils/react/mergeProps.js +1 -1
  557. package/dist/utils/react/nullableValue.js +1 -1
  558. package/dist/utils/react/resolveIcon.js +1 -1
  559. package/dist/utils/react/sharedStore.js +1 -1
  560. package/dist/utils/react/useBufferedValue.js +1 -1
  561. package/dist/utils/react/useCombinedRefs.js +1 -1
  562. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  563. package/dist/utils/react/useEventBus.js +1 -1
  564. package/dist/utils/react/useId.js +1 -1
  565. package/dist/utils/react/useIsDarwin.js +1 -1
  566. package/dist/utils/react/useKeySymbols.js +1 -1
  567. package/dist/utils/react/useLayoutEffect.js +1 -1
  568. package/dist/utils/react/useLocalStorage.js +1 -1
  569. package/dist/utils/react/useMergeStyles.js +1 -1
  570. package/dist/utils/react/usePopoverSync.js +1 -1
  571. package/dist/utils/react/useQaProps.js +1 -1
  572. package/dist/utils/react/useScheme.js +1 -1
  573. package/dist/utils/react/useViewportSize.js +1 -1
  574. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  575. package/dist/utils/selection.js +1 -1
  576. package/dist/utils/styles.js +1 -1
  577. package/dist/utils/tree.js +1 -1
  578. package/dist/utils/warnings.js +1 -1
  579. package/dist/version.js +2 -2
  580. package/docs/CreateComponent.md +1 -1
  581. package/docs/FieldProperties.md +2 -2
  582. package/docs/Usage.md +1 -1
  583. package/docs/components/form/Form.md +4 -4
  584. package/docs/modern-form-migration.md +15 -5
  585. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useFocus as useFocus$1 } from "../../../utils/react/interactions.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { castNullableStringValue } from "../../../utils/react/nullableValue.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/fields/RadioGroup/context.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { usePopoverSync } from "../../../utils/react/usePopoverSync.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { chain } from "../../../utils/react/chain.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { forwardRefWithGenerics } from "../../../utils/react/forwardRefWithGenerics.js";
4
4
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { SliderGradationElement, SliderGradeElement } from "./elements.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { __Slider } from "./Slider.js";
3
3
  import { forwardRef, useCallback, useMemo, useState } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { Gradation } from "./Gradation.js";
3
3
  import { _SliderBase } from "./SliderBase.js";
4
4
  import { SliderThumb } from "./SliderThumb.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps } from "../../../utils/react/mergeProps.js";
4
4
  import { Gradation } from "./Gradation.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { forwardRefWithGenerics } from "../../../utils/react/forwardRefWithGenerics.js";
4
4
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { getValidationMods } from "../../form/validation/resolve-validation-props.js";
4
4
  import { SliderThumbElement } from "./elements.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { getValidationMods } from "../../form/validation/resolve-validation-props.js";
3
3
  import { SliderTrackContainerElement } from "./elements.js";
4
4
  import { useMemo } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { tasty } from "@tenphi/tasty";
3
3
 
4
4
  //#region src/components/fields/Slider/elements.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { __RangeSlider } from "./RangeSlider.js";
3
3
  import { __Slider } from "./Slider.js";
4
4
  import { __HueSlider } from "./HueSlider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useId as useId$2 } from "../../../utils/react/useId.js";
4
4
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { chain } from "../../../utils/react/chain.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { chain } from "../../../utils/react/chain.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useEffect, useLayoutEffect, useRef } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { ItemActionIcon } from "../actions/ItemActionsWrapper.js";
3
3
  import { Fragment, jsxs } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { formatColor, getContrastingColor, toHex } from "./color.js";
4
4
  import { CHANNELS, COLOR_SPACES, COLOR_SPACE_HINTS, COLOR_SPACE_LABELS } from "./channels.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { maxChroma, normalizeHue, oklchToOkhsl } from "../../../utils/colors.js";
3
3
  import { fromOkhst, fromRgb, isAchromatic, toHex, toOkhst, toOklch, toRgb } from "./color.js";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { anyNaN, clamp, maxChroma, normalizeHue, oklchToOkhsl, parseColorFunction, readComponent, readHue, rgbFromSrgb } from "../../../utils/colors.js";
3
3
  import { contrastRatioFromLuminance, formatHsl, formatOkhsl, formatOkhst, formatOklch, formatRgb, hslToSrgb, okhslToLinearSrgb, okhslToOkhst, okhslToOklch, okhslToSrgb, okhstToOkhsl, parseHexAlpha, relativeLuminanceFromLinearRgb, srgbToHex, srgbToOkhsl } from "@tenphi/glaze";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/fields/color/context.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { wrapNodeIfPlain } from "../../../utils/react/wrapNodeIfPlain.js";
4
4
  import { isDevEnv } from "../../../utils/is-dev-env.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { warn } from "../../../utils/warnings.js";
4
4
  import { useValidationProps } from "../validation/use-validation-props.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { Provider, useProviderProps } from "../../../provider.js";
@@ -9,8 +9,10 @@ import { FormEvent, ReactElement, ReactNode, Ref } from "react";
9
9
  interface ModernFormProps<T extends object = Record<string, unknown>> extends Omit<CubeFormProps<T>, 'form' | 'defaultValues' | 'onSubmit' | 'onSubmitFailed' | 'onValuesChange'> {
10
10
  form: FormController<T>;
11
11
  defaultValues?: never;
12
+ /** Runs before a controller reset; preventDefault cancels the reset, including nested controls. */
12
13
  onReset?: (event: FormEvent<HTMLFormElement>) => void;
13
- onResetCapture?: (event: FormEvent<HTMLFormElement>) => void;
14
+ /** Reserved for controller reset interception. Use onReset to cancel. */
15
+ onResetCapture?: never;
14
16
  onSubmit?: FormCallbacks<T, ReactNode>['onSubmit'];
15
17
  onSubmitFailed?: FormCallbacks<T, ReactNode>['onSubmitFailed'];
16
18
  onValuesChange?: FormCallbacks<T, ReactNode>['onValuesChange'];
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
4
4
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -47,7 +47,6 @@ function ModernFormRoot(props, ref) {
47
47
  });
48
48
  const handleReset = useEvent((event) => {
49
49
  event.stopPropagation();
50
- otherProps.onResetCapture?.(event);
51
50
  otherProps.onReset?.(event);
52
51
  if (!event.defaultPrevented) {
53
52
  event.preventDefault();
@@ -88,7 +87,7 @@ function ModernFormRoot(props, ref) {
88
87
  },
89
88
  onSubmit: otherProps.action == null ? handleSubmit : void 0,
90
89
  onReset: otherProps.action == null ? void 0 : otherProps.onReset,
91
- onResetCapture: otherProps.action == null ? handleReset : otherProps.onResetCapture,
90
+ onResetCapture: otherProps.action == null ? handleReset : void 0,
92
91
  children: /* @__PURE__ */ jsx(FormContext.Provider, {
93
92
  value: EMPTY_LEGACY_CONTEXT,
94
93
  children: /* @__PURE__ */ jsx(ModernControllerContext.Provider, {
@@ -1 +1 @@
1
- {"version":3,"file":"ModernFormRoot.js","names":[],"sources":["../../../../src/components/form/Form/ModernFormRoot.tsx"],"sourcesContent":["import { CONTAINER_STYLES, filterBaseProps } from '@tenphi/tasty';\nimport { forwardRef, useMemo, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport { Provider, useProviderProps } from '../../../provider';\nimport { mergeRefs } from '../../../utils/react/useCombinedRefs';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { extractStyles } from '../../../utils/styles';\nimport { useValidationProps } from '../validation/use-validation-props';\n\nimport {\n FormContext,\n FormElement,\n FormPresentationContext,\n formPropNames,\n} from './Form';\nimport { ModernControllerContext } from './modern/context';\nimport { getControllerInternals } from './modern/controller';\n\nimport type { FormEvent, ReactElement, ReactNode, Ref } from 'react';\nimport type { CubeFormProps, FormPresentationContextValue } from './Form';\nimport type { FormController } from './modern/controller';\nimport type { CallbackBinding, FormCallbacks } from './modern/types';\n\n/** Modern root owns callback bindings; subscriptions stay in descendants. */\nexport interface ModernFormProps<T extends object = Record<string, unknown>>\n extends Omit<\n CubeFormProps<T>,\n 'form' | 'defaultValues' | 'onSubmit' | 'onSubmitFailed' | 'onValuesChange'\n > {\n form: FormController<T>;\n defaultValues?: never;\n onReset?: (event: FormEvent<HTMLFormElement>) => void;\n onResetCapture?: (event: FormEvent<HTMLFormElement>) => void;\n onSubmit?: FormCallbacks<T, ReactNode>['onSubmit'];\n onSubmitFailed?: FormCallbacks<T, ReactNode>['onSubmitFailed'];\n onValuesChange?: FormCallbacks<T, ReactNode>['onValuesChange'];\n /** Payload selection for native submission, including Enter and external buttons. */\n submitValues?: 'active' | 'all';\n}\n\nconst EMPTY_LEGACY_CONTEXT = {};\n\nfunction ModernFormRoot<T extends object>(\n props: ModernFormProps<T>,\n ref: Ref<HTMLFormElement>,\n): ReactElement {\n const resolved = useValidationProps(useProviderProps(props));\n const {\n form,\n qa,\n name,\n children,\n orientation = 'vertical',\n labelPosition: authoredLabelPosition,\n labelWidth: authoredLabelWidth,\n labelStyles,\n necessityIndicator,\n validateTrigger,\n requiredMark = true,\n showValid,\n isDisabled,\n isReadOnly,\n isInvalid,\n isValid,\n defaultValues,\n onSubmit,\n onSubmitFailed,\n onValuesChange,\n submitValues = 'active',\n ...otherProps\n } = resolved;\n const labelPosition =\n authoredLabelPosition ?? (orientation === 'horizontal' ? 'side' : 'top');\n const labelWidth =\n authoredLabelWidth ?? (orientation === 'horizontal' ? 'auto' : undefined);\n const internals = getControllerInternals(form, '<Form>');\n const { store } = internals;\n const rootRef = useRef<HTMLFormElement>(null);\n const mergedRef = useMemo(() => mergeRefs(ref, rootRef), [ref]);\n useLayoutEffect(\n () => internals.bindRootElement(rootRef.current),\n [internals],\n );\n if (defaultValues !== undefined) {\n throw new Error(\n 'A modern <Form> does not accept defaultValues. Seed Form.useController() or use an explicit defaults command.',\n );\n }\n const binding = useRef<CallbackBinding<T, ReactNode> | undefined>(undefined);\n useLayoutEffect(() => {\n const token = store.bindCallbacks({});\n binding.current = token;\n return () => {\n token.release();\n if (binding.current === token) binding.current = undefined;\n };\n }, [store]);\n useLayoutEffect(() => {\n binding.current?.update({\n ...(onSubmit === undefined ? {} : { onSubmit }),\n ...(onSubmitFailed === undefined ? {} : { onSubmitFailed }),\n ...(onValuesChange === undefined ? {} : { onValuesChange }),\n });\n });\n const handleSubmit = useEvent((event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n event.stopPropagation();\n void form.submit({ include: submitValues });\n });\n const handleReset = useEvent((event: FormEvent<HTMLFormElement>) => {\n // React Aria's native reset listeners do not honor preventDefault. Handle\n // controller resets in capture, before they can write mount-time defaults.\n event.stopPropagation();\n otherProps.onResetCapture?.(event);\n otherProps.onReset?.(event);\n if (!event.defaultPrevented) {\n event.preventDefault();\n form.reset();\n }\n });\n const presentation = useMemo<FormPresentationContextValue>(\n () => ({\n labelPosition,\n labelStyles,\n orientation,\n necessityIndicator,\n validateTrigger,\n requiredMark,\n showValid,\n idPrefix: name,\n }),\n [\n labelPosition,\n labelStyles,\n orientation,\n necessityIndicator,\n validateTrigger,\n requiredMark,\n showValid,\n name,\n ],\n );\n const styles = extractStyles(otherProps, CONTAINER_STYLES);\n if (labelWidth) styles['$label-width'] = labelWidth;\n\n return (\n <FormElement\n {...filterBaseProps(otherProps, { propNames: formPropNames })}\n ref={mergedRef}\n qa={qa}\n noValidate\n styles={styles}\n mods={{\n 'has-sider': labelPosition === 'side',\n 'has-split': labelPosition === 'split',\n horizontal: orientation === 'horizontal',\n }}\n onSubmit={otherProps.action == null ? handleSubmit : undefined}\n onReset={otherProps.action == null ? undefined : otherProps.onReset}\n onResetCapture={\n otherProps.action == null ? handleReset : otherProps.onResetCapture\n }\n >\n <FormContext.Provider value={EMPTY_LEGACY_CONTEXT}>\n <ModernControllerContext.Provider value={form}>\n <FormPresentationContext.Provider value={presentation}>\n <Provider\n insideForm\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isValid={isValid}\n >\n {children}\n </Provider>\n </FormPresentationContext.Provider>\n </ModernControllerContext.Provider>\n </FormContext.Provider>\n </FormElement>\n );\n}\n\nconst _ModernFormRoot = forwardRef(ModernFormRoot) as unknown as <\n T extends object,\n>(\n props: ModernFormProps<T> & { ref?: Ref<HTMLFormElement> },\n) => ReactElement;\n\n(_ModernFormRoot as any).displayName = 'ModernFormRoot';\n\nexport { _ModernFormRoot as ModernFormRoot };\n"],"mappings":";;;;;;;;;;;;;;;AAyCA,MAAM,uBAAuB,EAAE;AAE/B,SAAS,eACP,OACA,KACc;CAEd,MAAM,EACJ,MACA,IACA,MACA,UACA,cAAc,YACd,eAAe,uBACf,YAAY,oBACZ,aACA,oBACA,iBACA,eAAe,MACf,WACA,YACA,YACA,WACA,SACA,eACA,UACA,gBACA,gBACA,eAAe,UACf,GAAG,eAvBY,mBAAmB,iBAAiB,MAAM,CAAC;CAyB5D,MAAM,gBACJ,0BAA0B,gBAAgB,eAAe,SAAS;CACpE,MAAM,aACJ,uBAAuB,gBAAgB,eAAe,SAAS;CACjE,MAAM,YAAY,uBAAuB,MAAM,SAAS;CACxD,MAAM,EAAE,UAAU;CAClB,MAAM,UAAU,OAAwB,KAAK;CAC7C,MAAM,YAAY,cAAc,UAAU,KAAK,QAAQ,EAAE,CAAC,IAAI,CAAC;AAC/D,yBACQ,UAAU,gBAAgB,QAAQ,QAAQ,EAChD,CAAC,UAAU,CACZ;AACD,KAAI,kBAAkB,OACpB,OAAM,IAAI,MACR,gHACD;CAEH,MAAM,UAAU,OAAkD,OAAU;AAC5E,yBAAsB;EACpB,MAAM,QAAQ,MAAM,cAAc,EAAE,CAAC;AACrC,UAAQ,UAAU;AAClB,eAAa;AACX,SAAM,SAAS;AACf,OAAI,QAAQ,YAAY,MAAO,SAAQ,UAAU;;IAElD,CAAC,MAAM,CAAC;AACX,yBAAsB;AACpB,UAAQ,SAAS,OAAO;GACtB,GAAI,aAAa,SAAY,EAAE,GAAG,EAAE,UAAU;GAC9C,GAAI,mBAAmB,SAAY,EAAE,GAAG,EAAE,gBAAgB;GAC1D,GAAI,mBAAmB,SAAY,EAAE,GAAG,EAAE,gBAAgB;GAC3D,CAAC;GACF;CACF,MAAM,eAAe,UAAU,UAAsC;AACnE,QAAM,gBAAgB;AACtB,QAAM,iBAAiB;AACvB,EAAK,KAAK,OAAO,EAAE,SAAS,cAAc,CAAC;GAC3C;CACF,MAAM,cAAc,UAAU,UAAsC;AAGlE,QAAM,iBAAiB;AACvB,aAAW,iBAAiB,MAAM;AAClC,aAAW,UAAU,MAAM;AAC3B,MAAI,CAAC,MAAM,kBAAkB;AAC3B,SAAM,gBAAgB;AACtB,QAAK,OAAO;;GAEd;CACF,MAAM,eAAe,eACZ;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACX,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CACD,MAAM,SAAS,cAAc,YAAY,iBAAiB;AAC1D,KAAI,WAAY,QAAO,kBAAkB;AAEzC,QACE,oBAAC;EACC,GAAI,gBAAgB,YAAY,EAAE,WAAW,eAAe,CAAC;EAC7D,KAAK;EACD;EACJ;EACQ;EACR,MAAM;GACJ,aAAa,kBAAkB;GAC/B,aAAa,kBAAkB;GAC/B,YAAY,gBAAgB;GAC7B;EACD,UAAU,WAAW,UAAU,OAAO,eAAe;EACrD,SAAS,WAAW,UAAU,OAAO,SAAY,WAAW;EAC5D,gBACE,WAAW,UAAU,OAAO,cAAc,WAAW;YAGvD,oBAAC,YAAY;GAAS,OAAO;aAC3B,oBAAC,wBAAwB;IAAS,OAAO;cACvC,oBAAC,wBAAwB;KAAS,OAAO;eACvC,oBAAC;MACC;MACY;MACA;MACD;MACF;MAER;OACQ;MACsB;KACF;IACd;GACX;;AAIlB,MAAM,kBAAkB,WAAW,eAAe;AAMlD,AAAC,gBAAwB,cAAc"}
1
+ {"version":3,"file":"ModernFormRoot.js","names":[],"sources":["../../../../src/components/form/Form/ModernFormRoot.tsx"],"sourcesContent":["import { CONTAINER_STYLES, filterBaseProps } from '@tenphi/tasty';\nimport { forwardRef, useMemo, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport { Provider, useProviderProps } from '../../../provider';\nimport { mergeRefs } from '../../../utils/react/useCombinedRefs';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { extractStyles } from '../../../utils/styles';\nimport { useValidationProps } from '../validation/use-validation-props';\n\nimport {\n FormContext,\n FormElement,\n FormPresentationContext,\n formPropNames,\n} from './Form';\nimport { ModernControllerContext } from './modern/context';\nimport { getControllerInternals } from './modern/controller';\n\nimport type { FormEvent, ReactElement, ReactNode, Ref } from 'react';\nimport type { CubeFormProps, FormPresentationContextValue } from './Form';\nimport type { FormController } from './modern/controller';\nimport type { CallbackBinding, FormCallbacks } from './modern/types';\n\n/** Modern root owns callback bindings; subscriptions stay in descendants. */\nexport interface ModernFormProps<T extends object = Record<string, unknown>>\n extends Omit<\n CubeFormProps<T>,\n 'form' | 'defaultValues' | 'onSubmit' | 'onSubmitFailed' | 'onValuesChange'\n > {\n form: FormController<T>;\n defaultValues?: never;\n /** Runs before a controller reset; preventDefault cancels the reset, including nested controls. */\n onReset?: (event: FormEvent<HTMLFormElement>) => void;\n /** Reserved for controller reset interception. Use onReset to cancel. */\n onResetCapture?: never;\n onSubmit?: FormCallbacks<T, ReactNode>['onSubmit'];\n onSubmitFailed?: FormCallbacks<T, ReactNode>['onSubmitFailed'];\n onValuesChange?: FormCallbacks<T, ReactNode>['onValuesChange'];\n /** Payload selection for native submission, including Enter and external buttons. */\n submitValues?: 'active' | 'all';\n}\n\nconst EMPTY_LEGACY_CONTEXT = {};\n\nfunction ModernFormRoot<T extends object>(\n props: ModernFormProps<T>,\n ref: Ref<HTMLFormElement>,\n): ReactElement {\n const resolved = useValidationProps(useProviderProps(props));\n const {\n form,\n qa,\n name,\n children,\n orientation = 'vertical',\n labelPosition: authoredLabelPosition,\n labelWidth: authoredLabelWidth,\n labelStyles,\n necessityIndicator,\n validateTrigger,\n requiredMark = true,\n showValid,\n isDisabled,\n isReadOnly,\n isInvalid,\n isValid,\n defaultValues,\n onSubmit,\n onSubmitFailed,\n onValuesChange,\n submitValues = 'active',\n ...otherProps\n } = resolved;\n const labelPosition =\n authoredLabelPosition ?? (orientation === 'horizontal' ? 'side' : 'top');\n const labelWidth =\n authoredLabelWidth ?? (orientation === 'horizontal' ? 'auto' : undefined);\n const internals = getControllerInternals(form, '<Form>');\n const { store } = internals;\n const rootRef = useRef<HTMLFormElement>(null);\n const mergedRef = useMemo(() => mergeRefs(ref, rootRef), [ref]);\n useLayoutEffect(\n () => internals.bindRootElement(rootRef.current),\n [internals],\n );\n if (defaultValues !== undefined) {\n throw new Error(\n 'A modern <Form> does not accept defaultValues. Seed Form.useController() or use an explicit defaults command.',\n );\n }\n const binding = useRef<CallbackBinding<T, ReactNode> | undefined>(undefined);\n useLayoutEffect(() => {\n const token = store.bindCallbacks({});\n binding.current = token;\n return () => {\n token.release();\n if (binding.current === token) binding.current = undefined;\n };\n }, [store]);\n useLayoutEffect(() => {\n binding.current?.update({\n ...(onSubmit === undefined ? {} : { onSubmit }),\n ...(onSubmitFailed === undefined ? {} : { onSubmitFailed }),\n ...(onValuesChange === undefined ? {} : { onValuesChange }),\n });\n });\n const handleSubmit = useEvent((event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n event.stopPropagation();\n void form.submit({ include: submitValues });\n });\n const handleReset = useEvent((event: FormEvent<HTMLFormElement>) => {\n // React Aria's native reset listeners do not honor preventDefault. Handle\n // controller resets in capture, before they can write mount-time defaults.\n event.stopPropagation();\n otherProps.onReset?.(event);\n if (!event.defaultPrevented) {\n event.preventDefault();\n form.reset();\n }\n });\n const presentation = useMemo<FormPresentationContextValue>(\n () => ({\n labelPosition,\n labelStyles,\n orientation,\n necessityIndicator,\n validateTrigger,\n requiredMark,\n showValid,\n idPrefix: name,\n }),\n [\n labelPosition,\n labelStyles,\n orientation,\n necessityIndicator,\n validateTrigger,\n requiredMark,\n showValid,\n name,\n ],\n );\n const styles = extractStyles(otherProps, CONTAINER_STYLES);\n if (labelWidth) styles['$label-width'] = labelWidth;\n\n return (\n <FormElement\n {...filterBaseProps(otherProps, { propNames: formPropNames })}\n ref={mergedRef}\n qa={qa}\n noValidate\n styles={styles}\n mods={{\n 'has-sider': labelPosition === 'side',\n 'has-split': labelPosition === 'split',\n horizontal: orientation === 'horizontal',\n }}\n onSubmit={otherProps.action == null ? handleSubmit : undefined}\n onReset={otherProps.action == null ? undefined : otherProps.onReset}\n onResetCapture={otherProps.action == null ? handleReset : undefined}\n >\n <FormContext.Provider value={EMPTY_LEGACY_CONTEXT}>\n <ModernControllerContext.Provider value={form}>\n <FormPresentationContext.Provider value={presentation}>\n <Provider\n insideForm\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isValid={isValid}\n >\n {children}\n </Provider>\n </FormPresentationContext.Provider>\n </ModernControllerContext.Provider>\n </FormContext.Provider>\n </FormElement>\n );\n}\n\nconst _ModernFormRoot = forwardRef(ModernFormRoot) as unknown as <\n T extends object,\n>(\n props: ModernFormProps<T> & { ref?: Ref<HTMLFormElement> },\n) => ReactElement;\n\n(_ModernFormRoot as any).displayName = 'ModernFormRoot';\n\nexport { _ModernFormRoot as ModernFormRoot };\n"],"mappings":";;;;;;;;;;;;;;;AA2CA,MAAM,uBAAuB,EAAE;AAE/B,SAAS,eACP,OACA,KACc;CAEd,MAAM,EACJ,MACA,IACA,MACA,UACA,cAAc,YACd,eAAe,uBACf,YAAY,oBACZ,aACA,oBACA,iBACA,eAAe,MACf,WACA,YACA,YACA,WACA,SACA,eACA,UACA,gBACA,gBACA,eAAe,UACf,GAAG,eAvBY,mBAAmB,iBAAiB,MAAM,CAAC;CAyB5D,MAAM,gBACJ,0BAA0B,gBAAgB,eAAe,SAAS;CACpE,MAAM,aACJ,uBAAuB,gBAAgB,eAAe,SAAS;CACjE,MAAM,YAAY,uBAAuB,MAAM,SAAS;CACxD,MAAM,EAAE,UAAU;CAClB,MAAM,UAAU,OAAwB,KAAK;CAC7C,MAAM,YAAY,cAAc,UAAU,KAAK,QAAQ,EAAE,CAAC,IAAI,CAAC;AAC/D,yBACQ,UAAU,gBAAgB,QAAQ,QAAQ,EAChD,CAAC,UAAU,CACZ;AACD,KAAI,kBAAkB,OACpB,OAAM,IAAI,MACR,gHACD;CAEH,MAAM,UAAU,OAAkD,OAAU;AAC5E,yBAAsB;EACpB,MAAM,QAAQ,MAAM,cAAc,EAAE,CAAC;AACrC,UAAQ,UAAU;AAClB,eAAa;AACX,SAAM,SAAS;AACf,OAAI,QAAQ,YAAY,MAAO,SAAQ,UAAU;;IAElD,CAAC,MAAM,CAAC;AACX,yBAAsB;AACpB,UAAQ,SAAS,OAAO;GACtB,GAAI,aAAa,SAAY,EAAE,GAAG,EAAE,UAAU;GAC9C,GAAI,mBAAmB,SAAY,EAAE,GAAG,EAAE,gBAAgB;GAC1D,GAAI,mBAAmB,SAAY,EAAE,GAAG,EAAE,gBAAgB;GAC3D,CAAC;GACF;CACF,MAAM,eAAe,UAAU,UAAsC;AACnE,QAAM,gBAAgB;AACtB,QAAM,iBAAiB;AACvB,EAAK,KAAK,OAAO,EAAE,SAAS,cAAc,CAAC;GAC3C;CACF,MAAM,cAAc,UAAU,UAAsC;AAGlE,QAAM,iBAAiB;AACvB,aAAW,UAAU,MAAM;AAC3B,MAAI,CAAC,MAAM,kBAAkB;AAC3B,SAAM,gBAAgB;AACtB,QAAK,OAAO;;GAEd;CACF,MAAM,eAAe,eACZ;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;EACX,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CACD,MAAM,SAAS,cAAc,YAAY,iBAAiB;AAC1D,KAAI,WAAY,QAAO,kBAAkB;AAEzC,QACE,oBAAC;EACC,GAAI,gBAAgB,YAAY,EAAE,WAAW,eAAe,CAAC;EAC7D,KAAK;EACD;EACJ;EACQ;EACR,MAAM;GACJ,aAAa,kBAAkB;GAC/B,aAAa,kBAAkB;GAC/B,YAAY,gBAAgB;GAC7B;EACD,UAAU,WAAW,UAAU,OAAO,eAAe;EACrD,SAAS,WAAW,UAAU,OAAO,SAAY,WAAW;EAC5D,gBAAgB,WAAW,UAAU,OAAO,cAAc;YAE1D,oBAAC,YAAY;GAAS,OAAO;aAC3B,oBAAC,wBAAwB;IAAS,OAAO;cACvC,oBAAC,wBAAwB;KAAS,OAAO;eACvC,oBAAC;MACC;MACY;MACA;MACD;MACF;MAER;OACQ;MACsB;KACF;IACd;GACX;;AAIlB,MAAM,kBAAkB,WAAW,eAAe;AAMlD,AAAC,gBAAwB,cAAc"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
4
4
  import { useProviderProps } from "../../../../provider.js";
@@ -9,7 +9,7 @@ import * as _react_types_shared0 from "@react-types/shared";
9
9
  //#region src/components/form/Form/SubmitButton/SubmitButton.d.ts
10
10
  interface CubeSubmitButtonProps<T extends FieldTypes = FieldTypes> extends CubeButtonProps {
11
11
  form?: CubeFormInstance<T> | FormController<T>;
12
- /** Modern forms: allow submitting an invalid form to display validation feedback. */
12
+ /** Modern forms: disable after validation fails. Defaults to false so submit can show errors. */
13
13
  disableOnInvalid?: boolean;
14
14
  }
15
15
  declare const _SubmitButton: react.ForwardRefExoticComponent<Omit<CubeSubmitButtonProps<FieldTypes>, "ref"> & react.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>>;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { useProviderProps } from "../../../../provider.js";
3
3
  import { Button } from "../../../actions/Button/Button.js";
4
4
  import { isModernFormController } from "../backend.js";
@@ -1 +1 @@
1
- {"version":3,"file":"SubmitButton.js","names":[],"sources":["../../../../../src/components/form/Form/SubmitButton/SubmitButton.tsx"],"sourcesContent":["import { FocusableRef } from '@react-types/shared';\nimport { forwardRef } from 'react';\n\nimport { useProviderProps } from '../../../../provider';\nimport { Button, CubeButtonProps } from '../../../actions/Button/Button';\nimport { isModernFormController } from '../backend';\nimport { useFormProps } from '../Form';\nimport { ModernSubmitButton } from '../modern/actions';\nimport { FieldTypes } from '../types';\nimport { CubeFormInstance } from '../use-form';\n\nimport type { FormController } from '../modern/controller';\n\nexport interface CubeSubmitButtonProps<T extends FieldTypes = FieldTypes>\n extends CubeButtonProps {\n form?: CubeFormInstance<T> | FormController<T>;\n /** Modern forms: allow submitting an invalid form to display validation feedback. */\n disableOnInvalid?: boolean;\n}\n\nfunction LegacySubmitButton(\n props: Omit<CubeSubmitButtonProps, 'form'> & {\n form?: CubeFormInstance<FieldTypes>;\n },\n ref: FocusableRef<HTMLElement>,\n) {\n const providerProps = useProviderProps({} as CubeButtonProps);\n\n props = useFormProps(props);\n\n const { isDisabled: isContextDisabled } = providerProps;\n\n props = useFormProps(props);\n\n const {\n form,\n isDisabled,\n disableOnInvalid: _disableOnInvalid,\n ...otherProps\n } = props;\n const isSomethingDisabled = isDisabled || isContextDisabled;\n\n return (\n <Button\n ref={ref}\n type=\"primary\"\n htmlType=\"submit\"\n isLoading={form?.isSubmitting}\n isDisabled={\n isSomethingDisabled || form?.isSubmitting ? true : form?.isInvalid\n }\n {...otherProps}\n />\n );\n}\n\nfunction SubmitButton(\n props: CubeSubmitButtonProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const resolved = useFormProps(props);\n if (isModernFormController(resolved.form)) {\n return (\n <ModernSubmitButton\n {...resolved}\n form={resolved.form as FormController}\n buttonRef={ref}\n />\n );\n }\n return (\n <LegacySubmitButtonWithRef\n {...(props as Omit<CubeSubmitButtonProps, 'form'> & {\n form?: CubeFormInstance<FieldTypes>;\n })}\n ref={ref}\n />\n );\n}\n\nconst LegacySubmitButtonWithRef = forwardRef(LegacySubmitButton);\nconst _SubmitButton = forwardRef(SubmitButton);\n\n_SubmitButton.displayName = 'SubmitButton';\n\nexport { _SubmitButton as SubmitButton };\n"],"mappings":";;;;;;;;;;AAoBA,SAAS,mBACP,OAGA,KACA;CACA,MAAM,gBAAgB,iBAAiB,EAAE,CAAoB;AAE7D,SAAQ,aAAa,MAAM;CAE3B,MAAM,EAAE,YAAY,sBAAsB;AAE1C,SAAQ,aAAa,MAAM;CAE3B,MAAM,EACJ,MACA,YACA,kBAAkB,mBAClB,GAAG,eACD;CACJ,MAAM,sBAAsB,cAAc;AAE1C,QACE,oBAAC;EACM;EACL,MAAK;EACL,UAAS;EACT,WAAW,MAAM;EACjB,YACE,uBAAuB,MAAM,eAAe,OAAO,MAAM;EAE3D,GAAI;GACJ;;AAIN,SAAS,aACP,OACA,KACA;CACA,MAAM,WAAW,aAAa,MAAM;AACpC,KAAI,uBAAuB,SAAS,KAAK,CACvC,QACE,oBAAC;EACC,GAAI;EACJ,MAAM,SAAS;EACf,WAAW;GACX;AAGN,QACE,oBAAC;EACC,GAAK;EAGA;GACL;;AAIN,MAAM,4BAA4B,WAAW,mBAAmB;AAChE,MAAM,gBAAgB,WAAW,aAAa;AAE9C,cAAc,cAAc"}
1
+ {"version":3,"file":"SubmitButton.js","names":[],"sources":["../../../../../src/components/form/Form/SubmitButton/SubmitButton.tsx"],"sourcesContent":["import { FocusableRef } from '@react-types/shared';\nimport { forwardRef } from 'react';\n\nimport { useProviderProps } from '../../../../provider';\nimport { Button, CubeButtonProps } from '../../../actions/Button/Button';\nimport { isModernFormController } from '../backend';\nimport { useFormProps } from '../Form';\nimport { ModernSubmitButton } from '../modern/actions';\nimport { FieldTypes } from '../types';\nimport { CubeFormInstance } from '../use-form';\n\nimport type { FormController } from '../modern/controller';\n\nexport interface CubeSubmitButtonProps<T extends FieldTypes = FieldTypes>\n extends CubeButtonProps {\n form?: CubeFormInstance<T> | FormController<T>;\n /** Modern forms: disable after validation fails. Defaults to false so submit can show errors. */\n disableOnInvalid?: boolean;\n}\n\nfunction LegacySubmitButton(\n props: Omit<CubeSubmitButtonProps, 'form'> & {\n form?: CubeFormInstance<FieldTypes>;\n },\n ref: FocusableRef<HTMLElement>,\n) {\n const providerProps = useProviderProps({} as CubeButtonProps);\n\n props = useFormProps(props);\n\n const { isDisabled: isContextDisabled } = providerProps;\n\n props = useFormProps(props);\n\n const {\n form,\n isDisabled,\n disableOnInvalid: _disableOnInvalid,\n ...otherProps\n } = props;\n const isSomethingDisabled = isDisabled || isContextDisabled;\n\n return (\n <Button\n ref={ref}\n type=\"primary\"\n htmlType=\"submit\"\n isLoading={form?.isSubmitting}\n isDisabled={\n isSomethingDisabled || form?.isSubmitting ? true : form?.isInvalid\n }\n {...otherProps}\n />\n );\n}\n\nfunction SubmitButton(\n props: CubeSubmitButtonProps,\n ref: FocusableRef<HTMLElement>,\n) {\n const resolved = useFormProps(props);\n if (isModernFormController(resolved.form)) {\n return (\n <ModernSubmitButton\n {...resolved}\n form={resolved.form as FormController}\n buttonRef={ref}\n />\n );\n }\n return (\n <LegacySubmitButtonWithRef\n {...(props as Omit<CubeSubmitButtonProps, 'form'> & {\n form?: CubeFormInstance<FieldTypes>;\n })}\n ref={ref}\n />\n );\n}\n\nconst LegacySubmitButtonWithRef = forwardRef(LegacySubmitButton);\nconst _SubmitButton = forwardRef(SubmitButton);\n\n_SubmitButton.displayName = 'SubmitButton';\n\nexport { _SubmitButton as SubmitButton };\n"],"mappings":";;;;;;;;;;AAoBA,SAAS,mBACP,OAGA,KACA;CACA,MAAM,gBAAgB,iBAAiB,EAAE,CAAoB;AAE7D,SAAQ,aAAa,MAAM;CAE3B,MAAM,EAAE,YAAY,sBAAsB;AAE1C,SAAQ,aAAa,MAAM;CAE3B,MAAM,EACJ,MACA,YACA,kBAAkB,mBAClB,GAAG,eACD;CACJ,MAAM,sBAAsB,cAAc;AAE1C,QACE,oBAAC;EACM;EACL,MAAK;EACL,UAAS;EACT,WAAW,MAAM;EACjB,YACE,uBAAuB,MAAM,eAAe,OAAO,MAAM;EAE3D,GAAI;GACJ;;AAIN,SAAS,aACP,OACA,KACA;CACA,MAAM,WAAW,aAAa,MAAM;AACpC,KAAI,uBAAuB,SAAS,KAAK,CACvC,QACE,oBAAC;EACC,GAAI;EACJ,MAAM,SAAS;EACf,WAAW;GACX;AAGN,QACE,oBAAC;EACC,GAAK;EAGA;GACL;;AAIN,MAAM,4BAA4B,WAAW,mBAAmB;AAChE,MAAM,gBAAgB,WAAW,aAAa;AAE9C,cAAc,cAAc"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { useI18n } from "../../../i18n/useI18n.js";
3
3
  import { ModernControllerContext } from "./modern/context.js";
4
4
  import { FormContext } from "./Form.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  //#region src/components/form/Form/backend.ts
3
3
  /**
4
4
  * Nominal branding for the two Form backends (modernization plan §5.1).
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { useFormControllerContext } from "./modern/context.js";
3
3
  import { useForm } from "./use-form.js";
4
4
  import { FormContext, FormScopeMask, _Form, useFormProps } from "./Form.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
3
3
  import { useProviderProps } from "../../../../provider.js";
4
4
  import { Button } from "../../../actions/Button/Button.js";
@@ -7,7 +7,7 @@ import { useFormSelector } from "./react.js";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
 
9
9
  //#region src/components/form/Form/modern/actions.tsx
10
- function ModernSubmitButton({ form, buttonRef, onClick, disableOnInvalid = true, ...props }) {
10
+ function ModernSubmitButton({ form, buttonRef, onClick, disableOnInvalid = false, ...props }) {
11
11
  const { isDisabled: contextDisabled } = useProviderProps({});
12
12
  const submitting = useFormSelector(form, (state) => state.isSubmitting);
13
13
  const invalid = useFormSelector(form, (state) => state.isInvalid);
@@ -31,22 +31,26 @@ function ModernSubmitButton({ form, buttonRef, onClick, disableOnInvalid = true,
31
31
  isDisabled: contextDisabled || props.isDisabled || submitting || disableOnInvalid && invalid
32
32
  });
33
33
  }
34
- function ModernResetButton({ form, buttonRef, onPress, ...props }) {
34
+ function ModernResetButton({ form, buttonRef, onClick, ...props }) {
35
35
  const { isDisabled: contextDisabled } = useProviderProps({});
36
- const disabled = useFormSelector(form, (state) => state.isSubmitting || !(state.isDirty || state.isTouched || state.submitError != null || Object.values(state.fields).some((field) => field.errors.length || field.status !== "unvalidated")));
36
+ const canReset = useFormSelector(form, (state) => state.canReset);
37
37
  const reset = useEvent((event) => {
38
+ onClick?.(event);
39
+ if (event.defaultPrevented) return;
38
40
  const root = getControllerInternals(form, "<Form.Reset>").getRootElement();
41
+ const button = event.currentTarget;
42
+ if (root && button.form === root && button.type === "reset") return;
43
+ event.preventDefault();
39
44
  if (root?.isConnected) root.reset();
40
45
  else form.reset();
41
- onPress?.(event);
42
46
  });
43
47
  return /* @__PURE__ */ jsx(Button, {
44
48
  ref: buttonRef,
45
49
  type: "primary",
46
50
  htmlType: "button",
47
51
  ...props,
48
- onPress: reset,
49
- isDisabled: contextDisabled || props.isDisabled || disabled
52
+ onClick: reset,
53
+ isDisabled: contextDisabled || props.isDisabled || !canReset
50
54
  });
51
55
  }
52
56
 
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","names":[],"sources":["../../../../../src/components/form/Form/modern/actions.tsx"],"sourcesContent":["import { useEvent } from '../../../../_internal/hooks/use-event';\nimport { useProviderProps } from '../../../../provider';\nimport { Button } from '../../../actions/Button/Button';\n\nimport { getControllerInternals } from './controller';\nimport { useFormSelector } from './react';\n\nimport type { FocusableRef } from '@react-types/shared';\nimport type { MouseEvent } from 'react';\nimport type { CubeButtonProps } from '../../../actions/Button/Button';\nimport type { FormController } from './controller';\n\nexport function ModernSubmitButton({\n form,\n buttonRef,\n onClick,\n disableOnInvalid = true,\n ...props\n}: CubeButtonProps & {\n form: FormController<any>;\n buttonRef: FocusableRef<HTMLElement>;\n disableOnInvalid?: boolean;\n}) {\n const { isDisabled: contextDisabled } = useProviderProps(\n {} as CubeButtonProps,\n );\n const submitting = useFormSelector(form, (state) => state.isSubmitting);\n const invalid = useFormSelector(form, (state) => state.isInvalid);\n const click = useEvent((event: MouseEvent<HTMLElement>) => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n const root = getControllerInternals(form, '<Form.Submit>').getRootElement();\n const button = event.currentTarget as HTMLButtonElement;\n if (root && button.form === root && button.type === 'submit') return;\n event.preventDefault();\n if (root?.isConnected) root.requestSubmit();\n else void form.submit();\n });\n return (\n <Button\n ref={buttonRef}\n type=\"primary\"\n htmlType=\"submit\"\n isLoading={submitting}\n {...props}\n onClick={click}\n isDisabled={\n contextDisabled ||\n props.isDisabled ||\n submitting ||\n (disableOnInvalid && invalid)\n }\n />\n );\n}\n\nexport function ModernResetButton({\n form,\n buttonRef,\n onPress,\n ...props\n}: CubeButtonProps & {\n form: FormController<any>;\n buttonRef: FocusableRef<HTMLElement>;\n}) {\n const { isDisabled: contextDisabled } = useProviderProps(\n {} as CubeButtonProps,\n );\n const disabled = useFormSelector(\n form,\n (state) =>\n state.isSubmitting ||\n !(\n state.isDirty ||\n state.isTouched ||\n state.submitError != null ||\n Object.values(state.fields).some(\n (field) => field.errors.length || field.status !== 'unvalidated',\n )\n ),\n );\n const reset = useEvent((event) => {\n const root = getControllerInternals(form, '<Form.Reset>').getRootElement();\n if (root?.isConnected) root.reset();\n else form.reset();\n onPress?.(event);\n });\n return (\n <Button\n ref={buttonRef}\n type=\"primary\"\n htmlType=\"button\"\n {...props}\n onPress={reset}\n isDisabled={contextDisabled || props.isDisabled || disabled}\n />\n );\n}\n"],"mappings":";;;;;;;;;AAYA,SAAgB,mBAAmB,EACjC,MACA,WACA,SACA,mBAAmB,MACnB,GAAG,SAKF;CACD,MAAM,EAAE,YAAY,oBAAoB,iBACtC,EAAE,CACH;CACD,MAAM,aAAa,gBAAgB,OAAO,UAAU,MAAM,aAAa;CACvE,MAAM,UAAU,gBAAgB,OAAO,UAAU,MAAM,UAAU;CACjE,MAAM,QAAQ,UAAU,UAAmC;AACzD,YAAU,MAAM;AAChB,MAAI,MAAM,iBAAkB;EAC5B,MAAM,OAAO,uBAAuB,MAAM,gBAAgB,CAAC,gBAAgB;EAC3E,MAAM,SAAS,MAAM;AACrB,MAAI,QAAQ,OAAO,SAAS,QAAQ,OAAO,SAAS,SAAU;AAC9D,QAAM,gBAAgB;AACtB,MAAI,MAAM,YAAa,MAAK,eAAe;MACtC,CAAK,KAAK,QAAQ;GACvB;AACF,QACE,oBAAC;EACC,KAAK;EACL,MAAK;EACL,UAAS;EACT,WAAW;EACX,GAAI;EACJ,SAAS;EACT,YACE,mBACA,MAAM,cACN,cACC,oBAAoB;GAEvB;;AAIN,SAAgB,kBAAkB,EAChC,MACA,WACA,SACA,GAAG,SAIF;CACD,MAAM,EAAE,YAAY,oBAAoB,iBACtC,EAAE,CACH;CACD,MAAM,WAAW,gBACf,OACC,UACC,MAAM,gBACN,EACE,MAAM,WACN,MAAM,aACN,MAAM,eAAe,QACrB,OAAO,OAAO,MAAM,OAAO,CAAC,MACzB,UAAU,MAAM,OAAO,UAAU,MAAM,WAAW,cACpD,EAEN;CACD,MAAM,QAAQ,UAAU,UAAU;EAChC,MAAM,OAAO,uBAAuB,MAAM,eAAe,CAAC,gBAAgB;AAC1E,MAAI,MAAM,YAAa,MAAK,OAAO;MAC9B,MAAK,OAAO;AACjB,YAAU,MAAM;GAChB;AACF,QACE,oBAAC;EACC,KAAK;EACL,MAAK;EACL,UAAS;EACT,GAAI;EACJ,SAAS;EACT,YAAY,mBAAmB,MAAM,cAAc;GACnD"}
1
+ {"version":3,"file":"actions.js","names":[],"sources":["../../../../../src/components/form/Form/modern/actions.tsx"],"sourcesContent":["import { useEvent } from '../../../../_internal/hooks/use-event';\nimport { useProviderProps } from '../../../../provider';\nimport { Button } from '../../../actions/Button/Button';\n\nimport { getControllerInternals } from './controller';\nimport { useFormSelector } from './react';\n\nimport type { FocusableRef } from '@react-types/shared';\nimport type { MouseEvent } from 'react';\nimport type { CubeButtonProps } from '../../../actions/Button/Button';\nimport type { FormController } from './controller';\n\nexport function ModernSubmitButton({\n form,\n buttonRef,\n onClick,\n disableOnInvalid = false,\n ...props\n}: CubeButtonProps & {\n form: FormController<any>;\n buttonRef: FocusableRef<HTMLElement>;\n disableOnInvalid?: boolean;\n}) {\n const { isDisabled: contextDisabled } = useProviderProps(\n {} as CubeButtonProps,\n );\n const submitting = useFormSelector(form, (state) => state.isSubmitting);\n const invalid = useFormSelector(form, (state) => state.isInvalid);\n const click = useEvent((event: MouseEvent<HTMLElement>) => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n const root = getControllerInternals(form, '<Form.Submit>').getRootElement();\n const button = event.currentTarget as HTMLButtonElement;\n if (root && button.form === root && button.type === 'submit') return;\n event.preventDefault();\n if (root?.isConnected) root.requestSubmit();\n else void form.submit();\n });\n return (\n <Button\n ref={buttonRef}\n type=\"primary\"\n htmlType=\"submit\"\n isLoading={submitting}\n {...props}\n onClick={click}\n isDisabled={\n contextDisabled ||\n props.isDisabled ||\n submitting ||\n (disableOnInvalid && invalid)\n }\n />\n );\n}\n\nexport function ModernResetButton({\n form,\n buttonRef,\n onClick,\n ...props\n}: CubeButtonProps & {\n form: FormController<any>;\n buttonRef: FocusableRef<HTMLElement>;\n}) {\n const { isDisabled: contextDisabled } = useProviderProps(\n {} as CubeButtonProps,\n );\n const canReset = useFormSelector(form, (state) => state.canReset);\n const reset = useEvent((event: MouseEvent<HTMLElement>) => {\n onClick?.(event);\n if (event.defaultPrevented) return;\n const root = getControllerInternals(form, '<Form.Reset>').getRootElement();\n const button = event.currentTarget as HTMLButtonElement;\n if (root && button.form === root && button.type === 'reset') return;\n event.preventDefault();\n if (root?.isConnected) root.reset();\n else form.reset();\n });\n return (\n <Button\n ref={buttonRef}\n type=\"primary\"\n htmlType=\"button\"\n {...props}\n onClick={reset}\n isDisabled={contextDisabled || props.isDisabled || !canReset}\n />\n );\n}\n"],"mappings":";;;;;;;;;AAYA,SAAgB,mBAAmB,EACjC,MACA,WACA,SACA,mBAAmB,OACnB,GAAG,SAKF;CACD,MAAM,EAAE,YAAY,oBAAoB,iBACtC,EAAE,CACH;CACD,MAAM,aAAa,gBAAgB,OAAO,UAAU,MAAM,aAAa;CACvE,MAAM,UAAU,gBAAgB,OAAO,UAAU,MAAM,UAAU;CACjE,MAAM,QAAQ,UAAU,UAAmC;AACzD,YAAU,MAAM;AAChB,MAAI,MAAM,iBAAkB;EAC5B,MAAM,OAAO,uBAAuB,MAAM,gBAAgB,CAAC,gBAAgB;EAC3E,MAAM,SAAS,MAAM;AACrB,MAAI,QAAQ,OAAO,SAAS,QAAQ,OAAO,SAAS,SAAU;AAC9D,QAAM,gBAAgB;AACtB,MAAI,MAAM,YAAa,MAAK,eAAe;MACtC,CAAK,KAAK,QAAQ;GACvB;AACF,QACE,oBAAC;EACC,KAAK;EACL,MAAK;EACL,UAAS;EACT,WAAW;EACX,GAAI;EACJ,SAAS;EACT,YACE,mBACA,MAAM,cACN,cACC,oBAAoB;GAEvB;;AAIN,SAAgB,kBAAkB,EAChC,MACA,WACA,SACA,GAAG,SAIF;CACD,MAAM,EAAE,YAAY,oBAAoB,iBACtC,EAAE,CACH;CACD,MAAM,WAAW,gBAAgB,OAAO,UAAU,MAAM,SAAS;CACjE,MAAM,QAAQ,UAAU,UAAmC;AACzD,YAAU,MAAM;AAChB,MAAI,MAAM,iBAAkB;EAC5B,MAAM,OAAO,uBAAuB,MAAM,eAAe,CAAC,gBAAgB;EAC1E,MAAM,SAAS,MAAM;AACrB,MAAI,QAAQ,OAAO,SAAS,QAAQ,OAAO,SAAS,QAAS;AAC7D,QAAM,gBAAgB;AACtB,MAAI,MAAM,YAAa,MAAK,OAAO;MAC9B,MAAK,OAAO;GACjB;AACF,QACE,oBAAC;EACC,KAAK;EACL,MAAK;EACL,UAAS;EACT,GAAI;EACJ,SAAS;EACT,YAAY,mBAAmB,MAAM,cAAc,CAAC;GACpD"}
@@ -3,6 +3,7 @@ import "./read-types.js";
3
3
  import "./types.js";
4
4
  import { FormController } from "./controller.js";
5
5
  import "./field.js";
6
+ import "react";
6
7
 
7
8
  //#region src/components/form/Form/modern/context.d.ts
8
9
  declare function useFormControllerContext<T extends object = Record<string, unknown>>(): FormController<T>;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/form/Form/modern/context.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { FORM_BACKEND, isModernFormController } from "../backend.js";
3
3
  import { createFormField } from "./field.js";
4
4
  import { createFormStore } from "./store.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { getFieldKey, hasPath, normalizePath, readPath } from "./values.js";
3
3
  import { getControllerInternals } from "./controller.js";
4
4
 
@@ -1,13 +1,19 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
+ import { normalizePath } from "./values.js";
3
+
2
4
  //#region src/components/form/Form/modern/field.ts
3
5
  function createFormField(form, path, options = {}) {
4
6
  const { validate, ...registration } = options;
7
+ const normalized = normalizePath(path);
5
8
  return Object.freeze({
6
9
  form,
7
- path: typeof path === "string" ? path : Object.freeze([...path]),
10
+ path: typeof path === "string" ? path : normalized,
8
11
  options: Object.freeze({
9
12
  ...registration,
10
- ...validate && { rules: [...registration.rules ?? [], { validator: (_rule, value, context) => validate(value, context) }] }
13
+ ...validate && { rules: [...registration.rules ?? [], {
14
+ authored: validate,
15
+ validator: (_rule, value, context) => validate(value, context)
16
+ }] }
11
17
  })
12
18
  });
13
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"field.js","names":[],"sources":["../../../../../src/components/form/Form/modern/field.ts"],"sourcesContent":["import type { ReactNode } from 'react';\nimport type { FormController } from './controller';\nimport type { CheckedFormPath, FormValueAtPath } from './path-types';\nimport type { FormReadValue, FormValues } from './read-types';\nimport type { RegistrationOptions } from './types';\nimport type { FormPath } from './values';\n\ndeclare const FIELD_VALUE: unique symbol;\n\n/** Pure configuration, never a mutable/reactive field instance. */\nexport interface FormField<Value = unknown> {\n readonly [FIELD_VALUE]: Value;\n readonly form: FormController<any>;\n readonly path: FormPath;\n readonly options: RegistrationOptions<ReactNode>;\n}\n\nexport interface FormFieldContext<T extends object> {\n readonly signal: AbortSignal;\n getValue<const Path extends FormPath>(\n path: CheckedFormPath<T, Path>,\n ): FormReadValue<FormValueAtPath<T, Path>> | undefined;\n getValues(): FormValues<T>;\n}\n\nexport interface FormFieldOptions<T extends object, Value>\n extends Omit<RegistrationOptions<ReactNode>, 'defaultValue' | 'isEqual'> {\n readonly validate?: (\n value: FormReadValue<Value> | undefined,\n context: FormFieldContext<T>,\n ) => ReactNode | void | Promise<ReactNode | void>;\n readonly defaultValue?: Value;\n readonly isEqual?: (\n previous: FormReadValue<Value> | undefined,\n next: FormReadValue<Value> | undefined,\n ) => boolean;\n}\n\nexport function createFormField<T extends object, Value>(\n form: FormController<T>,\n path: FormPath,\n options: FormFieldOptions<T, Value> = {},\n): FormField<Value> {\n const { validate, ...registration } = options;\n return Object.freeze({\n form,\n path: typeof path === 'string' ? path : Object.freeze([...path]),\n options: Object.freeze({\n ...registration,\n ...(validate && {\n rules: [\n ...(registration.rules ?? []),\n {\n validator: (_rule, value, context) =>\n validate(value, context as FormFieldContext<T>),\n },\n ],\n }),\n }),\n }) as FormField<Value>;\n}\n"],"mappings":";;AAsCA,SAAgB,gBACd,MACA,MACA,UAAsC,EAAE,EACtB;CAClB,MAAM,EAAE,UAAU,GAAG,iBAAiB;AACtC,QAAO,OAAO,OAAO;EACnB;EACA,MAAM,OAAO,SAAS,WAAW,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,CAAC;EAChE,SAAS,OAAO,OAAO;GACrB,GAAG;GACH,GAAI,YAAY,EACd,OAAO,CACL,GAAI,aAAa,SAAS,EAAE,EAC5B,EACE,YAAY,OAAO,OAAO,YACxB,SAAS,OAAO,QAA+B,EAClD,CACF,EACF;GACF,CAAC;EACH,CAAC"}
1
+ {"version":3,"file":"field.js","names":[],"sources":["../../../../../src/components/form/Form/modern/field.ts"],"sourcesContent":["import { normalizePath } from './values';\n\nimport type { ReactNode } from 'react';\nimport type { FormController } from './controller';\nimport type { CheckedFormPath, FormValueAtPath } from './path-types';\nimport type { FormReadValue, FormValues } from './read-types';\nimport type { RegistrationOptions } from './types';\nimport type { FormPath } from './values';\n\ndeclare const FIELD_VALUE: unique symbol;\n\n/** Pure configuration, never a mutable/reactive field instance. */\nexport interface FormField<Value = unknown> {\n readonly [FIELD_VALUE]: Value;\n readonly form: FormController<any>;\n readonly path: FormPath;\n readonly options: RegistrationOptions<ReactNode>;\n}\n\nexport interface FormFieldContext<T extends object> {\n readonly signal: AbortSignal;\n getValue<const Path extends FormPath>(\n path: CheckedFormPath<T, Path>,\n ): FormReadValue<FormValueAtPath<T, Path>> | undefined;\n getValues(): FormValues<T>;\n}\n\nexport interface FormFieldOptions<T extends object, Value>\n extends Omit<RegistrationOptions<ReactNode>, 'defaultValue' | 'isEqual'> {\n readonly validate?: (\n value: FormReadValue<Value> | undefined,\n context: FormFieldContext<T>,\n ) => ReactNode | void | Promise<ReactNode | void>;\n readonly defaultValue?: Value;\n readonly isEqual?: (\n previous: FormReadValue<Value> | undefined,\n next: FormReadValue<Value> | undefined,\n ) => boolean;\n}\n\nexport function createFormField<T extends object, Value>(\n form: FormController<T>,\n path: FormPath,\n options: FormFieldOptions<T, Value> = {},\n): FormField<Value> {\n const { validate, ...registration } = options;\n const normalized = normalizePath(path);\n return Object.freeze({\n form,\n path: typeof path === 'string' ? path : normalized,\n options: Object.freeze({\n ...registration,\n ...(validate && {\n rules: [\n ...(registration.rules ?? []),\n {\n // The adapter has fixed source. Retain the authored function for\n // lazy rule comparison, without changing the consumer's deps.\n authored: validate,\n validator: (_rule, value, context) =>\n validate(value, context as FormFieldContext<T>),\n },\n ],\n }),\n }),\n }) as FormField<Value>;\n}\n"],"mappings":";;;;AAwCA,SAAgB,gBACd,MACA,MACA,UAAsC,EAAE,EACtB;CAClB,MAAM,EAAE,UAAU,GAAG,iBAAiB;CACtC,MAAM,aAAa,cAAc,KAAK;AACtC,QAAO,OAAO,OAAO;EACnB;EACA,MAAM,OAAO,SAAS,WAAW,OAAO;EACxC,SAAS,OAAO,OAAO;GACrB,GAAG;GACH,GAAI,YAAY,EACd,OAAO,CACL,GAAI,aAAa,SAAS,EAAE,EAC5B;IAGE,UAAU;IACV,YAAY,OAAO,OAAO,YACxB,SAAS,OAAO,QAA+B;IAClD,CACF,EACF;GACF,CAAC;EACH,CAAC"}
@@ -1,9 +1,9 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-448aeb3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b861864 | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../../utils/react/useLayoutEffect.js";
3
3
  import { ModernControllerContext } from "./context.js";
4
4
  import { getFieldKey, normalizePath, readPath } from "./values.js";
5
5
  import { createFormController, getControllerInternals } from "./controller.js";
6
- import { useContext, useState } from "react";
6
+ import { useContext, useMemo, useState } from "react";
7
7
  import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
8
8
  import { useSyncExternalStoreWithSelector } from "use-sync-external-store/with-selector.js";
9
9
 
@@ -21,10 +21,12 @@ function useFormController(options) {
21
21
  return controller;
22
22
  }
23
23
  function useFormValue(form, path) {
24
- return useFormSelector(form, (state) => readPath(state.values, normalizePath(path)));
24
+ const normalized = useMemo(() => normalizePath(path), [path]);
25
+ return useFormSelector(form, (state) => readPath(state.values, normalized));
25
26
  }
26
27
  function useFormFieldState(form, path) {
27
- return useFormSelector(form, (state) => state.fields[getFieldKey(path)]);
28
+ const key = useMemo(() => getFieldKey(path), [path]);
29
+ return useFormSelector(form, (state) => state.fields[key]);
28
30
  }
29
31
  function useFormSelector(controller, selector, options) {
30
32
  const { getServerSnapshot } = getControllerInternals(controller, "Form.useSelector()");
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","names":[],"sources":["../../../../../src/components/form/Form/modern/react.tsx"],"sourcesContent":["import { useContext, useState } from 'react';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector.js';\n\nimport { useLayoutEffect } from '../../../../utils/react/useLayoutEffect';\n\nimport { ModernControllerContext } from './context';\nimport { createFormController, getControllerInternals } from './controller';\nimport { getFieldKey, normalizePath, readPath } from './values';\n\nimport type { ReactNode } from 'react';\nimport type {\n FormController,\n ModernFieldState,\n ModernFormState,\n UseFormControllerOptions,\n} from './controller';\nimport type { CheckedFormPath, FormValueAtPath } from './path-types';\nimport type { FormReadValue } from './read-types';\nimport type { FormPath } from './values';\n\nexport function useFormController<T extends object = Record<string, unknown>>(\n options?: UseFormControllerOptions<T>,\n): FormController<T> {\n // Initial options seed synchronously. A new options object never resets the\n // controller, and the creator does not subscribe its owner to form changes.\n const [controller] = useState(() => createFormController(options));\n const { store } = getControllerInternals(controller, 'Form.useController()');\n useLayoutEffect(() => {\n store.updateCallbacks({\n onSubmit: options?.onSubmit,\n onSubmitFailed: options?.onSubmitFailed,\n onValuesChange: options?.onValuesChange,\n });\n });\n // Do not dispose from effect cleanup: Strict Mode and hidden React trees\n // reconnect effects while preserving state. Subscriptions own their cleanup;\n // the controller has no external resources and is collected with its owner.\n return controller;\n}\n\nexport function useFormValue<T extends object, const Path extends FormPath>(\n form: FormController<T>,\n path: CheckedFormPath<T, Path>,\n): FormReadValue<FormValueAtPath<T, Path>> | undefined {\n return useFormSelector(form, (state) =>\n readPath(state.values, normalizePath(path)),\n ) as FormReadValue<FormValueAtPath<T, Path>> | undefined;\n}\n\nexport function useFormFieldState<\n T extends object,\n const Path extends FormPath,\n>(\n form: FormController<T>,\n path: CheckedFormPath<T, Path>,\n): ModernFieldState<FormValueAtPath<T, Path>> | undefined {\n return useFormSelector(form, (state) => state.fields[getFieldKey(path)]) as\n | ModernFieldState<FormValueAtPath<T, Path>>\n | undefined;\n}\n\nexport interface FormSelectorOptions<Selected> {\n isEqual?: (previous: Selected, next: Selected) => boolean;\n}\n\nexport function useFormSelector<T extends object, Selected>(\n controller: FormController<T>,\n selector: (state: ModernFormState<T>) => Selected,\n options?: FormSelectorOptions<Selected>,\n): Selected {\n const { getServerSnapshot } = getControllerInternals(\n controller,\n 'Form.useSelector()',\n );\n return useSyncExternalStoreWithSelector(\n controller.subscribe,\n controller.getSnapshot,\n getServerSnapshot,\n selector,\n options?.isEqual,\n );\n}\n\nexport interface FormSubscribeProps<T extends object, Selected>\n extends FormSelectorOptions<Selected> {\n /** Omit to use modern context. An explicit undefined detaches from context. */\n form?: FormController<T>;\n selector: (state: ModernFormState<T>) => Selected;\n children: (selected: Selected) => ReactNode;\n}\n\nexport function FormSubscribe<\n T extends object = Record<string, unknown>,\n Selected = unknown,\n>(props: FormSubscribeProps<T, Selected>) {\n const fromContext = useContext(ModernControllerContext);\n const controller = Object.hasOwn(props, 'form') ? props.form : fromContext;\n if (!controller) {\n throw new Error(\n '<Form.Subscribe> requires a modern form prop or a modern <Form> root.',\n );\n }\n const selected = useFormSelector(controller, props.selector, {\n isEqual: props.isEqual,\n });\n return <>{props.children(selected)}</>;\n}\n"],"mappings":";;;;;;;;;;AAoBA,SAAgB,kBACd,SACmB;CAGnB,MAAM,CAAC,cAAc,eAAe,qBAAqB,QAAQ,CAAC;CAClE,MAAM,EAAE,UAAU,uBAAuB,YAAY,uBAAuB;AAC5E,yBAAsB;AACpB,QAAM,gBAAgB;GACpB,UAAU,SAAS;GACnB,gBAAgB,SAAS;GACzB,gBAAgB,SAAS;GAC1B,CAAC;GACF;AAIF,QAAO;;AAGT,SAAgB,aACd,MACA,MACqD;AACrD,QAAO,gBAAgB,OAAO,UAC5B,SAAS,MAAM,QAAQ,cAAc,KAAK,CAAC,CAC5C;;AAGH,SAAgB,kBAId,MACA,MACwD;AACxD,QAAO,gBAAgB,OAAO,UAAU,MAAM,OAAO,YAAY,KAAK,EAAE;;AAS1E,SAAgB,gBACd,YACA,UACA,SACU;CACV,MAAM,EAAE,sBAAsB,uBAC5B,YACA,qBACD;AACD,QAAO,iCACL,WAAW,WACX,WAAW,aACX,mBACA,UACA,SAAS,QACV;;AAWH,SAAgB,cAGd,OAAwC;CACxC,MAAM,cAAc,WAAW,wBAAwB;CACvD,MAAM,aAAa,OAAO,OAAO,OAAO,OAAO,GAAG,MAAM,OAAO;AAC/D,KAAI,CAAC,WACH,OAAM,IAAI,MACR,wEACD;CAEH,MAAM,WAAW,gBAAgB,YAAY,MAAM,UAAU,EAC3D,SAAS,MAAM,SAChB,CAAC;AACF,QAAO,4CAAG,MAAM,SAAS,SAAS,GAAI"}
1
+ {"version":3,"file":"react.js","names":[],"sources":["../../../../../src/components/form/Form/modern/react.tsx"],"sourcesContent":["import { useContext, useMemo, useState } from 'react';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector.js';\n\nimport { useLayoutEffect } from '../../../../utils/react/useLayoutEffect';\n\nimport { ModernControllerContext } from './context';\nimport { createFormController, getControllerInternals } from './controller';\nimport { getFieldKey, normalizePath, readPath } from './values';\n\nimport type { ReactNode } from 'react';\nimport type {\n FormController,\n ModernFieldState,\n ModernFormState,\n UseFormControllerOptions,\n} from './controller';\nimport type { CheckedFormPath, FormValueAtPath } from './path-types';\nimport type { FormReadValue } from './read-types';\nimport type { FormPath } from './values';\n\nexport function useFormController<T extends object = Record<string, unknown>>(\n options?: UseFormControllerOptions<T>,\n): FormController<T> {\n // Initial options seed synchronously. A new options object never resets the\n // controller, and the creator does not subscribe its owner to form changes.\n const [controller] = useState(() => createFormController(options));\n const { store } = getControllerInternals(controller, 'Form.useController()');\n // Intentionally commit after every render: callbacks are live, unlike the\n // initial defaults/policy. Abandoned renders must never replace callbacks.\n useLayoutEffect(() => {\n store.updateCallbacks({\n onSubmit: options?.onSubmit,\n onSubmitFailed: options?.onSubmitFailed,\n onValuesChange: options?.onValuesChange,\n });\n });\n // Do not dispose from effect cleanup: Strict Mode and hidden React trees\n // reconnect effects while preserving state. Subscriptions own their cleanup;\n // the controller has no external resources and is collected with its owner.\n return controller;\n}\n\nexport function useFormValue<T extends object, const Path extends FormPath>(\n form: FormController<T>,\n path: CheckedFormPath<T, Path>,\n): FormReadValue<FormValueAtPath<T, Path>> | undefined {\n const normalized = useMemo(() => normalizePath(path), [path]);\n return useFormSelector(form, (state) =>\n readPath(state.values, normalized),\n ) as FormReadValue<FormValueAtPath<T, Path>> | undefined;\n}\n\nexport function useFormFieldState<\n T extends object,\n const Path extends FormPath,\n>(\n form: FormController<T>,\n path: CheckedFormPath<T, Path>,\n): ModernFieldState<FormValueAtPath<T, Path>> | undefined {\n const key = useMemo(() => getFieldKey(path), [path]);\n return useFormSelector(form, (state) => state.fields[key]) as\n | ModernFieldState<FormValueAtPath<T, Path>>\n | undefined;\n}\n\nexport interface FormSelectorOptions<Selected> {\n isEqual?: (previous: Selected, next: Selected) => boolean;\n}\n\nexport function useFormSelector<T extends object, Selected>(\n controller: FormController<T>,\n selector: (state: ModernFormState<T>) => Selected,\n options?: FormSelectorOptions<Selected>,\n): Selected {\n const { getServerSnapshot } = getControllerInternals(\n controller,\n 'Form.useSelector()',\n );\n return useSyncExternalStoreWithSelector(\n controller.subscribe,\n controller.getSnapshot,\n getServerSnapshot,\n selector,\n options?.isEqual,\n );\n}\n\nexport interface FormSubscribeProps<T extends object, Selected>\n extends FormSelectorOptions<Selected> {\n /** Omit to use modern context. An explicit undefined detaches from context. */\n form?: FormController<T>;\n selector: (state: ModernFormState<T>) => Selected;\n children: (selected: Selected) => ReactNode;\n}\n\nexport function FormSubscribe<\n T extends object = Record<string, unknown>,\n Selected = unknown,\n>(props: FormSubscribeProps<T, Selected>) {\n const fromContext = useContext(ModernControllerContext);\n const controller = Object.hasOwn(props, 'form') ? props.form : fromContext;\n if (!controller) {\n throw new Error(\n '<Form.Subscribe> requires a modern form prop or a modern <Form> root.',\n );\n }\n const selected = useFormSelector(controller, props.selector, {\n isEqual: props.isEqual,\n });\n return <>{props.children(selected)}</>;\n}\n"],"mappings":";;;;;;;;;;AAoBA,SAAgB,kBACd,SACmB;CAGnB,MAAM,CAAC,cAAc,eAAe,qBAAqB,QAAQ,CAAC;CAClE,MAAM,EAAE,UAAU,uBAAuB,YAAY,uBAAuB;AAG5E,yBAAsB;AACpB,QAAM,gBAAgB;GACpB,UAAU,SAAS;GACnB,gBAAgB,SAAS;GACzB,gBAAgB,SAAS;GAC1B,CAAC;GACF;AAIF,QAAO;;AAGT,SAAgB,aACd,MACA,MACqD;CACrD,MAAM,aAAa,cAAc,cAAc,KAAK,EAAE,CAAC,KAAK,CAAC;AAC7D,QAAO,gBAAgB,OAAO,UAC5B,SAAS,MAAM,QAAQ,WAAW,CACnC;;AAGH,SAAgB,kBAId,MACA,MACwD;CACxD,MAAM,MAAM,cAAc,YAAY,KAAK,EAAE,CAAC,KAAK,CAAC;AACpD,QAAO,gBAAgB,OAAO,UAAU,MAAM,OAAO,KAAK;;AAS5D,SAAgB,gBACd,YACA,UACA,SACU;CACV,MAAM,EAAE,sBAAsB,uBAC5B,YACA,qBACD;AACD,QAAO,iCACL,WAAW,WACX,WAAW,aACX,mBACA,UACA,SAAS,QACV;;AAWH,SAAgB,cAGd,OAAwC;CACxC,MAAM,cAAc,WAAW,wBAAwB;CACvD,MAAM,aAAa,OAAO,OAAO,OAAO,OAAO,GAAG,MAAM,OAAO;AAC/D,KAAI,CAAC,WACH,OAAM,IAAI,MACR,wEACD;CAEH,MAAM,WAAW,gBAAgB,YAAY,MAAM,UAAU,EAC3D,SAAS,MAAM,SAChB,CAAC;AACF,QAAO,4CAAG,MAAM,SAAS,SAAS,GAAI"}