@cube-dev/ui-kit 0.120.1 → 0.121.1

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 (540) hide show
  1. package/dist/CHANGELOG.md +20 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.d.ts +1 -0
  20. package/dist/components/actions/Button/Button.js +34 -14
  21. package/dist/components/actions/Button/Button.js.map +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.d.ts +47 -0
  24. package/dist/components/actions/ButtonSplit/ButtonSplit.js +105 -0
  25. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -0
  26. package/dist/components/actions/ButtonSplit/context.d.ts +18 -0
  27. package/dist/components/actions/ButtonSplit/context.js +12 -0
  28. package/dist/components/actions/ButtonSplit/context.js.map +1 -0
  29. package/dist/components/actions/ButtonSplit/index.d.ts +3 -0
  30. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  31. package/dist/components/actions/CommandMenu/styled.js +1 -1
  32. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  33. package/dist/components/actions/ItemActionContext.js +1 -1
  34. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  35. package/dist/components/actions/Link/Link.js +1 -1
  36. package/dist/components/actions/Menu/Menu.d.ts +2 -2
  37. package/dist/components/actions/Menu/Menu.js +1 -1
  38. package/dist/components/actions/Menu/MenuItem.js +1 -1
  39. package/dist/components/actions/Menu/MenuSection.js +1 -1
  40. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  41. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  42. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  43. package/dist/components/actions/Menu/context.js +1 -1
  44. package/dist/components/actions/Menu/styled.js +1 -1
  45. package/dist/components/actions/index.d.ts +8 -3
  46. package/dist/components/actions/index.js +10 -5
  47. package/dist/components/actions/index.js.map +1 -1
  48. package/dist/components/actions/use-action.d.ts +1 -0
  49. package/dist/components/actions/use-action.js +21 -18
  50. package/dist/components/actions/use-action.js.map +1 -1
  51. package/dist/components/actions/use-anchored-menu.js +1 -1
  52. package/dist/components/actions/use-context-menu.js +1 -1
  53. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  54. package/dist/components/content/Alert/Alert.js +1 -1
  55. package/dist/components/content/Alert/use-alert.js +1 -1
  56. package/dist/components/content/Avatar/Avatar.js +1 -1
  57. package/dist/components/content/Badge/Badge.js +2 -1
  58. package/dist/components/content/Badge/Badge.js.map +1 -1
  59. package/dist/components/content/Card/Card.js +1 -1
  60. package/dist/components/content/Content.js +1 -1
  61. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  62. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  63. package/dist/components/content/Disclosure/Disclosure.js +5 -2
  64. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  65. package/dist/components/content/Divider.js +1 -1
  66. package/dist/components/content/Footer.js +1 -1
  67. package/dist/components/content/Header.js +1 -1
  68. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  69. package/dist/components/content/Item/Item.js +1 -1
  70. package/dist/components/content/ItemBadge/ItemBadge.js +3 -2
  71. package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
  72. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  73. package/dist/components/content/Layout/GridLayout.js +1 -1
  74. package/dist/components/content/Layout/Layout.js +1 -1
  75. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  76. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  77. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  78. package/dist/components/content/Layout/LayoutContent.js +1 -1
  79. package/dist/components/content/Layout/LayoutContext.js +1 -1
  80. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  81. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  82. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  83. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  84. package/dist/components/content/Layout/LayoutPane.js +1 -1
  85. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  86. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  87. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  88. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  89. package/dist/components/content/Layout/index.js +1 -1
  90. package/dist/components/content/Layout/utils.js +1 -1
  91. package/dist/components/content/Paragraph.js +1 -1
  92. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  93. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  94. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  95. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  96. package/dist/components/content/Result/Result.js +1 -1
  97. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  98. package/dist/components/content/Tag/Tag.js +2 -1
  99. package/dist/components/content/Tag/Tag.js.map +1 -1
  100. package/dist/components/content/Text.js +1 -1
  101. package/dist/components/content/TextItem/TextItem.js +1 -1
  102. package/dist/components/content/Title.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/fields/Checkbox/Checkbox.js +1 -1
  106. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  107. package/dist/components/fields/Checkbox/context.js +1 -1
  108. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  109. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  110. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  111. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  112. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  113. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  114. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  115. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  116. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  117. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  118. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  119. package/dist/components/fields/DatePicker/intl.js +1 -1
  120. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  121. package/dist/components/fields/DatePicker/props.js +1 -1
  122. package/dist/components/fields/DatePicker/utils.js +1 -1
  123. package/dist/components/fields/FileInput/FileInput.js +1 -1
  124. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  125. package/dist/components/fields/FilterPicker/FilterPicker.js +2 -2
  126. package/dist/components/fields/Input/Input.js +1 -1
  127. package/dist/components/fields/ListBox/ListBox.js +1 -1
  128. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  129. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  130. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  131. package/dist/components/fields/Picker/Picker.js +2 -2
  132. package/dist/components/fields/RadioGroup/Radio.js +3 -1
  133. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  134. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  135. package/dist/components/fields/RadioGroup/context.js +1 -1
  136. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  137. package/dist/components/fields/Select/Select.d.ts +8 -2
  138. package/dist/components/fields/Select/Select.js +1 -1
  139. package/dist/components/fields/Select/Select.js.map +1 -1
  140. package/dist/components/fields/Slider/Gradation.js +1 -1
  141. package/dist/components/fields/Slider/HueSlider.js +1 -1
  142. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  143. package/dist/components/fields/Slider/Slider.js +1 -1
  144. package/dist/components/fields/Slider/SliderBase.js +1 -1
  145. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  146. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  147. package/dist/components/fields/Slider/elements.js +1 -1
  148. package/dist/components/fields/Slider/index.js +1 -1
  149. package/dist/components/fields/Switch/Switch.js +1 -1
  150. package/dist/components/fields/TextArea/TextArea.js +1 -1
  151. package/dist/components/fields/TextInput/TextInput.js +1 -1
  152. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  153. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  154. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  155. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  156. package/dist/components/form/Form/Field.js +1 -1
  157. package/dist/components/form/Form/Form.js +1 -1
  158. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  159. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  160. package/dist/components/form/Form/SubmitError.js +1 -1
  161. package/dist/components/form/Form/index.js +1 -1
  162. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  163. package/dist/components/form/Form/use-field/use-field.js +1 -1
  164. package/dist/components/form/Form/use-form.js +1 -1
  165. package/dist/components/form/Form/validation.js +1 -1
  166. package/dist/components/form/Label.js +1 -1
  167. package/dist/components/form/wrapper.js +1 -1
  168. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  169. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  170. package/dist/components/layout/Flex.js +1 -1
  171. package/dist/components/layout/Flow.js +1 -1
  172. package/dist/components/layout/Grid.js +1 -1
  173. package/dist/components/layout/Panel.js +1 -1
  174. package/dist/components/layout/Prefix.js +1 -1
  175. package/dist/components/layout/ResizablePanel.js +1 -1
  176. package/dist/components/layout/Space.js +1 -1
  177. package/dist/components/layout/Suffix.js +1 -1
  178. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  179. package/dist/components/navigation/Tabs/EditableTitle.js +1 -1
  180. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  181. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  182. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  183. package/dist/components/navigation/Tabs/TabPicker.js +2 -1
  184. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  185. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  186. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  187. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  188. package/dist/components/navigation/Tabs/styled.js +3 -1
  189. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  190. package/dist/components/navigation/Tabs/types.d.ts +2 -2
  191. package/dist/components/navigation/Tabs/types.js +1 -1
  192. package/dist/components/navigation/Tabs/types.js.map +1 -1
  193. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  194. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  195. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  196. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  197. package/dist/components/other/Calendar/Calendar.js +1 -1
  198. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  199. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  200. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  201. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  202. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  203. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  204. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  205. package/dist/components/overlays/Dialog/Dialog.js +2 -2
  206. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  207. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  208. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  209. package/dist/components/overlays/Dialog/context.js +1 -1
  210. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  211. package/dist/components/overlays/Modal/Modal.js +1 -1
  212. package/dist/components/overlays/Modal/OpenTransition.js +1 -1
  213. package/dist/components/overlays/Modal/Overlay.js +1 -1
  214. package/dist/components/overlays/Modal/Popover.js +1 -1
  215. package/dist/components/overlays/Modal/Tray.js +1 -1
  216. package/dist/components/overlays/Modal/Underlay.js +1 -1
  217. package/dist/components/overlays/Notifications/Notification.js +1 -1
  218. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  219. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  220. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  221. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  222. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  223. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  224. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  225. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  226. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  227. package/dist/components/overlays/Notifications/index.js +1 -1
  228. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  229. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  230. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  231. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  232. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  233. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  234. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  235. package/dist/components/overlays/Toast/index.js +1 -1
  236. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  237. package/dist/components/overlays/Toast/useToast.js +1 -1
  238. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  239. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  240. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  241. package/dist/components/overlays/Tooltip/context.js +1 -1
  242. package/dist/components/portal/Portal.js +1 -1
  243. package/dist/components/portal/PortalProvider.js +1 -1
  244. package/dist/components/portal/usePortal.js +1 -1
  245. package/dist/components/shared/InvalidIcon.js +1 -1
  246. package/dist/components/shared/ValidIcon.js +1 -1
  247. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  248. package/dist/components/status/Spin/Cube.js +1 -1
  249. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  250. package/dist/components/status/Spin/Spin.js +1 -1
  251. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  252. package/dist/data/item-themes.js +6 -6
  253. package/dist/data/item-themes.js.map +1 -1
  254. package/dist/data/themes.js +1 -1
  255. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  256. package/dist/icons/AdjustmentsIcon.js +1 -1
  257. package/dist/icons/AiIcon.js +1 -1
  258. package/dist/icons/AreaChartIcon.js +1 -1
  259. package/dist/icons/BackwardIcon.js +1 -1
  260. package/dist/icons/BarChartIcon.js +1 -1
  261. package/dist/icons/BellFilledIcon.js +1 -1
  262. package/dist/icons/BellIcon.js +1 -1
  263. package/dist/icons/BooleanIcon.js +1 -1
  264. package/dist/icons/CalendarEditIcon.js +1 -1
  265. package/dist/icons/CalendarIcon.js +1 -1
  266. package/dist/icons/CaretDownIcon.js +1 -1
  267. package/dist/icons/CaretUpIcon.js +1 -1
  268. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  269. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  270. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  271. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  272. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  273. package/dist/icons/ChartBarLineIcon.js +1 -1
  274. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  275. package/dist/icons/ChartBarStackedIcon.js +1 -1
  276. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  277. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  278. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  279. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  280. package/dist/icons/ChartBubbleIcon.js +1 -1
  281. package/dist/icons/ChartDonut2Icon.js +1 -1
  282. package/dist/icons/ChartFunnelIcon.js +1 -1
  283. package/dist/icons/ChartHeatmapIcon.js +1 -1
  284. package/dist/icons/ChartKPIIcon.js +1 -1
  285. package/dist/icons/ChartPie2Icon.js +1 -1
  286. package/dist/icons/ChartScatterIcon.js +1 -1
  287. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  288. package/dist/icons/CheckCircleIcon.js +1 -1
  289. package/dist/icons/CheckIcon.js +1 -1
  290. package/dist/icons/CircleFilledIcon.js +1 -1
  291. package/dist/icons/ClearIcon.js +1 -1
  292. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  293. package/dist/icons/CloseCircleIcon.js +1 -1
  294. package/dist/icons/CloseIcon.js +1 -1
  295. package/dist/icons/CodeIcon.js +1 -1
  296. package/dist/icons/ColumnTotalIcon.js +1 -1
  297. package/dist/icons/CopyIcon.js +1 -1
  298. package/dist/icons/CountIcon.js +1 -1
  299. package/dist/icons/CubeIcon.js +1 -1
  300. package/dist/icons/CubePauseIcon.js +1 -1
  301. package/dist/icons/CubePlayIcon.js +1 -1
  302. package/dist/icons/CurrencyDollarIcon.js +1 -1
  303. package/dist/icons/DangerIcon.js +1 -1
  304. package/dist/icons/DashboardIcon.js +1 -1
  305. package/dist/icons/DatabaseIcon.js +1 -1
  306. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  307. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  308. package/dist/icons/DirectionIcon.js +1 -1
  309. package/dist/icons/DonutIcon.js +1 -1
  310. package/dist/icons/DownIcon.js +1 -1
  311. package/dist/icons/EditIcon.js +1 -1
  312. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  313. package/dist/icons/ExclamationCircleIcon.js +1 -1
  314. package/dist/icons/ExclamationIcon.js +1 -1
  315. package/dist/icons/EyeIcon.js +1 -1
  316. package/dist/icons/EyeInvisibleIcon.js +1 -1
  317. package/dist/icons/FilterIcon.js +1 -1
  318. package/dist/icons/FolderFilledIcon.js +1 -1
  319. package/dist/icons/FolderIcon.js +1 -1
  320. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  321. package/dist/icons/FolderOpenIcon.js +1 -1
  322. package/dist/icons/ForwardIcon.js +1 -1
  323. package/dist/icons/HierarchyIcon.js +1 -1
  324. package/dist/icons/HierarchyOpenIcon.js +1 -1
  325. package/dist/icons/Icon.js +1 -1
  326. package/dist/icons/InfoCircleIcon.js +1 -1
  327. package/dist/icons/InfoIcon.js +1 -1
  328. package/dist/icons/KeyIcon.js +1 -1
  329. package/dist/icons/LeftIcon.js +1 -1
  330. package/dist/icons/LineChartIcon.js +1 -1
  331. package/dist/icons/LoadingIcon.js +1 -1
  332. package/dist/icons/LockFilledIcon.js +1 -1
  333. package/dist/icons/LockIcon.js +1 -1
  334. package/dist/icons/MoreIcon.js +1 -1
  335. package/dist/icons/NotAllowedIcon.js +1 -1
  336. package/dist/icons/Number123Icon.js +1 -1
  337. package/dist/icons/NumberIcon.js +1 -1
  338. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  339. package/dist/icons/PauseCircleIcon.js +1 -1
  340. package/dist/icons/PauseIcon.js +1 -1
  341. package/dist/icons/PercentageIcon.js +1 -1
  342. package/dist/icons/PieChartIcon.js +1 -1
  343. package/dist/icons/PlayCircleIcon.js +1 -1
  344. package/dist/icons/PlayIcon.js +1 -1
  345. package/dist/icons/PlusIcon.js +1 -1
  346. package/dist/icons/ProgressBarIcon.js +1 -1
  347. package/dist/icons/ReloadIcon.js +1 -1
  348. package/dist/icons/ReportIcon.js +1 -1
  349. package/dist/icons/ReturnIcon.js +1 -1
  350. package/dist/icons/RightIcon.js +1 -1
  351. package/dist/icons/RowTotalsIcon.js +1 -1
  352. package/dist/icons/SchemeIcon.js +1 -1
  353. package/dist/icons/SearchIcon.js +1 -1
  354. package/dist/icons/SemanticQueryIcon.js +1 -1
  355. package/dist/icons/SettingsIcon.js +1 -1
  356. package/dist/icons/ShieldFilledIcon.js +1 -1
  357. package/dist/icons/ShieldIcon.js +1 -1
  358. package/dist/icons/SlashIcon.js +1 -1
  359. package/dist/icons/SparklesIcon.js +1 -1
  360. package/dist/icons/SqlIcon.js +1 -1
  361. package/dist/icons/StatsIcon.js +1 -1
  362. package/dist/icons/StopIcon.js +1 -1
  363. package/dist/icons/StringIcon.js +1 -1
  364. package/dist/icons/SubtotalsIcon.js +1 -1
  365. package/dist/icons/SwitchIcon.js +1 -1
  366. package/dist/icons/TableIcon.js +1 -1
  367. package/dist/icons/ThumbsDownIcon.js +1 -1
  368. package/dist/icons/ThumbsUpIcon.js +1 -1
  369. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  370. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  371. package/dist/icons/ThunderboltIcon.js +1 -1
  372. package/dist/icons/TimeIcon.js +1 -1
  373. package/dist/icons/TrashIcon.js +1 -1
  374. package/dist/icons/UnlockIcon.js +1 -1
  375. package/dist/icons/UpIcon.js +1 -1
  376. package/dist/icons/UserGroupIcon.js +1 -1
  377. package/dist/icons/UserIcon.js +1 -1
  378. package/dist/icons/UserLockIcon.js +1 -1
  379. package/dist/icons/ViewIcon.js +1 -1
  380. package/dist/icons/WarningFilledIcon.js +1 -1
  381. package/dist/icons/WarningIcon.js +1 -1
  382. package/dist/icons/wrap-icon.js +1 -1
  383. package/dist/index.d.ts +6 -4
  384. package/dist/index.js +7 -5
  385. package/dist/index.js.map +1 -1
  386. package/dist/provider.js +1 -1
  387. package/dist/providers/TrackingProvider.js +1 -1
  388. package/dist/providers/navigationAdapter.default.js +1 -1
  389. package/dist/tokens/base.js +1 -1
  390. package/dist/tokens/colors.js +1 -1
  391. package/dist/tokens/index.js +1 -1
  392. package/dist/tokens/layout.js +1 -1
  393. package/dist/tokens/shadows.js +1 -1
  394. package/dist/tokens/sizes.js +1 -1
  395. package/dist/tokens/spacing.js +1 -1
  396. package/dist/utils/ResizeSensor.js +1 -1
  397. package/dist/utils/is-dev-env.js +1 -1
  398. package/dist/utils/modules.js +1 -1
  399. package/dist/utils/promise.js +1 -1
  400. package/dist/utils/raf.js +1 -1
  401. package/dist/utils/random.js +1 -1
  402. package/dist/utils/range.js +1 -1
  403. package/dist/utils/react/RenderCache.js +1 -1
  404. package/dist/utils/react/Slots.js +1 -1
  405. package/dist/utils/react/chain.js +1 -1
  406. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  407. package/dist/utils/react/index.js +1 -1
  408. package/dist/utils/react/interactions.js +1 -1
  409. package/dist/utils/react/isTextOnly.js +1 -1
  410. package/dist/utils/react/mapProps.js +1 -1
  411. package/dist/utils/react/mergeProps.js +1 -1
  412. package/dist/utils/react/nullableValue.js +1 -1
  413. package/dist/utils/react/resolveIcon.js +1 -1
  414. package/dist/utils/react/sharedStore.js +1 -1
  415. package/dist/utils/react/useCombinedRefs.js +1 -1
  416. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  417. package/dist/utils/react/useEventBus.js +1 -1
  418. package/dist/utils/react/useId.js +1 -1
  419. package/dist/utils/react/useIsDarwin.js +1 -1
  420. package/dist/utils/react/useKeySymbols.js +1 -1
  421. package/dist/utils/react/useLayoutEffect.js +1 -1
  422. package/dist/utils/react/useLocalStorage.js +1 -1
  423. package/dist/utils/react/useMergeStyles.js +1 -1
  424. package/dist/utils/react/useQaProps.js +1 -1
  425. package/dist/utils/react/useViewportSize.js +1 -1
  426. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  427. package/dist/utils/tree.js +1 -1
  428. package/dist/utils/warnings.js +1 -1
  429. package/dist/version.js +2 -2
  430. package/docs/BaseProperties.md +78 -0
  431. package/docs/ComplexLayout.md +459 -0
  432. package/docs/CreateComponent.md +410 -0
  433. package/docs/FieldProperties.md +117 -0
  434. package/docs/Introduction.md +122 -0
  435. package/docs/RenderCache.md +177 -0
  436. package/docs/Result.md +42 -0
  437. package/docs/SimpleLayout.md +26 -0
  438. package/docs/Typography.md +38 -0
  439. package/docs/components/Block.md +33 -0
  440. package/docs/components/CollectionItem.md +293 -0
  441. package/docs/components/GridProvider.md +38 -0
  442. package/docs/components/Root.md +50 -0
  443. package/docs/components/actions/Action.md +47 -0
  444. package/docs/components/actions/Banner.md +195 -0
  445. package/docs/components/actions/Button.md +209 -0
  446. package/docs/components/actions/ButtonGroup.md +46 -0
  447. package/docs/components/actions/ButtonSplit.md +199 -0
  448. package/docs/components/actions/CommandMenu.md +422 -0
  449. package/docs/components/actions/ItemAction.md +60 -0
  450. package/docs/components/actions/ItemButton.md +316 -0
  451. package/docs/components/actions/Link.md +325 -0
  452. package/docs/components/actions/Menu.md +485 -0
  453. package/docs/components/actions/MenuTrigger.md +47 -0
  454. package/docs/components/actions/SubMenuTrigger.md +38 -0
  455. package/docs/components/actions/use-anchored-menu.md +209 -0
  456. package/docs/components/actions/use-context-menu.md +218 -0
  457. package/docs/components/content/ActiveZone.md +37 -0
  458. package/docs/components/content/Alert.md +40 -0
  459. package/docs/components/content/Avatar.md +37 -0
  460. package/docs/components/content/Badge.md +194 -0
  461. package/docs/components/content/Card.md +40 -0
  462. package/docs/components/content/Content.md +44 -0
  463. package/docs/components/content/CopyPasteBlock.md +36 -0
  464. package/docs/components/content/CopySnippet.md +43 -0
  465. package/docs/components/content/Disclosure.md +181 -0
  466. package/docs/components/content/Divider.md +39 -0
  467. package/docs/components/content/Footer.md +35 -0
  468. package/docs/components/content/Header.md +35 -0
  469. package/docs/components/content/HotKeys.md +352 -0
  470. package/docs/components/content/Item.md +499 -0
  471. package/docs/components/content/ItemBadge.md +31 -0
  472. package/docs/components/content/ItemCard.md +131 -0
  473. package/docs/components/content/Layout.md +843 -0
  474. package/docs/components/content/Paragraph.md +32 -0
  475. package/docs/components/content/Placeholder.md +37 -0
  476. package/docs/components/content/PrismCode.md +36 -0
  477. package/docs/components/content/PrismDiffCode.md +29 -0
  478. package/docs/components/content/Result.md +46 -0
  479. package/docs/components/content/Skeleton.md +35 -0
  480. package/docs/components/content/Tag.md +165 -0
  481. package/docs/components/content/Text.md +54 -0
  482. package/docs/components/content/TextItem.md +217 -0
  483. package/docs/components/content/Title.md +45 -0
  484. package/docs/components/fields/Checkbox.md +176 -0
  485. package/docs/components/fields/ComboBox.md +651 -0
  486. package/docs/components/fields/DatePicker.md +227 -0
  487. package/docs/components/fields/FileInput.md +194 -0
  488. package/docs/components/fields/FilterListBox.md +726 -0
  489. package/docs/components/fields/FilterPicker.md +776 -0
  490. package/docs/components/fields/HueSlider.md +175 -0
  491. package/docs/components/fields/ListBox.md +714 -0
  492. package/docs/components/fields/NumberInput.md +180 -0
  493. package/docs/components/fields/PasswordInput.md +214 -0
  494. package/docs/components/fields/Picker.md +906 -0
  495. package/docs/components/fields/RadioGroup.md +310 -0
  496. package/docs/components/fields/SearchInput.md +224 -0
  497. package/docs/components/fields/Select.md +576 -0
  498. package/docs/components/fields/Slider.md +53 -0
  499. package/docs/components/fields/Switch.md +169 -0
  500. package/docs/components/fields/TextArea.md +61 -0
  501. package/docs/components/fields/TextInput.md +205 -0
  502. package/docs/components/fields/TextInputMapper.md +34 -0
  503. package/docs/components/form/Field.md +333 -0
  504. package/docs/components/form/Form.md +644 -0
  505. package/docs/components/form/FormInstance.md +307 -0
  506. package/docs/components/helpers/DisplayTransition.md +268 -0
  507. package/docs/components/helpers/IconSwitch.md +160 -0
  508. package/docs/components/layout/Flex.md +51 -0
  509. package/docs/components/layout/Flow.md +32 -0
  510. package/docs/components/layout/Grid.md +46 -0
  511. package/docs/components/layout/Panel.md +65 -0
  512. package/docs/components/layout/Prefix.md +37 -0
  513. package/docs/components/layout/ResizablePanel.md +69 -0
  514. package/docs/components/layout/Space.md +44 -0
  515. package/docs/components/layout/Suffix.md +39 -0
  516. package/docs/components/navigation/Tabs.md +726 -0
  517. package/docs/components/organisms/FileTabs.md +39 -0
  518. package/docs/components/organisms/StatsCard.md +40 -0
  519. package/docs/components/other/CloudLogo.md +33 -0
  520. package/docs/components/overlays/AlertDialog.md +51 -0
  521. package/docs/components/overlays/Dialog.md +200 -0
  522. package/docs/components/overlays/DialogContainer.md +201 -0
  523. package/docs/components/overlays/DialogForm.md +295 -0
  524. package/docs/components/overlays/DialogTrigger.md +191 -0
  525. package/docs/components/overlays/Notifications.md +402 -0
  526. package/docs/components/overlays/Toast.md +289 -0
  527. package/docs/components/overlays/Tooltip.md +400 -0
  528. package/docs/components/overlays/TooltipProvider.md +42 -0
  529. package/docs/components/overlays/TooltipTrigger.md +42 -0
  530. package/docs/components/overlays/UseDialogContainer.md +597 -0
  531. package/docs/components/portal/Portal.md +29 -0
  532. package/docs/components/status/LoadingAnimation.md +27 -0
  533. package/docs/components/status/Spin.md +35 -0
  534. package/docs/tasty/configuration.md +211 -0
  535. package/docs/tasty/debug.md +505 -0
  536. package/docs/tasty/injector.md +528 -0
  537. package/docs/tasty/styles.md +567 -0
  538. package/docs/tasty/tasty-static.md +376 -0
  539. package/docs/tasty/usage.md +643 -0
  540. package/package.json +5 -9
@@ -0,0 +1,644 @@
1
+ # Form
2
+
3
+ Forms allow users to enter data that can be submitted while providing alignment and styling for form fields. The Form component provides structure, validation, and state management for user input through a collection of input components with built-in field support.
4
+
5
+ The form system is inspired by AntD Forms and [rc-field-form](https://field-form-react-component.vercel.app/) with a similar API.
6
+
7
+ ## When to Use
8
+
9
+ - When collecting user information or input data
10
+ - When you need structured validation and error handling
11
+ - When building login forms, registration forms, or data entry interfaces
12
+ - When you need programmatic control over form state and submission
13
+
14
+ ## Component
15
+
16
+ ## Properties
17
+
18
+ ### Form-specific Properties
19
+
20
+ - **`name`** `string` — Form name attribute
21
+ - **`defaultValues`** `Partial<T>` — Default field values
22
+ - **`onValuesChange`** `(data: T) => void` — Triggered when any field value changes
23
+ - **`onSubmit`** `(data: T) => void | Promise<void>` — Triggered on successful form submission. When returning a promise, the form and submit button show loading state until resolved
24
+ - **`onSubmitFailed`** `(error: any) => void` — Triggered when form submission fails
25
+ - **`form`** `CubeFormInstance<T>` — Form instance created by `Form.useForm()`
26
+ - **`labelWidth`** `Styles['width']` — Width of label area for side-positioned labels
27
+ - **`orientation`** `'vertical' | 'horizontal'` (default: `vertical`) — Form layout orientation
28
+
29
+ ### Inherited Form Properties
30
+
31
+ These properties are inherited by all input components within the form:
32
+
33
+ - **`labelPosition`** `'top' | 'side' | 'split'` (default: `top`) — Where to place labels relative to inputs. `'top'` places labels above inputs, `'side'` places labels beside inputs with fixed width, `'split'` places labels and inputs on opposite sides without fixed label width
34
+ - **`labelStyles`** `Styles` — Styles applied to field labels
35
+ - **`requiredMark`** `boolean` (default: `true`) — Whether to show required field indicators
36
+ - **`necessityIndicator`** `'icon' | 'label'` (default: `icon`) — Type of necessity indicator
37
+ - **`isReadOnly`** `boolean` (default: `false`) — Whether fields are read-only by default
38
+ - **`validationState`** `'valid' | 'invalid'` — Validation state for all fields
39
+ - **`validateTrigger`** `'onBlur' | 'onChange' | 'onSubmit'` (default: `onBlur`) — When to trigger validation
40
+ - **`showValid`** `boolean` (default: `false`) — Whether to show valid state indicators
41
+
42
+ ### HTML Form Properties
43
+
44
+ - **`action`** `string` — Form action URL (for server submission)
45
+ - **`autoComplete`** `string` — Browser autocomplete behavior
46
+ - **`encType`** `string` — Form encoding type
47
+ - **`method`** `'get' | 'post'` — HTTP method for form submission
48
+ - **`target`** `string` — Target for form submission
49
+
50
+ ### Base Properties
51
+
52
+ Supports [Base properties](../../BaseProperties.md)
53
+
54
+ ### Styling Properties
55
+
56
+ #### styles
57
+
58
+ Customizes the root form element.
59
+
60
+ The Form component does not expose styled sub-elements via the `styles` prop. It uses a simple container layout that can be customized through the main styles property.
61
+
62
+ ### Style Properties
63
+
64
+ These properties allow direct style application without using the `styles` prop: `display`, `flow`, `gap`, `placeItems`, `width`, `height`, `padding`, `margin`.
65
+
66
+ ### Modifiers
67
+
68
+ The `mods` property accepts the following modifiers:
69
+
70
+ - **`has-sider`** `boolean` — Applied when `labelPosition="side"`
71
+ - **`has-split`** `boolean` — Applied when `labelPosition="split"`
72
+ - **`horizontal`** `boolean` — Applied when `orientation="horizontal"`
73
+
74
+ ## Static Methods
75
+
76
+ ### Form.useForm
77
+
78
+ ```jsx
79
+ const [form] = Form.useForm();
80
+ ```
81
+
82
+ Creates a form instance for programmatic control. See [FormInstance documentation](./FormInstance.md) for detailed API.
83
+
84
+ You can also pass options:
85
+
86
+ ```jsx
87
+ const [form] = Form.useForm(undefined, undefined, {
88
+ onSubmit: async (data) => {
89
+ await apiCall(data);
90
+ },
91
+ onValuesChange: (data) => {
92
+ console.log('Changed:', data);
93
+ },
94
+ });
95
+ ```
96
+
97
+ ### Form.Submit (SubmitButton)
98
+
99
+ ```jsx
100
+ <Form.Submit>Submit</Form.Submit>
101
+ ```
102
+
103
+ Specialized button that automatically handles form submission and loading states. When `onSubmit` returns a promise, the button shows a loading spinner until the promise resolves.
104
+
105
+ ### Form.Reset (ResetButton)
106
+
107
+ ```jsx
108
+ <Form.Reset>Reset</Form.Reset>
109
+ ```
110
+
111
+ Button that resets all form fields to their initial values.
112
+
113
+ ### Form.SubmitError
114
+
115
+ ```jsx
116
+ <Form.SubmitError />
117
+ ```
118
+
119
+ Component that displays submission errors returned from the `onSubmit` handler.
120
+
121
+ ### Form.Item (Field) - Deprecated
122
+
123
+ ```jsx
124
+ <Form.Item name="email" label="Email">
125
+ <Input.Text />
126
+ </Form.Item>
127
+ ```
128
+
129
+ **Deprecated**: The Field wrapper is not recommended for regular use. Input components now have built-in field support, so you can pass field properties directly to them.
130
+
131
+ The Field component should only be used when wrapping read-only content or custom components without built-in field support.
132
+
133
+ ## Built-in Field Support
134
+
135
+ **All input components have built-in field support**, meaning you can pass field properties directly to them without needing a wrapper:
136
+
137
+ ```jsx
138
+ // Recommended — direct field properties
139
+ <Input.Text
140
+ name="email"
141
+ label="Email"
142
+ rules={[{ required: true, type: 'email' }]}
143
+ placeholder="Enter your email"
144
+ />
145
+
146
+ // Deprecated — Field wrapper (still works but not recommended)
147
+ <Field name="email" label="Email" rules={[{ required: true, type: 'email' }]}>
148
+ <Input.Text placeholder="Enter your email" />
149
+ </Field>
150
+ ```
151
+
152
+ ### Field Properties for Input Components
153
+
154
+ All input components within a Form accept these field-related properties:
155
+
156
+ - **`name`** `string` — Field name for form data. Supports dot notation for nested objects (e.g. `"user.email"`)
157
+ - **`label`** `ReactNode` — Field label text
158
+ - **`description`** `ReactNode` — Help text displayed below the field
159
+ - **`errorMessage`** `ReactNode` — Error message displayed when validation fails
160
+ - **`rules`** `ValidationRule[]` — Validation rules array (see [Validation Rules](#validation-rules))
161
+ - **`isRequired`** `boolean` — Whether the field is required
162
+ - **`extra`** `ReactNode` — Additional content displayed next to the label
163
+ - **`tooltip`** `ReactNode` — Tooltip content for the field label
164
+ - **`labelSuffix`** `ReactNode` — Content appended after the label
165
+ - **`isHidden`** `boolean` — Hides the field
166
+ - **`validateTrigger`** `'onBlur' | 'onChange' | 'onSubmit'` — When to validate (overrides form-level setting)
167
+
168
+ ## Validation Rules
169
+
170
+ The form uses an async rule-based validation system. Each rule is an object with one or more validators:
171
+
172
+ ### Built-in Validators
173
+
174
+ - **`required`** `boolean` — Field must have a non-empty value
175
+ - **`type`** `string` — Validates data type: `'string'`, `'number'`, `'boolean'`, `'email'`, `'url'`, `'integer'`, `'array'`, `'object'`, `'date'`, `'hex'`, `'regexp'`
176
+ - **`pattern`** `RegExp` — Value must match the regex pattern
177
+ - **`min`** `number` — Minimum length (for strings/arrays) or minimum value (for numbers)
178
+ - **`max`** `number` — Maximum length (for strings/arrays) or maximum value (for numbers)
179
+ - **`len`** `number` — Exact length (for strings/arrays) or exact value (for numbers)
180
+ - **`enum`** `any[]` — Value must be one of the allowed values
181
+ - **`whitespace`** `boolean` — String must not be only whitespace
182
+ - **`validator`** `(rule, value) => Promise<void>` — Custom async validation function. Throw an `Error` to fail validation
183
+ - **`transform`** `(value) => value` — Transform the value before validation
184
+ - **`message`** `string` — Error message displayed when the rule fails
185
+
186
+ ### Rules Example
187
+
188
+ ```jsx
189
+ <Input.Text
190
+ name="email"
191
+ label="Email"
192
+ rules={[
193
+ { required: true, message: 'Email is required' },
194
+ { type: 'email', message: 'Please enter a valid email' },
195
+ ]}
196
+ />
197
+
198
+ <Input.Text
199
+ name="username"
200
+ label="Username"
201
+ rules={[
202
+ { required: true, message: 'Username is required' },
203
+ { min: 3, message: 'Must be at least 3 characters' },
204
+ { max: 20, message: 'Must be at most 20 characters' },
205
+ { pattern: /^[a-zA-Z0-9_]+$/, message: 'Only letters, numbers, and underscores' },
206
+ ]}
207
+ />
208
+
209
+ <Input.Text
210
+ name="invite"
211
+ label="Invite Code"
212
+ rules={[
213
+ {
214
+ async validator(rule, value) {
215
+ const isValid = await checkInviteCode(value);
216
+ if (!isValid) {
217
+ throw new Error('Invalid invite code');
218
+ }
219
+ },
220
+ },
221
+ ]}
222
+ />
223
+ ```
224
+
225
+ Rules can also be functions that receive the form instance, useful for cross-field validation:
226
+
227
+ ```jsx
228
+ <Input.Password
229
+ name="confirmPassword"
230
+ label="Confirm Password"
231
+ rules={[
232
+ (form) => ({
233
+ async validator(rule, value) {
234
+ if (value !== form.getFieldValue('password')) {
235
+ throw new Error('Passwords do not match');
236
+ }
237
+ },
238
+ }),
239
+ ]}
240
+ />
241
+ ```
242
+
243
+ ## Examples
244
+
245
+ ### Basic Form
246
+
247
+ ```jsx
248
+ import { Form, Input, SubmitButton } from '@cube-dev/ui-kit';
249
+
250
+ function BasicForm() {
251
+ function handleSubmit(data) {
252
+ console.log('Submitted:', data);
253
+ }
254
+
255
+ return (
256
+ <Form onSubmit={handleSubmit}>
257
+ <Input.Text
258
+ name="email"
259
+ label="Email"
260
+ type="email"
261
+ rules={[
262
+ { required: true, message: 'Email is required' },
263
+ { type: 'email', message: 'Please enter a valid email' },
264
+ ]}
265
+ placeholder="Enter your email"
266
+ />
267
+
268
+ <Input.Password
269
+ name="password"
270
+ label="Password"
271
+ rules={[
272
+ { required: true, message: 'Password is required' },
273
+ { min: 6, message: 'Password must be at least 6 characters' },
274
+ ]}
275
+ placeholder="Enter your password"
276
+ />
277
+
278
+ <Form.SubmitError />
279
+ <SubmitButton>Submit</SubmitButton>
280
+ </Form>
281
+ );
282
+ }
283
+ ```
284
+
285
+ ### Login Form
286
+
287
+ An example with async submission that shows loading state:
288
+
289
+ ```jsx
290
+ import { Form, Field, SubmitButton, Input, SubmitError } from '@cube-dev/ui-kit';
291
+
292
+ export function LoginForm() {
293
+ async function onSubmit(data) {
294
+ await Auth.login(data); // { email, password }
295
+ }
296
+
297
+ return (
298
+ <Form onSubmit={onSubmit} requiredMark={false}>
299
+ <Input.Text
300
+ name="email"
301
+ label="Email"
302
+ description="Your email"
303
+ type="email"
304
+ autoFocus
305
+ rules={[
306
+ { required: true, message: 'E-mail required' },
307
+ { type: 'email', message: 'Please enter a valid e-mail' },
308
+ ]}
309
+ />
310
+
311
+ <Input.Password
312
+ name="password"
313
+ label="Password"
314
+ rules={[{ required: true, message: 'Password required' }]}
315
+ />
316
+
317
+ <Form.SubmitError />
318
+ <SubmitButton>Submit</SubmitButton>
319
+ </Form>
320
+ );
321
+ }
322
+ ```
323
+
324
+ ### Horizontal Layout
325
+
326
+ ```jsx
327
+ <Form orientation="horizontal" labelPosition="side">
328
+ <Input.Text
329
+ name="email"
330
+ label="Email"
331
+ type="email"
332
+ size="small"
333
+ rules={[{ required: true, type: 'email' }]}
334
+ placeholder="Enter your email"
335
+ />
336
+ <Input.Password
337
+ name="password"
338
+ label="Password"
339
+ size="small"
340
+ rules={[{ required: true }]}
341
+ placeholder="Enter your password"
342
+ />
343
+ <SubmitButton size="small">Submit</SubmitButton>
344
+ </Form>
345
+ ```
346
+
347
+ ### With Default Values
348
+
349
+ ```jsx
350
+ <Form
351
+ defaultValues={{
352
+ email: 'user@example.com',
353
+ name: 'John Doe',
354
+ }}
355
+ onSubmit={handleSubmit}
356
+ >
357
+ <Input.Text name="email" label="Email" type="email" />
358
+ <Input.Text name="name" label="Name" />
359
+ <SubmitButton>Submit</SubmitButton>
360
+ </Form>
361
+ ```
362
+
363
+ ### Form with Validation
364
+
365
+ ### Complex Form with Different Input Types
366
+
367
+ ```jsx
368
+ <Form onSubmit={handleSubmit}>
369
+ <Input.Text
370
+ name="username"
371
+ label="Username"
372
+ rules={[{ required: true, min: 3 }]}
373
+ placeholder="Enter username"
374
+ />
375
+
376
+ <Input.Password
377
+ name="password"
378
+ label="Password"
379
+ rules={[{ required: true, min: 8 }]}
380
+ />
381
+
382
+ <Select
383
+ name="country"
384
+ label="Country"
385
+ rules={[{ required: true }]}
386
+ options={[
387
+ { value: 'us', label: 'United States' },
388
+ { value: 'uk', label: 'United Kingdom' },
389
+ { value: 'ca', label: 'Canada' },
390
+ ]}
391
+ />
392
+
393
+ <Checkbox
394
+ name="agree"
395
+ label="I agree to the terms and conditions"
396
+ rules={[{ required: true, message: 'You must agree to continue' }]}
397
+ />
398
+
399
+ <SubmitButton>Register</SubmitButton>
400
+ </Form>
401
+ ```
402
+
403
+ ### Nested Field Names
404
+
405
+ Use dot notation in field names to create nested data structures:
406
+
407
+ ```jsx
408
+ <Form onSubmit={(data) => console.log(data)}>
409
+ <Input.Text name="user.firstName" label="First Name" />
410
+ <Input.Text name="user.lastName" label="Last Name" />
411
+ <Input.Text name="user.address.city" label="City" />
412
+
413
+ {/* Submits: { user: { firstName: '...', lastName: '...', address: { city: '...' } } } */}
414
+ <SubmitButton>Submit</SubmitButton>
415
+ </Form>
416
+ ```
417
+
418
+ ### Programmatic Form Control
419
+
420
+ ```jsx
421
+ function ControlledForm() {
422
+ const [form] = Form.useForm();
423
+
424
+ const handleReset = () => {
425
+ form.resetFields();
426
+ };
427
+
428
+ const handleFillDemo = () => {
429
+ form.setFieldsValue({
430
+ email: 'demo@example.com',
431
+ name: 'Demo User',
432
+ });
433
+ };
434
+
435
+ return (
436
+ <Form form={form} onSubmit={handleSubmit}>
437
+ <Input.Text name="email" label="Email" type="email" />
438
+ <Input.Text name="name" label="Name" />
439
+
440
+ <Space>
441
+ <SubmitButton>Submit</SubmitButton>
442
+ <Button onPress={handleReset}>Reset</Button>
443
+ <Button onPress={handleFillDemo}>Fill Demo Data</Button>
444
+ </Space>
445
+ </Form>
446
+ );
447
+ }
448
+ ```
449
+
450
+ ### When to Use Field Component
451
+
452
+ The Field component should **only** be used when wrapping read-only content or custom components that don't have built-in field support:
453
+
454
+ ```jsx
455
+ <Form onSubmit={handleSubmit}>
456
+ {/* Regular inputs — use built-in field support */}
457
+ <Input.Text name="name" label="Name" rules={[{ required: true }]} />
458
+
459
+ {/* Read-only content — use Field wrapper */}
460
+ <Field name="readonly" label="Read-only Information">
461
+ <div>This is some read-only content that should look like a field</div>
462
+ </Field>
463
+
464
+ {/* Custom component without field support — use Field wrapper */}
465
+ <Field name="custom" label="Custom Component" rules={[{ required: true }]}>
466
+ <CustomComponent />
467
+ </Field>
468
+ </Form>
469
+ ```
470
+
471
+ ### Dialog Form
472
+
473
+ It's possible to create forms inside dialogs. The `DialogForm` contains all props of `Form` and `Dialog` components. When `onSubmit` returns a promise, the dialog stays open with a loading state until the promise resolves.
474
+
475
+ ```jsx
476
+ import {
477
+ DialogForm,
478
+ Field,
479
+ Paragraph,
480
+ Input,
481
+ Text,
482
+ } from '@cube-dev/ui-kit';
483
+
484
+ export function ConfirmDeletionDialogForm({ name, onSubmit, onDismiss }) {
485
+ return (
486
+ <DialogForm
487
+ title="Delete Deployment"
488
+ onSubmit={onSubmit}
489
+ onDismiss={onDismiss}
490
+ submitProps={{
491
+ label: 'Delete',
492
+ theme: 'danger',
493
+ }}
494
+ cancelProps={{
495
+ label: 'I changed my mind',
496
+ }}
497
+ >
498
+ <Paragraph>
499
+ To delete the instance, please enter its full name:{' '}
500
+ <Text.Strong>{name}</Text.Strong>
501
+ </Paragraph>
502
+
503
+ <Input.Text
504
+ name="name"
505
+ rules={[
506
+ { required: true, message: 'This field is required' },
507
+ {
508
+ async validator(rule, value) {
509
+ if (value !== name) {
510
+ throw new Error('Incorrect name');
511
+ }
512
+ },
513
+ },
514
+ ]}
515
+ placeholder="Enter the name of the instance"
516
+ />
517
+ </DialogForm>
518
+ );
519
+ }
520
+ ```
521
+
522
+ ## Known Differences with AntD Forms
523
+
524
+ - `onSubmit` instead of `onSuccess`
525
+ - `onSubmitFailed` instead of `onFailed`
526
+ - `defaultValues` instead of `initialValues`
527
+ - `onSubmit` can return a promise — the form and submit button show loading state until the promise resolves
528
+ - Arrays inside form data are not supported
529
+ - `preserve` property is not yet implemented
530
+ - The `Field` component is a virtual wrapper (does not render a DOM element)
531
+ - Nested properties are handled via field names with `.` dot notation
532
+ - Does not support `validating` state (but validation rules can be async)
533
+
534
+ ## Accessibility
535
+
536
+ ### Keyboard Navigation
537
+
538
+ - `Tab` - Moves focus through form fields in sequence
539
+ - `Shift + Tab` - Moves focus backwards through form fields
540
+ - `Enter` - Submits the form when focus is on a submit button
541
+ - Form fields inherit their specific keyboard navigation patterns
542
+
543
+ ### Screen Reader Support
544
+
545
+ - Form is announced as "form" to screen readers
546
+ - Field labels are properly associated with their inputs
547
+ - Validation errors are announced when they appear
548
+ - Required fields are indicated to screen readers
549
+ - Form submission status is communicated
550
+
551
+ ### ARIA Properties
552
+
553
+ - Form uses proper semantic HTML (`<form>` element)
554
+ - Fields are associated with labels via `htmlFor` and `id` attributes
555
+ - Validation errors use `aria-describedby` to associate with fields
556
+ - Required fields use `aria-required` attribute
557
+ - Form submission state is indicated via loading states
558
+
559
+ ## Best Practices
560
+
561
+ 1. **Use direct field properties**: Pass field properties directly to input components instead of using Field wrapper
562
+ ```jsx
563
+ // Recommended
564
+ <Input.Text name="email" label="Email" type="email" rules={[{ required: true }]} />
565
+
566
+ // Deprecated
567
+ <Field name="email" label="Email" rules={[{ required: true }]}>
568
+ <Input.Text type="email" />
569
+ </Field>
570
+ ```
571
+
572
+ 2. **Provide clear labels**: Always include descriptive labels for form fields
573
+ ```jsx
574
+ <Input.Text name="email" label="Email Address" type="email" />
575
+ ```
576
+
577
+ 3. **Use appropriate validation**: Combine built-in validators for common cases and custom validators for complex logic
578
+ ```jsx
579
+ <Input.Text
580
+ name="email"
581
+ label="Email"
582
+ type="email"
583
+ rules={[
584
+ { required: true, message: 'Email is required' },
585
+ { type: 'email', message: 'Please enter a valid email' },
586
+ ]}
587
+ />
588
+ ```
589
+
590
+ 4. **Handle errors gracefully**: Always provide feedback for validation and submission errors
591
+ ```jsx
592
+ <Form onSubmit={handleSubmit} onSubmitFailed={handleError}>
593
+ {/* fields */}
594
+ <Form.SubmitError />
595
+ </Form>
596
+ ```
597
+
598
+ 5. **Use proper field types**: Choose appropriate input types for better UX and validation
599
+ ```jsx
600
+ <Input.Text type="email" /> {/* for email addresses */}
601
+ <Input.Password /> {/* for passwords */}
602
+ <Input.Number /> {/* for numeric input */}
603
+ ```
604
+
605
+ 6. **Group related fields**: Use logical grouping and layout for complex forms
606
+ ```jsx
607
+ <Form orientation="horizontal"> {/* for compact forms */}
608
+ <Form labelPosition="side"> {/* for wide layouts */}
609
+ ```
610
+
611
+ ## Integration with Input Components
612
+
613
+ All input components automatically register with the parent Form and inherit form-level properties:
614
+
615
+ - Validation triggers (`validateTrigger`)
616
+ - Label positioning (`labelPosition`)
617
+ - Required indicators (`requiredMark`)
618
+ - Read-only state (`isReadOnly`)
619
+ - Disabled state (`isDisabled`)
620
+
621
+ Field properties can be passed directly to any input component:
622
+
623
+ ```jsx
624
+ <Form>
625
+ <Input.Text name="text" label="Text Input" />
626
+ <Input.Password name="password" label="Password" />
627
+ <Select name="select" label="Select" options={[]} />
628
+ <Checkbox name="checkbox" label="Checkbox" />
629
+ <RadioGroup name="radio" label="Radio Group" options={[]} />
630
+ <DatePicker name="date" label="Date Picker" />
631
+ <Slider name="slider" label="Slider" />
632
+ <Switch name="switch" label="Switch" />
633
+ </Form>
634
+ ```
635
+
636
+ ## Related Components
637
+
638
+ - [FormInstance](./FormInstance.md) - Programmatic form control API
639
+ - [Field](./Field.md) - Field wrapper (deprecated for regular use)
640
+ - [Input.Text](../fields/TextInput.md) - Text input field
641
+ - [Input.Password](../fields/PasswordInput.md) - Password input field
642
+ - [Select](../fields/Select.md) - Dropdown selection field
643
+ - [Checkbox](../fields/Checkbox.md) - Checkbox input field
644
+ - [DialogForm](../overlays/DialogForm.md) - Form within a dialog