@cube-dev/ui-kit 0.178.0 → 0.180.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (742) hide show
  1. package/dist/CHANGELOG.md +73 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  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 +218 -0
  27. package/dist/components/actions/ItemActionsWrapper.js.map +1 -0
  28. package/dist/components/actions/ItemButton/ItemButton.d.ts +11 -1
  29. package/dist/components/actions/ItemButton/ItemButton.js +25 -143
  30. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  31. package/dist/components/actions/Link/Link.js +1 -1
  32. package/dist/components/actions/Menu/Menu.js +1 -1
  33. package/dist/components/actions/Menu/MenuItem.js +1 -1
  34. package/dist/components/actions/Menu/MenuSection.js +1 -1
  35. package/dist/components/actions/Menu/MenuTrigger.js +3 -1
  36. package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
  37. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  38. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  39. package/dist/components/actions/Menu/context.js +1 -1
  40. package/dist/components/actions/Menu/styled.js +1 -1
  41. package/dist/components/actions/actions-run.js +34 -0
  42. package/dist/components/actions/actions-run.js.map +1 -0
  43. package/dist/components/actions/index.js +1 -1
  44. package/dist/components/actions/use-action.js +1 -1
  45. package/dist/components/actions/use-anchored-menu.js +1 -1
  46. package/dist/components/actions/use-context-menu.js +1 -1
  47. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  48. package/dist/components/content/Alert/Alert.js +1 -1
  49. package/dist/components/content/Alert/use-alert.js +1 -1
  50. package/dist/components/content/Avatar/Avatar.js +1 -1
  51. package/dist/components/content/Badge/Badge.js +1 -1
  52. package/dist/components/content/Card/Card.js +1 -1
  53. package/dist/components/content/Content.js +1 -1
  54. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  55. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  56. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  57. package/dist/components/content/Divider.js +1 -1
  58. package/dist/components/content/Footer.js +1 -1
  59. package/dist/components/content/Header.js +1 -1
  60. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  61. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  62. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  63. package/dist/components/content/Item/Item.js +5 -5
  64. package/dist/components/content/Item/Item.js.map +1 -1
  65. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  66. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  67. package/dist/components/content/Layout/GridLayout.js +1 -1
  68. package/dist/components/content/Layout/Layout.js +1 -1
  69. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  70. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  71. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  72. package/dist/components/content/Layout/LayoutContent.js +1 -1
  73. package/dist/components/content/Layout/LayoutContext.js +1 -1
  74. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  75. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  76. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  77. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  78. package/dist/components/content/Layout/LayoutPane.js +1 -1
  79. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  80. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  81. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  82. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  83. package/dist/components/content/Layout/index.js +1 -1
  84. package/dist/components/content/Layout/utils.js +1 -1
  85. package/dist/components/content/Paragraph.js +1 -1
  86. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  87. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  88. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  89. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  90. package/dist/components/content/Result/Result.js +1 -1
  91. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  92. package/dist/components/content/Tag/Tag.js +1 -1
  93. package/dist/components/content/Text.d.ts +14 -14
  94. package/dist/components/content/Text.js +1 -1
  95. package/dist/components/content/TextItem/TextItem.js +1 -1
  96. package/dist/components/content/Title.js +1 -1
  97. package/dist/components/content/Tree/Tree.js +1 -1
  98. package/dist/components/content/Tree/TreeNode.js +1 -1
  99. package/dist/components/content/Tree/styled.js +1 -1
  100. package/dist/components/content/Tree/tree-index.js +1 -1
  101. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  102. package/dist/components/content/Tree/use-load-data.js +1 -1
  103. package/dist/components/content/highlightText.js +1 -1
  104. package/dist/components/content/use-auto-tooltip.js +1 -1
  105. package/dist/components/data/DataTable/DataTable.js +1 -1
  106. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  107. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  108. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  109. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  110. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  111. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  112. package/dist/components/data/TableBase/RowCollection.js +1 -1
  113. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  114. package/dist/components/data/TableBase/TableRow.js +1 -1
  115. package/dist/components/data/TableBase/TableView.js +1 -1
  116. package/dist/components/data/TableBase/column-menu.js +1 -1
  117. package/dist/components/data/TableBase/column-tint.js +1 -1
  118. package/dist/components/data/TableBase/row-menu.js +1 -1
  119. package/dist/components/data/TableBase/styled.js +1 -1
  120. package/dist/components/data/TableBase/table-tree.js +1 -1
  121. package/dist/components/data/TableBase/types.js +1 -1
  122. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  123. package/dist/components/data/TableBase/use-column-order.js +1 -1
  124. package/dist/components/data/TableBase/use-container-width.js +1 -1
  125. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  126. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  127. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  128. package/dist/components/data/TableBase/use-table-search.js +1 -1
  129. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  130. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  131. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  132. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  133. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  134. package/dist/components/fields/Checkbox/Checkbox.d.ts +7 -0
  135. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  136. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  137. package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +1 -1
  138. package/dist/components/fields/Checkbox/CheckboxGroup.js +3 -3
  139. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  140. package/dist/components/fields/Checkbox/context.js +1 -1
  141. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  142. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  143. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  144. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  145. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  146. package/dist/components/fields/CommandTextArea/CommandTextArea.js +2 -2
  147. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  148. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  149. package/dist/components/fields/CommandTextArea/caretPosition.js.map +1 -1
  150. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  151. package/dist/components/fields/DatePicker/DateInput.d.ts +1 -1
  152. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  153. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  154. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  155. package/dist/components/fields/DatePicker/DatePicker.d.ts +1 -1
  156. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  157. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  158. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  159. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  160. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  161. package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
  162. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  163. package/dist/components/fields/DatePicker/DateRangePicker.d.ts +1 -1
  164. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  165. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  166. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +1 -1
  167. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  168. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  169. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  170. package/dist/components/fields/DatePicker/PeriodPicker.d.ts +1 -1
  171. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  172. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  173. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  174. package/dist/components/fields/DatePicker/TimeInput.d.ts +1 -1
  175. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  176. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  177. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  178. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  179. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  180. package/dist/components/fields/DatePicker/period.js +1 -1
  181. package/dist/components/fields/DatePicker/props.js +1 -1
  182. package/dist/components/fields/DatePicker/utils.js +1 -1
  183. package/dist/components/fields/FileInput/FileInput.d.ts +2 -0
  184. package/dist/components/fields/FileInput/FileInput.js +1 -1
  185. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  186. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  187. package/dist/components/fields/FilterPicker/FilterPicker.js +18 -27
  188. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  189. package/dist/components/fields/Input/Input.js +1 -1
  190. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  191. package/dist/components/fields/ListBox/ListBox.js +1 -1
  192. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  193. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  194. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  195. package/dist/components/fields/NumberInput/NumberInput.d.ts +1 -1
  196. package/dist/components/fields/NumberInput/NumberInput.js +3 -3
  197. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  198. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  199. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  200. package/dist/components/fields/Picker/Picker.js +18 -27
  201. package/dist/components/fields/Picker/Picker.js.map +1 -1
  202. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  203. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +1 -1
  204. package/dist/components/fields/RadioGroup/RadioGroup.js +3 -3
  205. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  206. package/dist/components/fields/RadioGroup/context.js +1 -1
  207. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  208. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  209. package/dist/components/fields/Select/Select.js +53 -55
  210. package/dist/components/fields/Select/Select.js.map +1 -1
  211. package/dist/components/fields/Slider/Gradation.js +1 -1
  212. package/dist/components/fields/Slider/HueSlider.js +1 -1
  213. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  214. package/dist/components/fields/Slider/Slider.js +1 -1
  215. package/dist/components/fields/Slider/SliderBase.js +2 -2
  216. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  217. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  218. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  219. package/dist/components/fields/Slider/elements.js +1 -1
  220. package/dist/components/fields/Slider/index.js +1 -1
  221. package/dist/components/fields/Slider/types.d.ts +1 -1
  222. package/dist/components/fields/Switch/Switch.d.ts +2 -0
  223. package/dist/components/fields/Switch/Switch.js +1 -1
  224. package/dist/components/fields/Switch/Switch.js.map +1 -1
  225. package/dist/components/fields/TextArea/TextArea.js +1 -1
  226. package/dist/components/fields/TextInput/TextInput.js +1 -1
  227. package/dist/components/fields/TextInput/TextInputBase.d.ts +1 -1
  228. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  229. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  230. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  231. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  232. package/dist/components/fields/TriggerActions.js +5 -56
  233. package/dist/components/fields/TriggerActions.js.map +1 -1
  234. package/dist/components/fields/color/ColorPanel.js +1 -1
  235. package/dist/components/fields/color/channels.js +1 -1
  236. package/dist/components/fields/color/color.js +1 -1
  237. package/dist/components/fields/color/context.js +1 -1
  238. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  239. package/dist/components/form/Form/Field.js +1 -1
  240. package/dist/components/form/Form/Form.d.ts +38 -2
  241. package/dist/components/form/Form/Form.js +86 -16
  242. package/dist/components/form/Form/Form.js.map +1 -1
  243. package/dist/components/form/Form/ModernFormRoot.d.ts +19 -0
  244. package/dist/components/form/Form/ModernFormRoot.js +108 -0
  245. package/dist/components/form/Form/ModernFormRoot.js.map +1 -0
  246. package/dist/components/form/Form/ResetButton/ResetButton.d.ts +2 -1
  247. package/dist/components/form/Form/ResetButton/ResetButton.js +17 -2
  248. package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
  249. package/dist/components/form/Form/SubmitButton/SubmitButton.d.ts +2 -1
  250. package/dist/components/form/Form/SubmitButton/SubmitButton.js +17 -2
  251. package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
  252. package/dist/components/form/Form/SubmitError.js +26 -3
  253. package/dist/components/form/Form/SubmitError.js.map +1 -1
  254. package/dist/components/form/Form/backend.d.ts +25 -0
  255. package/dist/components/form/Form/backend.js +30 -0
  256. package/dist/components/form/Form/backend.js.map +1 -0
  257. package/dist/components/form/Form/index.d.ts +18 -4
  258. package/dist/components/form/Form/index.js +8 -2
  259. package/dist/components/form/Form/index.js.map +1 -1
  260. package/dist/components/form/Form/modern/actions.js +41 -0
  261. package/dist/components/form/Form/modern/actions.js.map +1 -0
  262. package/dist/components/form/Form/modern/context.d.ts +9 -0
  263. package/dist/components/form/Form/modern/context.js +14 -0
  264. package/dist/components/form/Form/modern/context.js.map +1 -0
  265. package/dist/components/form/Form/modern/controller.d.ts +23 -0
  266. package/dist/components/form/Form/modern/controller.js +48 -0
  267. package/dist/components/form/Form/modern/controller.js.map +1 -0
  268. package/dist/components/form/Form/modern/field-binding.js +41 -0
  269. package/dist/components/form/Form/modern/field-binding.js.map +1 -0
  270. package/dist/components/form/Form/modern/path-types.d.ts +12 -0
  271. package/dist/components/form/Form/modern/react.d.ts +21 -0
  272. package/dist/components/form/Form/modern/react.js +27 -0
  273. package/dist/components/form/Form/modern/react.js.map +1 -0
  274. package/dist/components/form/Form/modern/store.js +813 -0
  275. package/dist/components/form/Form/modern/store.js.map +1 -0
  276. package/dist/components/form/Form/modern/types.d.ts +173 -0
  277. package/dist/components/form/Form/modern/validation.d.ts +27 -0
  278. package/dist/components/form/Form/modern/validation.js +41 -0
  279. package/dist/components/form/Form/modern/validation.js.map +1 -0
  280. package/dist/components/form/Form/modern/values.d.ts +7 -0
  281. package/dist/components/form/Form/modern/values.js +144 -0
  282. package/dist/components/form/Form/modern/values.js.map +1 -0
  283. package/dist/components/form/Form/use-field/types.d.ts +4 -1
  284. package/dist/components/form/Form/use-field/use-field-binding.js +93 -0
  285. package/dist/components/form/Form/use-field/use-field-binding.js.map +1 -0
  286. package/dist/components/form/Form/use-field/use-field-props.d.ts +12 -1
  287. package/dist/components/form/Form/use-field/use-field-props.js +67 -50
  288. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  289. package/dist/components/form/Form/use-field/use-field.d.ts +6 -0
  290. package/dist/components/form/Form/use-field/use-field.js +47 -22
  291. package/dist/components/form/Form/use-field/use-field.js.map +1 -1
  292. package/dist/components/form/Form/use-form.d.ts +4 -1
  293. package/dist/components/form/Form/use-form.js +9 -5
  294. package/dist/components/form/Form/use-form.js.map +1 -1
  295. package/dist/components/form/Form/validation.js +2 -2
  296. package/dist/components/form/Label.js +1 -1
  297. package/dist/components/form/index.d.ts +8 -1
  298. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  299. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  300. package/dist/components/form/validation/use-validation-props.js +1 -1
  301. package/dist/components/form/wrapper.js +1 -1
  302. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  303. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  304. package/dist/components/layout/Board/Board.js +1 -1
  305. package/dist/components/layout/Board/BoardProvider.js +1 -1
  306. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  307. package/dist/components/layout/Board/Widget.js +1 -1
  308. package/dist/components/layout/Board/WidgetHost.js +1 -1
  309. package/dist/components/layout/Board/board-context.js +1 -1
  310. package/dist/components/layout/Board/board-store.js +1 -1
  311. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  312. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  313. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  314. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  315. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  316. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  317. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  318. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  319. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  320. package/dist/components/layout/Board/index.js +1 -1
  321. package/dist/components/layout/Board/responsive-utils.js +1 -1
  322. package/dist/components/layout/Board/use-board-layout.js +1 -1
  323. package/dist/components/layout/Board/use-board-registry.js +1 -1
  324. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  325. package/dist/components/layout/Board/use-board-selection.js +1 -1
  326. package/dist/components/layout/Flex.js +1 -1
  327. package/dist/components/layout/Flow.js +1 -1
  328. package/dist/components/layout/Grid.js +1 -1
  329. package/dist/components/layout/Panel.js +1 -1
  330. package/dist/components/layout/Prefix.js +1 -1
  331. package/dist/components/layout/ResizablePanel.js +1 -1
  332. package/dist/components/layout/Space.js +1 -1
  333. package/dist/components/layout/Suffix.js +1 -1
  334. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  335. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  336. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  337. package/dist/components/navigation/Tabs/TabButton.js +36 -40
  338. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  339. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  340. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  341. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  342. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  343. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  344. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  345. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  346. package/dist/components/navigation/Tabs/styled.js +1 -29
  347. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  348. package/dist/components/navigation/Tabs/types.js +1 -1
  349. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  350. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  351. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  352. package/dist/components/other/Calendar/Calendar.js +1 -1
  353. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  354. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  355. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  356. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  357. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  358. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  359. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  360. package/dist/components/other/Calendar/styled.js +1 -1
  361. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  362. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  363. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  364. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  365. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  366. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  367. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  368. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  369. package/dist/components/overlays/Dialog/DialogTrigger.js +4 -2
  370. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  371. package/dist/components/overlays/Dialog/context.js +1 -1
  372. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  373. package/dist/components/overlays/Modal/Modal.js +1 -1
  374. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  375. package/dist/components/overlays/Modal/Overlay.js +1 -1
  376. package/dist/components/overlays/Modal/Popover.js +1 -1
  377. package/dist/components/overlays/Modal/Tray.js +1 -1
  378. package/dist/components/overlays/Modal/Underlay.js +1 -1
  379. package/dist/components/overlays/Notifications/Notification.js +1 -1
  380. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  381. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  382. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  383. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  384. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  385. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  386. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  387. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  388. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  389. package/dist/components/overlays/Notifications/index.js +1 -1
  390. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  391. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  392. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  393. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  394. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  395. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  396. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  397. package/dist/components/overlays/Toast/index.js +1 -1
  398. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  399. package/dist/components/overlays/Toast/useToast.js +1 -1
  400. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  401. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  402. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  403. package/dist/components/overlays/Tooltip/context.js +1 -1
  404. package/dist/components/portal/Portal.js +1 -1
  405. package/dist/components/portal/PortalProvider.js +1 -1
  406. package/dist/components/portal/usePortal.js +1 -1
  407. package/dist/components/shared/DraggableCollection.js +1 -1
  408. package/dist/components/shared/InvalidIcon.js +1 -1
  409. package/dist/components/shared/ValidIcon.js +1 -1
  410. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  411. package/dist/components/status/Spin/Cube.js +1 -1
  412. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  413. package/dist/components/status/Spin/Spin.js +1 -1
  414. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  415. package/dist/data/item-themes.js +25 -6
  416. package/dist/data/item-themes.js.map +1 -1
  417. package/dist/data/themes.js +1 -1
  418. package/dist/eslint-plugin/defaults.generated.js +1 -1
  419. package/dist/eslint-plugin/index.js +1 -1
  420. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  421. package/dist/i18n/I18nProvider.js +1 -1
  422. package/dist/i18n/createFormatter.js +1 -1
  423. package/dist/i18n/index.js +1 -1
  424. package/dist/i18n/instance.js +1 -1
  425. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  426. package/dist/i18n/locales/en-US/uikit.js +1 -1
  427. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  428. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  429. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  430. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  431. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  432. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  433. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  434. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  435. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  436. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  437. package/dist/i18n/locales.js +1 -1
  438. package/dist/i18n/useFormatter.js +1 -1
  439. package/dist/i18n/useI18n.js +1 -1
  440. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  441. package/dist/icons/AdjustmentsIcon.js +1 -1
  442. package/dist/icons/AiIcon.js +1 -1
  443. package/dist/icons/AreaChartIcon.js +1 -1
  444. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  445. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  446. package/dist/icons/BackwardIcon.js +1 -1
  447. package/dist/icons/BarChartIcon.js +1 -1
  448. package/dist/icons/BellFilledIcon.js +1 -1
  449. package/dist/icons/BellIcon.js +1 -1
  450. package/dist/icons/BooleanIcon.js +1 -1
  451. package/dist/icons/CalendarEditIcon.js +1 -1
  452. package/dist/icons/CalendarIcon.js +1 -1
  453. package/dist/icons/CaretDownIcon.js +1 -1
  454. package/dist/icons/CaretUpIcon.js +1 -1
  455. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  456. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  457. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  458. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  459. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  460. package/dist/icons/ChartBarLineIcon.js +1 -1
  461. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  462. package/dist/icons/ChartBarStackedIcon.js +1 -1
  463. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  464. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  465. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  466. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  467. package/dist/icons/ChartBubbleIcon.js +1 -1
  468. package/dist/icons/ChartDonut2Icon.js +1 -1
  469. package/dist/icons/ChartFunnelIcon.js +1 -1
  470. package/dist/icons/ChartHeatmapIcon.js +1 -1
  471. package/dist/icons/ChartKPIIcon.js +1 -1
  472. package/dist/icons/ChartPie2Icon.js +1 -1
  473. package/dist/icons/ChartScatterIcon.js +1 -1
  474. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  475. package/dist/icons/CheckCircleIcon.js +1 -1
  476. package/dist/icons/CheckIcon.js +1 -1
  477. package/dist/icons/CircleFilledIcon.js +1 -1
  478. package/dist/icons/ClearIcon.js +1 -1
  479. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  480. package/dist/icons/CloseCircleIcon.js +1 -1
  481. package/dist/icons/CloseIcon.js +1 -1
  482. package/dist/icons/CodeIcon.js +1 -1
  483. package/dist/icons/ColumnTotalIcon.js +1 -1
  484. package/dist/icons/CopyIcon.js +1 -1
  485. package/dist/icons/CountIcon.js +1 -1
  486. package/dist/icons/CubeIcon.js +1 -1
  487. package/dist/icons/CubePauseIcon.js +1 -1
  488. package/dist/icons/CubePlayIcon.js +1 -1
  489. package/dist/icons/CurrencyDollarIcon.js +1 -1
  490. package/dist/icons/DangerIcon.js +1 -1
  491. package/dist/icons/DashboardIcon.js +1 -1
  492. package/dist/icons/DatabaseIcon.js +1 -1
  493. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  494. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  495. package/dist/icons/DirectionIcon.js +1 -1
  496. package/dist/icons/DonutIcon.js +1 -1
  497. package/dist/icons/DownIcon.js +1 -1
  498. package/dist/icons/EditIcon.js +1 -1
  499. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  500. package/dist/icons/ExclamationCircleIcon.js +1 -1
  501. package/dist/icons/ExclamationIcon.js +1 -1
  502. package/dist/icons/EyeIcon.js +1 -1
  503. package/dist/icons/EyeInvisibleIcon.js +1 -1
  504. package/dist/icons/FilterIcon.js +1 -1
  505. package/dist/icons/FolderFilledIcon.js +1 -1
  506. package/dist/icons/FolderIcon.js +1 -1
  507. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  508. package/dist/icons/FolderOpenIcon.js +1 -1
  509. package/dist/icons/ForwardIcon.js +1 -1
  510. package/dist/icons/GripVerticalIcon.js +1 -1
  511. package/dist/icons/HierarchyIcon.js +1 -1
  512. package/dist/icons/HierarchyOpenIcon.js +1 -1
  513. package/dist/icons/Icon.js +1 -1
  514. package/dist/icons/InfoCircleIcon.js +1 -1
  515. package/dist/icons/InfoIcon.js +1 -1
  516. package/dist/icons/KeyIcon.js +1 -1
  517. package/dist/icons/LeftIcon.js +1 -1
  518. package/dist/icons/LineChartIcon.js +1 -1
  519. package/dist/icons/LoadingIcon.js +1 -1
  520. package/dist/icons/LockFilledIcon.js +1 -1
  521. package/dist/icons/LockIcon.js +1 -1
  522. package/dist/icons/MoreIcon.js +1 -1
  523. package/dist/icons/NotAllowedIcon.js +1 -1
  524. package/dist/icons/Number123Icon.js +1 -1
  525. package/dist/icons/NumberIcon.js +1 -1
  526. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  527. package/dist/icons/PauseCircleIcon.js +1 -1
  528. package/dist/icons/PauseIcon.js +1 -1
  529. package/dist/icons/PercentageIcon.js +1 -1
  530. package/dist/icons/PieChartIcon.js +1 -1
  531. package/dist/icons/PipetteIcon.js +1 -1
  532. package/dist/icons/PlayCircleIcon.js +1 -1
  533. package/dist/icons/PlayIcon.js +1 -1
  534. package/dist/icons/PlusIcon.js +1 -1
  535. package/dist/icons/ProgressBarIcon.js +1 -1
  536. package/dist/icons/ReloadIcon.js +1 -1
  537. package/dist/icons/ReportIcon.js +1 -1
  538. package/dist/icons/ReturnIcon.js +1 -1
  539. package/dist/icons/RightIcon.js +1 -1
  540. package/dist/icons/RowTotalsIcon.js +1 -1
  541. package/dist/icons/SchemeIcon.js +1 -1
  542. package/dist/icons/SearchIcon.js +1 -1
  543. package/dist/icons/SemanticQueryIcon.js +1 -1
  544. package/dist/icons/SettingsIcon.js +1 -1
  545. package/dist/icons/ShieldFilledIcon.js +1 -1
  546. package/dist/icons/ShieldIcon.js +1 -1
  547. package/dist/icons/SlashIcon.js +1 -1
  548. package/dist/icons/SparklesIcon.js +1 -1
  549. package/dist/icons/SqlIcon.js +1 -1
  550. package/dist/icons/StatsIcon.js +1 -1
  551. package/dist/icons/StopIcon.js +1 -1
  552. package/dist/icons/StringIcon.js +1 -1
  553. package/dist/icons/SubtotalsIcon.js +1 -1
  554. package/dist/icons/SwitchIcon.js +1 -1
  555. package/dist/icons/TableIcon.js +1 -1
  556. package/dist/icons/ThumbsDownIcon.js +1 -1
  557. package/dist/icons/ThumbsUpIcon.js +1 -1
  558. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  559. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  560. package/dist/icons/ThunderboltIcon.js +1 -1
  561. package/dist/icons/TimeIcon.js +1 -1
  562. package/dist/icons/TrashIcon.js +1 -1
  563. package/dist/icons/UnlockIcon.js +1 -1
  564. package/dist/icons/UpIcon.js +1 -1
  565. package/dist/icons/UserGroupIcon.js +1 -1
  566. package/dist/icons/UserIcon.js +1 -1
  567. package/dist/icons/UserLockIcon.js +1 -1
  568. package/dist/icons/ViewIcon.js +1 -1
  569. package/dist/icons/WarningFilledIcon.js +1 -1
  570. package/dist/icons/WarningIcon.js +1 -1
  571. package/dist/icons/wrap-icon.js +1 -1
  572. package/dist/index.d.ts +10 -3
  573. package/dist/index.js +3 -3
  574. package/dist/probe/canonicalize.js +1 -1
  575. package/dist/probe/css.js +1 -1
  576. package/dist/probe/index.js +1 -1
  577. package/dist/provider.js +1 -1
  578. package/dist/providers/TrackingProvider.js +1 -1
  579. package/dist/providers/navigationAdapter.default.js +1 -1
  580. package/dist/shared/form.d.ts +16 -2
  581. package/dist/shared/index.d.ts +1 -1
  582. package/dist/tokens/all-tokens.js +1 -1
  583. package/dist/tokens/base.js +1 -1
  584. package/dist/tokens/color-seed.js +1 -1
  585. package/dist/tokens/color-theme.js +1 -1
  586. package/dist/tokens/colors.js +1 -1
  587. package/dist/tokens/layout.js +1 -1
  588. package/dist/tokens/lazy-styles.js +1 -1
  589. package/dist/tokens/legacy-color.js +1 -1
  590. package/dist/tokens/palette-config.js +1 -1
  591. package/dist/tokens/palette.js +1 -1
  592. package/dist/tokens/resolve.js +1 -1
  593. package/dist/tokens/shadows.js +1 -1
  594. package/dist/tokens/sizes.js +1 -1
  595. package/dist/tokens/spacing.js +1 -1
  596. package/dist/tokens/typography.js +1 -1
  597. package/dist/utils/ResizeSensor.js +1 -1
  598. package/dist/utils/colors.js +1 -1
  599. package/dist/utils/dotize.js +50 -0
  600. package/dist/utils/dotize.js.map +1 -0
  601. package/dist/utils/is-dev-env.js +1 -1
  602. package/dist/utils/modules.js +1 -1
  603. package/dist/utils/promise.js +1 -1
  604. package/dist/utils/raf.js +1 -1
  605. package/dist/utils/random.js +1 -1
  606. package/dist/utils/range.js +1 -1
  607. package/dist/utils/react/RenderCache.js +1 -1
  608. package/dist/utils/react/Slots.js +1 -1
  609. package/dist/utils/react/chain.js +1 -1
  610. package/dist/utils/react/disabledProps.js +1 -1
  611. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  612. package/dist/utils/react/index.js +1 -1
  613. package/dist/utils/react/interactions.js +1 -1
  614. package/dist/utils/react/isTextOnly.js +1 -1
  615. package/dist/utils/react/mapProps.js +1 -1
  616. package/dist/utils/react/mergeProps.js +1 -1
  617. package/dist/utils/react/nullableValue.js +1 -1
  618. package/dist/utils/react/resolveIcon.js +1 -1
  619. package/dist/utils/react/sharedStore.js +1 -1
  620. package/dist/utils/react/useBufferedValue.js +1 -1
  621. package/dist/utils/react/useCombinedRefs.js +1 -1
  622. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  623. package/dist/utils/react/useEventBus.js +1 -1
  624. package/dist/utils/react/useId.js +1 -1
  625. package/dist/utils/react/useIsDarwin.js +1 -1
  626. package/dist/utils/react/useKeySymbols.js +1 -1
  627. package/dist/utils/react/useLayoutEffect.js +1 -1
  628. package/dist/utils/react/useLocalStorage.js +1 -1
  629. package/dist/utils/react/useMergeStyles.js +1 -1
  630. package/dist/utils/react/usePopoverSync.js +1 -1
  631. package/dist/utils/react/useQaProps.js +1 -1
  632. package/dist/utils/react/useScheme.js +1 -1
  633. package/dist/utils/react/useViewportSize.js +1 -1
  634. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  635. package/dist/utils/selection.js +1 -1
  636. package/dist/utils/styles.js +1 -1
  637. package/dist/utils/tree.js +1 -1
  638. package/dist/utils/warnings.js +1 -1
  639. package/dist/version.js +3 -3
  640. package/docs/CreateComponent.md +4 -0
  641. package/docs/Usage.md +2 -0
  642. package/docs/components/Block.md +3 -3
  643. package/docs/components/CollectionItem.md +3 -3
  644. package/docs/components/GridProvider.md +3 -3
  645. package/docs/components/Root.md +1 -1
  646. package/docs/components/actions/Action.md +3 -3
  647. package/docs/components/actions/Banner.md +3 -3
  648. package/docs/components/actions/Button.md +3 -3
  649. package/docs/components/actions/ButtonGroup.md +3 -3
  650. package/docs/components/actions/ButtonSplit.md +3 -3
  651. package/docs/components/actions/CommandMenu.md +3 -3
  652. package/docs/components/actions/ItemAction.md +3 -1
  653. package/docs/components/actions/ItemButton.md +15 -1
  654. package/docs/components/actions/Link.md +3 -3
  655. package/docs/components/actions/Menu.md +3 -3
  656. package/docs/components/actions/MenuTrigger.md +3 -3
  657. package/docs/components/actions/SubMenuTrigger.md +3 -3
  658. package/docs/components/actions/use-anchored-menu.md +3 -3
  659. package/docs/components/actions/use-context-menu.md +3 -3
  660. package/docs/components/content/ActiveZone.md +3 -3
  661. package/docs/components/content/Alert.md +3 -3
  662. package/docs/components/content/Avatar.md +3 -3
  663. package/docs/components/content/Card.md +3 -3
  664. package/docs/components/content/Content.md +3 -3
  665. package/docs/components/content/CopyPasteBlock.md +1 -1
  666. package/docs/components/content/CopySnippet.md +3 -3
  667. package/docs/components/content/Disclosure.md +3 -3
  668. package/docs/components/content/Divider.md +3 -3
  669. package/docs/components/content/Footer.md +3 -3
  670. package/docs/components/content/Header.md +3 -3
  671. package/docs/components/content/HotKeys.md +3 -3
  672. package/docs/components/content/InlineInput.md +3 -3
  673. package/docs/components/content/Item.md +3 -3
  674. package/docs/components/content/Layout.md +3 -3
  675. package/docs/components/content/Paragraph.md +3 -3
  676. package/docs/components/content/Placeholder.md +3 -3
  677. package/docs/components/content/Result.md +3 -3
  678. package/docs/components/content/Skeleton.md +3 -3
  679. package/docs/components/content/Title.md +3 -3
  680. package/docs/components/content/Tree.md +3 -3
  681. package/docs/components/data/DataTable.md +3 -3
  682. package/docs/components/data/ItemTable.md +3 -3
  683. package/docs/components/fields/Checkbox.md +3 -3
  684. package/docs/components/fields/ColorInput.md +3 -3
  685. package/docs/components/fields/ColorPicker.md +3 -3
  686. package/docs/components/fields/ColorSwatch.md +3 -3
  687. package/docs/components/fields/ColorSwatchGroup.md +3 -3
  688. package/docs/components/fields/ComboBox.md +3 -3
  689. package/docs/components/fields/CommandTextArea.md +3 -3
  690. package/docs/components/fields/DatePicker.md +3 -3
  691. package/docs/components/fields/FileInput.md +3 -3
  692. package/docs/components/fields/FilterListBox.md +3 -3
  693. package/docs/components/fields/FilterPicker.md +13 -3
  694. package/docs/components/fields/HueSlider.md +3 -3
  695. package/docs/components/fields/ListBox.md +3 -3
  696. package/docs/components/fields/NumberInput.md +3 -3
  697. package/docs/components/fields/PasswordInput.md +3 -3
  698. package/docs/components/fields/PeriodPicker.md +3 -3
  699. package/docs/components/fields/Picker.md +13 -3
  700. package/docs/components/fields/RadioGroup.md +3 -3
  701. package/docs/components/fields/SearchComboBox.md +3 -3
  702. package/docs/components/fields/SearchInput.md +3 -3
  703. package/docs/components/fields/Select.md +13 -3
  704. package/docs/components/fields/Slider.md +3 -3
  705. package/docs/components/fields/Switch.md +3 -3
  706. package/docs/components/fields/TextArea.md +3 -3
  707. package/docs/components/fields/TextInput.md +3 -3
  708. package/docs/components/fields/TextInputMapper.md +3 -3
  709. package/docs/components/form/Field.md +3 -3
  710. package/docs/components/form/Form.md +54 -4
  711. package/docs/components/layout/Board.md +3 -3
  712. package/docs/components/layout/Flex.md +3 -3
  713. package/docs/components/layout/Flow.md +3 -3
  714. package/docs/components/layout/Grid.md +3 -3
  715. package/docs/components/layout/Panel.md +3 -3
  716. package/docs/components/layout/Prefix.md +3 -3
  717. package/docs/components/layout/ResizablePanel.md +3 -3
  718. package/docs/components/layout/Space.md +3 -3
  719. package/docs/components/layout/Suffix.md +3 -3
  720. package/docs/components/navigation/Pagination.md +3 -3
  721. package/docs/components/navigation/Tabs.md +3 -3
  722. package/docs/components/organisms/StatsCard.md +3 -3
  723. package/docs/components/overlays/AlertDialog.md +3 -3
  724. package/docs/components/overlays/Dialog.md +2 -2
  725. package/docs/components/overlays/DialogContainer.md +2 -2
  726. package/docs/components/overlays/DialogForm.md +2 -2
  727. package/docs/components/overlays/DialogTrigger.md +2 -2
  728. package/docs/components/overlays/Tooltip.md +3 -3
  729. package/docs/components/overlays/TooltipProvider.md +3 -3
  730. package/docs/components/overlays/TooltipTrigger.md +3 -3
  731. package/docs/components/status/LoadingAnimation.md +3 -3
  732. package/docs/components/status/Spin.md +3 -3
  733. package/docs/modern-form-migration.md +104 -0
  734. package/docs/modern-form-typecheck.md +35 -0
  735. package/docs/tasty/ai-agents.md +8 -3
  736. package/docs/tasty/debug.md +2 -5
  737. package/docs/tasty/methodology.md +3 -3
  738. package/docs/tasty/pipeline.md +3 -0
  739. package/docs/tasty/runtime-benchmarks.md +105 -68
  740. package/docs/tasty/ssr.md +1 -1
  741. package/docs/tasty/styles.md +43 -11
  742. package/package.json +13 -4
@@ -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 { useFormProps } from '../Form';\nimport { FieldTypes } from '../types';\nimport { CubeFormInstance } from '../use-form';\n\nexport interface CubeSubmitButtonProps<T extends FieldTypes = FieldTypes>\n extends CubeButtonProps {\n form?: CubeFormInstance<T>;\n}\n\nfunction SubmitButton(\n props: CubeSubmitButtonProps,\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 { form, isDisabled, ...otherProps } = 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\nconst _SubmitButton = forwardRef(SubmitButton);\n\n_SubmitButton.displayName = 'SubmitButton';\n\nexport { _SubmitButton as SubmitButton };\n"],"mappings":";;;;;;;;AAcA,SAAS,aACP,OACA,KACA;CACA,MAAM,gBAAgB,iBAAiB,EAAE,CAAoB;AAE7D,SAAQ,aAAa,MAAM;CAE3B,MAAM,EAAE,YAAY,sBAAsB;AAE1C,SAAQ,aAAa,MAAM;CAE3B,MAAM,EAAE,MAAM,YAAY,GAAG,eAAe;CAC5C,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,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}\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 { form, isDisabled, ...otherProps } = 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":";;;;;;;;;;AAkBA,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,EAAE,MAAM,YAAY,GAAG,eAAe;CAC5C,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,13 +1,14 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.180.0 | Cube Dev Team */
2
2
  import { useI18n } from "../../../i18n/useI18n.js";
3
+ import { ModernControllerContext } from "./modern/context.js";
3
4
  import { FormContext } from "./Form.js";
5
+ import { useFormSelector } from "./modern/react.js";
4
6
  import { Alert } from "../../content/Alert/Alert.js";
5
7
  import { forwardRef, isValidElement, useContext } from "react";
6
8
  import { jsx } from "react/jsx-runtime";
7
9
 
8
10
  //#region src/components/form/Form/SubmitError.tsx
9
- function SubmitError(props, ref) {
10
- let { submitError } = useContext(FormContext);
11
+ function ErrorAlert({ submitError, ...props }, ref) {
11
12
  const { t } = useI18n();
12
13
  if (!submitError) return null;
13
14
  if (!isValidElement(submitError) && typeof submitError !== "string") submitError = t("form.internalError", "Internal error");
@@ -18,6 +19,28 @@ function SubmitError(props, ref) {
18
19
  children: submitError
19
20
  });
20
21
  }
22
+ const ForwardedErrorAlert = forwardRef(ErrorAlert);
23
+ function ModernSubmitError({ form, alertRef, ...props }) {
24
+ const submitError = useFormSelector(form, (state) => state.submitError);
25
+ return /* @__PURE__ */ jsx(ForwardedErrorAlert, {
26
+ ...props,
27
+ ref: alertRef,
28
+ submitError
29
+ });
30
+ }
31
+ function SubmitError(props, ref) {
32
+ const modern = useContext(ModernControllerContext);
33
+ const legacy = useContext(FormContext);
34
+ return modern ? /* @__PURE__ */ jsx(ModernSubmitError, {
35
+ ...props,
36
+ form: modern,
37
+ alertRef: ref
38
+ }) : /* @__PURE__ */ jsx(ForwardedErrorAlert, {
39
+ ...props,
40
+ ref,
41
+ submitError: legacy.submitError
42
+ });
43
+ }
21
44
  /**
22
45
  * An alert that shows a form error message received from the onSubmit callback.
23
46
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SubmitError.js","names":[],"sources":["../../../../src/components/form/Form/SubmitError.tsx"],"sourcesContent":["import {\n ForwardedRef,\n forwardRef,\n isValidElement,\n ReactNode,\n useContext,\n} from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { Alert, CubeAlertProps } from '../../content/Alert/index';\n\nimport { FormContext } from './Form';\n\ntype SubmitErrorContextProps = {\n submitError?: unknown;\n};\n\nfunction SubmitError(props: CubeAlertProps, ref: ForwardedRef<HTMLDivElement>) {\n let { submitError } = useContext(FormContext) as SubmitErrorContextProps;\n const { t } = useI18n();\n\n if (!submitError) {\n return null;\n }\n\n if (\n !isValidElement(submitError as ReactNode) &&\n typeof submitError !== 'string'\n ) {\n submitError = t('form.internalError', 'Internal error');\n }\n\n return (\n <Alert ref={ref} theme=\"danger\" {...props}>\n {submitError as ReactNode}\n </Alert>\n );\n}\n\n/**\n * An alert that shows a form error message received from the onSubmit callback.\n */\nconst _SubmitError = forwardRef(SubmitError);\n\n_SubmitError.displayName = 'SubmitError';\n\nexport { _SubmitError as SubmitError };\n"],"mappings":";;;;;;;;AAiBA,SAAS,YAAY,OAAuB,KAAmC;CAC7E,IAAI,EAAE,gBAAgB,WAAW,YAAY;CAC7C,MAAM,EAAE,MAAM,SAAS;AAEvB,KAAI,CAAC,YACH,QAAO;AAGT,KACE,CAAC,eAAe,YAAyB,IACzC,OAAO,gBAAgB,SAEvB,eAAc,EAAE,sBAAsB,iBAAiB;AAGzD,QACE,oBAAC;EAAW;EAAK,OAAM;EAAS,GAAI;YACjC;GACK;;;;;AAOZ,MAAM,eAAe,WAAW,YAAY;AAE5C,aAAa,cAAc"}
1
+ {"version":3,"file":"SubmitError.js","names":[],"sources":["../../../../src/components/form/Form/SubmitError.tsx"],"sourcesContent":["import {\n ForwardedRef,\n forwardRef,\n isValidElement,\n ReactNode,\n useContext,\n} from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { Alert, CubeAlertProps } from '../../content/Alert/index';\n\nimport { FormContext } from './Form';\nimport { ModernControllerContext } from './modern/context';\nimport { useFormSelector } from './modern/react';\n\nimport type { FormController } from './modern/controller';\n\ntype SubmitErrorContextProps = {\n submitError?: unknown;\n};\n\nfunction ErrorAlert(\n { submitError, ...props }: CubeAlertProps & SubmitErrorContextProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const { t } = useI18n();\n\n if (!submitError) {\n return null;\n }\n\n if (\n !isValidElement(submitError as ReactNode) &&\n typeof submitError !== 'string'\n ) {\n submitError = t('form.internalError', 'Internal error');\n }\n\n return (\n <Alert ref={ref} theme=\"danger\" {...props}>\n {submitError as ReactNode}\n </Alert>\n );\n}\n\nconst ForwardedErrorAlert = forwardRef(ErrorAlert);\n\nfunction ModernSubmitError({\n form,\n alertRef,\n ...props\n}: CubeAlertProps & {\n form: FormController<any>;\n alertRef: ForwardedRef<HTMLDivElement>;\n}) {\n const submitError = useFormSelector(form, (state) => state.submitError);\n return (\n <ForwardedErrorAlert {...props} ref={alertRef} submitError={submitError} />\n );\n}\n\nfunction SubmitError(props: CubeAlertProps, ref: ForwardedRef<HTMLDivElement>) {\n const modern = useContext(ModernControllerContext);\n const legacy = useContext(FormContext) as SubmitErrorContextProps;\n return modern ? (\n <ModernSubmitError {...props} form={modern} alertRef={ref} />\n ) : (\n <ForwardedErrorAlert\n {...props}\n ref={ref}\n submitError={legacy.submitError}\n />\n );\n}\n\n/**\n * An alert that shows a form error message received from the onSubmit callback.\n */\nconst _SubmitError = forwardRef(SubmitError);\n\n_SubmitError.displayName = 'SubmitError';\n\nexport { _SubmitError as SubmitError };\n"],"mappings":";;;;;;;;;;AAqBA,SAAS,WACP,EAAE,aAAa,GAAG,SAClB,KACA;CACA,MAAM,EAAE,MAAM,SAAS;AAEvB,KAAI,CAAC,YACH,QAAO;AAGT,KACE,CAAC,eAAe,YAAyB,IACzC,OAAO,gBAAgB,SAEvB,eAAc,EAAE,sBAAsB,iBAAiB;AAGzD,QACE,oBAAC;EAAW;EAAK,OAAM;EAAS,GAAI;YACjC;GACK;;AAIZ,MAAM,sBAAsB,WAAW,WAAW;AAElD,SAAS,kBAAkB,EACzB,MACA,UACA,GAAG,SAIF;CACD,MAAM,cAAc,gBAAgB,OAAO,UAAU,MAAM,YAAY;AACvE,QACE,oBAAC;EAAoB,GAAI;EAAO,KAAK;EAAuB;GAAe;;AAI/E,SAAS,YAAY,OAAuB,KAAmC;CAC7E,MAAM,SAAS,WAAW,wBAAwB;CAClD,MAAM,SAAS,WAAW,YAAY;AACtC,QAAO,SACL,oBAAC;EAAkB,GAAI;EAAO,MAAM;EAAQ,UAAU;GAAO,GAE7D,oBAAC;EACC,GAAI;EACC;EACL,aAAa,OAAO;GACpB;;;;;AAON,MAAM,eAAe,WAAW,YAAY;AAE5C,aAAa,cAAc"}
@@ -0,0 +1,25 @@
1
+
2
+ import { FormController } from "./modern/controller.js";
3
+
4
+ //#region src/components/form/Form/backend.d.ts
5
+ /**
6
+ * Nominal branding for the two Form backends (modernization plan §5.1).
7
+ *
8
+ * The legacy engine (`CubeFormInstance`) and the modern controller are not
9
+ * structurally interchangeable: each carries this symbol with its backend
10
+ * kind, the `<Form>` facade dispatches on it before any backend hook runs, and
11
+ * the legacy field adapter refuses a controller it cannot bind.
12
+ *
13
+ * Modern controllers support creation, selectors, fields, validation, and submission.
14
+ * Legacy-only APIs reject them explicitly.
15
+ */
16
+ declare const FORM_BACKEND: unique symbol;
17
+ interface LegacyFormBrand {
18
+ readonly [FORM_BACKEND]: 'legacy';
19
+ }
20
+ interface ModernFormBrand {
21
+ readonly [FORM_BACKEND]: 'modern';
22
+ }
23
+ //#endregion
24
+ export { FORM_BACKEND, LegacyFormBrand, ModernFormBrand };
25
+ //# sourceMappingURL=backend.d.ts.map
@@ -0,0 +1,30 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.180.0 | Cube Dev Team */
2
+ //#region src/components/form/Form/backend.ts
3
+ /**
4
+ * Nominal branding for the two Form backends (modernization plan §5.1).
5
+ *
6
+ * The legacy engine (`CubeFormInstance`) and the modern controller are not
7
+ * structurally interchangeable: each carries this symbol with its backend
8
+ * kind, the `<Form>` facade dispatches on it before any backend hook runs, and
9
+ * the legacy field adapter refuses a controller it cannot bind.
10
+ *
11
+ * Modern controllers support creation, selectors, fields, validation, and submission.
12
+ * Legacy-only APIs reject them explicitly.
13
+ */
14
+ const FORM_BACKEND = Symbol.for("@cube-dev/ui-kit/form-backend");
15
+ /**
16
+ * Only a modern brand is ever checked. Anything else — a branded legacy
17
+ * instance, but also an unbranded object — counts as legacy on purpose: Cloud
18
+ * narrows form props to structural types and its tests pass plain mocks, and
19
+ * the legacy engine has always accepted them.
20
+ */
21
+ function isModernFormController(value) {
22
+ return !!value && typeof value === "object" && value[FORM_BACKEND] === "modern";
23
+ }
24
+ function modernBackendUnavailableError(receiver) {
25
+ return /* @__PURE__ */ new Error(`${receiver} received a modern form controller, but this legacy API does not support modern controllers. Use named inputs or useFieldProps with a modern controller; Form.Item and Form.useForm() remain legacy-only.`);
26
+ }
27
+
28
+ //#endregion
29
+ export { FORM_BACKEND, isModernFormController, modernBackendUnavailableError };
30
+ //# sourceMappingURL=backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","names":[],"sources":["../../../../src/components/form/Form/backend.ts"],"sourcesContent":["/**\n * Nominal branding for the two Form backends (modernization plan §5.1).\n *\n * The legacy engine (`CubeFormInstance`) and the modern controller are not\n * structurally interchangeable: each carries this symbol with its backend\n * kind, the `<Form>` facade dispatches on it before any backend hook runs, and\n * the legacy field adapter refuses a controller it cannot bind.\n *\n * Modern controllers support creation, selectors, fields, validation, and submission.\n * Legacy-only APIs reject them explicitly.\n */\nexport const FORM_BACKEND: unique symbol = Symbol.for(\n '@cube-dev/ui-kit/form-backend',\n);\n\nexport interface LegacyFormBrand {\n readonly [FORM_BACKEND]: 'legacy';\n}\n\nexport interface ModernFormBrand {\n readonly [FORM_BACKEND]: 'modern';\n}\n\nexport type { FormController } from './modern/controller';\n\n/**\n * Only a modern brand is ever checked. Anything else — a branded legacy\n * instance, but also an unbranded object — counts as legacy on purpose: Cloud\n * narrows form props to structural types and its tests pass plain mocks, and\n * the legacy engine has always accepted them.\n */\nexport function isModernFormController(\n value: unknown,\n): value is ModernFormBrand {\n return (\n !!value &&\n typeof value === 'object' &&\n (value as Record<PropertyKey, unknown>)[FORM_BACKEND] === 'modern'\n );\n}\n\nexport function modernBackendUnavailableError(receiver: string): Error {\n return new Error(\n `${receiver} received a modern form controller, but this legacy API does not support modern controllers. Use named inputs or useFieldProps with a modern controller; Form.Item and Form.useForm() remain legacy-only.`,\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAWA,MAAa,eAA8B,OAAO,IAChD,gCACD;;;;;;;AAkBD,SAAgB,uBACd,OAC0B;AAC1B,QACE,CAAC,CAAC,SACF,OAAO,UAAU,YAChB,MAAuC,kBAAkB;;AAI9D,SAAgB,8BAA8B,UAAyB;AACrE,wBAAO,IAAI,MACT,GAAG,SAAS,2MACb"}
@@ -1,7 +1,13 @@
1
1
 
2
+ import { FormPath } from "./modern/values.js";
3
+ import { ModernValidationContext } from "./modern/validation.js";
2
4
  import { FieldTypes, Fields } from "./types.js";
5
+ import { FormValueAtPath } from "./modern/path-types.js";
6
+ import { FormChange, ModernSubmitContext, SetValueOptions } from "./modern/types.js";
7
+ import { FormController, ModernFieldValidationResult, ModernFormState, ModernSubmitResult, ModernValidationResult, ModernValidationRule, UseFormControllerOptions } from "./modern/controller.js";
3
8
  import { CubeFormInstance, useForm } from "./use-form.js";
4
- import { CubeFormProps, FormContext, useFormProps } from "./Form.js";
9
+ import { ModernFormProps } from "./ModernFormRoot.js";
10
+ import { CubeFormProps, FormContext, FormRootComponent, FormScopeMask, useFormProps } from "./Form.js";
5
11
  import { CubeSubmitButtonProps, _SubmitButton } from "./SubmitButton/SubmitButton.js";
6
12
  import "./SubmitButton/index.js";
7
13
  import { CubeResetButtonProps, _ResetButton } from "./ResetButton/ResetButton.js";
@@ -9,6 +15,8 @@ import "./ResetButton/index.js";
9
15
  import { CubeAlertProps } from "../../content/Alert/types.js";
10
16
  import "../../content/Alert/index.js";
11
17
  import { Field } from "./Field.js";
18
+ import { useFormControllerContext } from "./modern/context.js";
19
+ import { FormSelectorOptions, FormSubscribe, FormSubscribeProps, useFormController, useFormSelector } from "./modern/react.js";
12
20
  import { _SubmitError } from "./SubmitError.js";
13
21
  import { FieldReturnValue, UseFieldProps } from "./use-field/types.js";
14
22
  import { UseFieldParams, useField } from "./use-field/use-field.js";
@@ -18,17 +26,23 @@ import * as react from "react";
18
26
  import * as _react_types_shared0 from "@react-types/shared";
19
27
 
20
28
  //#region src/components/form/Form/index.d.ts
21
- declare const Form: (<T extends FieldTypes>(props: CubeFormProps<T> & {
22
- ref?: react.Ref<HTMLFormElement>;
23
- }) => react.ReactElement) & {
29
+ declare const Form: FormRootComponent & {
24
30
  Item: typeof Field;
25
31
  SubmitError: typeof _SubmitError;
26
32
  Submit: typeof _SubmitButton;
27
33
  Reset: typeof _ResetButton;
28
34
  useForm: typeof useForm;
35
+ useController: typeof useFormController;
36
+ useSelector: typeof useFormSelector;
37
+ Subscribe: typeof FormSubscribe;
38
+ useControllerContext: typeof useFormControllerContext;
29
39
  } & {
30
40
  Item: typeof Field;
31
41
  useForm: typeof useForm;
42
+ useController: typeof useFormController;
43
+ useSelector: typeof useFormSelector;
44
+ Subscribe: typeof FormSubscribe;
45
+ useControllerContext: typeof useFormControllerContext;
32
46
  Submit: react.ForwardRefExoticComponent<Omit<CubeSubmitButtonProps<FieldTypes>, "ref"> & react.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>>;
33
47
  Reset: react.ForwardRefExoticComponent<Omit<CubeResetButtonProps<FieldTypes>, "ref"> & react.RefAttributes<_react_types_shared0.FocusableRefValue<HTMLElement, HTMLElement>>>;
34
48
  SubmitError: react.ForwardRefExoticComponent<CubeAlertProps & react.RefAttributes<HTMLDivElement>>;
@@ -1,9 +1,11 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.178.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.180.0 | Cube Dev Team */
2
+ import { useFormControllerContext } from "./modern/context.js";
2
3
  import { useForm } from "./use-form.js";
3
- import { FormContext, _Form, useFormProps } from "./Form.js";
4
+ import { FormContext, FormScopeMask, _Form, useFormProps } from "./Form.js";
4
5
  import { useField } from "./use-field/use-field.js";
5
6
  import { useFieldProps } from "./use-field/use-field-props.js";
6
7
  import { Field } from "./Field.js";
8
+ import { FormSubscribe, useFormController, useFormSelector } from "./modern/react.js";
7
9
  import { _ResetButton } from "./ResetButton/ResetButton.js";
8
10
  import { _SubmitButton } from "./SubmitButton/SubmitButton.js";
9
11
  import { _SubmitError } from "./SubmitError.js";
@@ -12,6 +14,10 @@ import { _SubmitError } from "./SubmitError.js";
12
14
  const Form = Object.assign(_Form, {
13
15
  Item: Field,
14
16
  useForm,
17
+ useController: useFormController,
18
+ useSelector: useFormSelector,
19
+ Subscribe: FormSubscribe,
20
+ useControllerContext: useFormControllerContext,
15
21
  Submit: _SubmitButton,
16
22
  Reset: _ResetButton,
17
23
  SubmitError: _SubmitError
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["SubmitButton","ResetButton"],"sources":["../../../../src/components/form/Form/index.ts"],"sourcesContent":["import { CubeAlertProps } from '../../content/Alert/index';\n\nimport { Field } from './Field';\nimport { Form as _Form, FormContext, useFormProps } from './Form';\nimport { ResetButton } from './ResetButton';\nimport { SubmitButton } from './SubmitButton';\nimport { SubmitError } from './SubmitError';\nimport { useForm } from './use-form';\n\nconst Form = Object.assign(\n _Form as typeof _Form & {\n Item: typeof Field;\n SubmitError: typeof SubmitError;\n Submit: typeof SubmitButton;\n Reset: typeof ResetButton;\n useForm: typeof useForm;\n },\n {\n Item: Field,\n useForm,\n Submit: SubmitButton,\n Reset: ResetButton,\n SubmitError,\n },\n);\n\nexport * from './SubmitError';\nexport * from './SubmitButton';\nexport * from './ResetButton';\nexport * from './use-field';\nexport { useFormProps, Form, Field, useForm, FormContext };\nexport type { CubeFormProps } from './Form';\nexport type { CubeFormInstance } from './use-form';\nexport type { FieldTypes, Fields } from './types';\nexport type { CubeAlertProps as CubeSubmitErrorProps };\n"],"mappings":";;;;;;;;;;;AASA,MAAM,OAAO,OAAO,OAClB,OAOA;CACE,MAAM;CACN;CACA,QAAQA;CACR,OAAOC;CACP;CACD,CACF"}
1
+ {"version":3,"file":"index.js","names":["SubmitButton","ResetButton"],"sources":["../../../../src/components/form/Form/index.ts"],"sourcesContent":["import { CubeAlertProps } from '../../content/Alert/index';\n\nimport { Field } from './Field';\nimport {\n Form as _Form,\n FormContext,\n FormScopeMask,\n useFormProps,\n} from './Form';\nimport { useFormControllerContext } from './modern/context';\nimport {\n FormSubscribe,\n useFormController,\n useFormSelector,\n} from './modern/react';\nimport { ResetButton } from './ResetButton';\nimport { SubmitButton } from './SubmitButton';\nimport { SubmitError } from './SubmitError';\nimport { useForm } from './use-form';\n\nconst Form = Object.assign(\n _Form as typeof _Form & {\n Item: typeof Field;\n SubmitError: typeof SubmitError;\n Submit: typeof SubmitButton;\n Reset: typeof ResetButton;\n useForm: typeof useForm;\n useController: typeof useFormController;\n useSelector: typeof useFormSelector;\n Subscribe: typeof FormSubscribe;\n useControllerContext: typeof useFormControllerContext;\n },\n {\n Item: Field,\n useForm,\n useController: useFormController,\n useSelector: useFormSelector,\n Subscribe: FormSubscribe,\n useControllerContext: useFormControllerContext,\n Submit: SubmitButton,\n Reset: ResetButton,\n SubmitError,\n },\n);\n\nexport * from './SubmitError';\nexport * from './SubmitButton';\nexport * from './ResetButton';\nexport * from './use-field';\nexport { useFormProps, Form, Field, useForm, FormContext, FormScopeMask };\nexport type { CubeFormProps } from './Form';\nexport type { ModernFormProps } from './ModernFormRoot';\nexport type {\n FormController,\n ModernFormState,\n UseFormControllerOptions,\n ModernValidationRule,\n ModernValidationResult,\n ModernFieldValidationResult,\n ModernSubmitResult,\n} from './modern/controller';\nexport type { FormSelectorOptions, FormSubscribeProps } from './modern/react';\nexport type {\n FormChange,\n SetValueOptions,\n ModernSubmitContext,\n} from './modern/types';\nexport type { ModernValidationContext } from './modern/validation';\nexport type { FormPath } from './modern/values';\nexport type { FormValueAtPath } from './modern/path-types';\nexport type { CubeFormInstance } from './use-form';\nexport type { FieldTypes, Fields } from './types';\nexport type { CubeAlertProps as CubeSubmitErrorProps };\n"],"mappings":";;;;;;;;;;;;;AAoBA,MAAM,OAAO,OAAO,OAClB,OAWA;CACE,MAAM;CACN;CACA,eAAe;CACf,aAAa;CACb,WAAW;CACX,sBAAsB;CACtB,QAAQA;CACR,OAAOC;CACP;CACD,CACF"}
@@ -0,0 +1,41 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.180.0 | Cube Dev Team */
2
+ import { useEvent } from "../../../../_internal/hooks/use-event.js";
3
+ import { useProviderProps } from "../../../../provider.js";
4
+ import { Button } from "../../../actions/Button/Button.js";
5
+ import { useFormSelector } from "./react.js";
6
+ import { jsx } from "react/jsx-runtime";
7
+
8
+ //#region src/components/form/Form/modern/actions.tsx
9
+ function ModernSubmitButton({ form, buttonRef, ...props }) {
10
+ const { isDisabled: contextDisabled } = useProviderProps({});
11
+ const submitting = useFormSelector(form, (state) => state.isSubmitting);
12
+ const invalid = useFormSelector(form, (state) => state.isInvalid);
13
+ return /* @__PURE__ */ jsx(Button, {
14
+ ref: buttonRef,
15
+ type: "primary",
16
+ htmlType: "submit",
17
+ isLoading: submitting,
18
+ ...props,
19
+ isDisabled: contextDisabled || props.isDisabled || submitting || invalid
20
+ });
21
+ }
22
+ function ModernResetButton({ form, buttonRef, onPress, ...props }) {
23
+ const { isDisabled: contextDisabled } = useProviderProps({});
24
+ const disabled = useFormSelector(form, (state) => state.isSubmitting || !state.isTouched);
25
+ const reset = useEvent((event) => {
26
+ form.reset();
27
+ onPress?.(event);
28
+ });
29
+ return /* @__PURE__ */ jsx(Button, {
30
+ ref: buttonRef,
31
+ type: "primary",
32
+ htmlType: "button",
33
+ ...props,
34
+ onPress: reset,
35
+ isDisabled: contextDisabled || props.isDisabled || disabled
36
+ });
37
+ }
38
+
39
+ //#endregion
40
+ export { ModernResetButton, ModernSubmitButton };
41
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +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 { useFormSelector } from './react';\n\nimport type { FocusableRef } from '@react-types/shared';\nimport type { CubeButtonProps } from '../../../actions/Button/Button';\nimport type { FormController } from './controller';\n\nexport function ModernSubmitButton({\n form,\n buttonRef,\n ...props\n}: CubeButtonProps & {\n form: FormController<any>;\n buttonRef: FocusableRef<HTMLElement>;\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 return (\n <Button\n ref={buttonRef}\n type=\"primary\"\n htmlType=\"submit\"\n isLoading={submitting}\n {...props}\n isDisabled={contextDisabled || props.isDisabled || submitting || invalid}\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) => state.isSubmitting || !state.isTouched,\n );\n const reset = useEvent((event) => {\n 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":";;;;;;;;AAUA,SAAgB,mBAAmB,EACjC,MACA,WACA,GAAG,SAIF;CACD,MAAM,EAAE,YAAY,oBAAoB,iBACtC,EAAE,CACH;CACD,MAAM,aAAa,gBAAgB,OAAO,UAAU,MAAM,aAAa;CACvE,MAAM,UAAU,gBAAgB,OAAO,UAAU,MAAM,UAAU;AACjE,QACE,oBAAC;EACC,KAAK;EACL,MAAK;EACL,UAAS;EACT,WAAW;EACX,GAAI;EACJ,YAAY,mBAAmB,MAAM,cAAc,cAAc;GACjE;;AAIN,SAAgB,kBAAkB,EAChC,MACA,WACA,SACA,GAAG,SAIF;CACD,MAAM,EAAE,YAAY,oBAAoB,iBACtC,EAAE,CACH;CACD,MAAM,WAAW,gBACf,OACC,UAAU,MAAM,gBAAgB,CAAC,MAAM,UACzC;CACD,MAAM,QAAQ,UAAU,UAAU;AAChC,OAAK,OAAO;AACZ,YAAU,MAAM;GAChB;AACF,QACE,oBAAC;EACC,KAAK;EACL,MAAK;EACL,UAAS;EACT,GAAI;EACJ,SAAS;EACT,YAAY,mBAAmB,MAAM,cAAc;GACnD"}
@@ -0,0 +1,9 @@
1
+
2
+ import { FormController } from "./controller.js";
3
+ import "react";
4
+
5
+ //#region src/components/form/Form/modern/context.d.ts
6
+ declare function useFormControllerContext<T extends object = Record<string, unknown>>(): FormController<T>;
7
+ //#endregion
8
+ export { useFormControllerContext };
9
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1,14 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.180.0 | Cube Dev Team */
2
+ import { createContext, useContext } from "react";
3
+
4
+ //#region src/components/form/Form/modern/context.ts
5
+ const ModernControllerContext = createContext(null);
6
+ function useFormControllerContext() {
7
+ const controller = useContext(ModernControllerContext);
8
+ if (!controller) throw new Error("Form.useControllerContext() requires a modern <Form> root. Legacy forms and FormScopeMask do not provide a modern controller.");
9
+ return controller;
10
+ }
11
+
12
+ //#endregion
13
+ export { ModernControllerContext, useFormControllerContext };
14
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../../../src/components/form/Form/modern/context.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nimport type { FormController } from './controller';\n\nexport const ModernControllerContext =\n createContext<FormController<any> | null>(null);\n\nexport function useFormControllerContext<\n T extends object = Record<string, unknown>,\n>(): FormController<T> {\n const controller = useContext(ModernControllerContext);\n if (!controller) {\n throw new Error(\n 'Form.useControllerContext() requires a modern <Form> root. Legacy forms and FormScopeMask do not provide a modern controller.',\n );\n }\n return controller;\n}\n"],"mappings":";;;;AAIA,MAAa,0BACX,cAA0C,KAAK;AAEjD,SAAgB,2BAEO;CACrB,MAAM,aAAa,WAAW,wBAAwB;AACtD,KAAI,CAAC,WACH,OAAM,IAAI,MACR,gIACD;AAEH,QAAO"}
@@ -0,0 +1,23 @@
1
+
2
+ import { FormPath } from "./values.js";
3
+ import { ModernValidationRule as ModernValidationRule$1 } from "./validation.js";
4
+ import { FormValueAtPath } from "./path-types.js";
5
+ import { FormState, FormStore, FormStoreOptions, ModernFieldValidationResult as ModernFieldValidationResult$1, ModernSubmitResult as ModernSubmitResult$1, ModernValidationResult as ModernValidationResult$1, SetValueOptions } from "./types.js";
6
+ import { FORM_BACKEND } from "../backend.js";
7
+ import { ReactNode } from "react";
8
+
9
+ //#region src/components/form/Form/modern/controller.d.ts
10
+ type ModernValidationRule = ModernValidationRule$1<ReactNode>;
11
+ type ModernValidationResult = ModernValidationResult$1<ReactNode>;
12
+ type ModernFieldValidationResult = ModernFieldValidationResult$1<ReactNode>;
13
+ type ModernSubmitResult = ModernSubmitResult$1<ReactNode>;
14
+ type ModernFormState<T extends object = Record<string, unknown>> = FormState<T, ReactNode>;
15
+ type UseFormControllerOptions<T extends object = Record<string, unknown>> = FormStoreOptions<T>;
16
+ /** Public commands; registration and pipeline state tokens stay internal. */
17
+ type FormController<T extends object = Record<string, unknown>> = Readonly<Pick<FormStore<T, ReactNode>, typeof FORM_BACKEND | 'validate' | 'submit' | 'blur' | 'getSnapshot' | 'getFieldSnapshot' | 'getValues' | 'getActiveValues' | 'subscribe' | 'setValues' | 'batch' | 'setDefaultValues' | 'adoptDefaultValues' | 'reset' | 'touch' | 'setFieldErrors' | 'clearFieldErrors' | 'setSubmitError' | 'clearSubmitError'> & {
18
+ getValue<const Path extends FormPath>(path: Path): FormValueAtPath<T, Path> | undefined;
19
+ setValue<const Path extends FormPath>(path: Path, value: FormValueAtPath<T, NoInfer<Path>> | undefined, options?: SetValueOptions): void;
20
+ }>;
21
+ //#endregion
22
+ export { FormController, ModernFieldValidationResult, ModernFormState, ModernSubmitResult, ModernValidationResult, ModernValidationRule, UseFormControllerOptions };
23
+ //# sourceMappingURL=controller.d.ts.map
@@ -0,0 +1,48 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.180.0 | Cube Dev Team */
2
+ import { FORM_BACKEND, isModernFormController } from "../backend.js";
3
+ import { createFormStore } from "./store.js";
4
+
5
+ //#region src/components/form/Form/modern/controller.ts
6
+ const CONTROLLER_STORE = Symbol.for("@cube-dev/ui-kit/form-controller-store");
7
+ /** Pure allocation for the creation hook; no listeners or external effects. */
8
+ function createFormController(options) {
9
+ const store = createFormStore(options);
10
+ const serverSnapshot = store.getSnapshot();
11
+ const internals = {
12
+ store,
13
+ getServerSnapshot: () => serverSnapshot
14
+ };
15
+ return Object.freeze({
16
+ [FORM_BACKEND]: "modern",
17
+ [CONTROLLER_STORE]: internals,
18
+ validate: store.validate,
19
+ submit: store.submit,
20
+ blur: store.blur,
21
+ getSnapshot: store.getSnapshot,
22
+ getFieldSnapshot: store.getFieldSnapshot,
23
+ getValue: store.getValue,
24
+ getValues: store.getValues,
25
+ getActiveValues: store.getActiveValues,
26
+ subscribe: store.subscribe,
27
+ setValue: store.setValue,
28
+ setValues: store.setValues,
29
+ batch: store.batch,
30
+ setDefaultValues: store.setDefaultValues,
31
+ adoptDefaultValues: store.adoptDefaultValues,
32
+ reset: store.reset,
33
+ touch: store.touch,
34
+ setFieldErrors: store.setFieldErrors,
35
+ clearFieldErrors: store.clearFieldErrors,
36
+ setSubmitError: store.setSubmitError,
37
+ clearSubmitError: store.clearSubmitError
38
+ });
39
+ }
40
+ function getControllerInternals(controller, receiver) {
41
+ const internals = isModernFormController(controller) ? controller[CONTROLLER_STORE] : void 0;
42
+ if (!internals) throw new Error(`${receiver} requires a modern form controller created by Form.useController(). Legacy Form instances and bare backend brands are not supported.`);
43
+ return internals;
44
+ }
45
+
46
+ //#endregion
47
+ export { createFormController, getControllerInternals };
48
+ //# sourceMappingURL=controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.js","names":[],"sources":["../../../../../src/components/form/Form/modern/controller.ts"],"sourcesContent":["import { FORM_BACKEND, isModernFormController } from '../backend';\n\nimport { createFormStore } from './store';\n\nimport type { ReactNode } from 'react';\nimport type { FormValueAtPath } from './path-types';\nimport type {\n FormState,\n FormStore,\n FormStoreOptions,\n SetValueOptions,\n ModernFieldValidationResult as StoreFieldValidationResult,\n ModernSubmitResult as StoreSubmitResult,\n ModernValidationResult as StoreValidationResult,\n} from './types';\nimport type { ModernValidationRule as StoreValidationRule } from './validation';\nimport type { FormPath } from './values';\n\nexport type ModernValidationRule = StoreValidationRule<ReactNode>;\nexport type ModernValidationResult = StoreValidationResult<ReactNode>;\nexport type ModernFieldValidationResult = StoreFieldValidationResult<ReactNode>;\nexport type ModernSubmitResult = StoreSubmitResult<ReactNode>;\n\nexport type ModernFormState<T extends object = Record<string, unknown>> =\n FormState<T, ReactNode>;\n\nexport type UseFormControllerOptions<\n T extends object = Record<string, unknown>,\n> = FormStoreOptions<T>;\n\n/** Public commands; registration and pipeline state tokens stay internal. */\nexport type FormController<T extends object = Record<string, unknown>> =\n Readonly<\n Pick<\n FormStore<T, ReactNode>,\n | typeof FORM_BACKEND\n | 'validate'\n | 'submit'\n | 'blur'\n | 'getSnapshot'\n | 'getFieldSnapshot'\n | 'getValues'\n | 'getActiveValues'\n | 'subscribe'\n | 'setValues'\n | 'batch'\n | 'setDefaultValues'\n | 'adoptDefaultValues'\n | 'reset'\n | 'touch'\n | 'setFieldErrors'\n | 'clearFieldErrors'\n | 'setSubmitError'\n | 'clearSubmitError'\n > & {\n getValue<const Path extends FormPath>(\n path: Path,\n ): FormValueAtPath<T, Path> | undefined;\n setValue<const Path extends FormPath>(\n path: Path,\n value: FormValueAtPath<T, NoInfer<Path>> | undefined,\n options?: SetValueOptions,\n ): void;\n }\n >;\n\n// Symbol.for also lets two copies of the kit share a controller, just as the\n// backend brand does. This symbol and the store are not package exports.\nconst CONTROLLER_STORE = Symbol.for('@cube-dev/ui-kit/form-controller-store');\n\ninterface ControllerInternals<T extends object> {\n store: FormStore<T, ReactNode>;\n getServerSnapshot(): ModernFormState<T>;\n}\n\n/** Pure allocation for the creation hook; no listeners or external effects. */\nexport function createFormController<T extends object>(\n options?: UseFormControllerOptions<T>,\n): FormController<T> {\n const store = createFormStore<T, ReactNode>(options);\n const serverSnapshot = store.getSnapshot();\n const internals: ControllerInternals<T> = {\n store,\n getServerSnapshot: () => serverSnapshot,\n };\n return Object.freeze({\n [FORM_BACKEND]: 'modern' as const,\n [CONTROLLER_STORE]: internals,\n validate: store.validate,\n submit: store.submit,\n blur: store.blur,\n getSnapshot: store.getSnapshot,\n getFieldSnapshot: store.getFieldSnapshot,\n getValue: store.getValue,\n getValues: store.getValues,\n getActiveValues: store.getActiveValues,\n subscribe: store.subscribe,\n setValue: store.setValue,\n setValues: store.setValues,\n batch: store.batch,\n setDefaultValues: store.setDefaultValues,\n adoptDefaultValues: store.adoptDefaultValues,\n reset: store.reset,\n touch: store.touch,\n setFieldErrors: store.setFieldErrors,\n clearFieldErrors: store.clearFieldErrors,\n setSubmitError: store.setSubmitError,\n clearSubmitError: store.clearSubmitError,\n }) as FormController<T>;\n}\n\nexport function getControllerInternals<T extends object>(\n controller: FormController<T>,\n receiver: string,\n): ControllerInternals<T> {\n const internals = isModernFormController(controller)\n ? (controller as unknown as Record<symbol, ControllerInternals<T>>)[\n CONTROLLER_STORE\n ]\n : undefined;\n if (!internals) {\n throw new Error(\n `${receiver} requires a modern form controller created by Form.useController(). Legacy Form instances and bare backend brands are not supported.`,\n );\n }\n return internals;\n}\n"],"mappings":";;;;;AAoEA,MAAM,mBAAmB,OAAO,IAAI,yCAAyC;;AAQ7E,SAAgB,qBACd,SACmB;CACnB,MAAM,QAAQ,gBAA8B,QAAQ;CACpD,MAAM,iBAAiB,MAAM,aAAa;CAC1C,MAAM,YAAoC;EACxC;EACA,yBAAyB;EAC1B;AACD,QAAO,OAAO,OAAO;GAClB,eAAe;GACf,mBAAmB;EACpB,UAAU,MAAM;EAChB,QAAQ,MAAM;EACd,MAAM,MAAM;EACZ,aAAa,MAAM;EACnB,kBAAkB,MAAM;EACxB,UAAU,MAAM;EAChB,WAAW,MAAM;EACjB,iBAAiB,MAAM;EACvB,WAAW,MAAM;EACjB,UAAU,MAAM;EAChB,WAAW,MAAM;EACjB,OAAO,MAAM;EACb,kBAAkB,MAAM;EACxB,oBAAoB,MAAM;EAC1B,OAAO,MAAM;EACb,OAAO,MAAM;EACb,gBAAgB,MAAM;EACtB,kBAAkB,MAAM;EACxB,gBAAgB,MAAM;EACtB,kBAAkB,MAAM;EACzB,CAAC;;AAGJ,SAAgB,uBACd,YACA,UACwB;CACxB,MAAM,YAAY,uBAAuB,WAAW,GAC/C,WACC,oBAEF;AACJ,KAAI,CAAC,UACH,OAAM,IAAI,MACR,GAAG,SAAS,sIACb;AAEH,QAAO"}
@@ -0,0 +1,41 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.180.0 | Cube Dev Team */
2
+ import { getFieldKey } from "./values.js";
3
+ import { getControllerInternals } from "./controller.js";
4
+
5
+ //#region src/components/form/Form/modern/field-binding.ts
6
+ function sameFieldView(a, b) {
7
+ return Object.is(a?.value, b?.value) && a?.errors === b?.errors && a?.status === b?.status;
8
+ }
9
+ function createModernFieldBackend(form, name) {
10
+ const { store, getServerSnapshot } = getControllerInternals(form, `The "${name}" field`);
11
+ const key = getFieldKey(name);
12
+ return {
13
+ subscribe: store.subscribe,
14
+ getSnapshot: () => store.getFieldSnapshot(name),
15
+ getServerSnapshot: () => getServerSnapshot().fields[key],
16
+ register: () => store.register(name),
17
+ change: (value, dontTouch) => store.setValue(name, value, {
18
+ source: "user",
19
+ touch: !dontTouch,
20
+ validate: dontTouch ? "never" : "auto"
21
+ }),
22
+ blur: () => store.blur(name)
23
+ };
24
+ }
25
+ function fieldRegistrationOptions(props, defaultTrigger) {
26
+ const rules = props.rules?.flat(Infinity);
27
+ return {
28
+ ...Object.hasOwn(props, "defaultValue") ? { defaultValue: props.defaultValue } : {},
29
+ preserve: props.preserve,
30
+ isEqual: props.isEqual,
31
+ rules: props.isRequired && !rules?.some((rule) => rule.required) ? [{ required: true }, ...rules ?? []] : rules,
32
+ rulesKey: props.rulesKey === void 0 ? void 0 : `${props.isRequired ? "required:" : ""}${props.rulesKey}`,
33
+ validationDelay: props.validationDelay,
34
+ validateTrigger: props.validateTrigger ?? defaultTrigger ?? "onBlur",
35
+ errorPolicy: props.errorPolicy
36
+ };
37
+ }
38
+
39
+ //#endregion
40
+ export { createModernFieldBackend, fieldRegistrationOptions, sameFieldView };
41
+ //# sourceMappingURL=field-binding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-binding.js","names":[],"sources":["../../../../../src/components/form/Form/modern/field-binding.ts"],"sourcesContent":["import { getControllerInternals } from './controller';\nimport { getFieldKey } from './values';\n\nimport type { ReactNode } from 'react';\nimport type { FieldCoreProps, ValidateTrigger } from '../../../../shared/form';\nimport type { FormController } from './controller';\nimport type {\n FieldState,\n RegistrationOptions,\n RegistrationToken,\n} from './types';\n\n/** The only state a bound input renders; metadata stays in selector subscribers. */\nexport type FieldView = Pick<\n FieldState<ReactNode>,\n 'value' | 'errors' | 'status'\n>;\n\nexport interface FieldBackendHandle {\n subscribe(listener: () => void): () => void;\n getSnapshot(): FieldView | undefined;\n getServerSnapshot(): FieldView | undefined;\n register(): RegistrationToken<ReactNode> | undefined;\n change(value: unknown, dontTouch: boolean, trigger: ValidateTrigger): void;\n blur(): void;\n}\n\nexport function sameFieldView(a?: FieldView, b?: FieldView) {\n return (\n Object.is(a?.value, b?.value) &&\n a?.errors === b?.errors &&\n a?.status === b?.status\n );\n}\n\nexport function createModernFieldBackend(\n form: FormController<any>,\n name: string,\n): FieldBackendHandle {\n const { store, getServerSnapshot } = getControllerInternals(\n form,\n `The \"${name}\" field`,\n );\n const key = getFieldKey(name);\n return {\n subscribe: store.subscribe,\n getSnapshot: () => store.getFieldSnapshot(name),\n getServerSnapshot: () => getServerSnapshot().fields[key],\n register: () => store.register(name),\n change: (value, dontTouch) =>\n store.setValue(name, value, {\n source: 'user',\n touch: !dontTouch,\n validate: dontTouch ? 'never' : 'auto',\n }),\n blur: () => store.blur(name),\n };\n}\n\nexport function fieldRegistrationOptions(\n props: FieldCoreProps & {\n defaultValue?: unknown;\n validateTrigger?: ValidateTrigger;\n },\n defaultTrigger?: ValidateTrigger,\n): RegistrationOptions<ReactNode> {\n const rules = props.rules?.flat(Infinity);\n return {\n ...(Object.hasOwn(props, 'defaultValue')\n ? { defaultValue: props.defaultValue }\n : {}),\n preserve: props.preserve,\n isEqual: props.isEqual,\n rules:\n props.isRequired && !rules?.some((rule) => rule.required)\n ? [{ required: true }, ...(rules ?? [])]\n : rules,\n rulesKey:\n props.rulesKey === undefined\n ? undefined\n : `${props.isRequired ? 'required:' : ''}${props.rulesKey}`,\n validationDelay: props.validationDelay,\n validateTrigger: props.validateTrigger ?? defaultTrigger ?? 'onBlur',\n errorPolicy: props.errorPolicy,\n };\n}\n"],"mappings":";;;;;AA2BA,SAAgB,cAAc,GAAe,GAAe;AAC1D,QACE,OAAO,GAAG,GAAG,OAAO,GAAG,MAAM,IAC7B,GAAG,WAAW,GAAG,UACjB,GAAG,WAAW,GAAG;;AAIrB,SAAgB,yBACd,MACA,MACoB;CACpB,MAAM,EAAE,OAAO,sBAAsB,uBACnC,MACA,QAAQ,KAAK,SACd;CACD,MAAM,MAAM,YAAY,KAAK;AAC7B,QAAO;EACL,WAAW,MAAM;EACjB,mBAAmB,MAAM,iBAAiB,KAAK;EAC/C,yBAAyB,mBAAmB,CAAC,OAAO;EACpD,gBAAgB,MAAM,SAAS,KAAK;EACpC,SAAS,OAAO,cACd,MAAM,SAAS,MAAM,OAAO;GAC1B,QAAQ;GACR,OAAO,CAAC;GACR,UAAU,YAAY,UAAU;GACjC,CAAC;EACJ,YAAY,MAAM,KAAK,KAAK;EAC7B;;AAGH,SAAgB,yBACd,OAIA,gBACgC;CAChC,MAAM,QAAQ,MAAM,OAAO,KAAK,SAAS;AACzC,QAAO;EACL,GAAI,OAAO,OAAO,OAAO,eAAe,GACpC,EAAE,cAAc,MAAM,cAAc,GACpC,EAAE;EACN,UAAU,MAAM;EAChB,SAAS,MAAM;EACf,OACE,MAAM,cAAc,CAAC,OAAO,MAAM,SAAS,KAAK,SAAS,GACrD,CAAC,EAAE,UAAU,MAAM,EAAE,GAAI,SAAS,EAAE,CAAE,GACtC;EACN,UACE,MAAM,aAAa,SACf,SACA,GAAG,MAAM,aAAa,cAAc,KAAK,MAAM;EACrD,iBAAiB,MAAM;EACvB,iBAAiB,MAAM,mBAAmB,kBAAkB;EAC5D,aAAa,MAAM;EACpB"}
@@ -0,0 +1,12 @@
1
+
2
+ import { FormPath } from "./values.js";
3
+
4
+ //#region src/components/form/Form/modern/path-types.d.ts
5
+ /** Resolve only the supplied path; never enumerate a model's possible paths. */
6
+ type SegmentValue<Value, Key extends string | number> = Value extends null | undefined ? undefined : Key extends keyof Value ? Value[Key] : Value extends readonly (infer Item)[] ? Key extends `${number}` ? Item : unknown : unknown;
7
+ type TupleValue<Value, Path extends readonly (string | number)[]> = Path extends readonly [infer Key extends string | number, ...infer Rest extends readonly (string | number)[]] ? Rest extends readonly [] ? SegmentValue<Value, Key> : TupleValue<SegmentValue<Value, Key>, Rest> : unknown;
8
+ /** Strings are literal keys; unknown/dynamic names and paths return unknown. */
9
+ type FormValueAtPath<Values extends object, Path extends FormPath> = Path extends string ? Path extends keyof Values ? Values[Path] : unknown : Path extends readonly (string | number)[] ? TupleValue<Values, Path> : unknown;
10
+ //#endregion
11
+ export { FormValueAtPath };
12
+ //# sourceMappingURL=path-types.d.ts.map
@@ -0,0 +1,21 @@
1
+
2
+ import { FormController, ModernFormState, UseFormControllerOptions } from "./controller.js";
3
+ import { ReactNode } from "react";
4
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
5
+
6
+ //#region src/components/form/Form/modern/react.d.ts
7
+ declare function useFormController<T extends object = Record<string, unknown>>(options?: UseFormControllerOptions<T>): FormController<T>;
8
+ interface FormSelectorOptions<Selected> {
9
+ isEqual?: (previous: Selected, next: Selected) => boolean;
10
+ }
11
+ declare function useFormSelector<T extends object, Selected>(controller: FormController<T>, selector: (state: ModernFormState<T>) => Selected, options?: FormSelectorOptions<Selected>): Selected;
12
+ interface FormSubscribeProps<T extends object, Selected> extends FormSelectorOptions<Selected> {
13
+ /** Omit to use modern context. An explicit undefined detaches from context. */
14
+ form?: FormController<T>;
15
+ selector: (state: ModernFormState<T>) => Selected;
16
+ children: (selected: Selected) => ReactNode;
17
+ }
18
+ declare function FormSubscribe<T extends object = Record<string, unknown>, Selected = unknown>(props: FormSubscribeProps<T, Selected>): react_jsx_runtime0.JSX.Element;
19
+ //#endregion
20
+ export { FormSelectorOptions, FormSubscribe, FormSubscribeProps, useFormController, useFormSelector };
21
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1,27 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.180.0 | Cube Dev Team */
2
+ import { ModernControllerContext } from "./context.js";
3
+ import { createFormController, getControllerInternals } from "./controller.js";
4
+ import { useContext, useState } from "react";
5
+ import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
6
+ import { useSyncExternalStoreWithSelector } from "use-sync-external-store/with-selector.js";
7
+
8
+ //#region src/components/form/Form/modern/react.tsx
9
+ function useFormController(options) {
10
+ const [controller] = useState(() => createFormController(options));
11
+ return controller;
12
+ }
13
+ function useFormSelector(controller, selector, options) {
14
+ const { getServerSnapshot } = getControllerInternals(controller, "Form.useSelector()");
15
+ return useSyncExternalStoreWithSelector(controller.subscribe, controller.getSnapshot, getServerSnapshot, selector, options?.isEqual);
16
+ }
17
+ function FormSubscribe(props) {
18
+ const fromContext = useContext(ModernControllerContext);
19
+ const controller = Object.hasOwn(props, "form") ? props.form : fromContext;
20
+ if (!controller) throw new Error("<Form.Subscribe> requires a modern form prop or a modern <Form> root.");
21
+ const selected = useFormSelector(controller, props.selector, { isEqual: props.isEqual });
22
+ return /* @__PURE__ */ jsx(Fragment$1, { children: props.children(selected) });
23
+ }
24
+
25
+ //#endregion
26
+ export { FormSubscribe, useFormController, useFormSelector };
27
+ //# sourceMappingURL=react.js.map
@@ -0,0 +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 { ModernControllerContext } from './context';\nimport { createFormController, getControllerInternals } from './controller';\n\nimport type { ReactNode } from 'react';\nimport type {\n FormController,\n ModernFormState,\n UseFormControllerOptions,\n} from './controller';\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 // 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 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":";;;;;;;;AAaA,SAAgB,kBACd,SACmB;CAGnB,MAAM,CAAC,cAAc,eAAe,qBAAqB,QAAQ,CAAC;AAIlE,QAAO;;AAOT,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"}