@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
@@ -0,0 +1,813 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.180.0 | Cube Dev Team */
2
+ import { FORM_BACKEND } from "../backend.js";
3
+ import { rulesSignature, runRules } from "./validation.js";
4
+ import { createValueSnapshotter, defineValue, formValueEqual, freezeContainer, getFieldKey, hasPath, isPlainObject, normalizePath, readPath, readonlySet, sameMembers, writePath } from "./values.js";
5
+
6
+ //#region src/components/form/Form/modern/store.ts
7
+ const EMPTY_ERRORS = Object.freeze([]);
8
+ const EMPTY_OBJECT = Object.freeze({});
9
+ const EMPTY_FIELDS = Object.freeze(Object.create(null));
10
+ function related(a, b) {
11
+ return a.slice(0, Math.min(a.length, b.length)).every((key, index) => key === b[index]);
12
+ }
13
+ /** Only traverse path ancestors; a field's value (even cyclic data) is a leaf. */
14
+ function projectActive(value, path, previous) {
15
+ if (path.terminal) return value;
16
+ const result = Array.isArray(value) ? [] : {};
17
+ if (isPlainObject(value) || Array.isArray(value)) for (const [key, child] of path.children) {
18
+ if (!Object.hasOwn(value, key)) continue;
19
+ defineValue(result, key, projectActive(Reflect.get(value, key), child, readPath(previous, [key])));
20
+ }
21
+ return formValueEqual(result, previous) ? previous : freezeContainer(result);
22
+ }
23
+ /**
24
+ * Framework-neutral store, registration ownership, and async pipelines.
25
+ * Not exported from the package; React receives the public command facade.
26
+ */
27
+ function createFormStore(inputOptions = {}) {
28
+ const options = { ...inputOptions };
29
+ const ownValue = createValueSnapshotter();
30
+ const records = /* @__PURE__ */ new Map();
31
+ const listeners = /* @__PURE__ */ new Set();
32
+ let values = ownValue(options.defaultValues ?? {});
33
+ let defaults = values;
34
+ let submitError;
35
+ let submission;
36
+ let binding;
37
+ let order = 0;
38
+ let depth = 0;
39
+ let notifying = false;
40
+ let disposed = false;
41
+ let pending = false;
42
+ let changes = [];
43
+ const cancellations = /* @__PURE__ */ new Set();
44
+ let state = Object.freeze({
45
+ values,
46
+ defaultValues: defaults,
47
+ activeValues: EMPTY_OBJECT,
48
+ fields: EMPTY_FIELDS,
49
+ dirtyFields: readonlySet([]),
50
+ touchedFields: readonlySet([]),
51
+ isDirty: false,
52
+ isTouched: false,
53
+ isValid: false,
54
+ isInvalid: false,
55
+ isValidating: false,
56
+ isSubmitting: false,
57
+ submitError: void 0,
58
+ revision: 0
59
+ });
60
+ function assertLive() {
61
+ if (disposed) throw new Error("Cannot use a disposed modern form store.");
62
+ }
63
+ function report(error) {
64
+ try {
65
+ if (options.onListenerError) options.onListenerError(error);
66
+ else console.error("[form-store] Listener failed", error);
67
+ } catch (reportError) {
68
+ console.error("[form-store] Error reporter failed", reportError);
69
+ }
70
+ }
71
+ function developmentError(message) {
72
+ if (process.env.NODE_ENV === "production") return;
73
+ try {
74
+ if (options.onDevelopmentError) options.onDevelopmentError(message);
75
+ else console.error(`[form-store] ${message}`);
76
+ } catch (error) {
77
+ report(error);
78
+ }
79
+ }
80
+ function ensure(path, explicit = true) {
81
+ const normalized = normalizePath(path);
82
+ const name = getFieldKey(normalized);
83
+ let record = records.get(name);
84
+ if (!record) {
85
+ record = {
86
+ name,
87
+ path: normalized,
88
+ explicit,
89
+ registrations: /* @__PURE__ */ new Set(),
90
+ touched: false,
91
+ errors: EMPTY_ERRORS,
92
+ status: "unvalidated",
93
+ validationRevision: 0
94
+ };
95
+ records.set(name, record);
96
+ }
97
+ record.explicit ||= explicit;
98
+ return record;
99
+ }
100
+ function dirty(record) {
101
+ return hasPath(values, record.path) && !(record.owner?.options.isEqual ?? formValueEqual)(readPath(values, record.path), readPath(defaults, record.path));
102
+ }
103
+ function invalidate(record, keepErrors = false) {
104
+ const controller = record.validation;
105
+ record.validation = void 0;
106
+ record.validationRevision++;
107
+ record.status = "unvalidated";
108
+ if (!keepErrors) record.errors = EMPTY_ERRORS;
109
+ if (controller) cancellations.add(controller);
110
+ }
111
+ function cancelPending() {
112
+ for (const controller of Array.from(cancellations)) {
113
+ cancellations.delete(controller);
114
+ controller.abort();
115
+ }
116
+ }
117
+ function invalidateRelated(path, previous, config) {
118
+ for (const record of records.values()) if (related(path, record.path) || !Object.is(readPath(previous, record.path), readPath(values, record.path)) || hasPath(previous, record.path) !== hasPath(values, record.path)) {
119
+ const revalidate = !!config && !!record.registrations.size && (config.validate === "always" || config.validate !== "never" && (record.owner?.options.validateTrigger === "onChange" || !!record.errors.length));
120
+ invalidate(record, revalidate);
121
+ if (revalidate) validateRecord(record, false);
122
+ }
123
+ }
124
+ function activeValues() {
125
+ const tree = {
126
+ terminal: false,
127
+ children: /* @__PURE__ */ new Map()
128
+ };
129
+ for (const record of records.values()) {
130
+ if (!record.registrations.size || !hasPath(values, record.path)) continue;
131
+ let node = tree;
132
+ for (const key of record.path) {
133
+ let child = node.children.get(key);
134
+ if (!child) {
135
+ child = {
136
+ terminal: false,
137
+ children: /* @__PURE__ */ new Map()
138
+ };
139
+ node.children.set(key, child);
140
+ }
141
+ node = child;
142
+ }
143
+ node.terminal = true;
144
+ }
145
+ return projectActive(values, tree, state.activeValues);
146
+ }
147
+ function buildSnapshot() {
148
+ const fields = Object.create(null);
149
+ const dirtyNames = /* @__PURE__ */ new Set();
150
+ const touchedNames = /* @__PURE__ */ new Set();
151
+ let activeCount = 0;
152
+ let validCount = 0;
153
+ let invalid = false;
154
+ let validating = false;
155
+ for (const record of records.values()) {
156
+ const field = {
157
+ name: record.name,
158
+ value: readPath(values, record.path),
159
+ defaultValue: readPath(defaults, record.path),
160
+ errors: record.errors,
161
+ status: record.status,
162
+ touched: record.touched,
163
+ dirty: dirty(record),
164
+ active: record.registrations.size > 0,
165
+ registrationCount: record.registrations.size,
166
+ validationRevision: record.validationRevision
167
+ };
168
+ const previous = state.fields[record.name];
169
+ Object.defineProperty(fields, record.name, {
170
+ value: formValueEqual(field, previous) ? previous : Object.freeze(field),
171
+ enumerable: true
172
+ });
173
+ if (field.dirty) dirtyNames.add(record.name);
174
+ if (field.touched) touchedNames.add(record.name);
175
+ if (field.active) {
176
+ activeCount++;
177
+ if (field.status === "valid") validCount++;
178
+ invalid ||= field.status === "invalid";
179
+ validating ||= field.status === "validating";
180
+ }
181
+ }
182
+ const next = {
183
+ values,
184
+ defaultValues: defaults,
185
+ activeValues: activeValues(),
186
+ fields: formValueEqual(fields, state.fields) ? state.fields : Object.freeze(fields),
187
+ dirtyFields: sameMembers(dirtyNames, state.dirtyFields) ? state.dirtyFields : readonlySet(dirtyNames),
188
+ touchedFields: sameMembers(touchedNames, state.touchedFields) ? state.touchedFields : readonlySet(touchedNames),
189
+ isDirty: dirtyNames.size > 0,
190
+ isTouched: touchedNames.size > 0,
191
+ isValid: activeCount > 0 && validCount === activeCount,
192
+ isInvalid: invalid,
193
+ isValidating: validating,
194
+ isSubmitting: !!submission,
195
+ submitError,
196
+ revision: state.revision
197
+ };
198
+ if (formValueEqual(next, state)) return state;
199
+ return Object.freeze({
200
+ ...next,
201
+ revision: state.revision + 1
202
+ });
203
+ }
204
+ function flush() {
205
+ if (depth || notifying || disposed) return;
206
+ notifying = true;
207
+ try {
208
+ while ((pending || cancellations.size) && !disposed) {
209
+ pending = false;
210
+ const events = changes;
211
+ changes = [];
212
+ const previous = state;
213
+ state = buildSnapshot();
214
+ const published = state;
215
+ if (state !== previous) for (const listener of Array.from(listeners)) {
216
+ if (!listeners.has(listener)) continue;
217
+ try {
218
+ listener.notify();
219
+ } catch (error) {
220
+ report(error);
221
+ }
222
+ }
223
+ if (events.length && !disposed && resolveCallbacks().onValuesChange) {
224
+ const change = Object.freeze({
225
+ names: Object.freeze(Array.from(new Set(events.flatMap((event) => event.names)))),
226
+ source: events.some((event) => event.source === "user") ? "user" : "program",
227
+ kind: events[events.length - 1].kind
228
+ });
229
+ try {
230
+ const result = resolveCallbacks().onValuesChange?.(published.values, change);
231
+ if (result) Promise.resolve(result).catch(report);
232
+ } catch (error) {
233
+ report(error);
234
+ }
235
+ }
236
+ cancelPending();
237
+ }
238
+ } finally {
239
+ notifying = false;
240
+ }
241
+ }
242
+ function batch(fn) {
243
+ assertLive();
244
+ depth++;
245
+ try {
246
+ fn();
247
+ } finally {
248
+ depth--;
249
+ pending = true;
250
+ flush();
251
+ }
252
+ }
253
+ function event(names, kind, source = "program") {
254
+ if (names.length) changes.push({
255
+ names,
256
+ kind,
257
+ source
258
+ });
259
+ }
260
+ function write(path, value, config = {}) {
261
+ const normalized = normalizePath(path);
262
+ const previous = values;
263
+ const next = writePath(values, normalized, ownValue(value));
264
+ const record = ensure(normalized);
265
+ const changed = next !== values;
266
+ if (changed) {
267
+ values = next;
268
+ invalidateRelated(record.path, previous, config);
269
+ }
270
+ if (config.touch ?? config.source === "user") record.touched = true;
271
+ if (changed && (config.notify ?? config.source === "user")) event([record.name], "set", config.source);
272
+ return changed;
273
+ }
274
+ function setValue(path, value, config) {
275
+ const normalized = normalizePath(path);
276
+ const prepared = { ...config };
277
+ batch(() => {
278
+ write(normalized, value, prepared);
279
+ });
280
+ }
281
+ function setValues(next, config) {
282
+ assertLive();
283
+ const prepared = { ...config };
284
+ const entries = Object.entries(next).map(([name, value]) => [normalizePath(name), ownValue(value)]);
285
+ let checked = values;
286
+ for (const [path, value] of entries) checked = writePath(checked, path, value);
287
+ batch(() => {
288
+ for (const [path, value] of entries) write(path, value, prepared);
289
+ });
290
+ }
291
+ function prepareRegistration(path, config) {
292
+ const prepared = {
293
+ ...config,
294
+ rules: config.rules?.map((rule) => Object.freeze({
295
+ ...rule,
296
+ ...rule.enum ? { enum: Object.freeze([...rule.enum]) } : {}
297
+ }))
298
+ };
299
+ if (Object.hasOwn(prepared, "defaultValue")) {
300
+ prepared.defaultValue = ownValue(prepared.defaultValue);
301
+ const normalized = normalizePath(path);
302
+ if (!hasPath(values, normalized) && !hasPath(defaults, normalized)) {
303
+ writePath(values, normalized, prepared.defaultValue);
304
+ writePath(defaults, normalized, prepared.defaultValue);
305
+ }
306
+ }
307
+ return prepared;
308
+ }
309
+ function seed(record, registration) {
310
+ if (registration.defaultConsidered || !Object.hasOwn(registration.options, "defaultValue")) return;
311
+ registration.defaultConsidered = true;
312
+ const value = ownValue(registration.options.defaultValue);
313
+ if (!hasPath(values, record.path) && !hasPath(defaults, record.path)) {
314
+ const previous = values;
315
+ values = writePath(values, record.path, value);
316
+ defaults = writePath(defaults, record.path, value);
317
+ record.fieldDefault = { value };
318
+ invalidateRelated(record.path, previous);
319
+ } else if (record.fieldDefault && record.registrations.size > 1 && !formValueEqual(record.fieldDefault.value, value)) developmentError(`Field "${record.name}" registered with conflicting defaultValue; the first default is kept.`);
320
+ }
321
+ function register(path, config = {}) {
322
+ assertLive();
323
+ const normalized = normalizePath(path);
324
+ const prepared = prepareRegistration(normalized, config);
325
+ const signature = prepared.rulesKey ?? rulesSignature(prepared.rules);
326
+ const record = ensure(normalized);
327
+ const registration = {
328
+ options: prepared,
329
+ signature,
330
+ order: ++order,
331
+ defaultConsidered: false
332
+ };
333
+ let released = false;
334
+ batch(() => {
335
+ record.registrations.add(registration);
336
+ record.owner = registration;
337
+ seed(record, registration);
338
+ invalidate(record);
339
+ });
340
+ return Object.freeze({
341
+ name: record.name,
342
+ get released() {
343
+ return released || disposed;
344
+ },
345
+ update(next) {
346
+ if (released || disposed) return;
347
+ const prepared = prepareRegistration(record.path, next);
348
+ const signature = prepared.rulesKey ?? rulesSignature(prepared.rules);
349
+ const validationChanged = registration.signature !== signature || registration.options.validationDelay !== prepared.validationDelay || registration.options.validateTrigger !== prepared.validateTrigger || registration.options.errorPolicy !== prepared.errorPolicy;
350
+ if (!(!registration.defaultConsidered && Object.hasOwn(prepared, "defaultValue")) && !validationChanged && (registration.options.preserve ?? true) === (prepared.preserve ?? true) && registration.options.isEqual === prepared.isEqual) {
351
+ registration.options = prepared;
352
+ return;
353
+ }
354
+ batch(() => {
355
+ registration.options = prepared;
356
+ registration.signature = signature;
357
+ registration.order = ++order;
358
+ if (record.owner !== registration || validationChanged) invalidate(record);
359
+ record.owner = registration;
360
+ seed(record, registration);
361
+ });
362
+ },
363
+ release(config = {}) {
364
+ if (released || disposed) return;
365
+ released = true;
366
+ batch(() => {
367
+ record.registrations.delete(registration);
368
+ if (record.owner === registration) {
369
+ record.owner = Array.from(record.registrations).sort((a, b) => b.order - a.order)[0];
370
+ invalidate(record);
371
+ }
372
+ if (!record.registrations.size) {
373
+ if (registration.options.preserve === false) {
374
+ const removeValue = () => {
375
+ values = writePath(values, record.path, void 0, true);
376
+ record.touched = false;
377
+ for (const other of records.values()) if (other !== record && related(other.path, record.path)) invalidate(other);
378
+ if (!hasPath(defaults, record.path)) records.delete(record.name);
379
+ };
380
+ if (config.deferValueRemoval) {
381
+ const revision = record.validationRevision;
382
+ queueMicrotask(() => {
383
+ if (!disposed && records.get(record.name) === record && !record.registrations.size && record.validationRevision === revision) batch(removeValue);
384
+ });
385
+ } else removeValue();
386
+ }
387
+ if (!hasPath(values, record.path) && !hasPath(defaults, record.path)) records.delete(record.name);
388
+ }
389
+ });
390
+ }
391
+ });
392
+ }
393
+ function replaceDefaults(next) {
394
+ const entries = Object.keys(next);
395
+ entries.forEach((name) => normalizePath(name));
396
+ defaults = ownValue(next);
397
+ for (const name of entries) ensure(name, false);
398
+ for (const record of records.values()) record.fieldDefault = void 0;
399
+ }
400
+ function setDefaultValues(next, config = {}) {
401
+ const replace = config.currentValues === "replace";
402
+ batch(() => {
403
+ replaceDefaults(next);
404
+ if (replace) {
405
+ values = defaults;
406
+ for (const record of records.values()) {
407
+ invalidate(record);
408
+ record.touched = false;
409
+ }
410
+ event(Array.from(records.keys()), "defaults");
411
+ }
412
+ });
413
+ }
414
+ function adoptDefaultValues(next, config = {}) {
415
+ const when = config.when ?? "untouched";
416
+ const preserveDirty = config.preserveDirty ?? false;
417
+ batch(() => {
418
+ const candidates = Array.from(records.values());
419
+ const preserved = candidates.filter((record) => {
420
+ if (!record.explicit && candidates.some((child) => child.explicit && child.path.length > record.path.length && related(record.path, child.path))) return false;
421
+ return when === "untouched" && record.touched || when === "clean" && dirty(record) || preserveDirty && dirty(record);
422
+ }).map((record) => ({
423
+ path: record.path,
424
+ exists: hasPath(values, record.path),
425
+ value: readPath(values, record.path)
426
+ }));
427
+ const previous = values;
428
+ replaceDefaults(next);
429
+ values = defaults;
430
+ for (const saved of preserved.sort((a, b) => a.path.length - b.path.length)) values = writePath(values, saved.path, saved.value, !saved.exists);
431
+ const names = [];
432
+ for (const record of records.values()) if (!Object.is(readPath(previous, record.path), readPath(values, record.path)) || hasPath(previous, record.path) !== hasPath(values, record.path)) {
433
+ invalidate(record);
434
+ names.push(record.name);
435
+ }
436
+ event(names, "adopt");
437
+ });
438
+ }
439
+ function reset(config = {}) {
440
+ batch(() => {
441
+ if (Object.hasOwn(config, "values")) replaceDefaults(config.values ?? {});
442
+ values = defaults;
443
+ const names = Array.from(records.keys());
444
+ for (const record of records.values()) {
445
+ invalidate(record);
446
+ record.touched = false;
447
+ if (!record.registrations.size && !hasPath(values, record.path)) records.delete(record.name);
448
+ }
449
+ const previous = submission;
450
+ submission = void 0;
451
+ submitError = void 0;
452
+ if (previous) cancellations.add(previous);
453
+ event(names, "reset");
454
+ });
455
+ }
456
+ function setFieldErrors(path, errors) {
457
+ assertLive();
458
+ const copied = errors.length ? Object.freeze([...errors]) : EMPTY_ERRORS;
459
+ batch(() => {
460
+ const record = ensure(path);
461
+ const status = copied.length ? "invalid" : "valid";
462
+ if (record.status === status && formValueEqual(record.errors, copied)) return;
463
+ invalidate(record);
464
+ record.errors = copied;
465
+ record.status = status;
466
+ });
467
+ }
468
+ function startValidation(path) {
469
+ assertLive();
470
+ const record = records.get(getFieldKey(path));
471
+ if (!record?.registrations.size) throw new Error("Only active form fields can validate.");
472
+ const controller = new AbortController();
473
+ batch(() => {
474
+ invalidate(record, true);
475
+ record.validation = controller;
476
+ record.status = "validating";
477
+ });
478
+ const current = () => !disposed && record.validation === controller && !controller.signal.aborted;
479
+ return Object.freeze({
480
+ signal: controller.signal,
481
+ complete(errors) {
482
+ if (!current()) return false;
483
+ const copied = errors.length ? Object.freeze([...errors]) : EMPTY_ERRORS;
484
+ batch(() => {
485
+ record.validation = void 0;
486
+ record.errors = copied;
487
+ record.status = copied.length ? "invalid" : "valid";
488
+ });
489
+ return true;
490
+ },
491
+ cancel() {
492
+ if (current()) batch(() => {
493
+ invalidate(record, true);
494
+ });
495
+ }
496
+ });
497
+ }
498
+ function startSubmission() {
499
+ assertLive();
500
+ if (submission) return void 0;
501
+ const controller = new AbortController();
502
+ batch(() => {
503
+ submission = controller;
504
+ submitError = void 0;
505
+ });
506
+ return Object.freeze({
507
+ signal: controller.signal,
508
+ complete(result) {
509
+ if (disposed || submission !== controller || controller.signal.aborted) return false;
510
+ const error = result?.error;
511
+ batch(() => {
512
+ submission = void 0;
513
+ submitError = error;
514
+ });
515
+ return true;
516
+ }
517
+ });
518
+ }
519
+ function validateRecord(record, immediate, parentSignal) {
520
+ const result = (errors, stale = false) => ({
521
+ name: record.name,
522
+ errors,
523
+ isValid: !stale && !errors.length,
524
+ stale
525
+ });
526
+ if (parentSignal?.aborted) return Promise.resolve(result(EMPTY_ERRORS, true));
527
+ const config = record.owner?.options;
528
+ const rules = config?.rules ?? [];
529
+ const token = startValidation(record.path);
530
+ const revision = record.validationRevision;
531
+ if (token.signal.aborted || parentSignal?.aborted) {
532
+ token.cancel();
533
+ return Promise.resolve(result(EMPTY_ERRORS, true));
534
+ }
535
+ if (!rules.length) {
536
+ const committed = token.complete(EMPTY_ERRORS);
537
+ return Promise.resolve(result(EMPTY_ERRORS, !committed || record.validationRevision !== revision));
538
+ }
539
+ const value = readPath(values, record.path);
540
+ return new Promise((resolve) => {
541
+ let timer;
542
+ let settled = false;
543
+ const finish = (errors, stale) => {
544
+ if (settled) return;
545
+ settled = true;
546
+ clearTimeout(timer);
547
+ token.signal.removeEventListener("abort", abort);
548
+ parentSignal?.removeEventListener("abort", cancel);
549
+ resolve(result(errors, stale));
550
+ };
551
+ const abort = () => finish(EMPTY_ERRORS, true);
552
+ const cancel = () => token.cancel();
553
+ token.signal.addEventListener("abort", abort, { once: true });
554
+ parentSignal?.addEventListener("abort", cancel, { once: true });
555
+ const run = async () => {
556
+ timer = void 0;
557
+ const errors = await runRules(value, rules, {
558
+ name: record.name,
559
+ signal: token.signal,
560
+ getValue: (path) => readPath(values, normalizePath(path)),
561
+ getValues: () => values
562
+ }, config?.errorPolicy ?? options.errorPolicy ?? "first");
563
+ if (!settled) {
564
+ const committed = token.complete(errors);
565
+ finish(Object.freeze(errors), !committed || record.validationRevision !== revision || !!parentSignal?.aborted);
566
+ }
567
+ };
568
+ const delay = immediate ? 0 : config?.validationDelay ?? 0;
569
+ if (delay > 0) timer = setTimeout(() => void run(), delay);
570
+ else run();
571
+ });
572
+ }
573
+ function validate(paths, config = {}) {
574
+ assertLive();
575
+ const active = (paths ? Array.from(new Set(paths.map(getFieldKey))).map((key) => records.get(key)) : Array.from(records.values())).filter((record) => !!record?.registrations.size);
576
+ let runs = [];
577
+ let revisions = [];
578
+ batch(() => {
579
+ runs = active.map((record) => validateRecord(record, config.immediate ?? true, config.signal));
580
+ revisions = active.map((record) => record.validationRevision);
581
+ });
582
+ return Promise.all(runs).then((results) => {
583
+ const fields = results.map((result, index) => {
584
+ const record = active[index];
585
+ return record.validationRevision === revisions[index] && !!record.registrations.size && !config.signal?.aborted ? result : {
586
+ ...result,
587
+ stale: true,
588
+ isValid: false
589
+ };
590
+ });
591
+ return {
592
+ fields,
593
+ stale: fields.some((field) => field.stale) || !!config.signal?.aborted,
594
+ isValid: !!fields.length && fields.every((field) => field.isValid)
595
+ };
596
+ });
597
+ }
598
+ function resolveCallbacks() {
599
+ return {
600
+ ...options,
601
+ ...binding?.callbacks
602
+ };
603
+ }
604
+ function cancelSubmission() {
605
+ batch(() => {
606
+ if (submission) cancellations.add(submission);
607
+ submission = void 0;
608
+ });
609
+ }
610
+ function bindCallbacks(callbacks) {
611
+ assertLive();
612
+ if (binding) developmentError("A second Form root owns this controller; the newest callback binding wins.");
613
+ const own = { callbacks: { ...callbacks } };
614
+ binding = own;
615
+ let released = false;
616
+ return Object.freeze({
617
+ update(next) {
618
+ if (!released && !disposed && binding === own) own.callbacks = { ...next };
619
+ },
620
+ release() {
621
+ if (released || disposed) return;
622
+ released = true;
623
+ if (binding === own) {
624
+ binding = void 0;
625
+ cancelSubmission();
626
+ }
627
+ }
628
+ });
629
+ }
630
+ async function submit(config = {}) {
631
+ const token = startSubmission();
632
+ if (!token) return {
633
+ status: "ignored",
634
+ reason: "submitting"
635
+ };
636
+ const include = config.include ?? "active";
637
+ return new Promise((resolve) => {
638
+ let settled = false;
639
+ const finish = (result) => {
640
+ if (settled) return;
641
+ settled = true;
642
+ token.signal.removeEventListener("abort", abort);
643
+ resolve(result);
644
+ };
645
+ const abort = () => finish({ status: "stale" });
646
+ token.signal.addEventListener("abort", abort, { once: true });
647
+ if (token.signal.aborted) {
648
+ abort();
649
+ return;
650
+ }
651
+ const run = async () => {
652
+ const pendingValidation = validate(void 0, { signal: token.signal });
653
+ const validatedRecords = Array.from(records.values()).filter((record) => record.registrations.size);
654
+ const revisions = validatedRecords.map((record) => record.validationRevision);
655
+ const validation = await pendingValidation;
656
+ if (settled) return;
657
+ const changedSinceValidation = validatedRecords.length !== validation.fields.length || validatedRecords.length !== Array.from(records.values()).filter((record) => record.registrations.size).length || validatedRecords.some((record, index) => !record.registrations.size || record.validationRevision !== revisions[index]);
658
+ if (validation.stale || changedSinceValidation) {
659
+ token.complete();
660
+ finish({ status: "stale" });
661
+ return;
662
+ }
663
+ const callbacks = resolveCallbacks();
664
+ let result;
665
+ if (!validation.isValid) {
666
+ const errors = Object.fromEntries(validation.fields.filter((field) => !field.isValid).map((field) => [field.name, field.errors]));
667
+ result = {
668
+ status: "invalid",
669
+ errors: Object.freeze(errors)
670
+ };
671
+ try {
672
+ await callbacks.onSubmitFailed?.(errors);
673
+ } catch (error) {
674
+ report(error);
675
+ }
676
+ if (!settled) {
677
+ token.complete();
678
+ finish(result);
679
+ }
680
+ return;
681
+ }
682
+ try {
683
+ await callbacks.onSubmit?.(include === "all" ? values : activeValues(), {
684
+ include,
685
+ signal: token.signal
686
+ });
687
+ result = { status: "submitted" };
688
+ } catch (error) {
689
+ if (settled) return;
690
+ batch(() => {
691
+ submitError = error;
692
+ });
693
+ try {
694
+ await callbacks.onSubmitFailed?.(error);
695
+ } catch (failure) {
696
+ report(failure);
697
+ }
698
+ result = {
699
+ status: "failed",
700
+ error
701
+ };
702
+ }
703
+ if (!settled) {
704
+ token.complete(result.status === "failed" ? { error: result.error } : void 0);
705
+ finish(result);
706
+ }
707
+ };
708
+ run().catch((error) => {
709
+ if (!settled) {
710
+ token.complete({ error });
711
+ finish({
712
+ status: "failed",
713
+ error
714
+ });
715
+ }
716
+ });
717
+ });
718
+ }
719
+ function subscribe(listener) {
720
+ assertLive();
721
+ const entry = { notify: listener };
722
+ listeners.add(entry);
723
+ return () => {
724
+ listeners.delete(entry);
725
+ };
726
+ }
727
+ function dispose() {
728
+ if (disposed) return;
729
+ disposed = true;
730
+ listeners.clear();
731
+ binding = void 0;
732
+ changes = [];
733
+ pending = false;
734
+ for (const record of records.values()) {
735
+ record.registrations.clear();
736
+ record.owner = void 0;
737
+ invalidate(record);
738
+ }
739
+ const previous = submission;
740
+ submission = void 0;
741
+ if (previous) cancellations.add(previous);
742
+ state = buildSnapshot();
743
+ records.clear();
744
+ cancelPending();
745
+ }
746
+ for (const name of Object.keys(values)) ensure(name, false);
747
+ state = buildSnapshot();
748
+ return Object.freeze({
749
+ [FORM_BACKEND]: "modern",
750
+ getSnapshot: () => state,
751
+ getFieldSnapshot: (path) => state.fields[getFieldKey(path)],
752
+ getValue: (path) => readPath(values, normalizePath(path)),
753
+ getValues: () => values,
754
+ getActiveValues: () => activeValues(),
755
+ subscribe,
756
+ subscribeSelector(selector, listener, isEqual = Object.is) {
757
+ let selected = selector(state);
758
+ return subscribe(() => {
759
+ const next = selector(state);
760
+ if (isEqual(selected, next)) return;
761
+ const previous = selected;
762
+ selected = next;
763
+ listener(next, previous);
764
+ });
765
+ },
766
+ register,
767
+ validate,
768
+ submit,
769
+ bindCallbacks,
770
+ blur(path) {
771
+ const record = records.get(getFieldKey(path));
772
+ if (!record?.registrations.size) return;
773
+ batch(() => {
774
+ record.touched = true;
775
+ if ((record.owner?.options.validateTrigger ?? "onBlur") === "onBlur") validateRecord(record, false);
776
+ });
777
+ },
778
+ setValue,
779
+ setValues,
780
+ batch,
781
+ setDefaultValues,
782
+ adoptDefaultValues,
783
+ reset,
784
+ touch(path, touched = true) {
785
+ batch(() => {
786
+ ensure(path).touched = touched;
787
+ });
788
+ },
789
+ setFieldErrors,
790
+ clearFieldErrors: (path) => setFieldErrors(path, EMPTY_ERRORS),
791
+ startValidation,
792
+ startSubmission,
793
+ setSubmitError(error) {
794
+ batch(() => {
795
+ submitError = error;
796
+ });
797
+ },
798
+ clearSubmitError() {
799
+ batch(() => {
800
+ submitError = void 0;
801
+ });
802
+ },
803
+ dispose,
804
+ debug: Object.freeze({
805
+ listenerCount: () => listeners.size,
806
+ registrationCount: () => Array.from(records.values()).reduce((count, record) => count + record.registrations.size, 0)
807
+ })
808
+ });
809
+ }
810
+
811
+ //#endregion
812
+ export { createFormStore };
813
+ //# sourceMappingURL=store.js.map