@cube-dev/ui-kit 0.0.0-canary-b0fb187 → 0.0.0-canary-6628277

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 (601) hide show
  1. package/dist/CHANGELOG.md +59 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.d.ts +0 -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/ItemActionsWrapper.js +1 -1
  28. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  29. package/dist/components/actions/Link/Link.js +1 -1
  30. package/dist/components/actions/Menu/Menu.js +1 -1
  31. package/dist/components/actions/Menu/MenuItem.js +1 -1
  32. package/dist/components/actions/Menu/MenuSection.js +1 -1
  33. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  36. package/dist/components/actions/Menu/context.js +1 -1
  37. package/dist/components/actions/Menu/styled.js +1 -1
  38. package/dist/components/actions/actions-run.js +1 -1
  39. package/dist/components/actions/index.js +1 -1
  40. package/dist/components/actions/use-action.js +1 -1
  41. package/dist/components/actions/use-anchored-menu.js +1 -1
  42. package/dist/components/actions/use-context-menu.js +1 -1
  43. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  44. package/dist/components/content/Alert/Alert.js +1 -1
  45. package/dist/components/content/Alert/use-alert.js +1 -1
  46. package/dist/components/content/Avatar/Avatar.js +1 -1
  47. package/dist/components/content/Badge/Badge.js +1 -1
  48. package/dist/components/content/Card/Card.js +1 -1
  49. package/dist/components/content/Content.js +1 -1
  50. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  51. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  52. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  53. package/dist/components/content/Divider.js +1 -1
  54. package/dist/components/content/Footer.js +1 -1
  55. package/dist/components/content/Header.js +1 -1
  56. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  57. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  58. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  59. package/dist/components/content/Item/Item.js +1 -1
  60. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  61. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  62. package/dist/components/content/Layout/GridLayout.js +1 -1
  63. package/dist/components/content/Layout/Layout.js +1 -1
  64. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  65. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  66. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  67. package/dist/components/content/Layout/LayoutContent.js +1 -1
  68. package/dist/components/content/Layout/LayoutContext.js +1 -1
  69. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  70. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  71. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  72. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutPane.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  75. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  76. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  77. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  78. package/dist/components/content/Layout/index.js +1 -1
  79. package/dist/components/content/Layout/utils.js +1 -1
  80. package/dist/components/content/Paragraph.js +1 -1
  81. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  82. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  83. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  84. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  85. package/dist/components/content/Result/Result.js +1 -1
  86. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  87. package/dist/components/content/Tag/Tag.js +1 -1
  88. package/dist/components/content/Text.d.ts +14 -14
  89. package/dist/components/content/Text.js +1 -1
  90. package/dist/components/content/TextItem/TextItem.js +1 -1
  91. package/dist/components/content/Title.js +1 -1
  92. package/dist/components/content/Tree/Tree.js +1 -1
  93. package/dist/components/content/Tree/TreeNode.js +1 -1
  94. package/dist/components/content/Tree/styled.js +1 -1
  95. package/dist/components/content/Tree/tree-index.js +1 -1
  96. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  97. package/dist/components/content/Tree/use-load-data.js +1 -1
  98. package/dist/components/content/highlightText.js +1 -1
  99. package/dist/components/content/use-auto-tooltip.js +1 -1
  100. package/dist/components/data/DataTable/DataTable.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  104. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  105. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  106. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  107. package/dist/components/data/TableBase/RowCollection.js +1 -1
  108. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  109. package/dist/components/data/TableBase/TableRow.js +1 -1
  110. package/dist/components/data/TableBase/TableView.js +1 -1
  111. package/dist/components/data/TableBase/column-menu.js +1 -1
  112. package/dist/components/data/TableBase/column-tint.js +1 -1
  113. package/dist/components/data/TableBase/row-menu.js +1 -1
  114. package/dist/components/data/TableBase/styled.d.ts +1 -2
  115. package/dist/components/data/TableBase/styled.js +1 -1
  116. package/dist/components/data/TableBase/table-tree.js +1 -1
  117. package/dist/components/data/TableBase/types.js +1 -1
  118. package/dist/components/data/TableBase/use-cell-selection.d.ts +0 -1
  119. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  120. package/dist/components/data/TableBase/use-column-order.js +1 -1
  121. package/dist/components/data/TableBase/use-container-width.js +1 -1
  122. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  123. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  124. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  125. package/dist/components/data/TableBase/use-table-search.js +1 -1
  126. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  127. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  128. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  129. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  130. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  131. package/dist/components/fields/Checkbox/Checkbox.d.ts +7 -0
  132. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  133. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  134. package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +1 -1
  135. package/dist/components/fields/Checkbox/CheckboxGroup.js +3 -3
  136. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  137. package/dist/components/fields/Checkbox/context.js +1 -1
  138. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  139. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  140. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  141. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  142. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  143. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  144. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  145. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  146. package/dist/components/fields/DatePicker/DateInput.d.ts +1 -1
  147. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  148. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  149. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  150. package/dist/components/fields/DatePicker/DatePicker.d.ts +1 -1
  151. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  152. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  153. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  154. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  155. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  156. package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
  157. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  158. package/dist/components/fields/DatePicker/DateRangePicker.d.ts +1 -1
  159. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  160. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  161. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +1 -1
  162. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  163. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  164. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  165. package/dist/components/fields/DatePicker/PeriodPicker.d.ts +1 -1
  166. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  167. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  168. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  169. package/dist/components/fields/DatePicker/TimeInput.d.ts +1 -1
  170. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  171. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  172. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  173. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  174. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  175. package/dist/components/fields/DatePicker/period.js +1 -1
  176. package/dist/components/fields/DatePicker/props.js +1 -1
  177. package/dist/components/fields/DatePicker/utils.js +1 -1
  178. package/dist/components/fields/FileInput/FileInput.d.ts +2 -0
  179. package/dist/components/fields/FileInput/FileInput.js +1 -1
  180. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  181. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  182. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  183. package/dist/components/fields/Input/Input.js +1 -1
  184. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  185. package/dist/components/fields/ListBox/ListBox.js +1 -1
  186. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  187. package/dist/components/fields/ListBoxPopover/index.d.ts +0 -1
  188. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  189. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  190. package/dist/components/fields/NumberInput/NumberInput.d.ts +1 -1
  191. package/dist/components/fields/NumberInput/NumberInput.js +3 -3
  192. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  193. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  194. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  195. package/dist/components/fields/Picker/Picker.js +1 -1
  196. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  197. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +1 -1
  198. package/dist/components/fields/RadioGroup/RadioGroup.js +3 -3
  199. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  200. package/dist/components/fields/RadioGroup/context.js +1 -1
  201. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  202. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  203. package/dist/components/fields/Select/Select.js +1 -1
  204. package/dist/components/fields/Slider/Gradation.js +1 -1
  205. package/dist/components/fields/Slider/HueSlider.js +1 -1
  206. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  207. package/dist/components/fields/Slider/Slider.js +1 -1
  208. package/dist/components/fields/Slider/SliderBase.js +2 -2
  209. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  210. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  211. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  212. package/dist/components/fields/Slider/elements.js +1 -1
  213. package/dist/components/fields/Slider/index.js +1 -1
  214. package/dist/components/fields/Slider/types.d.ts +1 -1
  215. package/dist/components/fields/Switch/Switch.d.ts +2 -0
  216. package/dist/components/fields/Switch/Switch.js +1 -1
  217. package/dist/components/fields/Switch/Switch.js.map +1 -1
  218. package/dist/components/fields/TextArea/TextArea.js +1 -1
  219. package/dist/components/fields/TextInput/TextInput.js +1 -1
  220. package/dist/components/fields/TextInput/TextInputBase.d.ts +1 -1
  221. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  222. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  223. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  224. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  225. package/dist/components/fields/TriggerActions.js +1 -1
  226. package/dist/components/fields/color/ColorPanel.js +1 -1
  227. package/dist/components/fields/color/channels.js +1 -1
  228. package/dist/components/fields/color/color.js +1 -1
  229. package/dist/components/fields/color/context.js +1 -1
  230. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  231. package/dist/components/form/Form/Field.js +1 -1
  232. package/dist/components/form/Form/Form.d.ts +32 -2
  233. package/dist/components/form/Form/Form.js +78 -16
  234. package/dist/components/form/Form/Form.js.map +1 -1
  235. package/dist/components/form/Form/ModernFormRoot.js +20 -0
  236. package/dist/components/form/Form/ModernFormRoot.js.map +1 -0
  237. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  238. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  239. package/dist/components/form/Form/SubmitError.js +1 -1
  240. package/dist/components/form/Form/backend.d.ts +21 -0
  241. package/dist/components/form/Form/backend.js +31 -0
  242. package/dist/components/form/Form/backend.js.map +1 -0
  243. package/dist/components/form/Form/index.d.ts +2 -4
  244. package/dist/components/form/Form/index.js +2 -2
  245. package/dist/components/form/Form/index.js.map +1 -1
  246. package/dist/components/form/Form/use-field/use-field-props.d.ts +12 -1
  247. package/dist/components/form/Form/use-field/use-field-props.js +55 -44
  248. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  249. package/dist/components/form/Form/use-field/use-field.d.ts +6 -0
  250. package/dist/components/form/Form/use-field/use-field.js +45 -21
  251. package/dist/components/form/Form/use-field/use-field.js.map +1 -1
  252. package/dist/components/form/Form/use-form.d.ts +4 -1
  253. package/dist/components/form/Form/use-form.js +5 -1
  254. package/dist/components/form/Form/use-form.js.map +1 -1
  255. package/dist/components/form/Form/validation.js +1 -1
  256. package/dist/components/form/Label.js +1 -1
  257. package/dist/components/form/index.d.ts +1 -1
  258. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  259. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  260. package/dist/components/form/validation/use-validation-props.js +1 -1
  261. package/dist/components/form/wrapper.js +1 -1
  262. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  263. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  264. package/dist/components/layout/Board/Board.js +1 -1
  265. package/dist/components/layout/Board/BoardProvider.js +1 -1
  266. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  267. package/dist/components/layout/Board/Widget.js +1 -1
  268. package/dist/components/layout/Board/WidgetHost.js +1 -1
  269. package/dist/components/layout/Board/board-context.js +1 -1
  270. package/dist/components/layout/Board/board-store.js +1 -1
  271. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  272. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  273. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  274. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  275. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  276. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  277. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  278. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  279. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  280. package/dist/components/layout/Board/index.js +1 -1
  281. package/dist/components/layout/Board/responsive-utils.js +1 -1
  282. package/dist/components/layout/Board/use-board-layout.js +1 -1
  283. package/dist/components/layout/Board/use-board-registry.js +1 -1
  284. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  285. package/dist/components/layout/Board/use-board-selection.js +1 -1
  286. package/dist/components/layout/Flex.js +1 -1
  287. package/dist/components/layout/Flow.js +1 -1
  288. package/dist/components/layout/Grid.js +1 -1
  289. package/dist/components/layout/Panel.js +1 -1
  290. package/dist/components/layout/Prefix.js +1 -1
  291. package/dist/components/layout/ResizablePanel.js +1 -1
  292. package/dist/components/layout/Space.js +1 -1
  293. package/dist/components/layout/Suffix.js +1 -1
  294. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  295. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  296. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  297. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  298. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  299. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  300. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  301. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  302. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  303. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  304. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  305. package/dist/components/navigation/Tabs/styled.js +1 -1
  306. package/dist/components/navigation/Tabs/types.js +1 -1
  307. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  308. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  309. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  310. package/dist/components/other/Calendar/Calendar.js +1 -1
  311. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  312. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  313. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  314. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  315. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  316. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  317. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  318. package/dist/components/other/Calendar/styled.js +1 -1
  319. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  320. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  321. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  322. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  323. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  324. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  325. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  326. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  327. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  328. package/dist/components/overlays/Dialog/context.js +1 -1
  329. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  330. package/dist/components/overlays/Modal/Modal.d.ts +1 -2
  331. package/dist/components/overlays/Modal/Modal.js +1 -1
  332. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  333. package/dist/components/overlays/Modal/Overlay.d.ts +0 -1
  334. package/dist/components/overlays/Modal/Overlay.js +1 -1
  335. package/dist/components/overlays/Modal/Popover.js +1 -1
  336. package/dist/components/overlays/Modal/Tray.js +1 -1
  337. package/dist/components/overlays/Modal/Underlay.js +1 -1
  338. package/dist/components/overlays/Modal/types.d.ts +0 -1
  339. package/dist/components/overlays/Notifications/Notification.js +1 -1
  340. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  341. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  342. package/dist/components/overlays/Notifications/NotificationContext.d.ts +0 -2
  343. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  344. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  345. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  346. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  347. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  348. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  349. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  350. package/dist/components/overlays/Notifications/index.js +1 -1
  351. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  352. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  353. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  354. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  355. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  356. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  357. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  358. package/dist/components/overlays/Toast/index.js +1 -1
  359. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  360. package/dist/components/overlays/Toast/useToast.js +1 -1
  361. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  362. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  363. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  364. package/dist/components/overlays/Tooltip/context.js +1 -1
  365. package/dist/components/portal/Portal.js +1 -1
  366. package/dist/components/portal/PortalProvider.js +1 -1
  367. package/dist/components/portal/index.d.ts +0 -1
  368. package/dist/components/portal/usePortal.js +1 -1
  369. package/dist/components/shared/DraggableCollection.js +1 -1
  370. package/dist/components/shared/InvalidIcon.js +1 -1
  371. package/dist/components/shared/ValidIcon.js +1 -1
  372. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  373. package/dist/components/status/Spin/Cube.js +1 -1
  374. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  375. package/dist/components/status/Spin/Spin.js +1 -1
  376. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  377. package/dist/data/item-themes.js +1 -1
  378. package/dist/data/themes.js +1 -1
  379. package/dist/eslint-plugin/defaults.generated.js +1 -1
  380. package/dist/eslint-plugin/index.js +1 -1
  381. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  382. package/dist/i18n/I18nProvider.js +1 -1
  383. package/dist/i18n/createFormatter.js +1 -1
  384. package/dist/i18n/index.js +1 -1
  385. package/dist/i18n/instance.js +1 -1
  386. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  387. package/dist/i18n/locales/en-US/uikit.js +1 -1
  388. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  389. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  390. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  391. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  392. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  393. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  394. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  395. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  396. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  397. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  398. package/dist/i18n/locales.js +1 -1
  399. package/dist/i18n/useFormatter.js +1 -1
  400. package/dist/i18n/useI18n.js +1 -1
  401. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  402. package/dist/icons/AdjustmentsIcon.js +1 -1
  403. package/dist/icons/AiIcon.js +1 -1
  404. package/dist/icons/AreaChartIcon.js +1 -1
  405. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  406. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  407. package/dist/icons/BackwardIcon.js +1 -1
  408. package/dist/icons/BarChartIcon.js +1 -1
  409. package/dist/icons/BellFilledIcon.js +1 -1
  410. package/dist/icons/BellIcon.js +1 -1
  411. package/dist/icons/BooleanIcon.js +1 -1
  412. package/dist/icons/CalendarEditIcon.js +1 -1
  413. package/dist/icons/CalendarIcon.js +1 -1
  414. package/dist/icons/CaretDownIcon.js +1 -1
  415. package/dist/icons/CaretUpIcon.js +1 -1
  416. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  417. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  418. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  419. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  420. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  421. package/dist/icons/ChartBarLineIcon.js +1 -1
  422. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  423. package/dist/icons/ChartBarStackedIcon.js +1 -1
  424. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  425. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  426. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  427. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  428. package/dist/icons/ChartBubbleIcon.js +1 -1
  429. package/dist/icons/ChartDonut2Icon.js +1 -1
  430. package/dist/icons/ChartFunnelIcon.js +1 -1
  431. package/dist/icons/ChartHeatmapIcon.js +1 -1
  432. package/dist/icons/ChartKPIIcon.js +1 -1
  433. package/dist/icons/ChartPie2Icon.js +1 -1
  434. package/dist/icons/ChartScatterIcon.js +1 -1
  435. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  436. package/dist/icons/CheckCircleIcon.js +1 -1
  437. package/dist/icons/CheckIcon.js +1 -1
  438. package/dist/icons/CircleFilledIcon.js +1 -1
  439. package/dist/icons/ClearIcon.js +1 -1
  440. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  441. package/dist/icons/CloseCircleIcon.js +1 -1
  442. package/dist/icons/CloseIcon.js +1 -1
  443. package/dist/icons/CodeIcon.js +1 -1
  444. package/dist/icons/ColumnTotalIcon.js +1 -1
  445. package/dist/icons/CopyIcon.js +1 -1
  446. package/dist/icons/CountIcon.js +1 -1
  447. package/dist/icons/CubeIcon.js +1 -1
  448. package/dist/icons/CubePauseIcon.js +1 -1
  449. package/dist/icons/CubePlayIcon.js +1 -1
  450. package/dist/icons/CurrencyDollarIcon.js +1 -1
  451. package/dist/icons/DangerIcon.js +1 -1
  452. package/dist/icons/DashboardIcon.js +1 -1
  453. package/dist/icons/DatabaseIcon.js +1 -1
  454. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  455. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  456. package/dist/icons/DirectionIcon.js +1 -1
  457. package/dist/icons/DonutIcon.js +1 -1
  458. package/dist/icons/DownIcon.js +1 -1
  459. package/dist/icons/EditIcon.js +1 -1
  460. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  461. package/dist/icons/ExclamationCircleIcon.js +1 -1
  462. package/dist/icons/ExclamationIcon.js +1 -1
  463. package/dist/icons/EyeIcon.js +1 -1
  464. package/dist/icons/EyeInvisibleIcon.js +1 -1
  465. package/dist/icons/FilterIcon.js +1 -1
  466. package/dist/icons/FolderFilledIcon.js +1 -1
  467. package/dist/icons/FolderIcon.js +1 -1
  468. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  469. package/dist/icons/FolderOpenIcon.js +1 -1
  470. package/dist/icons/ForwardIcon.js +1 -1
  471. package/dist/icons/GripVerticalIcon.js +1 -1
  472. package/dist/icons/HierarchyIcon.js +1 -1
  473. package/dist/icons/HierarchyOpenIcon.js +1 -1
  474. package/dist/icons/Icon.js +1 -1
  475. package/dist/icons/InfoCircleIcon.js +1 -1
  476. package/dist/icons/InfoIcon.js +1 -1
  477. package/dist/icons/KeyIcon.js +1 -1
  478. package/dist/icons/LeftIcon.js +1 -1
  479. package/dist/icons/LineChartIcon.js +1 -1
  480. package/dist/icons/LoadingIcon.js +1 -1
  481. package/dist/icons/LockFilledIcon.js +1 -1
  482. package/dist/icons/LockIcon.js +1 -1
  483. package/dist/icons/MoreIcon.js +1 -1
  484. package/dist/icons/NotAllowedIcon.js +1 -1
  485. package/dist/icons/Number123Icon.js +1 -1
  486. package/dist/icons/NumberIcon.js +1 -1
  487. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  488. package/dist/icons/PauseCircleIcon.js +1 -1
  489. package/dist/icons/PauseIcon.js +1 -1
  490. package/dist/icons/PercentageIcon.js +1 -1
  491. package/dist/icons/PieChartIcon.js +1 -1
  492. package/dist/icons/PipetteIcon.js +1 -1
  493. package/dist/icons/PlayCircleIcon.js +1 -1
  494. package/dist/icons/PlayIcon.js +1 -1
  495. package/dist/icons/PlusIcon.js +1 -1
  496. package/dist/icons/ProgressBarIcon.js +1 -1
  497. package/dist/icons/ReloadIcon.js +1 -1
  498. package/dist/icons/ReportIcon.js +1 -1
  499. package/dist/icons/ReturnIcon.js +1 -1
  500. package/dist/icons/RightIcon.js +1 -1
  501. package/dist/icons/RowTotalsIcon.js +1 -1
  502. package/dist/icons/SchemeIcon.js +1 -1
  503. package/dist/icons/SearchIcon.js +1 -1
  504. package/dist/icons/SemanticQueryIcon.js +1 -1
  505. package/dist/icons/SettingsIcon.js +1 -1
  506. package/dist/icons/ShieldFilledIcon.js +1 -1
  507. package/dist/icons/ShieldIcon.js +1 -1
  508. package/dist/icons/SlashIcon.js +1 -1
  509. package/dist/icons/SparklesIcon.js +1 -1
  510. package/dist/icons/SqlIcon.js +1 -1
  511. package/dist/icons/StatsIcon.js +1 -1
  512. package/dist/icons/StopIcon.js +1 -1
  513. package/dist/icons/StringIcon.js +1 -1
  514. package/dist/icons/SubtotalsIcon.js +1 -1
  515. package/dist/icons/SwitchIcon.js +1 -1
  516. package/dist/icons/TableIcon.js +1 -1
  517. package/dist/icons/ThumbsDownIcon.js +1 -1
  518. package/dist/icons/ThumbsUpIcon.js +1 -1
  519. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  520. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  521. package/dist/icons/ThunderboltIcon.js +1 -1
  522. package/dist/icons/TimeIcon.js +1 -1
  523. package/dist/icons/TrashIcon.js +1 -1
  524. package/dist/icons/UnlockIcon.js +1 -1
  525. package/dist/icons/UpIcon.js +1 -1
  526. package/dist/icons/UserGroupIcon.js +1 -1
  527. package/dist/icons/UserIcon.js +1 -1
  528. package/dist/icons/UserLockIcon.js +1 -1
  529. package/dist/icons/ViewIcon.js +1 -1
  530. package/dist/icons/WarningFilledIcon.js +1 -1
  531. package/dist/icons/WarningIcon.js +1 -1
  532. package/dist/icons/wrap-icon.js +1 -1
  533. package/dist/index.d.ts +2 -2
  534. package/dist/index.js +3 -3
  535. package/dist/probe/canonicalize.js +1 -1
  536. package/dist/probe/css.js +1 -1
  537. package/dist/probe/index.js +1 -1
  538. package/dist/provider.js +1 -1
  539. package/dist/providers/TrackingProvider.js +1 -1
  540. package/dist/providers/navigationAdapter.default.js +1 -1
  541. package/dist/tokens/all-tokens.js +1 -1
  542. package/dist/tokens/base.js +1 -1
  543. package/dist/tokens/color-seed.js +1 -1
  544. package/dist/tokens/color-theme.js +1 -1
  545. package/dist/tokens/colors.js +1 -1
  546. package/dist/tokens/layout.js +1 -1
  547. package/dist/tokens/lazy-styles.js +1 -1
  548. package/dist/tokens/legacy-color.js +1 -1
  549. package/dist/tokens/palette-config.js +1 -1
  550. package/dist/tokens/palette.js +1 -1
  551. package/dist/tokens/resolve.js +1 -1
  552. package/dist/tokens/shadows.js +1 -1
  553. package/dist/tokens/sizes.js +1 -1
  554. package/dist/tokens/spacing.js +1 -1
  555. package/dist/tokens/typography.js +1 -1
  556. package/dist/utils/ResizeSensor.js +1 -1
  557. package/dist/utils/colors.js +1 -1
  558. package/dist/utils/dotize.js +1 -1
  559. package/dist/utils/is-dev-env.js +1 -1
  560. package/dist/utils/modules.js +1 -1
  561. package/dist/utils/promise.js +1 -1
  562. package/dist/utils/raf.js +1 -1
  563. package/dist/utils/random.js +1 -1
  564. package/dist/utils/range.js +1 -1
  565. package/dist/utils/react/RenderCache.js +1 -1
  566. package/dist/utils/react/Slots.js +1 -1
  567. package/dist/utils/react/chain.js +1 -1
  568. package/dist/utils/react/disabledProps.js +1 -1
  569. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  570. package/dist/utils/react/index.js +1 -1
  571. package/dist/utils/react/interactions.js +1 -1
  572. package/dist/utils/react/isTextOnly.js +1 -1
  573. package/dist/utils/react/mapProps.js +1 -1
  574. package/dist/utils/react/mergeProps.js +1 -1
  575. package/dist/utils/react/nullableValue.js +1 -1
  576. package/dist/utils/react/resolveIcon.js +1 -1
  577. package/dist/utils/react/sharedStore.js +1 -1
  578. package/dist/utils/react/useBufferedValue.js +1 -1
  579. package/dist/utils/react/useCombinedRefs.js +1 -1
  580. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  581. package/dist/utils/react/useEventBus.js +1 -1
  582. package/dist/utils/react/useId.js +1 -1
  583. package/dist/utils/react/useIsDarwin.js +1 -1
  584. package/dist/utils/react/useKeySymbols.js +1 -1
  585. package/dist/utils/react/useLayoutEffect.d.ts +1 -1
  586. package/dist/utils/react/useLayoutEffect.js +1 -1
  587. package/dist/utils/react/useLocalStorage.js +1 -1
  588. package/dist/utils/react/useMergeStyles.js +1 -1
  589. package/dist/utils/react/usePopoverSync.js +1 -1
  590. package/dist/utils/react/useQaProps.js +1 -1
  591. package/dist/utils/react/useScheme.js +1 -1
  592. package/dist/utils/react/useViewportSize.js +1 -1
  593. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  594. package/dist/utils/selection.js +1 -1
  595. package/dist/utils/styles.js +1 -1
  596. package/dist/utils/tree.js +1 -1
  597. package/dist/utils/warnings.js +1 -1
  598. package/dist/version.js +2 -2
  599. package/package.json +4 -1
  600. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +0 -2
  601. package/dist/components/portal/PortalProvider.d.ts +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","names":["useId","useFocus","mergeProps","Text"],"sources":["../../../../src/components/fields/Switch/Switch.tsx"],"sourcesContent":["import { useFocusableRef } from '@react-spectrum/utils';\nimport {\n BaseProps,\n BLOCK_STYLES,\n BlockStyleProps,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef, useRef } from 'react';\nimport { AriaSwitchProps, useHover, useSwitch } from 'react-aria';\nimport { useToggleState } from 'react-stately';\n\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { FieldBaseProps, ToggleSelectionProps } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport { useFocus } from '../../../utils/react/interactions';\nimport {\n castNullableIsSelected,\n WithNullableSelected,\n} from '../../../utils/react/nullableValue';\nimport { useId } from '../../../utils/react/useId';\nimport { extractStyles } from '../../../utils/styles';\nimport { Text } from '../../content/Text';\nimport { getValidationMods, useFieldProps, wrapWithField } from '../../form';\nimport { HiddenInput } from '../../HiddenInput';\n\nconst SwitchWrapperElement = tasty({\n as: 'label',\n styles: {\n display: 'flex',\n position: 'relative',\n placeItems: {\n '': 'center stretch',\n 'side-label': 'baseline stretch',\n },\n gap: '1x',\n width: 'max max-content',\n color: '#dark-02',\n },\n});\n\nconst SwitchElement = tasty({\n qa: 'Switch',\n styles: {\n boxSizing: 'border-box',\n position: 'relative',\n verticalAlign: 'baseline',\n placeSelf: 'center',\n radius: 'round',\n fill: {\n '': '#surface',\n checked: '#primary',\n 'invalid & checked': '#danger',\n 'valid & checked': '#success',\n disabled: '#border.5',\n 'disabled & checked': '#border',\n },\n color: {\n '': '#dark-03',\n checked: '#white',\n },\n border: {\n '': '#dark-05',\n checked: '#primary-text',\n disabled: '#dark-05.5',\n invalid: '#danger',\n valid: '#success',\n },\n width: {\n '': '5x 5x',\n 'size=medium': '4x 4x',\n 'size=small': '3x 3x',\n },\n height: {\n '': '3x 3x',\n 'size=medium': '2.5x 2.5x',\n 'size=small': '2x 2x',\n },\n outline: {\n '': '#primary-text.0',\n focused: '1bw #primary-text',\n },\n outlineOffset: 1,\n transition: 'theme',\n cursor: '$pointer',\n\n Thumb: {\n position: 'absolute',\n width: {\n '': '2x 2x',\n 'size=medium': '1.5x 1.5x',\n 'size=small': '1.25x 1.25x',\n },\n height: {\n '': '2x 2x',\n 'size=medium': '1.5x 1.5x',\n 'size=small': '1.25x 1.25x',\n },\n radius: 'round',\n fill: {\n '': '#current',\n disabled: '#current.5',\n 'disabled & checked': '#white.8',\n },\n top: {\n '': '.375x',\n 'size=medium': '.375x',\n 'size=small': '.25x',\n },\n left: {\n '': '.375x',\n 'size=medium': '.375x',\n 'size=small': '.25x',\n checked: '2.25x',\n 'checked & size=medium': '1.75x',\n 'checked & size=small': '1.25x',\n },\n transition: 'left, theme',\n cursor: '$pointer',\n },\n },\n});\n\nconst PROP_STYLES = [...OUTER_STYLES, ...BLOCK_STYLES];\n\nexport interface CubeSwitchProps\n extends BaseProps,\n OuterStyleProps,\n BlockStyleProps,\n FieldBaseProps,\n ToggleSelectionProps,\n AriaSwitchProps {\n inputStyles?: Styles;\n isLoading?: boolean;\n size?: 'large' | 'medium' | 'small';\n}\n\nfunction Switch(props: WithNullableSelected<CubeSwitchProps>, ref) {\n props = castNullableIsSelected(props);\n props = useFieldProps(props, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n isSelected: value != null ? value : false,\n isIndeterminate: false,\n onChange: onChange,\n }),\n });\n\n let {\n qa,\n isDisabled = false,\n children,\n label,\n insideForm,\n isLoading,\n labelPosition,\n inputStyles,\n isInvalid,\n isValid,\n size = 'medium',\n form,\n } = props;\n\n const id = useId(props.id);\n\n let styles = extractStyles(props, PROP_STYLES);\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 let { inputProps } = useSwitch(props, useToggleState(props), inputRef);\n\n const mods = {\n checked: inputProps.checked,\n disabled: isDisabled,\n hovered: isHovered,\n focused: isFocused,\n ...getValidationMods({ isInvalid, isValid }),\n 'inside-form': insideForm,\n 'side-label': labelPosition === 'side',\n };\n\n const switchField = (\n <SwitchWrapperElement\n qa=\"SwitchWrapper\"\n mods={mods}\n data-size={size}\n styles={styles}\n {...hoverProps}\n >\n <HiddenInput\n qa={qa || 'Switch'}\n data-input-type=\"switch\"\n {...mergeProps(inputProps, focusProps)}\n ref={inputRef}\n id={id}\n />\n <SwitchElement mods={mods} data-size={size} styles={inputStyles}>\n <div data-element=\"Thumb\" aria-hidden=\"true\" />\n </SwitchElement>\n {children ? <Text nowrap>{children}</Text> : null}\n {isLoading ? (\n <>\n {label ? <>&nbsp;</> : null}\n <LoadingIcon />\n </>\n ) : null}\n </SwitchWrapperElement>\n );\n\n return wrapWithField(switchField, domRef, {\n ...props,\n id,\n labelProps: {\n ...props.labelProps,\n for: id,\n },\n children: null,\n inputStyles,\n });\n}\n\n/**\n * Switches allow users to turn an individual option on or off.\n * They are usually used to activate or deactivate a specific setting.\n */\nlet _Switch = forwardRef(Switch);\n\n(_Switch as any).cubeInputType = 'Checkbox';\n_Switch.displayName = 'Switch';\n\nexport { _Switch as Switch };\nexport type { AriaSwitchProps };\nexport { useSwitch };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Switch.js","names":["useId","useFocus","mergeProps","Text"],"sources":["../../../../src/components/fields/Switch/Switch.tsx"],"sourcesContent":["import { useFocusableRef } from '@react-spectrum/utils';\nimport {\n BaseProps,\n BLOCK_STYLES,\n BlockStyleProps,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport { forwardRef, useRef } from 'react';\nimport { AriaSwitchProps, useHover, useSwitch } from 'react-aria';\nimport { useToggleState } from 'react-stately';\n\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { FieldBaseProps, ToggleSelectionProps } from '../../../shared';\nimport { mergeProps } from '../../../utils/react';\nimport { useFocus } from '../../../utils/react/interactions';\nimport {\n castNullableIsSelected,\n WithNullableSelected,\n} from '../../../utils/react/nullableValue';\nimport { useId } from '../../../utils/react/useId';\nimport { extractStyles } from '../../../utils/styles';\nimport { Text } from '../../content/Text';\nimport { getValidationMods, useFieldProps, wrapWithField } from '../../form';\nimport { HiddenInput } from '../../HiddenInput';\n\nconst SwitchWrapperElement = tasty({\n as: 'label',\n styles: {\n display: 'flex',\n position: 'relative',\n placeItems: {\n '': 'center stretch',\n 'side-label': 'baseline stretch',\n },\n gap: '1x',\n width: 'max max-content',\n color: '#dark-02',\n },\n});\n\nconst SwitchElement = tasty({\n qa: 'Switch',\n styles: {\n boxSizing: 'border-box',\n position: 'relative',\n verticalAlign: 'baseline',\n placeSelf: 'center',\n radius: 'round',\n fill: {\n '': '#surface',\n checked: '#primary',\n 'invalid & checked': '#danger',\n 'valid & checked': '#success',\n disabled: '#border.5',\n 'disabled & checked': '#border',\n },\n color: {\n '': '#dark-03',\n checked: '#white',\n },\n border: {\n '': '#dark-05',\n checked: '#primary-text',\n disabled: '#dark-05.5',\n invalid: '#danger',\n valid: '#success',\n },\n width: {\n '': '5x 5x',\n 'size=medium': '4x 4x',\n 'size=small': '3x 3x',\n },\n height: {\n '': '3x 3x',\n 'size=medium': '2.5x 2.5x',\n 'size=small': '2x 2x',\n },\n outline: {\n '': '#primary-text.0',\n focused: '1bw #primary-text',\n },\n outlineOffset: 1,\n transition: 'theme',\n cursor: '$pointer',\n\n Thumb: {\n position: 'absolute',\n width: {\n '': '2x 2x',\n 'size=medium': '1.5x 1.5x',\n 'size=small': '1.25x 1.25x',\n },\n height: {\n '': '2x 2x',\n 'size=medium': '1.5x 1.5x',\n 'size=small': '1.25x 1.25x',\n },\n radius: 'round',\n fill: {\n '': '#current',\n disabled: '#current.5',\n 'disabled & checked': '#white.8',\n },\n top: {\n '': '.375x',\n 'size=medium': '.375x',\n 'size=small': '.25x',\n },\n left: {\n '': '.375x',\n 'size=medium': '.375x',\n 'size=small': '.25x',\n checked: '2.25x',\n 'checked & size=medium': '1.75x',\n 'checked & size=small': '1.25x',\n },\n transition: 'left, theme',\n cursor: '$pointer',\n },\n },\n});\n\nconst PROP_STYLES = [...OUTER_STYLES, ...BLOCK_STYLES];\n\nexport interface CubeSwitchProps\n extends BaseProps,\n OuterStyleProps,\n BlockStyleProps,\n FieldBaseProps,\n ToggleSelectionProps,\n AriaSwitchProps {\n /** The form instance; redeclared for the same reason as in `Checkbox`. */\n form?: FieldBaseProps['form'];\n inputStyles?: Styles;\n isLoading?: boolean;\n size?: 'large' | 'medium' | 'small';\n}\n\nfunction Switch(props: WithNullableSelected<CubeSwitchProps>, ref) {\n props = castNullableIsSelected(props);\n props = useFieldProps(props, {\n defaultValidationTrigger: 'onChange',\n valuePropsMapper: ({ value, onChange }) => ({\n isSelected: value != null ? value : false,\n isIndeterminate: false,\n onChange: onChange,\n }),\n });\n\n let {\n qa,\n isDisabled = false,\n children,\n label,\n insideForm,\n isLoading,\n labelPosition,\n inputStyles,\n isInvalid,\n isValid,\n size = 'medium',\n form,\n } = props;\n\n const id = useId(props.id);\n\n let styles = extractStyles(props, PROP_STYLES);\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 let { inputProps } = useSwitch(props, useToggleState(props), inputRef);\n\n const mods = {\n checked: inputProps.checked,\n disabled: isDisabled,\n hovered: isHovered,\n focused: isFocused,\n ...getValidationMods({ isInvalid, isValid }),\n 'inside-form': insideForm,\n 'side-label': labelPosition === 'side',\n };\n\n const switchField = (\n <SwitchWrapperElement\n qa=\"SwitchWrapper\"\n mods={mods}\n data-size={size}\n styles={styles}\n {...hoverProps}\n >\n <HiddenInput\n qa={qa || 'Switch'}\n data-input-type=\"switch\"\n {...mergeProps(inputProps, focusProps)}\n ref={inputRef}\n id={id}\n />\n <SwitchElement mods={mods} data-size={size} styles={inputStyles}>\n <div data-element=\"Thumb\" aria-hidden=\"true\" />\n </SwitchElement>\n {children ? <Text nowrap>{children}</Text> : null}\n {isLoading ? (\n <>\n {label ? <>&nbsp;</> : null}\n <LoadingIcon />\n </>\n ) : null}\n </SwitchWrapperElement>\n );\n\n return wrapWithField(switchField, domRef, {\n ...props,\n id,\n labelProps: {\n ...props.labelProps,\n for: id,\n },\n children: null,\n inputStyles,\n });\n}\n\n/**\n * Switches allow users to turn an individual option on or off.\n * They are usually used to activate or deactivate a specific setting.\n */\nlet _Switch = forwardRef(Switch);\n\n(_Switch as any).cubeInputType = 'Checkbox';\n_Switch.displayName = 'Switch';\n\nexport { _Switch as Switch };\nexport type { AriaSwitchProps };\nexport { useSwitch };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { chain } from "../../../utils/react/chain.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { chain } from "../../../utils/react/chain.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
@@ -10,7 +10,7 @@ import { AriaNumberFieldProps, AriaTextFieldProps as AriaTextFieldProps$1 } from
10
10
  //#region src/components/fields/TextInput/TextInputBase.d.ts
11
11
  declare const INPUT_WRAPPER_STYLES: Styles;
12
12
  declare const DEFAULT_INPUT_STYLES: Styles;
13
- interface CubeTextInputBaseProps extends BaseProps, OuterStyleProps, BlockStyleProps, BaseStyleProps, ColorStyleProps, Omit<AriaTextFieldProps$1, 'validate'>, FieldBaseProps {
13
+ interface CubeTextInputBaseProps extends BaseProps, OuterStyleProps, BlockStyleProps, BaseStyleProps, ColorStyleProps, Omit<AriaTextFieldProps$1, 'validate' | 'form'>, FieldBaseProps {
14
14
  validate?: AriaTextFieldProps$1['validate'] | AriaNumberFieldProps['validate'];
15
15
  /** Left input icon */
16
16
  icon?: ReactElement | null;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
@@ -1 +1 @@
1
- {"version":3,"file":"TextInputBase.js","names":["useFocus","mergeProps"],"sources":["../../../../src/components/fields/TextInput/TextInputBase.tsx"],"sourcesContent":["import { createFocusableRef } from '@react-spectrum/utils';\nimport {\n BASE_STYLES,\n BaseProps,\n BaseStyleProps,\n BLOCK_STYLES,\n BlockStyleProps,\n COLOR_STYLES,\n ColorStyleProps,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n forwardRef,\n ReactElement,\n ReactNode,\n RefObject,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\nimport { AriaNumberFieldProps, AriaTextFieldProps, useHover } from 'react-aria';\n\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps, useCombinedRefs } from '../../../utils/react';\nimport { useFocus } from '../../../utils/react/interactions';\nimport { extractStyles } from '../../../utils/styles';\nimport {\n getValidationMods,\n hasValidationIndicator,\n ValidationIndicator,\n wrapWithField,\n} from '../../form';\n\nimport type { Props } from '../../../props';\n\nconst ADD_STYLES = {\n $: '>',\n display: 'grid',\n placeContent: 'stretch',\n placeItems: 'center',\n gridRows: '1sf',\n flow: 'column',\n gap: 0,\n cursor: 'inherit',\n opacity: {\n '': 1,\n disabled: '$disabled-opacity',\n },\n};\n\nexport const INPUT_WRAPPER_STYLES: Styles = {\n display: 'grid',\n flow: 'row',\n position: 'relative',\n gridColumns: {\n '': '1sf',\n prefix: 'max-content 1sf',\n suffix: '1sf max-content',\n 'prefix & suffix': 'max-content 1sf max-content',\n },\n gridRows: '1sf',\n placeItems: 'stretch',\n fill: {\n '': '#surface',\n disabled: '#disabled-surface',\n },\n border: {\n '': true,\n valid: '#success-text.50',\n invalid: '#danger-text.50',\n focused: '#primary-text',\n 'valid & focused': '#success-text',\n 'invalid & focused': '#danger-text',\n disabled: true,\n },\n preset: 't3',\n radius: true,\n cursor: 'text',\n color: {\n '': '#dark-02',\n focused: '#dark-02',\n invalid: '#danger-text',\n disabled: '#dark.30',\n },\n zIndex: {\n '': 'initial',\n focused: 1,\n },\n boxSizing: 'border-box',\n transition: 'theme',\n backgroundClip: 'content-box',\n height: {\n '': '$size $size',\n multiline: 'min $size',\n },\n\n $size: {\n '': '$size-md',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n },\n\n Prefix: ADD_STYLES,\n\n Suffix: ADD_STYLES,\n\n State: {\n $: '> Suffix >',\n display: 'flex',\n },\n\n InputIcon: {\n display: 'grid',\n placeItems: 'center',\n width: 'min $size-sm',\n color: 'inherit',\n fontSize: '$icon-size',\n },\n\n ValidationIcon: {\n $: '> Suffix > State >',\n display: 'grid',\n placeItems: 'center',\n width: {\n '': 'min $size-sm',\n suffix: 'min $size-xs',\n },\n fontSize: '$icon-size',\n },\n};\n\nconst InputWrapperElement = tasty({\n qa: 'InputWrapper',\n styles: INPUT_WRAPPER_STYLES,\n});\n\nconst PROP_STYLES = [\n ...BASE_STYLES,\n ...OUTER_STYLES,\n ...BLOCK_STYLES,\n ...COLOR_STYLES,\n];\n\nexport const DEFAULT_INPUT_STYLES: Styles = {\n recipe: 'reset input / input-autofill',\n placeSelf: 'stretch',\n width: 'initial 100% 100%',\n transition: 'theme',\n radius: true,\n padding: '$vertical-padding $right-padding $vertical-padding $left-padding',\n textAlign: 'left',\n preset: 't3',\n flexGrow: 1,\n margin: {\n '': 0,\n multiline: '((($size-md - 1lh) / 2) - 1bw) 0',\n 'multiline & size=small': '((($size-sm - 1lh) / 2) - 1bw) 0',\n 'multiline & size=large': '((($size-lg - 1lh) / 2) - 1bw) 0',\n },\n resize: 'none',\n userSelect: 'auto',\n\n Placeholder: {\n $: '&::placeholder',\n recipe: 'input-placeholder',\n },\n '&::-webkit-search-cancel-button': {\n recipe: 'input-search-cancel-button',\n },\n\n '$vertical-padding': 0,\n '$left-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n prefix: '0',\n },\n '$right-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n suffix: '0',\n },\n};\n\nconst InputElement = tasty({ qa: 'Input', styles: DEFAULT_INPUT_STYLES });\n\nexport interface CubeTextInputBaseProps\n extends BaseProps,\n OuterStyleProps,\n BlockStyleProps,\n BaseStyleProps,\n ColorStyleProps,\n Omit<AriaTextFieldProps, 'validate'>,\n FieldBaseProps {\n validate?: AriaTextFieldProps['validate'] | AriaNumberFieldProps['validate'];\n /** Left input icon */\n icon?: ReactElement | null;\n /** Input decoration before the main input */\n prefix?: ReactNode;\n /** Input decoration after the main input */\n suffix?: ReactNode;\n /** Suffix position goes before or after the validation and loading statuses */\n suffixPosition?: 'before' | 'after';\n /** Whether the input is multiline */\n multiLine?: boolean;\n /** Whether the input should have autofocus */\n autoFocus?: boolean;\n /** Direct input props */\n inputProps?: Props;\n /** Direct input wrapper props */\n wrapperProps?: Props;\n /** The input ref */\n inputRef?: RefObject<HTMLInputElement | HTMLTextAreaElement>;\n /** The wrapper ref */\n wrapperRef?: RefObject<HTMLDivElement>;\n /** Whether the input has the loading status */\n isLoading?: boolean;\n /** The loading status indicator */\n loadingIndicator?: ReactNode;\n /** Style map for the input */\n inputStyles?: Styles;\n /** The number of rows for the input. Only applies to textarea. */\n rows?: number;\n /** The resize CSS property sets whether an element is resizable, and if so, in which directions. */\n resize?: Styles['resize'];\n /** The size of the input */\n size?: 'small' | 'medium' | 'large' | (string & {});\n /**\n * What kind of autofill the browser may offer for the input, as the HTML `autocomplete` token\n * (`email`, `current-password`, `off`, …). See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete).\n */\n autoComplete?: string;\n /**\n * @deprecated Use `autoComplete` instead. Kept as an alias so existing callers keep working;\n * `autoComplete` wins when both are set.\n */\n autocomplete?: string;\n}\n\n/**\n * Mixed into the fields that actually buffer their value — `TextInput`, `TextArea`,\n * `PasswordInput`, `SearchInput` — rather than declared on `CubeTextInputBaseProps`. Every field\n * built on that base would otherwise inherit the prop, including `NumberInput` and\n * `CommandTextArea`, which keep their own text and ignore it: a public API that accepts a flag and\n * does nothing with it.\n */\nexport interface CubeBufferedValueProps {\n /**\n * Whether the typed text is held locally until the controlled `value` catches up. On by default,\n * which is what keeps the caret in place when the value round-trips through a store that\n * re-renders a pass late. Set to `false` for a caller that must see the value snap back to its\n * own `value` prop the instant it declines a keystroke. See `useBufferedValue`.\n */\n isBuffered?: boolean;\n}\n\n/**\n * The presentational base for text-like inputs. It renders the input chrome and the field wrapper, but\n * never wires form state — that is the job of the component rendering it (`TextInput`, `TextArea`,\n * `PasswordInput`, `NumberInput`, `SearchInput`, `CommandTextArea`).\n */\nfunction _TextInputBase(props: CubeTextInputBaseProps, ref) {\n let {\n qa,\n mods,\n isInvalid,\n isValid,\n prefix,\n isDisabled,\n multiLine,\n autoFocus,\n inputProps,\n wrapperProps,\n inputRef,\n isLoading,\n loadingIndicator,\n value,\n inputStyles = {},\n suffix,\n suffixPosition = 'before',\n wrapperRef,\n tooltip,\n rows = 1,\n size = 'medium',\n autoComplete,\n autocomplete,\n icon,\n maxLength,\n minLength,\n form,\n resize,\n ...otherProps\n } = props;\n\n let styles = extractStyles(otherProps, PROP_STYLES);\n let type = otherProps.type;\n\n if (resize) {\n inputStyles = { ...inputStyles, resize };\n }\n\n let ElementType: 'textarea' | 'input' = multiLine ? 'textarea' : 'input';\n let { isFocused, focusProps } = useFocus({ isDisabled });\n let { hoverProps, isHovered } = useHover({ isDisabled });\n let domRef = useRef(null);\n\n inputRef = useCombinedRefs(inputRef);\n\n // Expose imperative interface for ref\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(domRef, inputRef),\n select() {\n if (inputRef?.current) {\n inputRef.current.select();\n }\n },\n getInputElement() {\n return inputRef?.current;\n },\n }));\n\n const showValidationIndicator = hasValidationIndicator({\n isInvalid,\n isValid,\n isLoading,\n });\n\n // Fix safari bug: https://github.com/philipwalton/flexbugs/issues/270\n if (!inputProps?.placeholder) {\n if (!inputProps) {\n inputProps = {};\n }\n\n inputProps.placeholder = ' ';\n }\n\n if (icon) {\n icon = <div data-element=\"InputIcon\">{icon}</div>;\n\n if (prefix) {\n prefix = (\n <>\n {icon}\n {prefix}\n </>\n );\n } else {\n prefix = icon;\n }\n }\n\n const modifiers = useMemo(\n () => ({\n ...getValidationMods({ isInvalid, isValid }),\n loadable: !!loadingIndicator,\n focused: isFocused,\n hovered: isHovered,\n disabled: isDisabled,\n multiline: multiLine,\n prefix: !!prefix,\n suffix: showValidationIndicator || !!suffix,\n ...mods,\n }),\n [\n mods,\n isInvalid,\n isValid,\n showValidationIndicator,\n loadingIndicator,\n isFocused,\n isDisabled,\n isHovered,\n multiLine,\n prefix,\n suffix,\n ],\n );\n\n // `autoComplete` is the prop; `autocomplete` is the deprecated alias. Falling back to\n // `inputProps` matters as much as the aliasing: this attribute is applied after the merge, so a\n // bare `autoComplete={resolved}` would overwrite whatever the React Aria hook put there —\n // `useNumberField`'s own `off`, or an `inputProps={{ autoComplete }}` passed by the caller — with\n // `undefined` whenever neither prop is set.\n const resolvedAutoComplete =\n autoComplete ?? autocomplete ?? inputProps.autoComplete;\n\n const hasTextSecurity = multiLine && type === 'password';\n const textSecurityStyles =\n hasTextSecurity && inputProps.value?.length\n ? {\n fontFamily: 'text-security-disc',\n }\n : {};\n\n const textField = (\n <InputWrapperElement\n ref={wrapperRef}\n mods={modifiers}\n data-size={size}\n styles={styles}\n {...wrapperProps}\n >\n {prefix ? <div data-element=\"Prefix\">{prefix}</div> : null}\n <InputElement\n qa={qa || 'Input'}\n as={ElementType}\n data-input-type=\"textinput\"\n {...mergeProps(inputProps, focusProps, hoverProps)}\n ref={inputRef}\n rows={multiLine ? rows : undefined}\n mods={modifiers}\n style={textSecurityStyles}\n data-autofocus={autoFocus ? '' : undefined}\n autoFocus={autoFocus}\n data-size={size}\n autoComplete={resolvedAutoComplete}\n styles={inputStyles}\n disabled={!!isDisabled}\n maxLength={maxLength}\n minLength={minLength}\n />\n {showValidationIndicator || suffix ? (\n <div data-element=\"Suffix\">\n {suffixPosition === 'before' ? suffix : null}\n <ValidationIndicator\n isInvalid={isInvalid}\n isValid={isValid}\n isLoading={isLoading}\n />\n {suffixPosition === 'after' ? suffix : null}\n </div>\n ) : null}\n </InputWrapperElement>\n );\n\n return wrapWithField(textField, domRef, props);\n}\n\nconst TextInputBase = forwardRef(_TextInputBase);\n\nexport { TextInputBase };\nexport type { AriaTextFieldProps };\n"],"mappings":"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"}
1
+ {"version":3,"file":"TextInputBase.js","names":["useFocus","mergeProps"],"sources":["../../../../src/components/fields/TextInput/TextInputBase.tsx"],"sourcesContent":["import { createFocusableRef } from '@react-spectrum/utils';\nimport {\n BASE_STYLES,\n BaseProps,\n BaseStyleProps,\n BLOCK_STYLES,\n BlockStyleProps,\n COLOR_STYLES,\n ColorStyleProps,\n OUTER_STYLES,\n OuterStyleProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n forwardRef,\n ReactElement,\n ReactNode,\n RefObject,\n useImperativeHandle,\n useMemo,\n useRef,\n} from 'react';\nimport { AriaNumberFieldProps, AriaTextFieldProps, useHover } from 'react-aria';\n\nimport { FieldBaseProps } from '../../../shared';\nimport { mergeProps, useCombinedRefs } from '../../../utils/react';\nimport { useFocus } from '../../../utils/react/interactions';\nimport { extractStyles } from '../../../utils/styles';\nimport {\n getValidationMods,\n hasValidationIndicator,\n ValidationIndicator,\n wrapWithField,\n} from '../../form';\n\nimport type { Props } from '../../../props';\n\nconst ADD_STYLES = {\n $: '>',\n display: 'grid',\n placeContent: 'stretch',\n placeItems: 'center',\n gridRows: '1sf',\n flow: 'column',\n gap: 0,\n cursor: 'inherit',\n opacity: {\n '': 1,\n disabled: '$disabled-opacity',\n },\n};\n\nexport const INPUT_WRAPPER_STYLES: Styles = {\n display: 'grid',\n flow: 'row',\n position: 'relative',\n gridColumns: {\n '': '1sf',\n prefix: 'max-content 1sf',\n suffix: '1sf max-content',\n 'prefix & suffix': 'max-content 1sf max-content',\n },\n gridRows: '1sf',\n placeItems: 'stretch',\n fill: {\n '': '#surface',\n disabled: '#disabled-surface',\n },\n border: {\n '': true,\n valid: '#success-text.50',\n invalid: '#danger-text.50',\n focused: '#primary-text',\n 'valid & focused': '#success-text',\n 'invalid & focused': '#danger-text',\n disabled: true,\n },\n preset: 't3',\n radius: true,\n cursor: 'text',\n color: {\n '': '#dark-02',\n focused: '#dark-02',\n invalid: '#danger-text',\n disabled: '#dark.30',\n },\n zIndex: {\n '': 'initial',\n focused: 1,\n },\n boxSizing: 'border-box',\n transition: 'theme',\n backgroundClip: 'content-box',\n height: {\n '': '$size $size',\n multiline: 'min $size',\n },\n\n $size: {\n '': '$size-md',\n 'size=small': '$size-sm',\n 'size=medium': '$size-md',\n 'size=large': '$size-lg',\n },\n\n Prefix: ADD_STYLES,\n\n Suffix: ADD_STYLES,\n\n State: {\n $: '> Suffix >',\n display: 'flex',\n },\n\n InputIcon: {\n display: 'grid',\n placeItems: 'center',\n width: 'min $size-sm',\n color: 'inherit',\n fontSize: '$icon-size',\n },\n\n ValidationIcon: {\n $: '> Suffix > State >',\n display: 'grid',\n placeItems: 'center',\n width: {\n '': 'min $size-sm',\n suffix: 'min $size-xs',\n },\n fontSize: '$icon-size',\n },\n};\n\nconst InputWrapperElement = tasty({\n qa: 'InputWrapper',\n styles: INPUT_WRAPPER_STYLES,\n});\n\nconst PROP_STYLES = [\n ...BASE_STYLES,\n ...OUTER_STYLES,\n ...BLOCK_STYLES,\n ...COLOR_STYLES,\n];\n\nexport const DEFAULT_INPUT_STYLES: Styles = {\n recipe: 'reset input / input-autofill',\n placeSelf: 'stretch',\n width: 'initial 100% 100%',\n transition: 'theme',\n radius: true,\n padding: '$vertical-padding $right-padding $vertical-padding $left-padding',\n textAlign: 'left',\n preset: 't3',\n flexGrow: 1,\n margin: {\n '': 0,\n multiline: '((($size-md - 1lh) / 2) - 1bw) 0',\n 'multiline & size=small': '((($size-sm - 1lh) / 2) - 1bw) 0',\n 'multiline & size=large': '((($size-lg - 1lh) / 2) - 1bw) 0',\n },\n resize: 'none',\n userSelect: 'auto',\n\n Placeholder: {\n $: '&::placeholder',\n recipe: 'input-placeholder',\n },\n '&::-webkit-search-cancel-button': {\n recipe: 'input-search-cancel-button',\n },\n\n '$vertical-padding': 0,\n '$left-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n prefix: '0',\n },\n '$right-padding': {\n '': '(1x - 1bw)',\n 'size=small': '(1x - 1bw)',\n 'size=large': '(1.25x - 1bw)',\n 'size=xlarge': '(1.5x - 1bw)',\n suffix: '0',\n },\n};\n\nconst InputElement = tasty({ qa: 'Input', styles: DEFAULT_INPUT_STYLES });\n\nexport interface CubeTextInputBaseProps\n extends BaseProps,\n OuterStyleProps,\n BlockStyleProps,\n BaseStyleProps,\n ColorStyleProps,\n Omit<AriaTextFieldProps, 'validate' | 'form'>,\n FieldBaseProps {\n validate?: AriaTextFieldProps['validate'] | AriaNumberFieldProps['validate'];\n /** Left input icon */\n icon?: ReactElement | null;\n /** Input decoration before the main input */\n prefix?: ReactNode;\n /** Input decoration after the main input */\n suffix?: ReactNode;\n /** Suffix position goes before or after the validation and loading statuses */\n suffixPosition?: 'before' | 'after';\n /** Whether the input is multiline */\n multiLine?: boolean;\n /** Whether the input should have autofocus */\n autoFocus?: boolean;\n /** Direct input props */\n inputProps?: Props;\n /** Direct input wrapper props */\n wrapperProps?: Props;\n /** The input ref */\n inputRef?: RefObject<HTMLInputElement | HTMLTextAreaElement>;\n /** The wrapper ref */\n wrapperRef?: RefObject<HTMLDivElement>;\n /** Whether the input has the loading status */\n isLoading?: boolean;\n /** The loading status indicator */\n loadingIndicator?: ReactNode;\n /** Style map for the input */\n inputStyles?: Styles;\n /** The number of rows for the input. Only applies to textarea. */\n rows?: number;\n /** The resize CSS property sets whether an element is resizable, and if so, in which directions. */\n resize?: Styles['resize'];\n /** The size of the input */\n size?: 'small' | 'medium' | 'large' | (string & {});\n /**\n * What kind of autofill the browser may offer for the input, as the HTML `autocomplete` token\n * (`email`, `current-password`, `off`, …). See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete).\n */\n autoComplete?: string;\n /**\n * @deprecated Use `autoComplete` instead. Kept as an alias so existing callers keep working;\n * `autoComplete` wins when both are set.\n */\n autocomplete?: string;\n}\n\n/**\n * Mixed into the fields that actually buffer their value — `TextInput`, `TextArea`,\n * `PasswordInput`, `SearchInput` — rather than declared on `CubeTextInputBaseProps`. Every field\n * built on that base would otherwise inherit the prop, including `NumberInput` and\n * `CommandTextArea`, which keep their own text and ignore it: a public API that accepts a flag and\n * does nothing with it.\n */\nexport interface CubeBufferedValueProps {\n /**\n * Whether the typed text is held locally until the controlled `value` catches up. On by default,\n * which is what keeps the caret in place when the value round-trips through a store that\n * re-renders a pass late. Set to `false` for a caller that must see the value snap back to its\n * own `value` prop the instant it declines a keystroke. See `useBufferedValue`.\n */\n isBuffered?: boolean;\n}\n\n/**\n * The presentational base for text-like inputs. It renders the input chrome and the field wrapper, but\n * never wires form state — that is the job of the component rendering it (`TextInput`, `TextArea`,\n * `PasswordInput`, `NumberInput`, `SearchInput`, `CommandTextArea`).\n */\nfunction _TextInputBase(props: CubeTextInputBaseProps, ref) {\n let {\n qa,\n mods,\n isInvalid,\n isValid,\n prefix,\n isDisabled,\n multiLine,\n autoFocus,\n inputProps,\n wrapperProps,\n inputRef,\n isLoading,\n loadingIndicator,\n value,\n inputStyles = {},\n suffix,\n suffixPosition = 'before',\n wrapperRef,\n tooltip,\n rows = 1,\n size = 'medium',\n autoComplete,\n autocomplete,\n icon,\n maxLength,\n minLength,\n form,\n resize,\n ...otherProps\n } = props;\n\n let styles = extractStyles(otherProps, PROP_STYLES);\n let type = otherProps.type;\n\n if (resize) {\n inputStyles = { ...inputStyles, resize };\n }\n\n let ElementType: 'textarea' | 'input' = multiLine ? 'textarea' : 'input';\n let { isFocused, focusProps } = useFocus({ isDisabled });\n let { hoverProps, isHovered } = useHover({ isDisabled });\n let domRef = useRef(null);\n\n inputRef = useCombinedRefs(inputRef);\n\n // Expose imperative interface for ref\n useImperativeHandle(ref, () => ({\n ...createFocusableRef(domRef, inputRef),\n select() {\n if (inputRef?.current) {\n inputRef.current.select();\n }\n },\n getInputElement() {\n return inputRef?.current;\n },\n }));\n\n const showValidationIndicator = hasValidationIndicator({\n isInvalid,\n isValid,\n isLoading,\n });\n\n // Fix safari bug: https://github.com/philipwalton/flexbugs/issues/270\n if (!inputProps?.placeholder) {\n if (!inputProps) {\n inputProps = {};\n }\n\n inputProps.placeholder = ' ';\n }\n\n if (icon) {\n icon = <div data-element=\"InputIcon\">{icon}</div>;\n\n if (prefix) {\n prefix = (\n <>\n {icon}\n {prefix}\n </>\n );\n } else {\n prefix = icon;\n }\n }\n\n const modifiers = useMemo(\n () => ({\n ...getValidationMods({ isInvalid, isValid }),\n loadable: !!loadingIndicator,\n focused: isFocused,\n hovered: isHovered,\n disabled: isDisabled,\n multiline: multiLine,\n prefix: !!prefix,\n suffix: showValidationIndicator || !!suffix,\n ...mods,\n }),\n [\n mods,\n isInvalid,\n isValid,\n showValidationIndicator,\n loadingIndicator,\n isFocused,\n isDisabled,\n isHovered,\n multiLine,\n prefix,\n suffix,\n ],\n );\n\n // `autoComplete` is the prop; `autocomplete` is the deprecated alias. Falling back to\n // `inputProps` matters as much as the aliasing: this attribute is applied after the merge, so a\n // bare `autoComplete={resolved}` would overwrite whatever the React Aria hook put there —\n // `useNumberField`'s own `off`, or an `inputProps={{ autoComplete }}` passed by the caller — with\n // `undefined` whenever neither prop is set.\n const resolvedAutoComplete =\n autoComplete ?? autocomplete ?? inputProps.autoComplete;\n\n const hasTextSecurity = multiLine && type === 'password';\n const textSecurityStyles =\n hasTextSecurity && inputProps.value?.length\n ? {\n fontFamily: 'text-security-disc',\n }\n : {};\n\n const textField = (\n <InputWrapperElement\n ref={wrapperRef}\n mods={modifiers}\n data-size={size}\n styles={styles}\n {...wrapperProps}\n >\n {prefix ? <div data-element=\"Prefix\">{prefix}</div> : null}\n <InputElement\n qa={qa || 'Input'}\n as={ElementType}\n data-input-type=\"textinput\"\n {...mergeProps(inputProps, focusProps, hoverProps)}\n ref={inputRef}\n rows={multiLine ? rows : undefined}\n mods={modifiers}\n style={textSecurityStyles}\n data-autofocus={autoFocus ? '' : undefined}\n autoFocus={autoFocus}\n data-size={size}\n autoComplete={resolvedAutoComplete}\n styles={inputStyles}\n disabled={!!isDisabled}\n maxLength={maxLength}\n minLength={minLength}\n />\n {showValidationIndicator || suffix ? (\n <div data-element=\"Suffix\">\n {suffixPosition === 'before' ? suffix : null}\n <ValidationIndicator\n isInvalid={isInvalid}\n isValid={isValid}\n isLoading={isLoading}\n />\n {suffixPosition === 'after' ? suffix : null}\n </div>\n ) : null}\n </InputWrapperElement>\n );\n\n return wrapWithField(textField, domRef, props);\n}\n\nconst TextInputBase = forwardRef(_TextInputBase);\n\nexport { TextInputBase };\nexport type { AriaTextFieldProps };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useEffect, useLayoutEffect, useRef } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { ItemActionIcon } from "../actions/ItemActionsWrapper.js";
3
3
  import { Fragment, jsxs } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { formatColor, getContrastingColor, toHex } from "./color.js";
4
4
  import { CHANNELS, COLOR_SPACES, COLOR_SPACE_HINTS, COLOR_SPACE_LABELS } from "./channels.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { maxChroma, normalizeHue, oklchToOkhsl } from "../../../utils/colors.js";
3
3
  import { fromOkhst, fromRgb, isAchromatic, toHex, toOkhst, toOklch, toRgb } from "./color.js";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { anyNaN, clamp, maxChroma, normalizeHue, oklchToOkhsl, parseColorFunction, readComponent, readHue, rgbFromSrgb } from "../../../utils/colors.js";
3
3
  import { contrastRatioFromLuminance, formatHsl, formatOkhsl, formatOkhst, formatOklch, formatRgb, hslToSrgb, okhslToLinearSrgb, okhslToOkhst, okhslToOklch, okhslToSrgb, okhstToOkhsl, parseHexAlpha, relativeLuminanceFromLinearRgb, srgbToHex, srgbToOkhsl } from "@tenphi/glaze";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { createContext, useContext } from "react";
3
3
 
4
4
  //#region src/components/fields/color/context.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { wrapNodeIfPlain } from "../../../utils/react/wrapNodeIfPlain.js";
4
4
  import { isDevEnv } from "../../../utils/is-dev-env.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../utils/react/mergeProps.js";
3
3
  import { warn } from "../../../utils/warnings.js";
4
4
  import { useValidationProps } from "../validation/use-validation-props.js";
@@ -5,10 +5,40 @@ import { FieldTypes } from "./types.js";
5
5
  import { CubeFormData, CubeFormInstance } from "./use-form.js";
6
6
  import { BaseProps, ContainerStyleProps, Styles } from "@tenphi/tasty";
7
7
  import * as react from "react";
8
- import { FormHTMLAttributes, ReactElement, Ref } from "react";
8
+ import { ContextType, FormHTMLAttributes, ReactElement, ReactNode, Ref } from "react";
9
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
9
10
 
10
11
  //#region src/components/form/Form/Form.d.ts
12
+ /**
13
+ * Public legacy context. Its value is the full legacy scope (presentation
14
+ * props, the instance, `submitError`, `idPrefix`) and is part of the exported
15
+ * contract: wrappers outside the kit read it and Radio/Checkbox groups mask it.
16
+ */
11
17
  declare const FormContext: react.Context<{}>;
18
+ /**
19
+ * Scope the inputs below to a new form context. Radio/Checkbox groups use it
20
+ * for their options: they see the group's validation state, but neither the
21
+ * surrounding form's presentation props nor its instance, so a nested `name`
22
+ * never registers as an independent field. Wrappers that used to override
23
+ * `FormContext` directly for the same purpose should render this instead — a
24
+ * bare `FormContext.Provider` no longer masks the presentation context.
25
+ */
26
+ declare function FormScopeMask({
27
+ value,
28
+ children
29
+ }: {
30
+ value: ContextType<typeof FormContext>;
31
+ children?: ReactNode;
32
+ }): react_jsx_runtime0.JSX.Element;
33
+ /** The root components share one signature: generic props plus a form ref. */
34
+ type FormRootComponent = <T extends FieldTypes>(props: CubeFormProps<T> & {
35
+ ref?: Ref<HTMLFormElement>;
36
+ }) => ReactElement;
37
+ /**
38
+ * Merge order: presentation context, then the legacy `FormContext`, then the
39
+ * props. Under a legacy root the two contexts carry the same presentation
40
+ * values, so the result is exactly `{ ...FormContext, ...props }` as before.
41
+ */
12
42
  declare function useFormProps(props: any): any;
13
43
  interface CubeFormProps<T extends FieldTypes = FieldTypes> extends FormBaseProps, BaseProps, ContainerStyleProps, Pick<FormHTMLAttributes<HTMLFormElement>, 'action' | 'autoComplete' | 'encType' | 'method' | 'target'> {
14
44
  /** Form name */
@@ -28,5 +58,5 @@ interface CubeFormProps<T extends FieldTypes = FieldTypes> extends FormBaseProps
28
58
  orientation?: 'vertical' | 'horizontal';
29
59
  }
30
60
  //#endregion
31
- export { CubeFormProps, FormContext, useFormProps };
61
+ export { CubeFormProps, FormContext, FormRootComponent, FormScopeMask, useFormProps };
32
62
  //# sourceMappingURL=Form.d.ts.map
@@ -1,9 +1,11 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { Provider, useProviderProps } from "../../../provider.js";
5
5
  import { useValidationProps } from "../validation/use-validation-props.js";
6
6
  import { timeout } from "../../../utils/promise.js";
7
+ import { isModernFormController } from "./backend.js";
8
+ import { _ModernFormRoot } from "./ModernFormRoot.js";
7
9
  import { useForm } from "./use-form.js";
8
10
  import { CONTAINER_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
9
11
  import { createContext, forwardRef, useContext, useRef } from "react";
@@ -11,7 +13,31 @@ import { jsx } from "react/jsx-runtime";
11
13
  import { useObjectRef } from "@react-aria/utils";
12
14
 
13
15
  //#region src/components/form/Form/Form.tsx
16
+ /**
17
+ * Public legacy context. Its value is the full legacy scope (presentation
18
+ * props, the instance, `submitError`, `idPrefix`) and is part of the exported
19
+ * contract: wrappers outside the kit read it and Radio/Checkbox groups mask it.
20
+ */
14
21
  const FormContext = createContext({});
22
+ const EMPTY_PRESENTATION = {};
23
+ const FormPresentationContext = createContext(EMPTY_PRESENTATION);
24
+ /**
25
+ * Scope the inputs below to a new form context. Radio/Checkbox groups use it
26
+ * for their options: they see the group's validation state, but neither the
27
+ * surrounding form's presentation props nor its instance, so a nested `name`
28
+ * never registers as an independent field. Wrappers that used to override
29
+ * `FormContext` directly for the same purpose should render this instead — a
30
+ * bare `FormContext.Provider` no longer masks the presentation context.
31
+ */
32
+ function FormScopeMask({ value, children }) {
33
+ return /* @__PURE__ */ jsx(FormPresentationContext.Provider, {
34
+ value: EMPTY_PRESENTATION,
35
+ children: /* @__PURE__ */ jsx(FormContext.Provider, {
36
+ value,
37
+ children
38
+ })
39
+ });
40
+ }
15
41
  const FormElement = tasty({
16
42
  as: "form",
17
43
  qa: "Form",
@@ -32,9 +58,17 @@ const FormElement = tasty({
32
58
  "$label-width": "25x"
33
59
  }
34
60
  });
61
+ /**
62
+ * Merge order: presentation context, then the legacy `FormContext`, then the
63
+ * props. Under a legacy root the two contexts carry the same presentation
64
+ * values, so the result is exactly `{ ...FormContext, ...props }` as before.
65
+ */
35
66
  function useFormProps(props) {
67
+ const presentation = useContext(FormPresentationContext);
68
+ const ctx = useContext(FormContext);
36
69
  return {
37
- ...useContext(FormContext),
70
+ ...presentation,
71
+ ...ctx,
38
72
  ...props
39
73
  };
40
74
  }
@@ -45,7 +79,11 @@ const formPropNames = new Set([
45
79
  "method",
46
80
  "target"
47
81
  ]);
48
- function Form(props, ref) {
82
+ /**
83
+ * The legacy backend's root: the current engine under an internal name. Its
84
+ * role is compatibility; see `legacy-contract/README.md` for what is frozen.
85
+ */
86
+ function LegacyFormRoot(props, ref) {
49
87
  props = useValidationProps(useProviderProps(props));
50
88
  let { qa, name, children, labelPosition, orientation, necessityIndicator, isDisabled, isReadOnly, isInvalid, isValid, labelStyles, validateTrigger, showValid, defaultValues, onValuesChange, requiredMark = true, form, labelWidth, onSubmit, onSubmitFailed, ...otherProps } = props;
51
89
  const defaultValuesRef = useRef(defaultValues);
@@ -93,7 +131,7 @@ function Form(props, ref) {
93
131
  let styles = extractStyles(otherProps, CONTAINER_STYLES);
94
132
  if (labelWidth) styles["$label-width"] = labelWidth;
95
133
  let domRef = useObjectRef(ref);
96
- let ctx = {
134
+ const presentation = {
97
135
  labelPosition,
98
136
  labelStyles,
99
137
  orientation,
@@ -101,10 +139,13 @@ function Form(props, ref) {
101
139
  validateTrigger,
102
140
  requiredMark,
103
141
  showValid,
104
- form,
105
- submitError: form.submitError,
106
142
  idPrefix: name
107
143
  };
144
+ let ctx = {
145
+ ...presentation,
146
+ form,
147
+ submitError: form.submitError
148
+ };
108
149
  if (firstRunRef.current && form) {
109
150
  if (defaultValues) {
110
151
  form.setInitialFieldsValue(defaultValues);
@@ -128,19 +169,40 @@ function Form(props, ref) {
128
169
  horizontal: isHorizontal
129
170
  },
130
171
  onSubmit: onSubmitCallback,
131
- children: /* @__PURE__ */ jsx(FormContext.Provider, {
132
- value: ctx,
133
- children: /* @__PURE__ */ jsx(Provider, {
134
- insideForm: true,
135
- isDisabled,
136
- isReadOnly,
137
- isInvalid,
138
- isValid,
139
- children
172
+ children: /* @__PURE__ */ jsx(FormPresentationContext.Provider, {
173
+ value: presentation,
174
+ children: /* @__PURE__ */ jsx(FormContext.Provider, {
175
+ value: ctx,
176
+ children: /* @__PURE__ */ jsx(Provider, {
177
+ insideForm: true,
178
+ isDisabled,
179
+ isReadOnly,
180
+ isInvalid,
181
+ isValid,
182
+ children
183
+ })
140
184
  })
141
185
  })
142
186
  });
143
187
  }
188
+ const _LegacyFormRoot = forwardRef(LegacyFormRoot);
189
+ _LegacyFormRoot.displayName = "LegacyFormRoot";
190
+ /**
191
+ * The `<Form>` facade. It chooses the root by the brand of the `form` prop
192
+ * before any backend hook runs; without a modern controller — which is every
193
+ * form today — it is the legacy root, so `<Form>` and `Form.useForm()` keep
194
+ * their behaviour.
195
+ */
196
+ function Form(props, ref) {
197
+ if (isModernFormController(props.form)) return /* @__PURE__ */ jsx(_ModernFormRoot, {
198
+ ...props,
199
+ ref
200
+ });
201
+ return /* @__PURE__ */ jsx(_LegacyFormRoot, {
202
+ ...props,
203
+ ref
204
+ });
205
+ }
144
206
  /**
145
207
  * Forms allow users to enter data that can be submitted while providing alignment and styling for form fields.
146
208
  */
@@ -148,5 +210,5 @@ const _Form = forwardRef(Form);
148
210
  _Form.displayName = "Form";
149
211
 
150
212
  //#endregion
151
- export { FormContext, _Form, useFormProps };
213
+ export { FormContext, FormScopeMask, _Form, useFormProps };
152
214
  //# sourceMappingURL=Form.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Form.js","names":[],"sources":["../../../../src/components/form/Form/Form.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n createContext,\n FormHTMLAttributes,\n forwardRef,\n ReactElement,\n ReactNode,\n Ref,\n useContext,\n useRef,\n} from 'react';\n\nimport { Provider, useProviderProps } from '../../../provider';\nimport { FormBaseProps } from '../../../shared/index';\nimport { timeout } from '../../../utils/promise';\nimport { useCombinedRefs } from '../../../utils/react/index';\nimport { extractStyles } from '../../../utils/styles';\nimport { useValidationProps } from '../validation/index';\n\nimport { FieldTypes } from './types';\nimport { CubeFormData, CubeFormInstance, useForm } from './use-form';\n\nexport const FormContext = createContext({});\n\nconst FormElement = tasty({\n as: 'form',\n qa: 'Form',\n styles: {\n display: {\n '': 'block',\n horizontal: 'flex',\n },\n flow: {\n '': 'column',\n horizontal: 'row',\n },\n placeItems: {\n '': 'initial',\n horizontal: 'center',\n },\n gap: '2x',\n '$label-width': '25x',\n },\n});\n\nexport function useFormProps(props) {\n const ctx = useContext(FormContext);\n\n return { ...ctx, ...props };\n}\n\nconst formPropNames = new Set([\n 'action',\n 'autoComplete',\n 'encType',\n 'method',\n 'target',\n]);\n\nexport interface CubeFormProps<T extends FieldTypes = FieldTypes>\n extends FormBaseProps,\n BaseProps,\n ContainerStyleProps,\n Pick<\n FormHTMLAttributes<HTMLFormElement>,\n 'action' | 'autoComplete' | 'encType' | 'method' | 'target'\n > {\n /** Form name */\n name?: string;\n /** Default field values */\n defaultValues?: Partial<T>;\n /** Trigger when any value of the Field is changed */\n onValuesChange?: CubeFormInstance<T>['onValuesChange'];\n /** Trigger on form submit and success */\n onSubmit?: CubeFormInstance<T>['onSubmit'];\n /** Trigger on form submit and failed */\n onSubmitFailed?: (any?) => void | Promise<any>;\n /** Set form instance created by useForm */\n form?: CubeFormInstance<T, CubeFormData<T>>;\n /** The size of the side area with labels. Only for `labelPosition=\"side\"` */\n labelWidth?: Styles['width'];\n orientation?: 'vertical' | 'horizontal';\n}\n\nfunction Form<T extends FieldTypes>(\n props: CubeFormProps<T>,\n ref: Ref<HTMLFormElement>,\n) {\n props = useValidationProps(useProviderProps(props));\n let {\n qa,\n name,\n children,\n labelPosition,\n orientation,\n necessityIndicator,\n isDisabled,\n isReadOnly,\n isInvalid,\n isValid,\n labelStyles,\n validateTrigger,\n showValid,\n defaultValues,\n onValuesChange,\n requiredMark = true,\n form,\n labelWidth,\n onSubmit,\n onSubmitFailed,\n ...otherProps\n } = props;\n const defaultValuesRef = useRef(defaultValues);\n const firstRunRef = useRef(true);\n const isHorizontal = orientation === 'horizontal';\n\n if (!orientation) {\n orientation = 'vertical';\n }\n\n if (!labelPosition) {\n labelPosition = isHorizontal ? 'side' : 'top';\n }\n\n if (!labelWidth) {\n labelWidth = isHorizontal ? 'auto' : undefined;\n }\n\n ref = useCombinedRefs(ref);\n\n let onSubmitCallback;\n\n if ((onSubmit || onSubmitFailed) && !otherProps.action) {\n onSubmitCallback = async (e) => {\n if (e && e?.preventDefault) {\n e && e?.preventDefault && e?.preventDefault();\n e && e?.stopPropagation && e?.stopPropagation();\n\n if (e.nativeEvent) {\n const evt = e.nativeEvent;\n\n if (\n evt.submitter &&\n evt.submitter.getAttribute('type') !== 'submit'\n ) {\n return;\n }\n }\n }\n\n if (!form || form.isSubmitting) return;\n\n form.submitError = null;\n form.setSubmitting(true);\n\n try {\n try {\n await form.validateFields();\n } catch (e) {\n form?.setSubmitting(false);\n\n return;\n }\n\n await timeout();\n await onSubmit?.(form.getFormData());\n } catch (e) {\n await timeout();\n\n // errors are shown\n form.submitError = e as ReactNode;\n // transfer errors to the callback\n onSubmitFailed?.(e);\n\n if (e instanceof Error) {\n throw e;\n }\n } finally {\n form?.setSubmitting(false);\n }\n\n // output data from form directly\n // onSubmit(Object.fromEntries(new FormData(e.target).entries()));\n };\n }\n\n [form] = useForm<T>(form, ref && ref.current, {\n onSubmit: onSubmitCallback,\n onValuesChange,\n });\n\n let styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n if (labelWidth) {\n styles['$label-width'] = labelWidth;\n }\n\n let domRef = useObjectRef(ref);\n\n let ctx = {\n labelPosition,\n labelStyles,\n orientation,\n necessityIndicator,\n validateTrigger,\n requiredMark,\n showValid,\n form,\n submitError: form.submitError,\n idPrefix: name,\n };\n\n if (firstRunRef.current && form) {\n if (defaultValues) {\n form.setInitialFieldsValue(defaultValues);\n form.resetFields(undefined, true);\n firstRunRef.current = false;\n }\n }\n\n if (defaultValuesRef.current !== defaultValues) {\n form?.setInitialFieldsValue(defaultValues ?? {});\n defaultValuesRef.current = defaultValues;\n }\n\n return (\n <FormElement\n {...filterBaseProps(otherProps, { propNames: formPropNames })}\n ref={domRef}\n noValidate\n qa={qa}\n styles={styles}\n mods={{\n 'has-sider': labelPosition === 'side',\n 'has-split': labelPosition === 'split',\n horizontal: isHorizontal,\n }}\n onSubmit={onSubmitCallback}\n >\n <FormContext.Provider value={ctx}>\n <Provider\n insideForm={true}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isValid={isValid}\n >\n {children}\n </Provider>\n </FormContext.Provider>\n </FormElement>\n );\n}\n\n/**\n * Forms allow users to enter data that can be submitted while providing alignment and styling for form fields.\n */\nconst _Form = forwardRef(Form) as unknown as <T extends FieldTypes>(\n props: CubeFormProps<T> & { ref?: Ref<HTMLFormElement> },\n) => ReactElement;\n\n(_Form as any).displayName = 'Form';\n\nexport { _Form as Form };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Form.js","names":["ModernFormRoot"],"sources":["../../../../src/components/form/Form/Form.tsx"],"sourcesContent":["import { useObjectRef } from '@react-aria/utils';\nimport {\n BaseProps,\n CONTAINER_STYLES,\n ContainerStyleProps,\n filterBaseProps,\n Styles,\n tasty,\n} from '@tenphi/tasty';\nimport {\n ContextType,\n createContext,\n FormHTMLAttributes,\n forwardRef,\n ReactElement,\n ReactNode,\n Ref,\n useContext,\n useRef,\n} from 'react';\n\nimport { Provider, useProviderProps } from '../../../provider';\nimport { FormBaseProps } from '../../../shared/index';\nimport { timeout } from '../../../utils/promise';\nimport { useCombinedRefs } from '../../../utils/react/index';\nimport { extractStyles } from '../../../utils/styles';\nimport { useValidationProps } from '../validation/index';\n\nimport { isModernFormController } from './backend';\nimport { ModernFormRoot } from './ModernFormRoot';\nimport { FieldTypes } from './types';\nimport { CubeFormData, CubeFormInstance, useForm } from './use-form';\n\n/**\n * Public legacy context. Its value is the full legacy scope (presentation\n * props, the instance, `submitError`, `idPrefix`) and is part of the exported\n * contract: wrappers outside the kit read it and Radio/Checkbox groups mask it.\n */\nexport const FormContext = createContext({});\n\n/**\n * Presentation and configuration that any root — legacy or modern — hands to\n * the fields below it. Backend-neutral by construction: no instance in here.\n */\nexport interface FormPresentationContextValue {\n labelPosition?: FormBaseProps['labelPosition'];\n labelStyles?: FormBaseProps['labelStyles'];\n orientation?: 'vertical' | 'horizontal';\n necessityIndicator?: FormBaseProps['necessityIndicator'];\n validateTrigger?: FormBaseProps['validateTrigger'];\n requiredMark?: boolean;\n showValid?: boolean;\n idPrefix?: string;\n}\n\nconst EMPTY_PRESENTATION: FormPresentationContextValue = {};\n\nexport const FormPresentationContext =\n createContext<FormPresentationContextValue>(EMPTY_PRESENTATION);\n\n/**\n * Scope the inputs below to a new form context. Radio/Checkbox groups use it\n * for their options: they see the group's validation state, but neither the\n * surrounding form's presentation props nor its instance, so a nested `name`\n * never registers as an independent field. Wrappers that used to override\n * `FormContext` directly for the same purpose should render this instead — a\n * bare `FormContext.Provider` no longer masks the presentation context.\n */\nexport function FormScopeMask({\n value,\n children,\n}: {\n value: ContextType<typeof FormContext>;\n children?: ReactNode;\n}) {\n return (\n <FormPresentationContext.Provider value={EMPTY_PRESENTATION}>\n <FormContext.Provider value={value}>{children}</FormContext.Provider>\n </FormPresentationContext.Provider>\n );\n}\n\n/** The root components share one signature: generic props plus a form ref. */\nexport type FormRootComponent = <T extends FieldTypes>(\n props: CubeFormProps<T> & { ref?: Ref<HTMLFormElement> },\n) => ReactElement;\n\nconst FormElement = tasty({\n as: 'form',\n qa: 'Form',\n styles: {\n display: {\n '': 'block',\n horizontal: 'flex',\n },\n flow: {\n '': 'column',\n horizontal: 'row',\n },\n placeItems: {\n '': 'initial',\n horizontal: 'center',\n },\n gap: '2x',\n '$label-width': '25x',\n },\n});\n\n/**\n * Merge order: presentation context, then the legacy `FormContext`, then the\n * props. Under a legacy root the two contexts carry the same presentation\n * values, so the result is exactly `{ ...FormContext, ...props }` as before.\n */\nexport function useFormProps(props) {\n const presentation = useContext(FormPresentationContext);\n const ctx = useContext(FormContext);\n\n return { ...presentation, ...ctx, ...props };\n}\n\nconst formPropNames = new Set([\n 'action',\n 'autoComplete',\n 'encType',\n 'method',\n 'target',\n]);\n\nexport interface CubeFormProps<T extends FieldTypes = FieldTypes>\n extends FormBaseProps,\n BaseProps,\n ContainerStyleProps,\n Pick<\n FormHTMLAttributes<HTMLFormElement>,\n 'action' | 'autoComplete' | 'encType' | 'method' | 'target'\n > {\n /** Form name */\n name?: string;\n /** Default field values */\n defaultValues?: Partial<T>;\n /** Trigger when any value of the Field is changed */\n onValuesChange?: CubeFormInstance<T>['onValuesChange'];\n /** Trigger on form submit and success */\n onSubmit?: CubeFormInstance<T>['onSubmit'];\n /** Trigger on form submit and failed */\n onSubmitFailed?: (any?) => void | Promise<any>;\n /** Set form instance created by useForm */\n form?: CubeFormInstance<T, CubeFormData<T>>;\n /** The size of the side area with labels. Only for `labelPosition=\"side\"` */\n labelWidth?: Styles['width'];\n orientation?: 'vertical' | 'horizontal';\n}\n\n/**\n * The legacy backend's root: the current engine under an internal name. Its\n * role is compatibility; see `legacy-contract/README.md` for what is frozen.\n */\nfunction LegacyFormRoot<T extends FieldTypes>(\n props: CubeFormProps<T>,\n ref: Ref<HTMLFormElement>,\n) {\n props = useValidationProps(useProviderProps(props));\n let {\n qa,\n name,\n children,\n labelPosition,\n orientation,\n necessityIndicator,\n isDisabled,\n isReadOnly,\n isInvalid,\n isValid,\n labelStyles,\n validateTrigger,\n showValid,\n defaultValues,\n onValuesChange,\n requiredMark = true,\n form,\n labelWidth,\n onSubmit,\n onSubmitFailed,\n ...otherProps\n } = props;\n const defaultValuesRef = useRef(defaultValues);\n const firstRunRef = useRef(true);\n const isHorizontal = orientation === 'horizontal';\n\n if (!orientation) {\n orientation = 'vertical';\n }\n\n if (!labelPosition) {\n labelPosition = isHorizontal ? 'side' : 'top';\n }\n\n if (!labelWidth) {\n labelWidth = isHorizontal ? 'auto' : undefined;\n }\n\n ref = useCombinedRefs(ref);\n\n let onSubmitCallback;\n\n if ((onSubmit || onSubmitFailed) && !otherProps.action) {\n onSubmitCallback = async (e) => {\n if (e && e?.preventDefault) {\n e && e?.preventDefault && e?.preventDefault();\n e && e?.stopPropagation && e?.stopPropagation();\n\n if (e.nativeEvent) {\n const evt = e.nativeEvent;\n\n if (\n evt.submitter &&\n evt.submitter.getAttribute('type') !== 'submit'\n ) {\n return;\n }\n }\n }\n\n if (!form || form.isSubmitting) return;\n\n form.submitError = null;\n form.setSubmitting(true);\n\n try {\n try {\n await form.validateFields();\n } catch (e) {\n form?.setSubmitting(false);\n\n return;\n }\n\n await timeout();\n await onSubmit?.(form.getFormData());\n } catch (e) {\n await timeout();\n\n // errors are shown\n form.submitError = e as ReactNode;\n // transfer errors to the callback\n onSubmitFailed?.(e);\n\n if (e instanceof Error) {\n throw e;\n }\n } finally {\n form?.setSubmitting(false);\n }\n\n // output data from form directly\n // onSubmit(Object.fromEntries(new FormData(e.target).entries()));\n };\n }\n\n [form] = useForm<T>(form, ref && ref.current, {\n onSubmit: onSubmitCallback,\n onValuesChange,\n });\n\n let styles = extractStyles(otherProps, CONTAINER_STYLES);\n\n if (labelWidth) {\n styles['$label-width'] = labelWidth;\n }\n\n let domRef = useObjectRef(ref);\n\n const presentation: FormPresentationContextValue = {\n labelPosition,\n labelStyles,\n orientation,\n necessityIndicator,\n validateTrigger,\n requiredMark,\n showValid,\n idPrefix: name,\n };\n\n let ctx = {\n ...presentation,\n form,\n submitError: form.submitError,\n };\n\n if (firstRunRef.current && form) {\n if (defaultValues) {\n form.setInitialFieldsValue(defaultValues);\n form.resetFields(undefined, true);\n firstRunRef.current = false;\n }\n }\n\n if (defaultValuesRef.current !== defaultValues) {\n form?.setInitialFieldsValue(defaultValues ?? {});\n defaultValuesRef.current = defaultValues;\n }\n\n return (\n <FormElement\n {...filterBaseProps(otherProps, { propNames: formPropNames })}\n ref={domRef}\n noValidate\n qa={qa}\n styles={styles}\n mods={{\n 'has-sider': labelPosition === 'side',\n 'has-split': labelPosition === 'split',\n horizontal: isHorizontal,\n }}\n onSubmit={onSubmitCallback}\n >\n <FormPresentationContext.Provider value={presentation}>\n <FormContext.Provider value={ctx}>\n <Provider\n insideForm={true}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isInvalid={isInvalid}\n isValid={isValid}\n >\n {children}\n </Provider>\n </FormContext.Provider>\n </FormPresentationContext.Provider>\n </FormElement>\n );\n}\n\nconst _LegacyFormRoot = forwardRef(\n LegacyFormRoot,\n) as unknown as FormRootComponent;\n\n(_LegacyFormRoot as any).displayName = 'LegacyFormRoot';\n\n/**\n * The `<Form>` facade. It chooses the root by the brand of the `form` prop\n * before any backend hook runs; without a modern controller — which is every\n * form today — it is the legacy root, so `<Form>` and `Form.useForm()` keep\n * their behaviour.\n */\nfunction Form<T extends FieldTypes>(\n props: CubeFormProps<T>,\n ref: Ref<HTMLFormElement>,\n) {\n if (isModernFormController(props.form)) {\n return <ModernFormRoot {...props} ref={ref} />;\n }\n\n return <_LegacyFormRoot {...props} ref={ref} />;\n}\n\n/**\n * Forms allow users to enter data that can be submitted while providing alignment and styling for form fields.\n */\nconst _Form = forwardRef(Form) as unknown as FormRootComponent;\n\n(_Form as any).displayName = 'Form';\n\nexport { _Form as Form, _LegacyFormRoot as LegacyFormRoot };\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
+ import { modernBackendUnavailableError } from "./backend.js";
3
+ import { forwardRef } from "react";
4
+
5
+ //#region src/components/form/Form/ModernFormRoot.tsx
6
+ /**
7
+ * The `<Form>` facade renders this root for a branded modern controller. It is
8
+ * a boundary, not an implementation: the modern backend is not in this version,
9
+ * so reaching it is an error rather than silent legacy behaviour (plan §9,
10
+ * Phase 3 gate: "no modern behavior is reachable accidentally").
11
+ */
12
+ function ModernFormRoot(_props, _ref) {
13
+ throw modernBackendUnavailableError("<Form>");
14
+ }
15
+ const _ModernFormRoot = forwardRef(ModernFormRoot);
16
+ _ModernFormRoot.displayName = "ModernFormRoot";
17
+
18
+ //#endregion
19
+ export { _ModernFormRoot };
20
+ //# sourceMappingURL=ModernFormRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModernFormRoot.js","names":[],"sources":["../../../../src/components/form/Form/ModernFormRoot.tsx"],"sourcesContent":["import { forwardRef, ReactElement, Ref } from 'react';\n\nimport { modernBackendUnavailableError } from './backend';\n\nimport type { CubeFormProps, FormRootComponent } from './Form';\nimport type { FieldTypes } from './types';\n\n/**\n * The `<Form>` facade renders this root for a branded modern controller. It is\n * a boundary, not an implementation: the modern backend is not in this version,\n * so reaching it is an error rather than silent legacy behaviour (plan §9,\n * Phase 3 gate: \"no modern behavior is reachable accidentally\").\n */\nfunction ModernFormRoot<T extends FieldTypes>(\n _props: CubeFormProps<T>,\n _ref: Ref<HTMLFormElement>,\n): ReactElement {\n throw modernBackendUnavailableError('<Form>');\n}\n\nconst _ModernFormRoot = forwardRef(\n ModernFormRoot,\n) as unknown as FormRootComponent;\n\n(_ModernFormRoot as any).displayName = 'ModernFormRoot';\n\nexport { _ModernFormRoot as ModernFormRoot };\n"],"mappings":";;;;;;;;;;;AAaA,SAAS,eACP,QACA,MACc;AACd,OAAM,8BAA8B,SAAS;;AAG/C,MAAM,kBAAkB,WACtB,eACD;AAED,AAAC,gBAAwB,cAAc"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { mergeProps } from "../../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../../_internal/hooks/use-event.js";
4
4
  import { useProviderProps } from "../../../../provider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { useProviderProps } from "../../../../provider.js";
3
3
  import { Button } from "../../../actions/Button/Button.js";
4
4
  import { useFormProps } from "../Form.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b0fb187 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
2
  import { useI18n } from "../../../i18n/useI18n.js";
3
3
  import { FormContext } from "./Form.js";
4
4
  import { Alert } from "../../content/Alert/Alert.js";
@@ -0,0 +1,21 @@
1
+
2
+ //#region src/components/form/Form/backend.d.ts
3
+ /**
4
+ * Nominal branding for the two Form backends (modernization plan §5.1).
5
+ *
6
+ * The legacy engine (`CubeFormInstance`) and the modern controller are not
7
+ * structurally interchangeable: each carries this symbol with its backend
8
+ * kind, the `<Form>` facade dispatches on it before any backend hook runs, and
9
+ * the legacy field adapter refuses a controller it cannot bind.
10
+ *
11
+ * Phase 3 ships the shell only. No modern creator is exported, so a modern
12
+ * controller cannot be constructed by consumers yet; every modern branch ends
13
+ * in `modernBackendUnavailableError` until the modern backend lands.
14
+ */
15
+ declare const FORM_BACKEND: unique symbol;
16
+ interface LegacyFormBrand {
17
+ readonly [FORM_BACKEND]: 'legacy';
18
+ }
19
+ //#endregion
20
+ export { FORM_BACKEND, LegacyFormBrand };
21
+ //# sourceMappingURL=backend.d.ts.map
@@ -0,0 +1,31 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6628277 | Cube Dev Team */
2
+ //#region src/components/form/Form/backend.ts
3
+ /**
4
+ * Nominal branding for the two Form backends (modernization plan §5.1).
5
+ *
6
+ * The legacy engine (`CubeFormInstance`) and the modern controller are not
7
+ * structurally interchangeable: each carries this symbol with its backend
8
+ * kind, the `<Form>` facade dispatches on it before any backend hook runs, and
9
+ * the legacy field adapter refuses a controller it cannot bind.
10
+ *
11
+ * Phase 3 ships the shell only. No modern creator is exported, so a modern
12
+ * controller cannot be constructed by consumers yet; every modern branch ends
13
+ * in `modernBackendUnavailableError` until the modern backend lands.
14
+ */
15
+ const FORM_BACKEND = Symbol.for("@cube-dev/ui-kit/form-backend");
16
+ /**
17
+ * Only a modern brand is ever checked. Anything else — a branded legacy
18
+ * instance, but also an unbranded object — counts as legacy on purpose: Cloud
19
+ * narrows form props to structural types and its tests pass plain mocks, and
20
+ * the legacy engine has always accepted them.
21
+ */
22
+ function isModernFormController(value) {
23
+ return !!value && typeof value === "object" && value[FORM_BACKEND] === "modern";
24
+ }
25
+ function modernBackendUnavailableError(receiver) {
26
+ return /* @__PURE__ */ new Error(`${receiver} received a modern form controller, but the modern Form backend is not available in this version of @cube-dev/ui-kit. Create forms with Form.useForm() for now.`);
27
+ }
28
+
29
+ //#endregion
30
+ export { FORM_BACKEND, isModernFormController, modernBackendUnavailableError };
31
+ //# sourceMappingURL=backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","names":[],"sources":["../../../../src/components/form/Form/backend.ts"],"sourcesContent":["/**\n * Nominal branding for the two Form backends (modernization plan §5.1).\n *\n * The legacy engine (`CubeFormInstance`) and the modern controller are not\n * structurally interchangeable: each carries this symbol with its backend\n * kind, the `<Form>` facade dispatches on it before any backend hook runs, and\n * the legacy field adapter refuses a controller it cannot bind.\n *\n * Phase 3 ships the shell only. No modern creator is exported, so a modern\n * controller cannot be constructed by consumers yet; every modern branch ends\n * in `modernBackendUnavailableError` until the modern backend lands.\n */\nexport const FORM_BACKEND: unique symbol = Symbol.for(\n '@cube-dev/ui-kit/form-backend',\n);\n\nexport interface LegacyFormBrand {\n readonly [FORM_BACKEND]: 'legacy';\n}\n\nexport interface ModernFormBrand {\n readonly [FORM_BACKEND]: 'modern';\n}\n\n/**\n * The modern controller as the shell knows it: the brand and nothing else.\n * The store, selectors, commands and the values type parameter arrive with\n * the modern backend.\n */\nexport type FormController = ModernFormBrand;\n\n/**\n * Only a modern brand is ever checked. Anything else — a branded legacy\n * instance, but also an unbranded object — counts as legacy on purpose: Cloud\n * narrows form props to structural types and its tests pass plain mocks, and\n * the legacy engine has always accepted them.\n */\nexport function isModernFormController(\n value: unknown,\n): value is FormController {\n return (\n !!value &&\n typeof value === 'object' &&\n (value as Record<PropertyKey, unknown>)[FORM_BACKEND] === 'modern'\n );\n}\n\nexport function modernBackendUnavailableError(receiver: string): Error {\n return new Error(\n `${receiver} received a modern form controller, but the modern Form backend is not available in this version of @cube-dev/ui-kit. Create forms with Form.useForm() for now.`,\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAYA,MAAa,eAA8B,OAAO,IAChD,gCACD;;;;;;;AAuBD,SAAgB,uBACd,OACyB;AACzB,QACE,CAAC,CAAC,SACF,OAAO,UAAU,YAChB,MAAuC,kBAAkB;;AAI9D,SAAgB,8BAA8B,UAAyB;AACrE,wBAAO,IAAI,MACT,GAAG,SAAS,iKACb"}