@cube-dev/ui-kit 0.147.3 → 0.148.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 (557) hide show
  1. package/dist/CHANGELOG.md +16 -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.js +1 -1
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  24. package/dist/components/actions/CommandMenu/styled.js +1 -1
  25. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  28. package/dist/components/actions/Link/Link.js +1 -1
  29. package/dist/components/actions/Menu/Menu.js +1 -1
  30. package/dist/components/actions/Menu/MenuItem.js +1 -1
  31. package/dist/components/actions/Menu/MenuSection.js +1 -1
  32. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  35. package/dist/components/actions/Menu/context.js +1 -1
  36. package/dist/components/actions/Menu/styled.js +1 -1
  37. package/dist/components/actions/index.js +1 -1
  38. package/dist/components/actions/use-action.js +1 -1
  39. package/dist/components/actions/use-anchored-menu.js +1 -1
  40. package/dist/components/actions/use-context-menu.js +1 -1
  41. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  42. package/dist/components/content/Alert/Alert.js +1 -1
  43. package/dist/components/content/Alert/use-alert.js +1 -1
  44. package/dist/components/content/Avatar/Avatar.js +1 -1
  45. package/dist/components/content/Badge/Badge.js +1 -1
  46. package/dist/components/content/Card/Card.js +1 -1
  47. package/dist/components/content/Content.js +1 -1
  48. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  49. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  50. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  51. package/dist/components/content/Divider.js +1 -1
  52. package/dist/components/content/Footer.js +1 -1
  53. package/dist/components/content/Header.js +1 -1
  54. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  55. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  56. package/dist/components/content/Item/Item.js +1 -1
  57. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  58. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  59. package/dist/components/content/Layout/GridLayout.js +1 -1
  60. package/dist/components/content/Layout/Layout.js +1 -1
  61. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  62. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  63. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  64. package/dist/components/content/Layout/LayoutContent.js +1 -1
  65. package/dist/components/content/Layout/LayoutContext.js +1 -1
  66. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  67. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  68. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  69. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  70. package/dist/components/content/Layout/LayoutPane.js +1 -1
  71. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  72. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  74. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  75. package/dist/components/content/Layout/index.js +1 -1
  76. package/dist/components/content/Layout/utils.js +1 -1
  77. package/dist/components/content/Paragraph.js +1 -1
  78. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  79. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  80. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  81. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  82. package/dist/components/content/Result/Result.js +1 -1
  83. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  84. package/dist/components/content/Tag/Tag.js +1 -1
  85. package/dist/components/content/Text.js +1 -1
  86. package/dist/components/content/TextItem/TextItem.js +1 -1
  87. package/dist/components/content/Title.js +1 -1
  88. package/dist/components/content/Tree/Tree.js +1 -1
  89. package/dist/components/content/Tree/TreeNode.js +1 -1
  90. package/dist/components/content/Tree/styled.js +1 -1
  91. package/dist/components/content/Tree/tree-index.js +1 -1
  92. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  93. package/dist/components/content/Tree/use-load-data.js +1 -1
  94. package/dist/components/content/highlightText.js +1 -1
  95. package/dist/components/content/use-auto-tooltip.js +1 -1
  96. package/dist/components/fields/Checkbox/Checkbox.js +17 -17
  97. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  98. package/dist/components/fields/Checkbox/CheckboxGroup.js +5 -8
  99. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  100. package/dist/components/fields/Checkbox/context.js +1 -1
  101. package/dist/components/fields/ComboBox/ComboBox.d.ts +0 -2
  102. package/dist/components/fields/ComboBox/ComboBox.js +26 -23
  103. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  104. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -5
  105. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  106. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  107. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  108. package/dist/components/fields/DatePicker/DateInput.d.ts +1 -2
  109. package/dist/components/fields/DatePicker/DateInput.js +4 -7
  110. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  111. package/dist/components/fields/DatePicker/DateInputBase.js +21 -14
  112. package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
  113. package/dist/components/fields/DatePicker/DatePicker.d.ts +1 -2
  114. package/dist/components/fields/DatePicker/DatePicker.js +4 -7
  115. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  116. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  117. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  118. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  119. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  120. package/dist/components/fields/DatePicker/DateRangePicker.d.ts +1 -2
  121. package/dist/components/fields/DatePicker/DateRangePicker.js +4 -7
  122. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  123. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +1 -2
  124. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +6 -8
  125. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  126. package/dist/components/fields/DatePicker/TimeInput.d.ts +1 -2
  127. package/dist/components/fields/DatePicker/TimeInput.js +4 -7
  128. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  129. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  130. package/dist/components/fields/DatePicker/props.js +1 -1
  131. package/dist/components/fields/DatePicker/utils.js +1 -1
  132. package/dist/components/fields/FileInput/FileInput.js +26 -7
  133. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  134. package/dist/components/fields/FilterListBox/FilterListBox.js +11 -11
  135. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  136. package/dist/components/fields/FilterPicker/FilterPicker.js +20 -10
  137. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  138. package/dist/components/fields/Input/Input.js +1 -1
  139. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  140. package/dist/components/fields/ListBox/ListBox.js +35 -27
  141. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  142. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  143. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  144. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  145. package/dist/components/fields/NumberInput/NumberInput.js +1 -3
  146. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  147. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  148. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -3
  149. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  150. package/dist/components/fields/Picker/Picker.js +20 -10
  151. package/dist/components/fields/Picker/Picker.js.map +1 -1
  152. package/dist/components/fields/RadioGroup/Radio.d.ts +0 -1
  153. package/dist/components/fields/RadioGroup/Radio.js +14 -8
  154. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  155. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +0 -1
  156. package/dist/components/fields/RadioGroup/RadioGroup.js +4 -7
  157. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  158. package/dist/components/fields/RadioGroup/context.js +1 -1
  159. package/dist/components/fields/SearchComboBox/SearchComboBox.d.ts +0 -2
  160. package/dist/components/fields/SearchComboBox/SearchComboBox.js +21 -12
  161. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  162. package/dist/components/fields/SearchInput/SearchInput.d.ts +1 -1
  163. package/dist/components/fields/SearchInput/SearchInput.js +11 -4
  164. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  165. package/dist/components/fields/Select/Select.js +22 -22
  166. package/dist/components/fields/Select/Select.js.map +1 -1
  167. package/dist/components/fields/Slider/Gradation.js +1 -1
  168. package/dist/components/fields/Slider/HueSlider.js +1 -1
  169. package/dist/components/fields/Slider/RangeSlider.js +10 -4
  170. package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
  171. package/dist/components/fields/Slider/Slider.js +6 -2
  172. package/dist/components/fields/Slider/Slider.js.map +1 -1
  173. package/dist/components/fields/Slider/SliderBase.js +18 -8
  174. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  175. package/dist/components/fields/Slider/SliderThumb.js +11 -4
  176. package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
  177. package/dist/components/fields/Slider/SliderTrack.js +15 -4
  178. package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
  179. package/dist/components/fields/Slider/elements.js +5 -1
  180. package/dist/components/fields/Slider/elements.js.map +1 -1
  181. package/dist/components/fields/Slider/index.js +1 -1
  182. package/dist/components/fields/Switch/Switch.js +11 -9
  183. package/dist/components/fields/Switch/Switch.js.map +1 -1
  184. package/dist/components/fields/TextArea/TextArea.js +1 -3
  185. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  186. package/dist/components/fields/TextInput/TextInput.js +1 -3
  187. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  188. package/dist/components/fields/TextInput/TextInputBase.js +29 -33
  189. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  190. package/dist/components/fields/TextInputMapper/TextInputMapper.d.ts +2 -0
  191. package/dist/components/fields/TextInputMapper/TextInputMapper.js +13 -5
  192. package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
  193. package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +29 -2
  194. package/dist/components/form/FieldWrapper/FieldWrapper.js +11 -7
  195. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  196. package/dist/components/form/FieldWrapper/index.d.ts +1 -2
  197. package/dist/components/form/FieldWrapper/types.d.ts +2 -3
  198. package/dist/components/form/Form/Field.js +8 -5
  199. package/dist/components/form/Form/Field.js.map +1 -1
  200. package/dist/components/form/Form/Form.js +6 -4
  201. package/dist/components/form/Form/Form.js.map +1 -1
  202. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  203. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  204. package/dist/components/form/Form/SubmitError.js +1 -1
  205. package/dist/components/form/Form/index.js +1 -1
  206. package/dist/components/form/Form/use-field/types.d.ts +7 -5
  207. package/dist/components/form/Form/use-field/use-field-props.js +7 -1
  208. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  209. package/dist/components/form/Form/use-field/use-field.js +8 -6
  210. package/dist/components/form/Form/use-field/use-field.js.map +1 -1
  211. package/dist/components/form/Form/use-form.js +1 -1
  212. package/dist/components/form/Form/validation.js +1 -1
  213. package/dist/components/form/Label.d.ts +2 -3
  214. package/dist/components/form/Label.js +7 -4
  215. package/dist/components/form/Label.js.map +1 -1
  216. package/dist/components/form/index.d.ts +6 -3
  217. package/dist/components/form/validation/ValidationIndicator.d.ts +28 -0
  218. package/dist/components/form/validation/ValidationIndicator.js +37 -0
  219. package/dist/components/form/validation/ValidationIndicator.js.map +1 -0
  220. package/dist/components/form/validation/index.d.ts +4 -0
  221. package/dist/components/form/validation/resolve-validation-props.d.ts +51 -0
  222. package/dist/components/form/validation/resolve-validation-props.js +49 -0
  223. package/dist/components/form/validation/resolve-validation-props.js.map +1 -0
  224. package/dist/components/form/validation/use-validation-props.d.ts +16 -0
  225. package/dist/components/form/validation/use-validation-props.js +29 -0
  226. package/dist/components/form/validation/use-validation-props.js.map +1 -0
  227. package/dist/components/form/wrapper.d.ts +5 -1
  228. package/dist/components/form/wrapper.js +8 -3
  229. package/dist/components/form/wrapper.js.map +1 -1
  230. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  231. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  232. package/dist/components/layout/Board/Board.js +1 -1
  233. package/dist/components/layout/Board/BoardProvider.js +1 -1
  234. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  235. package/dist/components/layout/Board/Widget.js +1 -1
  236. package/dist/components/layout/Board/WidgetHost.js +1 -1
  237. package/dist/components/layout/Board/board-context.js +1 -1
  238. package/dist/components/layout/Board/board-store.js +1 -1
  239. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  240. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  241. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  242. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  243. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  244. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  245. package/dist/components/layout/Board/index.js +1 -1
  246. package/dist/components/layout/Board/responsive-utils.js +1 -1
  247. package/dist/components/layout/Board/use-board-layout.js +1 -1
  248. package/dist/components/layout/Board/use-board-registry.js +1 -1
  249. package/dist/components/layout/Flex.js +1 -1
  250. package/dist/components/layout/Flow.js +1 -1
  251. package/dist/components/layout/Grid.js +1 -1
  252. package/dist/components/layout/Panel.js +1 -1
  253. package/dist/components/layout/Prefix.js +1 -1
  254. package/dist/components/layout/ResizablePanel.js +1 -1
  255. package/dist/components/layout/Space.js +1 -1
  256. package/dist/components/layout/Suffix.js +1 -1
  257. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  258. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  259. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  260. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  261. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  262. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  263. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  264. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  265. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  266. package/dist/components/navigation/Tabs/styled.js +1 -1
  267. package/dist/components/navigation/Tabs/types.js +1 -1
  268. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  269. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  270. package/dist/components/organisms/FileTabs/FileTabs.js +1 -1
  271. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  272. package/dist/components/other/Calendar/Calendar.js +1 -1
  273. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  274. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  275. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  276. package/dist/components/other/CloudLogo/CloudLogo.js +1 -1
  277. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  278. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  279. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  280. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  281. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  282. package/dist/components/overlays/Dialog/DialogForm.js +4 -3
  283. package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
  284. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  285. package/dist/components/overlays/Dialog/context.js +1 -1
  286. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  287. package/dist/components/overlays/Modal/Modal.js +1 -1
  288. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  289. package/dist/components/overlays/Modal/Overlay.js +1 -1
  290. package/dist/components/overlays/Modal/Popover.js +1 -1
  291. package/dist/components/overlays/Modal/Tray.js +1 -1
  292. package/dist/components/overlays/Modal/Underlay.js +1 -1
  293. package/dist/components/overlays/Notifications/Notification.js +1 -1
  294. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  295. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  296. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  297. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  298. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  299. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  300. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  301. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  302. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  303. package/dist/components/overlays/Notifications/index.js +1 -1
  304. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  305. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  306. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  307. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  308. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  309. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  310. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  311. package/dist/components/overlays/Toast/index.js +1 -1
  312. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  313. package/dist/components/overlays/Toast/useToast.js +1 -1
  314. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  315. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  316. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  317. package/dist/components/overlays/Tooltip/context.js +1 -1
  318. package/dist/components/portal/Portal.js +1 -1
  319. package/dist/components/portal/PortalProvider.js +1 -1
  320. package/dist/components/portal/usePortal.js +1 -1
  321. package/dist/components/shared/DraggableCollection.js +1 -1
  322. package/dist/components/shared/InvalidIcon.js +1 -1
  323. package/dist/components/shared/ValidIcon.js +1 -1
  324. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  325. package/dist/components/status/Spin/Cube.js +1 -1
  326. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  327. package/dist/components/status/Spin/Spin.js +1 -1
  328. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  329. package/dist/data/item-themes.js +1 -1
  330. package/dist/data/themes.js +1 -1
  331. package/dist/i18n/I18nProvider.js +1 -1
  332. package/dist/i18n/createFormatter.js +1 -1
  333. package/dist/i18n/index.js +1 -1
  334. package/dist/i18n/instance.js +1 -1
  335. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  336. package/dist/i18n/locales/en-US/uikit.js +1 -1
  337. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  338. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  339. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  340. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  341. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  342. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  343. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  344. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  345. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  346. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  347. package/dist/i18n/locales.js +1 -1
  348. package/dist/i18n/useFormatter.js +1 -1
  349. package/dist/i18n/useI18n.js +1 -1
  350. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  351. package/dist/icons/AdjustmentsIcon.js +1 -1
  352. package/dist/icons/AiIcon.js +1 -1
  353. package/dist/icons/AreaChartIcon.js +1 -1
  354. package/dist/icons/BackwardIcon.js +1 -1
  355. package/dist/icons/BarChartIcon.js +1 -1
  356. package/dist/icons/BellFilledIcon.js +1 -1
  357. package/dist/icons/BellIcon.js +1 -1
  358. package/dist/icons/BooleanIcon.js +1 -1
  359. package/dist/icons/CalendarEditIcon.js +1 -1
  360. package/dist/icons/CalendarIcon.js +1 -1
  361. package/dist/icons/CaretDownIcon.js +1 -1
  362. package/dist/icons/CaretUpIcon.js +1 -1
  363. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  364. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  365. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  366. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  367. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  368. package/dist/icons/ChartBarLineIcon.js +1 -1
  369. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  370. package/dist/icons/ChartBarStackedIcon.js +1 -1
  371. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  372. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  373. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  374. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  375. package/dist/icons/ChartBubbleIcon.js +1 -1
  376. package/dist/icons/ChartDonut2Icon.js +1 -1
  377. package/dist/icons/ChartFunnelIcon.js +1 -1
  378. package/dist/icons/ChartHeatmapIcon.js +1 -1
  379. package/dist/icons/ChartKPIIcon.js +1 -1
  380. package/dist/icons/ChartPie2Icon.js +1 -1
  381. package/dist/icons/ChartScatterIcon.js +1 -1
  382. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  383. package/dist/icons/CheckCircleIcon.js +1 -1
  384. package/dist/icons/CheckIcon.js +1 -1
  385. package/dist/icons/CircleFilledIcon.js +1 -1
  386. package/dist/icons/ClearIcon.js +1 -1
  387. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  388. package/dist/icons/CloseCircleIcon.js +1 -1
  389. package/dist/icons/CloseIcon.js +1 -1
  390. package/dist/icons/CodeIcon.js +1 -1
  391. package/dist/icons/ColumnTotalIcon.js +1 -1
  392. package/dist/icons/CopyIcon.js +1 -1
  393. package/dist/icons/CountIcon.js +1 -1
  394. package/dist/icons/CubeIcon.js +1 -1
  395. package/dist/icons/CubePauseIcon.js +1 -1
  396. package/dist/icons/CubePlayIcon.js +1 -1
  397. package/dist/icons/CurrencyDollarIcon.js +1 -1
  398. package/dist/icons/DangerIcon.js +1 -1
  399. package/dist/icons/DashboardIcon.js +1 -1
  400. package/dist/icons/DatabaseIcon.js +1 -1
  401. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  402. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  403. package/dist/icons/DirectionIcon.js +1 -1
  404. package/dist/icons/DonutIcon.js +1 -1
  405. package/dist/icons/DownIcon.js +1 -1
  406. package/dist/icons/EditIcon.js +1 -1
  407. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  408. package/dist/icons/ExclamationCircleIcon.js +1 -1
  409. package/dist/icons/ExclamationIcon.js +1 -1
  410. package/dist/icons/EyeIcon.js +1 -1
  411. package/dist/icons/EyeInvisibleIcon.js +1 -1
  412. package/dist/icons/FilterIcon.js +1 -1
  413. package/dist/icons/FolderFilledIcon.js +1 -1
  414. package/dist/icons/FolderIcon.js +1 -1
  415. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  416. package/dist/icons/FolderOpenIcon.js +1 -1
  417. package/dist/icons/ForwardIcon.js +1 -1
  418. package/dist/icons/GripVerticalIcon.js +1 -1
  419. package/dist/icons/HierarchyIcon.js +1 -1
  420. package/dist/icons/HierarchyOpenIcon.js +1 -1
  421. package/dist/icons/Icon.js +1 -1
  422. package/dist/icons/InfoCircleIcon.js +1 -1
  423. package/dist/icons/InfoIcon.js +1 -1
  424. package/dist/icons/KeyIcon.js +1 -1
  425. package/dist/icons/LeftIcon.js +1 -1
  426. package/dist/icons/LineChartIcon.js +1 -1
  427. package/dist/icons/LoadingIcon.js +1 -1
  428. package/dist/icons/LockFilledIcon.js +1 -1
  429. package/dist/icons/LockIcon.js +1 -1
  430. package/dist/icons/MoreIcon.js +1 -1
  431. package/dist/icons/NotAllowedIcon.js +1 -1
  432. package/dist/icons/Number123Icon.js +1 -1
  433. package/dist/icons/NumberIcon.js +1 -1
  434. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  435. package/dist/icons/PauseCircleIcon.js +1 -1
  436. package/dist/icons/PauseIcon.js +1 -1
  437. package/dist/icons/PercentageIcon.js +1 -1
  438. package/dist/icons/PieChartIcon.js +1 -1
  439. package/dist/icons/PlayCircleIcon.js +1 -1
  440. package/dist/icons/PlayIcon.js +1 -1
  441. package/dist/icons/PlusIcon.js +1 -1
  442. package/dist/icons/ProgressBarIcon.js +1 -1
  443. package/dist/icons/ReloadIcon.js +1 -1
  444. package/dist/icons/ReportIcon.js +1 -1
  445. package/dist/icons/ReturnIcon.js +1 -1
  446. package/dist/icons/RightIcon.js +1 -1
  447. package/dist/icons/RowTotalsIcon.js +1 -1
  448. package/dist/icons/SchemeIcon.js +1 -1
  449. package/dist/icons/SearchIcon.js +1 -1
  450. package/dist/icons/SemanticQueryIcon.js +1 -1
  451. package/dist/icons/SettingsIcon.js +1 -1
  452. package/dist/icons/ShieldFilledIcon.js +1 -1
  453. package/dist/icons/ShieldIcon.js +1 -1
  454. package/dist/icons/SlashIcon.js +1 -1
  455. package/dist/icons/SparklesIcon.js +1 -1
  456. package/dist/icons/SqlIcon.js +1 -1
  457. package/dist/icons/StatsIcon.js +1 -1
  458. package/dist/icons/StopIcon.js +1 -1
  459. package/dist/icons/StringIcon.js +1 -1
  460. package/dist/icons/SubtotalsIcon.js +1 -1
  461. package/dist/icons/SwitchIcon.js +1 -1
  462. package/dist/icons/TableIcon.js +1 -1
  463. package/dist/icons/ThumbsDownIcon.js +1 -1
  464. package/dist/icons/ThumbsUpIcon.js +1 -1
  465. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  466. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  467. package/dist/icons/ThunderboltIcon.js +1 -1
  468. package/dist/icons/TimeIcon.js +1 -1
  469. package/dist/icons/TrashIcon.js +1 -1
  470. package/dist/icons/UnlockIcon.js +1 -1
  471. package/dist/icons/UpIcon.js +1 -1
  472. package/dist/icons/UserGroupIcon.js +1 -1
  473. package/dist/icons/UserIcon.js +1 -1
  474. package/dist/icons/UserLockIcon.js +1 -1
  475. package/dist/icons/ViewIcon.js +1 -1
  476. package/dist/icons/WarningFilledIcon.js +1 -1
  477. package/dist/icons/WarningIcon.js +1 -1
  478. package/dist/icons/wrap-icon.js +1 -1
  479. package/dist/index.d.ts +6 -4
  480. package/dist/index.js +5 -3
  481. package/dist/index.js.map +1 -1
  482. package/dist/provider.d.ts +2 -1
  483. package/dist/provider.js +6 -4
  484. package/dist/provider.js.map +1 -1
  485. package/dist/providers/TrackingProvider.js +1 -1
  486. package/dist/providers/navigationAdapter.default.js +1 -1
  487. package/dist/shared/form.d.ts +17 -4
  488. package/dist/shared/index.d.ts +1 -1
  489. package/dist/tokens/base.js +1 -1
  490. package/dist/tokens/colors.js +1 -1
  491. package/dist/tokens/index.js +1 -1
  492. package/dist/tokens/layout.js +1 -1
  493. package/dist/tokens/palette.js +1 -1
  494. package/dist/tokens/shadows.js +1 -1
  495. package/dist/tokens/sizes.js +1 -1
  496. package/dist/tokens/spacing.js +1 -1
  497. package/dist/tokens/typography.js +1 -1
  498. package/dist/utils/ResizeSensor.js +1 -1
  499. package/dist/utils/is-dev-env.js +1 -1
  500. package/dist/utils/modules.js +1 -1
  501. package/dist/utils/promise.js +1 -1
  502. package/dist/utils/raf.js +1 -1
  503. package/dist/utils/random.js +1 -1
  504. package/dist/utils/range.js +1 -1
  505. package/dist/utils/react/RenderCache.js +1 -1
  506. package/dist/utils/react/Slots.js +1 -1
  507. package/dist/utils/react/chain.js +1 -1
  508. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  509. package/dist/utils/react/index.js +1 -1
  510. package/dist/utils/react/interactions.js +1 -1
  511. package/dist/utils/react/isTextOnly.js +1 -1
  512. package/dist/utils/react/mapProps.js +1 -1
  513. package/dist/utils/react/mergeProps.js +1 -1
  514. package/dist/utils/react/nullableValue.js +1 -1
  515. package/dist/utils/react/resolveIcon.js +1 -1
  516. package/dist/utils/react/sharedStore.js +1 -1
  517. package/dist/utils/react/useCombinedRefs.js +1 -1
  518. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  519. package/dist/utils/react/useEventBus.js +1 -1
  520. package/dist/utils/react/useId.js +1 -1
  521. package/dist/utils/react/useIsDarwin.js +1 -1
  522. package/dist/utils/react/useKeySymbols.js +1 -1
  523. package/dist/utils/react/useLayoutEffect.js +1 -1
  524. package/dist/utils/react/useLocalStorage.js +1 -1
  525. package/dist/utils/react/useMergeStyles.js +1 -1
  526. package/dist/utils/react/usePopoverSync.js +1 -1
  527. package/dist/utils/react/useQaProps.js +1 -1
  528. package/dist/utils/react/useViewportSize.js +1 -1
  529. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  530. package/dist/utils/selection.js +1 -1
  531. package/dist/utils/styles.js +1 -1
  532. package/dist/utils/tree.js +1 -1
  533. package/dist/utils/warnings.js +1 -1
  534. package/dist/version.js +2 -2
  535. package/docs/FieldProperties.md +4 -2
  536. package/docs/Introduction.md +1 -1
  537. package/docs/components/fields/Checkbox.md +1 -1
  538. package/docs/components/fields/CommandTextArea.md +1 -1
  539. package/docs/components/fields/DatePicker.md +1 -1
  540. package/docs/components/fields/FileInput.md +3 -1
  541. package/docs/components/fields/FilterListBox.md +2 -2
  542. package/docs/components/fields/ListBox.md +2 -2
  543. package/docs/components/fields/NumberInput.md +3 -3
  544. package/docs/components/fields/PasswordInput.md +3 -2
  545. package/docs/components/fields/Picker.md +5 -5
  546. package/docs/components/fields/SearchInput.md +5 -4
  547. package/docs/components/fields/Select.md +3 -3
  548. package/docs/components/fields/Slider.md +4 -0
  549. package/docs/components/fields/TextInput.md +3 -3
  550. package/docs/components/fields/TextInputMapper.md +5 -0
  551. package/docs/components/form/Field.md +10 -9
  552. package/docs/components/form/Form.md +3 -1
  553. package/docs/components/overlays/DialogForm.md +3 -1
  554. package/package.json +1 -1
  555. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.d.ts +0 -12
  556. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js +0 -41
  557. package/dist/components/form/FieldWrapper/extract-field-wrapper-props.js.map +0 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { CONTAINER_STYLES, filterBaseProps, keyframes, tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { RendererPrism, ensureYamlSqlExtensions } from "./prismSetup.js";
3
3
  import { CONTAINER_STYLES, tasty } from "@tenphi/tasty";
4
4
  import { forwardRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { Prism as RendererPrism } from "prism-react-renderer";
3
3
 
4
4
  //#region src/components/content/PrismCode/prismSetup.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { _PrismCode } from "../PrismCode/PrismCode.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { diffLines } from "diff";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps } from "../../../utils/react/mergeProps.js";
4
4
  import { wrapNodeIfPlain } from "../../../utils/react/wrapNodeIfPlain.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { Space } from "../../layout/Space.js";
3
3
  import { Grid } from "../../layout/Grid.js";
4
4
  import { Flow } from "../../layout/Flow.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { _Item } from "../Item/Item.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { CloseIcon } from "../../../icons/CloseIcon.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useSlotProps } from "../../utils/react/Slots.js";
4
4
  import { BASE_STYLES, COLOR_STYLES, TEXT_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { TEXT_PROP_MAP, _Text } from "../Text.js";
4
4
  import { highlightText } from "../highlightText.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useSlotProps } from "../../utils/react/Slots.js";
4
4
  import { TEXT_PROP_MAP } from "./Text.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { _Item } from "../Item/Item.js";
3
3
  import { Action } from "../../actions/Action/Action.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  //#region src/components/content/Tree/tree-index.ts
3
3
  function buildTreeIndex(treeData) {
4
4
  const byKey = /* @__PURE__ */ new Map();
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useMemo, useState } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useRef, useState } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { _Text } from "./Text.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { TooltipProvider } from "../overlays/Tooltip/TooltipProvider.js";
3
3
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,12 +1,11 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { _Text } from "../../content/Text.js";
5
5
  import { useFocus as useFocus$1 } from "../../../utils/react/interactions.js";
6
6
  import { Icon } from "../../../icons/Icon.js";
7
- import { useProviderProps } from "../../../provider.js";
7
+ import { getValidationMods, resolveValidationProps } from "../../form/validation/resolve-validation-props.js";
8
8
  import { INLINE_LABEL_STYLES, LABEL_STYLES } from "../../form/Label.js";
9
- import { useFormProps } from "../../form/Form/Form.js";
10
9
  import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
11
10
  import { wrapWithField } from "../../form/wrapper.js";
12
11
  import { castNullableIsSelected } from "../../../utils/react/nullableValue.js";
@@ -49,6 +48,8 @@ const CheckboxElement = tasty({
49
48
  "checked | indeterminate": "#primary",
50
49
  "invalid & !checked": "#surface",
51
50
  "invalid & checked": "#danger",
51
+ "valid & !checked": "#surface",
52
+ "valid & checked": "#success",
52
53
  disabled: "#dark.12"
53
54
  },
54
55
  color: {
@@ -58,7 +59,8 @@ const CheckboxElement = tasty({
58
59
  border: {
59
60
  "": "#dark.30",
60
61
  invalid: "#danger",
61
- "disabled | ((indeterminate | checked) & !invalid)": "#clear"
62
+ valid: "#success",
63
+ "disabled | ((indeterminate | checked) & !invalid & !valid)": "#clear"
62
64
  },
63
65
  width: "(2x - 2bw)",
64
66
  height: "(2x - 2bw)",
@@ -74,8 +76,6 @@ function Checkbox(props, ref) {
74
76
  let groupState = useContext(CheckboxGroupContext);
75
77
  props = castNullableIsSelected(props);
76
78
  let originalProps = props;
77
- props = useProviderProps(props);
78
- props = useFormProps(props);
79
79
  props = useFieldProps(props, {
80
80
  defaultValidationTrigger: "onChange",
81
81
  valuePropsMapper: ({ value, onChange }) => ({
@@ -85,7 +85,7 @@ function Checkbox(props, ref) {
85
85
  }),
86
86
  unsafe__isDisabled: !!groupState
87
87
  });
88
- let { qa, isIndeterminate = false, isDisabled = false, insideForm, isRequired, children, label, validationState, labelProps, labelStyles, labelPosition, inputStyles, isHidden, form, ...otherProps } = props;
88
+ let { qa, isIndeterminate = false, isDisabled = false, insideForm, isRequired, children, label, isInvalid, isValid, labelProps, labelStyles, labelPosition, inputStyles, isHidden, form, ...otherProps } = props;
89
89
  let styles = extractStyles(props, CONTAINER_STYLES);
90
90
  labelStyles = useMemo(() => ({
91
91
  ...!groupState ? LABEL_STYLES : INLINE_LABEL_STYLES,
@@ -100,7 +100,7 @@ function Checkbox(props, ref) {
100
100
  ...props,
101
101
  value: props.value || "",
102
102
  isRequired: originalProps.isRequired,
103
- validationState: originalProps.validationState
103
+ isInvalid: resolveValidationProps(originalProps).isInvalid
104
104
  }, groupState, inputRef) : useCheckbox({
105
105
  ...props,
106
106
  ...typeof label === "string" && label.trim() ? { "aria-label": label } : {}
@@ -125,8 +125,10 @@ function Checkbox(props, ref) {
125
125
  const mods = {
126
126
  checked: inputProps.checked,
127
127
  indeterminate: isIndeterminate,
128
- invalid: validationState === "invalid",
129
- valid: validationState === "valid",
128
+ ...getValidationMods({
129
+ isInvalid,
130
+ isValid
131
+ }),
130
132
  disabled: isDisabled,
131
133
  hovered: isHovered,
132
134
  focused: isFocused,
@@ -151,11 +153,7 @@ function Checkbox(props, ref) {
151
153
  children
152
154
  })]
153
155
  });
154
- if (!groupState) return wrapWithField(checkboxField, domRef, {
155
- ...props,
156
- children: null,
157
- inputStyles
158
- });
156
+ if (!groupState) return wrapWithField(checkboxField, domRef, props);
159
157
  return /* @__PURE__ */ jsxs(CheckboxWrapperElement, {
160
158
  styles,
161
159
  isHidden,
@@ -165,8 +163,10 @@ function Checkbox(props, ref) {
165
163
  children: [checkbox, label ?? children ? /* @__PURE__ */ jsx(Element, {
166
164
  styles: labelStyles,
167
165
  mods: {
168
- invalid: validationState === "invalid",
169
- valid: validationState === "valid",
166
+ ...getValidationMods({
167
+ isInvalid,
168
+ isValid
169
+ }),
170
170
  disabled: isDisabled
171
171
  },
172
172
  ...labelProps ? filterBaseProps(labelProps) : void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","names":["useFocus","mergeProps","Text","CheckboxGroup"],"sources":["../../../../src/components/fields/Checkbox/Checkbox.tsx"],"sourcesContent":["import { useFocusableRef } from '@react-spectrum/utils';\nimport { IconCheck, IconMinus } from '@tabler/icons-react';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n Element,\n filterBaseProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef, useContext, useMemo, useRef } from 'react';\nimport {\n AriaCheckboxProps,\n useCheckbox,\n useCheckboxGroupItem,\n useHover,\n} from 'react-aria';\nimport { useToggleState } from 'react-stately';\n\nimport { Icon } from '../../../icons/index';\nimport { useProviderProps } from '../../../provider';\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport { useFocus } from '../../../utils/react/interactions';\nimport {\n castNullableIsSelected,\n WithNullableSelected,\n} from '../../../utils/react/nullableValue';\nimport { extractStyles } from '../../../utils/styles';\nimport { Text } from '../../content/Text';\nimport {\n INLINE_LABEL_STYLES,\n LABEL_STYLES,\n useFieldProps,\n useFormProps,\n wrapWithField,\n} from '../../form';\nimport { HiddenInput } from '../../HiddenInput';\n\nimport { CheckboxGroup } from './CheckboxGroup';\nimport { CheckboxGroupContext } from './context';\n\nimport type { FocusableRef } from '@react-types/shared';\n\nexport interface CubeCheckboxProps\n extends BaseProps,\n ContainerStyleProps,\n AriaCheckboxProps,\n FieldBaseProps {\n inputStyles?: Styles;\n isIndeterminate?: boolean;\n value?: string;\n}\n\nconst CheckboxWrapperElement = tasty({\n as: 'label',\n qa: 'CheckboxWrapper',\n styles: {\n position: 'relative',\n display: 'flex',\n placeItems: 'center start',\n placeContent: 'baseline',\n gap: '1x',\n flow: 'row',\n preset: 'default',\n cursor: '$pointer',\n width: 'max max-content',\n color: '#dark-02',\n },\n});\n\nconst CheckboxElement = tasty({\n qa: 'Checkbox',\n styles: {\n display: 'grid',\n placeItems: 'center',\n radius: '.5r',\n fill: {\n '': '#surface',\n 'checked | indeterminate': '#primary',\n 'invalid & !checked': '#surface',\n 'invalid & checked': '#danger',\n disabled: '#dark.12',\n },\n // The check / minus icon is always rendered inside the box, so the\n // default color must be transparent when the checkbox is neither\n // checked nor indeterminate — otherwise the white stroke shows through\n // the dark `#surface` fill in dark schemes (it used to be hidden\n // accidentally by the legacy white-on-white `fill: '#white'`).\n color: {\n '': '#clear',\n 'checked | indeterminate': '#white',\n },\n border: {\n '': '#dark.30',\n invalid: '#danger',\n 'disabled | ((indeterminate | checked) & !invalid)': '#clear',\n },\n width: '(2x - 2bw)',\n height: '(2x - 2bw)',\n outline: {\n '': '#primary-text.0',\n focused: '1bw #primary-text',\n },\n outlineOffset: 1,\n transition: 'theme',\n },\n});\n\nfunction Checkbox(\n props: WithNullableSelected<CubeCheckboxProps>,\n ref: FocusableRef,\n) {\n // Swap hooks depending on whether this checkbox is inside a CheckboxGroup.\n // This is a bit unorthodox. Typically, hooks cannot be called in a conditional,\n // but since the checkbox won't move in and out of a group, it should be safe.\n let groupState = useContext(CheckboxGroupContext);\n\n props = castNullableIsSelected(props);\n\n let originalProps = props;\n\n props = useProviderProps(props);\n props = useFormProps(props);\n props = useFieldProps(props, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n isSelected: value ?? false,\n isIndeterminate: false,\n onChange: onChange,\n }),\n unsafe__isDisabled: !!groupState,\n });\n\n let {\n qa,\n isIndeterminate = false,\n isDisabled = false,\n insideForm,\n isRequired,\n children,\n label,\n validationState,\n labelProps,\n labelStyles,\n labelPosition,\n inputStyles,\n isHidden,\n form,\n ...otherProps\n } = props;\n\n let styles: Styles = extractStyles(props, CONTAINER_STYLES);\n\n labelStyles = useMemo(\n () => ({\n ...(!groupState ? LABEL_STYLES : INLINE_LABEL_STYLES),\n ...labelStyles,\n }),\n [groupState, labelStyles],\n );\n\n let { isFocused, focusProps } = useFocus({ isDisabled }, true);\n let { hoverProps, isHovered } = useHover({ isDisabled });\n\n let inputRef = useRef(null);\n let domRef = useFocusableRef(ref, inputRef);\n\n const toggleState = useToggleState(props);\n\n let { inputProps } = groupState\n ? useCheckboxGroupItem(\n {\n ...props,\n // Value is optional for standalone checkboxes, but required for CheckboxGroup items;\n // it's passed explicitly here to avoid typescript error (requires strictNullChecks disabled).\n value: props.value || '',\n // Only pass isRequired and validationState to react-aria if they came from\n // the props for this individual checkbox, and not from the group via context.\n isRequired: originalProps.isRequired,\n validationState: originalProps.validationState,\n },\n groupState,\n inputRef,\n )\n : useCheckbox(\n {\n ...props,\n ...(typeof label === 'string' && label.trim()\n ? { 'aria-label': label }\n : {}),\n },\n toggleState,\n inputRef,\n );\n\n let markIcon = isIndeterminate ? (\n <Icon size={12} stroke={3}>\n <IconMinus />\n </Icon>\n ) : (\n <Icon size={12} stroke={3}>\n <IconCheck />\n </Icon>\n );\n\n if (groupState) {\n for (let key of ['isSelected', 'defaultSelected', 'isEmphasized']) {\n if (originalProps[key] != null) {\n console.warn(\n `CubeUIKit: ${key} is unsupported on individual <Checkbox> elements within a <CheckboxGroup>. Please apply these props to the group instead.`,\n );\n }\n }\n if (props.value == null) {\n console.warn(\n 'CubeUIKit: A <Checkbox> element within a <CheckboxGroup> requires a `value` property.',\n );\n }\n }\n\n const mods = {\n checked: inputProps.checked,\n indeterminate: isIndeterminate,\n invalid: validationState === 'invalid',\n valid: validationState === 'valid',\n disabled: isDisabled,\n hovered: isHovered,\n focused: isFocused,\n 'side-label': labelPosition === 'side',\n 'inside-form': insideForm,\n };\n\n const checkbox = (\n <>\n <HiddenInput\n qa={qa || 'Checkbox'}\n data-input-type=\"checkbox\"\n {...mergeProps(inputProps, focusProps)}\n ref={inputRef}\n />\n <CheckboxElement mods={mods} styles={inputStyles}>\n {markIcon}\n </CheckboxElement>\n </>\n );\n\n const checkboxField = (\n <CheckboxWrapperElement isHidden={isHidden} mods={mods}>\n {checkbox}\n {children && <Text nowrap>{children}</Text>}\n </CheckboxWrapperElement>\n );\n\n if (!groupState) {\n return wrapWithField(checkboxField, domRef, {\n ...props,\n children: null,\n inputStyles,\n });\n }\n\n return (\n <CheckboxWrapperElement\n styles={styles}\n isHidden={isHidden}\n {...hoverProps}\n {...filterBaseProps(otherProps)}\n ref={domRef}\n >\n {checkbox}\n {label ?? children ? (\n <Element\n styles={labelStyles}\n mods={{\n invalid: validationState === 'invalid',\n valid: validationState === 'valid',\n disabled: isDisabled,\n }}\n {...(labelProps ? filterBaseProps(labelProps) : undefined)}\n >\n {label ?? children}\n </Element>\n ) : null}\n </CheckboxWrapperElement>\n );\n}\n\n/**\n * Checkboxes allow users to select multiple items from a list of individual items,\n * or to mark one individual item as selected.\n */\nlet _Checkbox = forwardRef(Checkbox);\n\n(_Checkbox as any).cubeInputType = 'Checkbox';\nlet __Checkbox = Object.assign(\n _Checkbox as typeof _Checkbox & { Group: typeof CheckboxGroup },\n { Group: CheckboxGroup },\n);\n\n__Checkbox.displayName = 'Checkbox';\n\nexport { __Checkbox as Checkbox };\nexport type { AriaCheckboxProps };\nexport { useCheckbox };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Checkbox.js","names":["useFocus","mergeProps","Text","CheckboxGroup"],"sources":["../../../../src/components/fields/Checkbox/Checkbox.tsx"],"sourcesContent":["import { useFocusableRef } from '@react-spectrum/utils';\nimport { IconCheck, IconMinus } from '@tabler/icons-react';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n Element,\n filterBaseProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef, useContext, useMemo, useRef } from 'react';\nimport {\n AriaCheckboxProps,\n useCheckbox,\n useCheckboxGroupItem,\n useHover,\n} from 'react-aria';\nimport { useToggleState } from 'react-stately';\n\nimport { Icon } from '../../../icons/index';\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport { useFocus } from '../../../utils/react/interactions';\nimport {\n castNullableIsSelected,\n WithNullableSelected,\n} from '../../../utils/react/nullableValue';\nimport { extractStyles } from '../../../utils/styles';\nimport { Text } from '../../content/Text';\nimport {\n getValidationMods,\n INLINE_LABEL_STYLES,\n LABEL_STYLES,\n resolveValidationProps,\n useFieldProps,\n wrapWithField,\n} from '../../form';\nimport { HiddenInput } from '../../HiddenInput';\n\nimport { CheckboxGroup } from './CheckboxGroup';\nimport { CheckboxGroupContext } from './context';\n\nimport type { FocusableRef } from '@react-types/shared';\n\nexport interface CubeCheckboxProps\n extends BaseProps,\n ContainerStyleProps,\n AriaCheckboxProps,\n FieldBaseProps {\n inputStyles?: Styles;\n isIndeterminate?: boolean;\n value?: string;\n}\n\nconst CheckboxWrapperElement = tasty({\n as: 'label',\n qa: 'CheckboxWrapper',\n styles: {\n position: 'relative',\n display: 'flex',\n placeItems: 'center start',\n placeContent: 'baseline',\n gap: '1x',\n flow: 'row',\n preset: 'default',\n cursor: '$pointer',\n width: 'max max-content',\n color: '#dark-02',\n },\n});\n\nconst CheckboxElement = tasty({\n qa: 'Checkbox',\n styles: {\n display: 'grid',\n placeItems: 'center',\n radius: '.5r',\n fill: {\n '': '#surface',\n 'checked | indeterminate': '#primary',\n 'invalid & !checked': '#surface',\n 'invalid & checked': '#danger',\n 'valid & !checked': '#surface',\n 'valid & checked': '#success',\n disabled: '#dark.12',\n },\n // The check / minus icon is always rendered inside the box, so the\n // default color must be transparent when the checkbox is neither\n // checked nor indeterminate — otherwise the white stroke shows through\n // the dark `#surface` fill in dark schemes (it used to be hidden\n // accidentally by the legacy white-on-white `fill: '#white'`).\n color: {\n '': '#clear',\n 'checked | indeterminate': '#white',\n },\n border: {\n '': '#dark.30',\n invalid: '#danger',\n valid: '#success',\n 'disabled | ((indeterminate | checked) & !invalid & !valid)': '#clear',\n },\n width: '(2x - 2bw)',\n height: '(2x - 2bw)',\n outline: {\n '': '#primary-text.0',\n focused: '1bw #primary-text',\n },\n outlineOffset: 1,\n transition: 'theme',\n },\n});\n\nfunction Checkbox(\n props: WithNullableSelected<CubeCheckboxProps>,\n ref: FocusableRef,\n) {\n // Swap hooks depending on whether this checkbox is inside a CheckboxGroup.\n // This is a bit unorthodox. Typically, hooks cannot be called in a conditional,\n // but since the checkbox won't move in and out of a group, it should be safe.\n let groupState = useContext(CheckboxGroupContext);\n\n props = castNullableIsSelected(props);\n\n let originalProps = props;\n\n props = useFieldProps(props, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n isSelected: value ?? false,\n isIndeterminate: false,\n onChange: onChange,\n }),\n unsafe__isDisabled: !!groupState,\n });\n\n let {\n qa,\n isIndeterminate = false,\n isDisabled = false,\n insideForm,\n isRequired,\n children,\n label,\n isInvalid,\n isValid,\n labelProps,\n labelStyles,\n labelPosition,\n inputStyles,\n isHidden,\n form,\n ...otherProps\n } = props;\n\n let styles: Styles = extractStyles(props, CONTAINER_STYLES);\n\n labelStyles = useMemo(\n () => ({\n ...(!groupState ? LABEL_STYLES : INLINE_LABEL_STYLES),\n ...labelStyles,\n }),\n [groupState, labelStyles],\n );\n\n let { isFocused, focusProps } = useFocus({ isDisabled }, true);\n let { hoverProps, isHovered } = useHover({ isDisabled });\n\n let inputRef = useRef(null);\n let domRef = useFocusableRef(ref, inputRef);\n\n const toggleState = useToggleState(props);\n\n let { inputProps } = groupState\n ? useCheckboxGroupItem(\n {\n ...props,\n // Value is optional for standalone checkboxes, but required for CheckboxGroup items;\n // it's passed explicitly here to avoid typescript error (requires strictNullChecks disabled).\n value: props.value || '',\n // Only pass isRequired and the validation state to react-aria if they came from\n // the props for this individual checkbox, and not from the group via context.\n isRequired: originalProps.isRequired,\n isInvalid: resolveValidationProps(originalProps).isInvalid,\n },\n groupState,\n inputRef,\n )\n : useCheckbox(\n {\n ...props,\n ...(typeof label === 'string' && label.trim()\n ? { 'aria-label': label }\n : {}),\n },\n toggleState,\n inputRef,\n );\n\n let markIcon = isIndeterminate ? (\n <Icon size={12} stroke={3}>\n <IconMinus />\n </Icon>\n ) : (\n <Icon size={12} stroke={3}>\n <IconCheck />\n </Icon>\n );\n\n if (groupState) {\n for (let key of ['isSelected', 'defaultSelected', 'isEmphasized']) {\n if (originalProps[key] != null) {\n console.warn(\n `CubeUIKit: ${key} is unsupported on individual <Checkbox> elements within a <CheckboxGroup>. Please apply these props to the group instead.`,\n );\n }\n }\n if (props.value == null) {\n console.warn(\n 'CubeUIKit: A <Checkbox> element within a <CheckboxGroup> requires a `value` property.',\n );\n }\n }\n\n const mods = {\n checked: inputProps.checked,\n indeterminate: isIndeterminate,\n ...getValidationMods({ isInvalid, isValid }),\n disabled: isDisabled,\n hovered: isHovered,\n focused: isFocused,\n 'side-label': labelPosition === 'side',\n 'inside-form': insideForm,\n };\n\n const checkbox = (\n <>\n <HiddenInput\n qa={qa || 'Checkbox'}\n data-input-type=\"checkbox\"\n {...mergeProps(inputProps, focusProps)}\n ref={inputRef}\n />\n <CheckboxElement mods={mods} styles={inputStyles}>\n {markIcon}\n </CheckboxElement>\n </>\n );\n\n const checkboxField = (\n <CheckboxWrapperElement isHidden={isHidden} mods={mods}>\n {checkbox}\n {children && <Text nowrap>{children}</Text>}\n </CheckboxWrapperElement>\n );\n\n if (!groupState) {\n return wrapWithField(checkboxField, domRef, props);\n }\n\n return (\n <CheckboxWrapperElement\n styles={styles}\n isHidden={isHidden}\n {...hoverProps}\n {...filterBaseProps(otherProps)}\n ref={domRef}\n >\n {checkbox}\n {label ?? children ? (\n <Element\n styles={labelStyles}\n mods={{\n ...getValidationMods({ isInvalid, isValid }),\n disabled: isDisabled,\n }}\n {...(labelProps ? filterBaseProps(labelProps) : undefined)}\n >\n {label ?? children}\n </Element>\n ) : null}\n </CheckboxWrapperElement>\n );\n}\n\n/**\n * Checkboxes allow users to select multiple items from a list of individual items,\n * or to mark one individual item as selected.\n */\nlet _Checkbox = forwardRef(Checkbox);\n\n(_Checkbox as any).cubeInputType = 'Checkbox';\nlet __Checkbox = Object.assign(\n _Checkbox as typeof _Checkbox & { Group: typeof CheckboxGroup },\n { Group: CheckboxGroup },\n);\n\n__Checkbox.displayName = 'Checkbox';\n\nexport { __Checkbox as Checkbox };\nexport type { AriaCheckboxProps };\nexport { useCheckbox };\n"],"mappings":"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"}
@@ -1,8 +1,7 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
- import { useProviderProps } from "../../../provider.js";
5
- import { FormContext, useFormProps } from "../../form/Form/Form.js";
4
+ import { FormContext } from "../../form/Form/Form.js";
6
5
  import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
7
6
  import { wrapWithField } from "../../form/wrapper.js";
8
7
  import { castNullableArrayValue } from "../../../utils/react/nullableValue.js";
@@ -33,8 +32,6 @@ const CheckGroupElement = tasty({
33
32
  });
34
33
  function CheckboxGroup(props, ref) {
35
34
  props = castNullableArrayValue(props);
36
- props = useProviderProps(props);
37
- props = useFormProps(props);
38
35
  props = useFieldProps(props, {
39
36
  defaultValidationTrigger: "onChange",
40
37
  valuePropsMapper: ({ value, onChange }) => ({
@@ -42,7 +39,7 @@ function CheckboxGroup(props, ref) {
42
39
  onChange
43
40
  })
44
41
  });
45
- let { id, isDisabled, isRequired, necessityIndicator, necessityLabel, label, extra, validationState, children, orientation = "vertical", message, description, labelStyles, tooltip, labelProps: baseLabelProps, labelSuffix, inputStyles, form, ...otherProps } = props;
42
+ let { id, isDisabled, isRequired, necessityIndicator, necessityLabel, label, extra, isInvalid, isValid, children, orientation = "vertical", message, description, labelStyles, tooltip, labelProps: baseLabelProps, labelSuffix, inputStyles, form, ...otherProps } = props;
46
43
  let domRef = useObjectRef(ref);
47
44
  extractStyles(otherProps, CONTAINER_STYLES);
48
45
  let state = useCheckboxGroupState(props);
@@ -54,7 +51,8 @@ function CheckboxGroup(props, ref) {
54
51
  children: /* @__PURE__ */ jsx(FormContext.Provider, {
55
52
  value: {
56
53
  isDisabled,
57
- validationState
54
+ isInvalid,
55
+ isValid
58
56
  },
59
57
  children: /* @__PURE__ */ jsx(CheckboxGroupContext.Provider, {
60
58
  value: state,
@@ -63,7 +61,6 @@ function CheckboxGroup(props, ref) {
63
61
  })
64
62
  }), domRef, {
65
63
  ...props,
66
- children: null,
67
64
  fieldProps: groupProps,
68
65
  labelProps: mergeProps$1(baseLabelProps, labelProps)
69
66
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxGroup.js","names":["mergeProps"],"sources":["../../../../src/components/fields/Checkbox/CheckboxGroup.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef } from 'react';\nimport { AriaCheckboxGroupProps, useCheckboxGroup } from 'react-aria';\nimport { useCheckboxGroupState } from 'react-stately';\n\nimport { useProviderProps } from '../../../provider';\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport {\n castNullableArrayValue,\n WithNullableValue,\n} from '../../../utils/react/nullableValue';\nimport { extractStyles } from '../../../utils/styles';\nimport {\n FormContext,\n useFieldProps,\n useFormProps,\n wrapWithField,\n} from '../../form';\n\nimport { CheckboxGroupContext } from './context';\n\nconst CheckGroupElement = tasty({\n qa: 'CheckboxGroup',\n styles: {\n display: 'flex',\n placeItems: 'start',\n placeContent: 'start',\n flow: {\n '': 'column',\n horizontal: 'row wrap',\n },\n gap: {\n '': '1x',\n horizontal: '1x 2x',\n },\n },\n});\n\nexport interface CubeCheckboxGroupProps\n extends BaseProps,\n Omit<AriaCheckboxGroupProps, 'errorMessage'>,\n FieldBaseProps,\n ContainerStyleProps {\n orientation?: 'vertical' | 'horizontal';\n inputStyles?: Styles;\n}\n\nfunction CheckboxGroup(props: WithNullableValue<CubeCheckboxGroupProps>, ref) {\n props = castNullableArrayValue(props);\n props = useProviderProps(props);\n props = useFormProps(props);\n props = useFieldProps(props, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n value: value != null ? value : [],\n onChange: onChange,\n }),\n });\n\n let {\n id,\n isDisabled,\n isRequired,\n necessityIndicator,\n necessityLabel,\n label,\n extra,\n validationState,\n children,\n orientation = 'vertical',\n message,\n description,\n labelStyles,\n tooltip,\n labelProps: baseLabelProps,\n labelSuffix,\n inputStyles,\n form,\n ...otherProps\n } = props;\n let domRef = useObjectRef(ref);\n\n let styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n let state = useCheckboxGroupState(props);\n let { groupProps, labelProps } = useCheckboxGroup(props, state);\n\n let radioGroup = (\n <CheckGroupElement\n id={id}\n styles={inputStyles}\n mods={{\n horizontal: orientation === 'horizontal',\n }}\n >\n <FormContext.Provider\n value={{\n isDisabled,\n validationState,\n }}\n >\n <CheckboxGroupContext.Provider value={state}>\n {children}\n </CheckboxGroupContext.Provider>\n </FormContext.Provider>\n </CheckGroupElement>\n );\n\n return wrapWithField(radioGroup, domRef, {\n ...props,\n children: null,\n fieldProps: groupProps,\n labelProps: mergeProps(baseLabelProps, labelProps),\n });\n}\n\n/**\n * Checkbox groups allow users to select a single option from a list of mutually exclusive options.\n * All possible options are exposed up front for users to compare.\n */\nconst _CheckboxGroup = forwardRef(CheckboxGroup);\n\n(_CheckboxGroup as any).cubeInputType = 'CheckboxGroup';\n_CheckboxGroup.displayName = 'CheckboxGroup';\n\nexport { _CheckboxGroup as CheckboxGroup };\n"],"mappings":";;;;;;;;;;;;;;;;;AA6BA,MAAM,oBAAoB,MAAM;CAC9B,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,YAAY;EACZ,cAAc;EACd,MAAM;GACJ,IAAI;GACJ,YAAY;GACb;EACD,KAAK;GACH,IAAI;GACJ,YAAY;GACb;EACF;CACF,CAAC;AAWF,SAAS,cAAc,OAAkD,KAAK;AAC5E,SAAQ,uBAAuB,MAAM;AACrC,SAAQ,iBAAiB,MAAM;AAC/B,SAAQ,aAAa,MAAM;AAC3B,SAAQ,cAAc,OAAO;EAC3B,0BAA0B;EAC1B,mBAAmB,EAAE,OAAO,gBAAgB;GAC1C,OAAO,SAAS,OAAO,QAAQ,EAAE;GACvB;GACX;EACF,CAAC;CAEF,IAAI,EACF,IACA,YACA,YACA,oBACA,gBACA,OACA,OACA,iBACA,UACA,cAAc,YACd,SACA,aACA,aACA,SACA,YAAY,gBACZ,aACA,aACA,MACA,GAAG,eACD;CACJ,IAAI,SAAS,aAAa,IAAI;AAEjB,eAAc,YAAY,iBAAiB;CAExD,IAAI,QAAQ,sBAAsB,MAAM;CACxC,IAAI,EAAE,YAAY,eAAe,iBAAiB,OAAO,MAAM;AAuB/D,QAAO,cApBL,oBAAC;EACK;EACJ,QAAQ;EACR,MAAM,EACJ,YAAY,gBAAgB,cAC7B;YAED,oBAAC,YAAY;GACX,OAAO;IACL;IACA;IACD;aAED,oBAAC,qBAAqB;IAAS,OAAO;IACnC;KAC6B;IACX;GACL,EAGW,QAAQ;EACvC,GAAG;EACH,UAAU;EACV,YAAY;EACZ,YAAYA,aAAW,gBAAgB,WAAW;EACnD,CAAC;;;;;;AAOJ,MAAM,iBAAiB,WAAW,cAAc;AAEhD,AAAC,eAAuB,gBAAgB;AACxC,eAAe,cAAc"}
1
+ {"version":3,"file":"CheckboxGroup.js","names":["mergeProps"],"sources":["../../../../src/components/fields/Checkbox/CheckboxGroup.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef } from 'react';\nimport { AriaCheckboxGroupProps, useCheckboxGroup } from 'react-aria';\nimport { useCheckboxGroupState } from 'react-stately';\n\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport {\n castNullableArrayValue,\n WithNullableValue,\n} from '../../../utils/react/nullableValue';\nimport { extractStyles } from '../../../utils/styles';\nimport { FormContext, useFieldProps, wrapWithField } from '../../form';\n\nimport { CheckboxGroupContext } from './context';\n\nconst CheckGroupElement = tasty({\n qa: 'CheckboxGroup',\n styles: {\n display: 'flex',\n placeItems: 'start',\n placeContent: 'start',\n flow: {\n '': 'column',\n horizontal: 'row wrap',\n },\n gap: {\n '': '1x',\n horizontal: '1x 2x',\n },\n },\n});\n\nexport interface CubeCheckboxGroupProps\n extends BaseProps,\n Omit<AriaCheckboxGroupProps, 'errorMessage'>,\n FieldBaseProps,\n ContainerStyleProps {\n orientation?: 'vertical' | 'horizontal';\n inputStyles?: Styles;\n}\n\nfunction CheckboxGroup(props: WithNullableValue<CubeCheckboxGroupProps>, ref) {\n props = castNullableArrayValue(props);\n props = useFieldProps(props, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n value: value != null ? value : [],\n onChange: onChange,\n }),\n });\n\n let {\n id,\n isDisabled,\n isRequired,\n necessityIndicator,\n necessityLabel,\n label,\n extra,\n isInvalid,\n isValid,\n children,\n orientation = 'vertical',\n message,\n description,\n labelStyles,\n tooltip,\n labelProps: baseLabelProps,\n labelSuffix,\n inputStyles,\n form,\n ...otherProps\n } = props;\n let domRef = useObjectRef(ref);\n\n let styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n let state = useCheckboxGroupState(props);\n let { groupProps, labelProps } = useCheckboxGroup(props, state);\n\n let radioGroup = (\n <CheckGroupElement\n id={id}\n styles={inputStyles}\n mods={{\n horizontal: orientation === 'horizontal',\n }}\n >\n <FormContext.Provider\n value={{\n isDisabled,\n isInvalid,\n isValid,\n }}\n >\n <CheckboxGroupContext.Provider value={state}>\n {children}\n </CheckboxGroupContext.Provider>\n </FormContext.Provider>\n </CheckGroupElement>\n );\n\n return wrapWithField(radioGroup, domRef, {\n ...props,\n fieldProps: groupProps,\n labelProps: mergeProps(baseLabelProps, labelProps),\n });\n}\n\n/**\n * Checkbox groups allow users to select a single option from a list of mutually exclusive options.\n * All possible options are exposed up front for users to compare.\n */\nconst _CheckboxGroup = forwardRef(CheckboxGroup);\n\n(_CheckboxGroup as any).cubeInputType = 'CheckboxGroup';\n_CheckboxGroup.displayName = 'CheckboxGroup';\n\nexport { _CheckboxGroup as CheckboxGroup };\n"],"mappings":";;;;;;;;;;;;;;;;AAuBA,MAAM,oBAAoB,MAAM;CAC9B,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,YAAY;EACZ,cAAc;EACd,MAAM;GACJ,IAAI;GACJ,YAAY;GACb;EACD,KAAK;GACH,IAAI;GACJ,YAAY;GACb;EACF;CACF,CAAC;AAWF,SAAS,cAAc,OAAkD,KAAK;AAC5E,SAAQ,uBAAuB,MAAM;AACrC,SAAQ,cAAc,OAAO;EAC3B,0BAA0B;EAC1B,mBAAmB,EAAE,OAAO,gBAAgB;GAC1C,OAAO,SAAS,OAAO,QAAQ,EAAE;GACvB;GACX;EACF,CAAC;CAEF,IAAI,EACF,IACA,YACA,YACA,oBACA,gBACA,OACA,OACA,WACA,SACA,UACA,cAAc,YACd,SACA,aACA,aACA,SACA,YAAY,gBACZ,aACA,aACA,MACA,GAAG,eACD;CACJ,IAAI,SAAS,aAAa,IAAI;AAEjB,eAAc,YAAY,iBAAiB;CAExD,IAAI,QAAQ,sBAAsB,MAAM;CACxC,IAAI,EAAE,YAAY,eAAe,iBAAiB,OAAO,MAAM;AAwB/D,QAAO,cArBL,oBAAC;EACK;EACJ,QAAQ;EACR,MAAM,EACJ,YAAY,gBAAgB,cAC7B;YAED,oBAAC,YAAY;GACX,OAAO;IACL;IACA;IACA;IACD;aAED,oBAAC,qBAAqB;IAAS,OAAO;IACnC;KAC6B;IACX;GACL,EAGW,QAAQ;EACvC,GAAG;EACH,YAAY;EACZ,YAAYA,aAAW,gBAAgB,WAAW;EACnD,CAAC;;;;;;AAOJ,MAAM,iBAAiB,WAAW,cAAc;AAEhD,AAAC,eAAuB,gBAAgB;AACxC,eAAe,cAAc"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { createContext } from "react";
3
3
 
4
4
  //#region src/components/fields/Checkbox/context.ts
@@ -94,8 +94,6 @@ interface CubeComboBoxProps<T> extends BasePropsWithoutChildren, BaseStyleProps,
94
94
  isDisabled?: boolean;
95
95
  /** Whether the combobox is in loading state */
96
96
  isLoading?: boolean;
97
- /** Validation state of the combobox */
98
- validationState?: 'valid' | 'invalid';
99
97
  /** Keys of disabled items */
100
98
  disabledKeys?: Iterable<Key$1>;
101
99
  /** Whether to flip the popover placement */
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.147.3 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.148.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -6,23 +6,21 @@ import { usePopoverSync } from "../../../utils/react/usePopoverSync.js";
6
6
  import { useEvent } from "../../../_internal/hooks/use-event.js";
7
7
  import { useFocus as useFocus$1 } from "../../../utils/react/interactions.js";
8
8
  import { LoadingIcon } from "../../../icons/LoadingIcon.js";
9
- import { useProviderProps } from "../../../provider.js";
10
9
  import { _CollectionItem } from "../../CollectionItem.js";
11
10
  import { useI18n } from "../../../i18n/useI18n.js";
12
11
  import { CloseIcon } from "../../../icons/CloseIcon.js";
13
12
  import { DirectionIcon } from "../../../icons/DirectionIcon.js";
14
13
  import { generateRandomId } from "../../../utils/random.js";
15
- import { useFormProps } from "../../form/Form/Form.js";
14
+ import { getValidationMods, getValidationTheme } from "../../form/validation/resolve-validation-props.js";
15
+ import { getValidationIcon } from "../../form/validation/ValidationIndicator.js";
16
16
  import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
17
17
  import { wrapWithField } from "../../form/wrapper.js";
18
- import { InvalidIcon } from "../../shared/InvalidIcon.js";
19
- import { ValidIcon } from "../../shared/ValidIcon.js";
20
18
  import { DEFAULT_INPUT_STYLES, INPUT_WRAPPER_STYLES } from "../TextInput/TextInputBase.js";
21
19
  import { ListBoxPopover } from "../ListBoxPopover/ListBoxPopover.js";
22
20
  import { useCompositeFocus } from "../ListBoxPopover/useCompositeFocus.js";
23
21
  import { filterCollectionNodes, getEdgeVisibleKey, getNextVisibleKey, markKeyboardFocus } from "../ListBoxPopover/listNavigation.js";
24
22
  import { BASE_STYLES, COLOR_STYLES, OUTER_STYLES, tasty } from "@tenphi/tasty";
25
- import React, { cloneElement, forwardRef, useCallback, useEffect, useMemo, useRef, useState } from "react";
23
+ import React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from "react";
26
24
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
27
25
  import { useFilter, useKeyboard } from "react-aria";
28
26
  import { Section, useListState } from "react-stately";
@@ -185,8 +183,6 @@ const ComboBoxInput = forwardRef(function ComboBoxInput({ qa, inputRef, id, valu
185
183
  });
186
184
  });
187
185
  const ComboBox = forwardRef(function ComboBox(props, ref) {
188
- props = useProviderProps(props);
189
- props = useFormProps(props);
190
186
  props = useFieldProps(props, { valuePropsMapper: ({ value, onChange }) => {
191
187
  return {
192
188
  selectedKey: value ?? null,
@@ -196,7 +192,7 @@ const ComboBox = forwardRef(function ComboBox(props, ref) {
196
192
  };
197
193
  } });
198
194
  const { t } = useI18n();
199
- let { qa, label, extra, labelStyles, isRequired, necessityIndicator, validationState, id, icon, prefix, isDisabled, autoFocus, autoComplete = "off", wrapperRef, inputRef, triggerRef, popoverRef, listBoxRef, isLoading, inputStyles, optionStyles, triggerStyles, listBoxStyles, overlayStyles, suffix, hideTrigger, message, description, size = "medium", direction = "bottom", shouldFlip = true, popoverTrigger = "input", suffixPosition = "before", filter, styles, labelSuffix, selectedKey, defaultSelectedKey, inputValue, defaultInputValue, onInputChange, isClearable, onClear, placeholder, allowsCustomValue, shouldCommitOnBlur = true, clearOnBlur, items, children: renderChildren, sectionStyles, headingStyles, isReadOnly, overlayOffset = 8, containerPadding = 8, onSelectionChange: externalOnSelectionChange, sortSelectedToTop: sortSelectedToTopProp, onOpenChange, onFocus, onBlur, onKeyDown, form, ...otherProps } = props;
195
+ let { qa, label, extra, labelStyles, isRequired, necessityIndicator, isInvalid, isValid, id, icon, prefix, isDisabled, autoFocus, autoComplete = "off", wrapperRef, inputRef, triggerRef, popoverRef, listBoxRef, isLoading, inputStyles, optionStyles, triggerStyles, listBoxStyles, overlayStyles, suffix, hideTrigger, message, description, size = "medium", direction = "bottom", shouldFlip = true, popoverTrigger = "input", suffixPosition = "before", filter, styles, labelSuffix, selectedKey, defaultSelectedKey, inputValue, defaultInputValue, onInputChange, isClearable, onClear, placeholder, allowsCustomValue, shouldCommitOnBlur = true, clearOnBlur, items, children: renderChildren, sectionStyles, headingStyles, isReadOnly, overlayOffset = 8, containerPadding = 8, onSelectionChange: externalOnSelectionChange, sortSelectedToTop: sortSelectedToTopProp, onOpenChange, onFocus, onBlur, onKeyDown, form, ...otherProps } = props;
200
196
  const comboBoxId = useMemo(() => generateRandomId(), []);
201
197
  wrapperRef = useCombinedRefs(wrapperRef);
202
198
  popoverRef = useCombinedRefs(popoverRef);
@@ -280,7 +276,7 @@ const ComboBox = forwardRef(function ComboBox(props, ref) {
280
276
  const { isFocused, focusProps } = useFocus$1({ isDisabled });
281
277
  const checkInputValidity = useCallback(() => {
282
278
  if (!effectiveInputValue.trim()) return {
283
- isValid: false,
279
+ isInputValid: false,
284
280
  singleMatchKey: null,
285
281
  filteredCount: 0
286
282
  };
@@ -298,17 +294,17 @@ const ComboBox = forwardRef(function ComboBox(props, ref) {
298
294
  const filteredCount = filteredItems.length;
299
295
  const exactMatch = filteredItems.find((item) => item.textValue.toLowerCase() === effectiveInputValue.trim().toLowerCase());
300
296
  if (exactMatch) return {
301
- isValid: true,
297
+ isInputValid: true,
302
298
  singleMatchKey: exactMatch.key,
303
299
  filteredCount
304
300
  };
305
301
  if (filteredCount === 1) return {
306
- isValid: true,
302
+ isInputValid: true,
307
303
  singleMatchKey: filteredItems[0].key,
308
304
  filteredCount
309
305
  };
310
306
  return {
311
- isValid: false,
307
+ isInputValid: false,
312
308
  singleMatchKey: null,
313
309
  filteredCount
314
310
  };
@@ -337,8 +333,8 @@ const ComboBox = forwardRef(function ComboBox(props, ref) {
337
333
  }
338
334
  }
339
335
  if (!allowsCustomValue) {
340
- const { isValid, singleMatchKey } = checkInputValidity();
341
- if (isValid && singleMatchKey != null && singleMatchKey !== effectiveSelectedKey) {
336
+ const { isInputValid, singleMatchKey } = checkInputValidity();
337
+ if (isInputValid && singleMatchKey != null && singleMatchKey !== effectiveSelectedKey) {
342
338
  const label = getItemLabel(singleMatchKey);
343
339
  if (!isControlledKey) setInternalSelectedKey(singleMatchKey);
344
340
  if (!isControlledInput) setInternalInputValue(label);
@@ -348,7 +344,7 @@ const ComboBox = forwardRef(function ComboBox(props, ref) {
348
344
  setIsFilterActive(false);
349
345
  return;
350
346
  }
351
- if (!isValid) {
347
+ if (!isInputValid) {
352
348
  const trimmedInput = effectiveInputValue.trim();
353
349
  if (clearOnBlur || !trimmedInput) {
354
350
  externalOnSelectionChange?.(null);
@@ -380,8 +376,10 @@ const ComboBox = forwardRef(function ComboBox(props, ref) {
380
376
  onBlur: handleCompositeBlur,
381
377
  isDisabled
382
378
  });
383
- let isInvalid = validationState === "invalid";
384
- let validation = cloneElement(isInvalid ? InvalidIcon : ValidIcon);
379
+ let validationIcon = getValidationIcon({
380
+ isInvalid,
381
+ isValid
382
+ });
385
383
  const listStateRef = useRef(null);
386
384
  const focusInitAttemptsRef = useRef(0);
387
385
  const getItemLabel = useCallback((key) => {
@@ -506,8 +504,10 @@ const ComboBox = forwardRef(function ComboBox(props, ref) {
506
504
  else prefix = icon;
507
505
  }
508
506
  let mods = useMemo(() => ({
509
- invalid: isInvalid,
510
- valid: validationState === "valid",
507
+ ...getValidationMods({
508
+ isInvalid,
509
+ isValid
510
+ }),
511
511
  disabled: isDisabled,
512
512
  hovered: false,
513
513
  focused: isFocused,
@@ -517,7 +517,7 @@ const ComboBox = forwardRef(function ComboBox(props, ref) {
517
517
  clearable: showClearButton
518
518
  }), [
519
519
  isInvalid,
520
- validationState,
520
+ isValid,
521
521
  isDisabled,
522
522
  isFocused,
523
523
  isLoading,
@@ -607,12 +607,15 @@ const ComboBox = forwardRef(function ComboBox(props, ref) {
607
607
  "data-element": "Suffix",
608
608
  children: [
609
609
  suffixPosition === "before" ? suffix : null,
610
- validationState || isLoading ? /* @__PURE__ */ jsxs(Fragment$1, { children: [validationState && !isLoading ? validation : null, isLoading ? /* @__PURE__ */ jsx(LoadingIcon, { "data-element": "InputIcon" }) : null] }) : null,
610
+ isLoading ? /* @__PURE__ */ jsx(LoadingIcon, { "data-element": "InputIcon" }) : validationIcon,
611
611
  suffixPosition === "after" ? suffix : null,
612
612
  showClearButton && /* @__PURE__ */ jsx(_CollectionItem.Action, {
613
613
  icon: /* @__PURE__ */ jsx(CloseIcon, {}),
614
614
  size,
615
- theme: validationState === "invalid" ? "danger" : void 0,
615
+ theme: getValidationTheme(void 0, {
616
+ isInvalid,
617
+ isValid
618
+ }),
616
619
  qa: "ComboBoxClearButton",
617
620
  "data-no-trigger": hideTrigger ? "" : void 0,
618
621
  "data-popover-dismiss": "",