@multiplatform.one/forms 7.90.6 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (593) hide show
  1. package/dist/cjs/AdaptivePopup/index.native.js.map +1 -1
  2. package/dist/cjs/Button/IconButtonGroup.native.js.map +1 -1
  3. package/dist/cjs/Button/circleGlyph.native.js.map +1 -1
  4. package/dist/cjs/Button/glass.cjs +4 -0
  5. package/dist/cjs/Button/glass.native.js +6 -0
  6. package/dist/cjs/Button/glass.native.js.map +1 -1
  7. package/dist/cjs/Button/iconButtonGroupContext.native.js.map +1 -1
  8. package/dist/cjs/Button/index.cjs +1 -2
  9. package/dist/cjs/Button/index.native.js +1 -2
  10. package/dist/cjs/Button/index.native.js.map +1 -1
  11. package/dist/cjs/Button/webGlass.native.js.map +1 -1
  12. package/dist/cjs/Chip/index.native.js.map +1 -1
  13. package/dist/cjs/Composer/index.cjs +85 -0
  14. package/dist/cjs/Composer/index.native.js +95 -0
  15. package/dist/cjs/Composer/index.native.js.map +1 -0
  16. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  17. package/dist/cjs/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
  18. package/dist/cjs/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
  19. package/dist/cjs/ContextualSaveBar/index.native.js.map +1 -1
  20. package/dist/cjs/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
  21. package/dist/cjs/ControlGroup/index.native.js.map +1 -1
  22. package/dist/cjs/DescriptionList/index.native.js.map +1 -1
  23. package/dist/cjs/ErrorSummary.native.js.map +1 -1
  24. package/dist/cjs/FieldDisplay/editMode.native.js.map +1 -1
  25. package/dist/cjs/FieldDisplay/formatters.native.js.map +1 -1
  26. package/dist/cjs/FieldDisplay/index.native.js.map +1 -1
  27. package/dist/cjs/FieldGroup.native.js.map +1 -1
  28. package/dist/cjs/FloatingPanel/PanelHeader.native.js.map +1 -1
  29. package/dist/cjs/FloatingPanel/RegularPanel.native.js.map +1 -1
  30. package/dist/cjs/FloatingPanel/compactFace.native.js.map +1 -1
  31. package/dist/cjs/FloatingPanel/containingBlock.native.js.map +1 -1
  32. package/dist/cjs/FloatingPanel/coverRect.native.js.map +1 -1
  33. package/dist/cjs/FloatingPanel/echoContext.native.js.map +1 -1
  34. package/dist/cjs/FloatingPanel/index.cjs +1 -4
  35. package/dist/cjs/FloatingPanel/index.native.js +2 -3
  36. package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
  37. package/dist/cjs/FloatingPanel/nestedAction.native.js.map +1 -1
  38. package/dist/cjs/FloatingPanel/paintedBox.native.js.map +1 -1
  39. package/dist/cjs/FloatingPanel/panelWidth.native.js.map +1 -1
  40. package/dist/cjs/FloatingPanel/pointAnchor.native.js.map +1 -1
  41. package/dist/cjs/FloatingPanel/regularPlacement.native.js.map +1 -1
  42. package/dist/cjs/FloatingPanel/trailingAction.native.js.map +1 -1
  43. package/dist/cjs/FloatingPanel/useFloatingPanel.cjs +1 -7
  44. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js +1 -7
  45. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  46. package/dist/cjs/Form/index.native.js.map +1 -1
  47. package/dist/cjs/Form/submissionController.native.js.map +1 -1
  48. package/dist/cjs/Form/validateOn.native.js.map +1 -1
  49. package/dist/cjs/FormGrid.native.js.map +1 -1
  50. package/dist/cjs/FormSection.native.js.map +1 -1
  51. package/dist/cjs/InputParts/PasswordReveal.native.js.map +1 -1
  52. package/dist/cjs/InputParts/index.cjs +32 -1
  53. package/dist/cjs/InputParts/index.native.js +32 -1
  54. package/dist/cjs/InputParts/index.native.js.map +1 -1
  55. package/dist/cjs/InputParts/keyboardAppearance.native.js.map +1 -1
  56. package/dist/cjs/Label/index.native.js.map +1 -1
  57. package/dist/cjs/MediaPicker/base64.native.js.map +1 -1
  58. package/dist/cjs/MediaPicker/payload.native.js.map +1 -1
  59. package/dist/cjs/MediaPicker/types.native.js.map +1 -1
  60. package/dist/cjs/MediaPicker/useMediaPicker.native.js.map +1 -1
  61. package/dist/cjs/Skeleton/index.native.js.map +1 -1
  62. package/dist/cjs/Spinner/SpinnerGlyph.native.js.map +1 -1
  63. package/dist/cjs/Spinner/spinnerSize.native.js.map +1 -1
  64. package/dist/cjs/Table/index.native.js.map +1 -1
  65. package/dist/cjs/Wheel/haptic.native.js.map +1 -1
  66. package/dist/cjs/Wheel/index.native.js.map +1 -1
  67. package/dist/cjs/Wheel/wheelShared.native.js.map +1 -1
  68. package/dist/cjs/actionLabel.native.js.map +1 -1
  69. package/dist/cjs/fieldDefaults.native.js.map +1 -1
  70. package/dist/cjs/fieldLayout.native.js.map +1 -1
  71. package/dist/cjs/fields/Barcode/BarcodePreview.native.js.map +1 -1
  72. package/dist/cjs/fields/Barcode/code128.native.js.map +1 -1
  73. package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
  74. package/dist/cjs/fields/Barcode/qr.native.js.map +1 -1
  75. package/dist/cjs/fields/Barcode/scannerTypes.native.js.map +1 -1
  76. package/dist/cjs/fields/Checkbox/Checkbox.cjs +0 -2
  77. package/dist/cjs/fields/Checkbox/Checkbox.native.js +0 -2
  78. package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -1
  79. package/dist/cjs/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  80. package/dist/cjs/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  81. package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  82. package/dist/cjs/fields/Checkbox/CheckboxGroup.cjs +2 -4
  83. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js +2 -4
  84. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  85. package/dist/cjs/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
  86. package/dist/cjs/fields/Checkbox/index.native.js.map +1 -1
  87. package/dist/cjs/fields/ColorPicker/SystemColorField.native.js.map +1 -1
  88. package/dist/cjs/fields/ColorPicker/index.cjs +1 -3
  89. package/dist/cjs/fields/ColorPicker/index.native.js +2 -4
  90. package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
  91. package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
  92. package/dist/cjs/fields/ColorPicker/systemColorWell.gnome.native.js.map +1 -1
  93. package/dist/cjs/fields/Combobox/authorOptions.native.js.map +1 -1
  94. package/dist/cjs/fields/Combobox/index.cjs +0 -2
  95. package/dist/cjs/fields/Combobox/index.native.js +1 -3
  96. package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
  97. package/dist/cjs/fields/DatePicker/Calendar.native.js.map +1 -1
  98. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  99. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.cjs +2 -5
  100. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js +2 -5
  101. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  102. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +1 -3
  103. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js.map +1 -1
  104. package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -1
  105. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  106. package/dist/cjs/fields/DatePicker/catalog.cjs +2 -5
  107. package/dist/cjs/fields/DatePicker/catalog.native.js +2 -5
  108. package/dist/cjs/fields/DatePicker/catalog.native.js.map +1 -1
  109. package/dist/cjs/fields/DatePicker/fieldValueSync.native.js.map +1 -1
  110. package/dist/cjs/fields/DatePicker/index.native.js +1 -3
  111. package/dist/cjs/fields/DatePicker/index.native.js.map +1 -1
  112. package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
  113. package/dist/cjs/fields/DatePicker/utils.native.js.map +1 -1
  114. package/dist/cjs/fields/Duration/durationMath.native.js.map +1 -1
  115. package/dist/cjs/fields/Duration/durationWheelTypes.native.js.map +1 -1
  116. package/dist/cjs/fields/Duration/index.native.js.map +1 -1
  117. package/dist/cjs/fields/FileUpload/filePickerTypes.native.js.map +1 -1
  118. package/dist/cjs/fields/FileUpload/index.cjs +1 -3
  119. package/dist/cjs/fields/FileUpload/index.native.js +1 -3
  120. package/dist/cjs/fields/FileUpload/index.native.js.map +1 -1
  121. package/dist/cjs/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  122. package/dist/cjs/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
  123. package/dist/cjs/fields/Geolocation/geoValue.native.js.map +1 -1
  124. package/dist/cjs/fields/Geolocation/geocoder.native.js.map +1 -1
  125. package/dist/cjs/fields/Geolocation/geocoderContext.native.js.map +1 -1
  126. package/dist/cjs/fields/Geolocation/index.cjs +2 -2
  127. package/dist/cjs/fields/Geolocation/index.native.js +2 -2
  128. package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
  129. package/dist/cjs/fields/Geolocation/mapMath.native.js.map +1 -1
  130. package/dist/cjs/fields/Geolocation/mapTypes.native.js.map +1 -1
  131. package/dist/cjs/fields/Geolocation/nativeSearchFocus.native.js.map +1 -1
  132. package/dist/cjs/fields/Geolocation/photonGeocoder.native.js.map +1 -1
  133. package/dist/cjs/fields/Icon/drawnSet.native.js.map +1 -1
  134. package/dist/cjs/fields/Icon/index.cjs +1 -3
  135. package/dist/cjs/fields/Icon/index.native.js +1 -3
  136. package/dist/cjs/fields/Icon/index.native.js.map +1 -1
  137. package/dist/cjs/fields/ImageField/index.cjs +1 -5
  138. package/dist/cjs/fields/ImageField/index.native.js +1 -5
  139. package/dist/cjs/fields/ImageField/index.native.js.map +1 -1
  140. package/dist/cjs/fields/Input/index.native.js.map +1 -1
  141. package/dist/cjs/fields/MentionInput/index.cjs +3 -5
  142. package/dist/cjs/fields/MentionInput/index.native.js +3 -5
  143. package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
  144. package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
  145. package/dist/cjs/fields/OTPInput/otpCellCss.native.js.map +1 -1
  146. package/dist/cjs/fields/OTPInput/otpCellEdge.native.js.map +1 -1
  147. package/dist/cjs/fields/PhoneInput/dialCodes.native.js.map +1 -1
  148. package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
  149. package/dist/cjs/fields/PhoneInput/phone.native.js.map +1 -1
  150. package/dist/cjs/fields/PhoneInput/regionNames.native.js.map +1 -1
  151. package/dist/cjs/fields/Progress/index.native.js.map +1 -1
  152. package/dist/cjs/fields/RadioGroup/index.cjs +0 -2
  153. package/dist/cjs/fields/RadioGroup/index.native.js +0 -2
  154. package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
  155. package/dist/cjs/fields/Rating/index.native.js.map +1 -1
  156. package/dist/cjs/fields/Rating/ratingMath.native.js.map +1 -1
  157. package/dist/cjs/fields/Rating/types.native.js.map +1 -1
  158. package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
  159. package/dist/cjs/fields/Select/InlineChoices.native.js.map +1 -1
  160. package/dist/cjs/fields/Select/SheetPickerRow.native.js.map +1 -1
  161. package/dist/cjs/fields/Select/index.cjs +0 -2
  162. package/dist/cjs/fields/Select/index.native.js +3 -5
  163. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  164. package/dist/cjs/fields/Select/shouldInlineChoices.native.js.map +1 -1
  165. package/dist/cjs/fields/Signature/index.native.js.map +1 -1
  166. package/dist/cjs/fields/Slider/index.cjs +0 -2
  167. package/dist/cjs/fields/Slider/index.native.js +0 -2
  168. package/dist/cjs/fields/Slider/index.native.js.map +1 -1
  169. package/dist/cjs/fields/Slider/jumpMotion.native.js.map +1 -1
  170. package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
  171. package/dist/cjs/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
  172. package/dist/cjs/fields/Switch/footprint.native.js.map +1 -1
  173. package/dist/cjs/fields/Switch/index.native.js.map +1 -1
  174. package/dist/cjs/fields/TextArea/index.cjs +0 -2
  175. package/dist/cjs/fields/TextArea/index.native.js +1 -3
  176. package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
  177. package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -1
  178. package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
  179. package/dist/cjs/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
  180. package/dist/cjs/fields/TimeRangeScrubber/index.native.js.map +1 -1
  181. package/dist/cjs/fields/ToggleGroup/index.cjs +0 -2
  182. package/dist/cjs/fields/ToggleGroup/index.native.js +1 -3
  183. package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
  184. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  185. package/dist/cjs/fields/nativeDateTime/dateTimePickerLoader.native.js.map +1 -1
  186. package/dist/cjs/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
  187. package/dist/cjs/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -1
  188. package/dist/cjs/fields/nativeSelect.native.js.map +1 -1
  189. package/dist/cjs/fields/selectedOrder.native.js.map +1 -1
  190. package/dist/cjs/formSpacing.native.js.map +1 -1
  191. package/dist/cjs/hooks/useFocusManagement.native.js.map +1 -1
  192. package/dist/cjs/index.cjs +3 -1
  193. package/dist/cjs/index.gnome.cjs +200 -0
  194. package/dist/cjs/index.gnome.native.js +203 -0
  195. package/dist/cjs/index.gnome.native.js.map +1 -0
  196. package/dist/cjs/index.native.js +2 -0
  197. package/dist/cjs/index.native.js.map +1 -1
  198. package/dist/cjs/keyboard/chain.native.js.map +1 -1
  199. package/dist/cjs/keyboard/index.native.js.map +1 -1
  200. package/dist/cjs/keyboard/types.native.js.map +1 -1
  201. package/dist/cjs/nativeTwins.cjs +28 -0
  202. package/dist/cjs/nativeTwins.native.js +31 -0
  203. package/dist/cjs/nativeTwins.native.js.map +1 -0
  204. package/dist/cjs/requiredMarking.native.js.map +1 -1
  205. package/dist/cjs/shared/CheckGlyph.native.js.map +1 -1
  206. package/dist/cjs/shared/OverlayWindow.native.js +2 -33
  207. package/dist/cjs/shared/OverlayWindow.native.js.map +1 -1
  208. package/dist/cjs/shared/TimeColumn.native.js.map +1 -1
  209. package/dist/cjs/shared/capabilityPreflight.native.js.map +1 -1
  210. package/dist/cjs/shared/checkedOnField.native.js.map +1 -1
  211. package/dist/cjs/shared/choiceRowPress.native.js.map +1 -1
  212. package/dist/cjs/shared/colorRamps.native.js.map +1 -1
  213. package/dist/cjs/shared/devWarn.native.js.map +1 -1
  214. package/dist/cjs/shared/fieldRowContext.native.js.map +1 -1
  215. package/dist/cjs/shared/floatingList.native.js.map +1 -1
  216. package/dist/cjs/shared/focusManagement.native.js.map +1 -1
  217. package/dist/cjs/shared/groupContext.native.js.map +1 -1
  218. package/dist/cjs/shared/i18n.native.js.map +1 -1
  219. package/dist/cjs/shared/instantMotion.native.js.map +1 -1
  220. package/dist/cjs/shared/nativeA11y.native.js.map +1 -1
  221. package/dist/cjs/shared/nativeAutoFocus.native.js.map +1 -1
  222. package/dist/cjs/shared/nativeOverlayWindow.cjs +50 -0
  223. package/dist/cjs/shared/nativeOverlayWindow.native.js +54 -0
  224. package/dist/cjs/shared/nativeOverlayWindow.native.js.map +1 -0
  225. package/dist/cjs/shared/overlaySizeClass.native.js.map +1 -1
  226. package/dist/cjs/shared/overlayStack.native.js.map +1 -1
  227. package/dist/cjs/shared/panelPortal.native.js.map +1 -1
  228. package/dist/cjs/shared/pickerTriggerContract.native.js.map +1 -1
  229. package/dist/cjs/shared/pressSlopProps.native.js.map +1 -1
  230. package/dist/cjs/shared/restoreRetries.native.js.map +1 -1
  231. package/dist/cjs/shared/sheetNavigation.native.js.map +1 -1
  232. package/dist/cjs/shared/systemControlModules.gnome.native.js.map +1 -1
  233. package/dist/cjs/shared/systemControls.native.js.map +1 -1
  234. package/dist/cjs/shared/t.native.js.map +1 -1
  235. package/dist/cjs/shared/tableCellContext.native.js.map +1 -1
  236. package/dist/cjs/shared/useDragScroll.native.js.map +1 -1
  237. package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
  238. package/dist/cjs/shared/useSheetEscapeDismiss.native.js.map +1 -1
  239. package/dist/cjs/shared/useWheelIncrement.native.js.map +1 -1
  240. package/dist/cjs/shared/utils.native.js.map +1 -1
  241. package/dist/cjs/shared/zIndex.native.js.map +1 -1
  242. package/dist/cjs/standardActions.native.js.map +1 -1
  243. package/dist/cjs/themedPrimitives.native.js.map +1 -1
  244. package/dist/cjs/types.native.js.map +1 -1
  245. package/dist/cjs/utils/LinkCell.native.js.map +1 -1
  246. package/dist/esm/Button/glass.mjs +4 -1
  247. package/dist/esm/Button/glass.mjs.map +1 -1
  248. package/dist/esm/Button/glass.native.js +6 -1
  249. package/dist/esm/Button/glass.native.js.map +1 -1
  250. package/dist/esm/Button/index.mjs +2 -3
  251. package/dist/esm/Button/index.mjs.map +1 -1
  252. package/dist/esm/Button/index.native.js +2 -3
  253. package/dist/esm/Button/index.native.js.map +1 -1
  254. package/dist/esm/Composer/index.mjs +60 -0
  255. package/dist/esm/Composer/index.mjs.map +1 -0
  256. package/dist/esm/Composer/index.native.js +67 -0
  257. package/dist/esm/Composer/index.native.js.map +1 -0
  258. package/dist/esm/FloatingPanel/index.mjs +3 -5
  259. package/dist/esm/FloatingPanel/index.mjs.map +1 -1
  260. package/dist/esm/FloatingPanel/index.native.js +3 -4
  261. package/dist/esm/FloatingPanel/index.native.js.map +1 -1
  262. package/dist/esm/FloatingPanel/useFloatingPanel.mjs +2 -7
  263. package/dist/esm/FloatingPanel/useFloatingPanel.mjs.map +1 -1
  264. package/dist/esm/FloatingPanel/useFloatingPanel.native.js +2 -7
  265. package/dist/esm/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  266. package/dist/esm/InputParts/index.mjs +33 -2
  267. package/dist/esm/InputParts/index.mjs.map +1 -1
  268. package/dist/esm/InputParts/index.native.js +33 -2
  269. package/dist/esm/InputParts/index.native.js.map +1 -1
  270. package/dist/esm/fields/Checkbox/Checkbox.mjs +0 -2
  271. package/dist/esm/fields/Checkbox/Checkbox.mjs.map +1 -1
  272. package/dist/esm/fields/Checkbox/Checkbox.native.js +0 -2
  273. package/dist/esm/fields/Checkbox/Checkbox.native.js.map +1 -1
  274. package/dist/esm/fields/Checkbox/CheckboxGroup.mjs +2 -4
  275. package/dist/esm/fields/Checkbox/CheckboxGroup.mjs.map +1 -1
  276. package/dist/esm/fields/Checkbox/CheckboxGroup.native.js +2 -4
  277. package/dist/esm/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  278. package/dist/esm/fields/ColorPicker/index.mjs +1 -3
  279. package/dist/esm/fields/ColorPicker/index.mjs.map +1 -1
  280. package/dist/esm/fields/ColorPicker/index.native.js +2 -4
  281. package/dist/esm/fields/ColorPicker/index.native.js.map +1 -1
  282. package/dist/esm/fields/Combobox/index.mjs +0 -2
  283. package/dist/esm/fields/Combobox/index.mjs.map +1 -1
  284. package/dist/esm/fields/Combobox/index.native.js +1 -3
  285. package/dist/esm/fields/Combobox/index.native.js.map +1 -1
  286. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.mjs +2 -5
  287. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.mjs.map +1 -1
  288. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js +2 -5
  289. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  290. package/dist/esm/fields/DatePicker/DatetimePicker.native.js +1 -3
  291. package/dist/esm/fields/DatePicker/DatetimePicker.native.js.map +1 -1
  292. package/dist/esm/fields/DatePicker/catalog.mjs +2 -5
  293. package/dist/esm/fields/DatePicker/catalog.mjs.map +1 -1
  294. package/dist/esm/fields/DatePicker/catalog.native.js +2 -5
  295. package/dist/esm/fields/DatePicker/catalog.native.js.map +1 -1
  296. package/dist/esm/fields/DatePicker/index.native.js +1 -3
  297. package/dist/esm/fields/DatePicker/index.native.js.map +1 -1
  298. package/dist/esm/fields/FileUpload/index.mjs +1 -3
  299. package/dist/esm/fields/FileUpload/index.mjs.map +1 -1
  300. package/dist/esm/fields/FileUpload/index.native.js +1 -3
  301. package/dist/esm/fields/FileUpload/index.native.js.map +1 -1
  302. package/dist/esm/fields/Geolocation/index.mjs +2 -2
  303. package/dist/esm/fields/Geolocation/index.mjs.map +1 -1
  304. package/dist/esm/fields/Geolocation/index.native.js +2 -2
  305. package/dist/esm/fields/Geolocation/index.native.js.map +1 -1
  306. package/dist/esm/fields/Icon/index.mjs +1 -3
  307. package/dist/esm/fields/Icon/index.mjs.map +1 -1
  308. package/dist/esm/fields/Icon/index.native.js +1 -3
  309. package/dist/esm/fields/Icon/index.native.js.map +1 -1
  310. package/dist/esm/fields/ImageField/index.mjs +1 -5
  311. package/dist/esm/fields/ImageField/index.mjs.map +1 -1
  312. package/dist/esm/fields/ImageField/index.native.js +1 -5
  313. package/dist/esm/fields/ImageField/index.native.js.map +1 -1
  314. package/dist/esm/fields/MentionInput/index.mjs +3 -5
  315. package/dist/esm/fields/MentionInput/index.mjs.map +1 -1
  316. package/dist/esm/fields/MentionInput/index.native.js +3 -5
  317. package/dist/esm/fields/MentionInput/index.native.js.map +1 -1
  318. package/dist/esm/fields/RadioGroup/index.mjs +0 -2
  319. package/dist/esm/fields/RadioGroup/index.mjs.map +1 -1
  320. package/dist/esm/fields/RadioGroup/index.native.js +0 -2
  321. package/dist/esm/fields/RadioGroup/index.native.js.map +1 -1
  322. package/dist/esm/fields/Select/index.mjs +0 -2
  323. package/dist/esm/fields/Select/index.mjs.map +1 -1
  324. package/dist/esm/fields/Select/index.native.js +3 -5
  325. package/dist/esm/fields/Select/index.native.js.map +1 -1
  326. package/dist/esm/fields/Slider/index.mjs +0 -2
  327. package/dist/esm/fields/Slider/index.mjs.map +1 -1
  328. package/dist/esm/fields/Slider/index.native.js +0 -2
  329. package/dist/esm/fields/Slider/index.native.js.map +1 -1
  330. package/dist/esm/fields/TextArea/index.mjs +0 -2
  331. package/dist/esm/fields/TextArea/index.mjs.map +1 -1
  332. package/dist/esm/fields/TextArea/index.native.js +1 -3
  333. package/dist/esm/fields/TextArea/index.native.js.map +1 -1
  334. package/dist/esm/fields/ToggleGroup/index.mjs +0 -2
  335. package/dist/esm/fields/ToggleGroup/index.mjs.map +1 -1
  336. package/dist/esm/fields/ToggleGroup/index.native.js +1 -3
  337. package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -1
  338. package/dist/esm/index.gnome.mjs +61 -0
  339. package/dist/esm/index.gnome.mjs.map +1 -0
  340. package/dist/esm/index.gnome.native.js +61 -0
  341. package/dist/esm/index.gnome.native.js.map +1 -0
  342. package/dist/esm/index.mjs +2 -1
  343. package/dist/esm/index.mjs.map +1 -1
  344. package/dist/esm/index.native.js +2 -1
  345. package/dist/esm/index.native.js.map +1 -1
  346. package/dist/esm/nativeTwins.mjs +3 -0
  347. package/dist/esm/nativeTwins.mjs.map +1 -0
  348. package/dist/esm/nativeTwins.native.js +3 -0
  349. package/dist/esm/nativeTwins.native.js.map +1 -0
  350. package/dist/esm/shared/OverlayWindow.native.js +1 -25
  351. package/dist/esm/shared/OverlayWindow.native.js.map +1 -1
  352. package/dist/esm/shared/nativeOverlayWindow.mjs +25 -0
  353. package/dist/esm/shared/nativeOverlayWindow.mjs.map +1 -0
  354. package/dist/esm/shared/nativeOverlayWindow.native.js +26 -0
  355. package/dist/esm/shared/nativeOverlayWindow.native.js.map +1 -0
  356. package/dist/jsx/Button/glass.mjs +4 -1
  357. package/dist/jsx/Button/glass.mjs.map +1 -1
  358. package/dist/jsx/Button/glass.native.js +6 -0
  359. package/dist/jsx/Button/glass.native.js.map +1 -1
  360. package/dist/jsx/Button/index.mjs +2 -3
  361. package/dist/jsx/Button/index.mjs.map +1 -1
  362. package/dist/jsx/Button/index.native.js +1 -2
  363. package/dist/jsx/Button/index.native.js.map +1 -1
  364. package/dist/jsx/Composer/index.mjs +60 -0
  365. package/dist/jsx/Composer/index.mjs.map +1 -0
  366. package/dist/jsx/Composer/index.native.js +95 -0
  367. package/dist/jsx/Composer/index.native.js.map +1 -0
  368. package/dist/jsx/FloatingPanel/index.mjs +3 -5
  369. package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
  370. package/dist/jsx/FloatingPanel/index.native.js +2 -3
  371. package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
  372. package/dist/jsx/FloatingPanel/useFloatingPanel.mjs +2 -7
  373. package/dist/jsx/FloatingPanel/useFloatingPanel.mjs.map +1 -1
  374. package/dist/jsx/FloatingPanel/useFloatingPanel.native.js +1 -7
  375. package/dist/jsx/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  376. package/dist/jsx/InputParts/index.mjs +33 -2
  377. package/dist/jsx/InputParts/index.mjs.map +1 -1
  378. package/dist/jsx/InputParts/index.native.js +32 -1
  379. package/dist/jsx/InputParts/index.native.js.map +1 -1
  380. package/dist/jsx/fields/Checkbox/Checkbox.mjs +0 -2
  381. package/dist/jsx/fields/Checkbox/Checkbox.mjs.map +1 -1
  382. package/dist/jsx/fields/Checkbox/Checkbox.native.js +0 -2
  383. package/dist/jsx/fields/Checkbox/Checkbox.native.js.map +1 -1
  384. package/dist/jsx/fields/Checkbox/CheckboxGroup.mjs +2 -4
  385. package/dist/jsx/fields/Checkbox/CheckboxGroup.mjs.map +1 -1
  386. package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js +2 -4
  387. package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  388. package/dist/jsx/fields/ColorPicker/index.mjs +1 -3
  389. package/dist/jsx/fields/ColorPicker/index.mjs.map +1 -1
  390. package/dist/jsx/fields/ColorPicker/index.native.js +2 -4
  391. package/dist/jsx/fields/ColorPicker/index.native.js.map +1 -1
  392. package/dist/jsx/fields/Combobox/index.mjs +0 -2
  393. package/dist/jsx/fields/Combobox/index.mjs.map +1 -1
  394. package/dist/jsx/fields/Combobox/index.native.js +1 -3
  395. package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
  396. package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.mjs +2 -5
  397. package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.mjs.map +1 -1
  398. package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js +2 -5
  399. package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  400. package/dist/jsx/fields/DatePicker/DatetimePicker.native.js +1 -3
  401. package/dist/jsx/fields/DatePicker/DatetimePicker.native.js.map +1 -1
  402. package/dist/jsx/fields/DatePicker/catalog.mjs +2 -5
  403. package/dist/jsx/fields/DatePicker/catalog.mjs.map +1 -1
  404. package/dist/jsx/fields/DatePicker/catalog.native.js +2 -5
  405. package/dist/jsx/fields/DatePicker/catalog.native.js.map +1 -1
  406. package/dist/jsx/fields/DatePicker/index.native.js +1 -3
  407. package/dist/jsx/fields/DatePicker/index.native.js.map +1 -1
  408. package/dist/jsx/fields/FileUpload/index.mjs +1 -3
  409. package/dist/jsx/fields/FileUpload/index.mjs.map +1 -1
  410. package/dist/jsx/fields/FileUpload/index.native.js +1 -3
  411. package/dist/jsx/fields/FileUpload/index.native.js.map +1 -1
  412. package/dist/jsx/fields/Geolocation/index.mjs +2 -2
  413. package/dist/jsx/fields/Geolocation/index.mjs.map +1 -1
  414. package/dist/jsx/fields/Geolocation/index.native.js +2 -2
  415. package/dist/jsx/fields/Geolocation/index.native.js.map +1 -1
  416. package/dist/jsx/fields/Icon/index.mjs +1 -3
  417. package/dist/jsx/fields/Icon/index.mjs.map +1 -1
  418. package/dist/jsx/fields/Icon/index.native.js +1 -3
  419. package/dist/jsx/fields/Icon/index.native.js.map +1 -1
  420. package/dist/jsx/fields/ImageField/index.mjs +1 -5
  421. package/dist/jsx/fields/ImageField/index.mjs.map +1 -1
  422. package/dist/jsx/fields/ImageField/index.native.js +1 -5
  423. package/dist/jsx/fields/ImageField/index.native.js.map +1 -1
  424. package/dist/jsx/fields/MentionInput/index.mjs +3 -5
  425. package/dist/jsx/fields/MentionInput/index.mjs.map +1 -1
  426. package/dist/jsx/fields/MentionInput/index.native.js +3 -5
  427. package/dist/jsx/fields/MentionInput/index.native.js.map +1 -1
  428. package/dist/jsx/fields/RadioGroup/index.mjs +0 -2
  429. package/dist/jsx/fields/RadioGroup/index.mjs.map +1 -1
  430. package/dist/jsx/fields/RadioGroup/index.native.js +0 -2
  431. package/dist/jsx/fields/RadioGroup/index.native.js.map +1 -1
  432. package/dist/jsx/fields/Select/index.mjs +0 -2
  433. package/dist/jsx/fields/Select/index.mjs.map +1 -1
  434. package/dist/jsx/fields/Select/index.native.js +3 -5
  435. package/dist/jsx/fields/Select/index.native.js.map +1 -1
  436. package/dist/jsx/fields/Slider/index.mjs +0 -2
  437. package/dist/jsx/fields/Slider/index.mjs.map +1 -1
  438. package/dist/jsx/fields/Slider/index.native.js +0 -2
  439. package/dist/jsx/fields/Slider/index.native.js.map +1 -1
  440. package/dist/jsx/fields/TextArea/index.mjs +0 -2
  441. package/dist/jsx/fields/TextArea/index.mjs.map +1 -1
  442. package/dist/jsx/fields/TextArea/index.native.js +1 -3
  443. package/dist/jsx/fields/TextArea/index.native.js.map +1 -1
  444. package/dist/jsx/fields/ToggleGroup/index.mjs +0 -2
  445. package/dist/jsx/fields/ToggleGroup/index.mjs.map +1 -1
  446. package/dist/jsx/fields/ToggleGroup/index.native.js +1 -3
  447. package/dist/jsx/fields/ToggleGroup/index.native.js.map +1 -1
  448. package/dist/jsx/index.gnome.mjs +61 -0
  449. package/dist/jsx/index.gnome.mjs.map +1 -0
  450. package/dist/jsx/index.gnome.native.js +203 -0
  451. package/dist/jsx/index.gnome.native.js.map +1 -0
  452. package/dist/jsx/index.js +2 -1
  453. package/dist/jsx/index.js.map +1 -1
  454. package/dist/jsx/index.mjs +2 -1
  455. package/dist/jsx/index.mjs.map +1 -1
  456. package/dist/jsx/index.native.js +2 -0
  457. package/dist/jsx/index.native.js.map +1 -1
  458. package/dist/jsx/nativeTwins.mjs +3 -0
  459. package/dist/jsx/nativeTwins.mjs.map +1 -0
  460. package/dist/jsx/nativeTwins.native.js +31 -0
  461. package/dist/jsx/nativeTwins.native.js.map +1 -0
  462. package/dist/jsx/shared/OverlayWindow.native.js +2 -33
  463. package/dist/jsx/shared/OverlayWindow.native.js.map +1 -1
  464. package/dist/jsx/shared/nativeOverlayWindow.mjs +25 -0
  465. package/dist/jsx/shared/nativeOverlayWindow.mjs.map +1 -0
  466. package/dist/jsx/shared/nativeOverlayWindow.native.js +54 -0
  467. package/dist/jsx/shared/nativeOverlayWindow.native.js.map +1 -0
  468. package/package.json +22 -9
  469. package/src/Button/glass.native.field.spec.ts +14 -0
  470. package/src/Button/glass.native.ts +5 -0
  471. package/src/Button/glass.ts +8 -0
  472. package/src/Button/index.tsx +2 -7
  473. package/src/Composer/Composer.spec.tsx +66 -0
  474. package/src/Composer/Composer.stories.tsx +56 -0
  475. package/src/Composer/index.tsx +82 -0
  476. package/src/FloatingPanel/FloatingPanel.stories.tsx +1 -1
  477. package/src/FloatingPanel/index.native.tsx +2 -3
  478. package/src/FloatingPanel/index.tsx +1 -10
  479. package/src/FloatingPanel/panelWidthContract.spec.ts +1 -10
  480. package/src/FloatingPanel/useFloatingPanel.spec.tsx +0 -26
  481. package/src/FloatingPanel/useFloatingPanel.ts +1 -19
  482. package/src/FloatingPanel/viewportHydration.spec.tsx +2 -2
  483. package/src/InputParts/InputParts.glass.spec.tsx +99 -0
  484. package/src/InputParts/index.tsx +41 -0
  485. package/src/fields/Checkbox/Checkbox.spec.tsx +8 -25
  486. package/src/fields/Checkbox/Checkbox.stories.tsx +4 -4
  487. package/src/fields/Checkbox/Checkbox.tsx +1 -5
  488. package/src/fields/Checkbox/CheckboxGroup.stories.tsx +2 -2
  489. package/src/fields/Checkbox/CheckboxGroup.tsx +3 -8
  490. package/src/fields/ColorPicker/ColorPicker.spec.tsx +2 -11
  491. package/src/fields/ColorPicker/index.tsx +3 -7
  492. package/src/fields/Combobox/Combobox.spec.tsx +1 -5
  493. package/src/fields/Combobox/Combobox.stories.tsx +6 -6
  494. package/src/fields/Combobox/index.tsx +1 -6
  495. package/src/fields/DatePicker/DatePicker.spec.tsx +4 -21
  496. package/src/fields/DatePicker/DatetimePicker.catalog.tsx +3 -9
  497. package/src/fields/DatePicker/DatetimePicker.native.spec.tsx +3 -13
  498. package/src/fields/DatePicker/DatetimePicker.native.tsx +1 -4
  499. package/src/fields/DatePicker/DatetimePicker.spec.tsx +3 -18
  500. package/src/fields/DatePicker/DatetimePicker.stories.tsx +3 -3
  501. package/src/fields/DatePicker/catalog.tsx +3 -9
  502. package/src/fields/DatePicker/index.native.tsx +1 -4
  503. package/src/fields/FileUpload/FileUpload.spec.tsx +2 -10
  504. package/src/fields/FileUpload/index.tsx +3 -7
  505. package/src/fields/Geolocation/index.tsx +2 -2
  506. package/src/fields/Icon/index.tsx +1 -5
  507. package/src/fields/ImageField/ImageField.spec.tsx +2 -10
  508. package/src/fields/ImageField/index.tsx +2 -9
  509. package/src/fields/MentionInput/MentionInput.spec.tsx +2 -14
  510. package/src/fields/MentionInput/index.tsx +3 -7
  511. package/src/fields/RadioGroup/RadioGroup.spec.tsx +3 -21
  512. package/src/fields/RadioGroup/RadioGroup.stories.tsx +4 -4
  513. package/src/fields/RadioGroup/index.tsx +1 -6
  514. package/src/fields/Select/Select.spec.tsx +1 -5
  515. package/src/fields/Select/Select.stories.tsx +5 -5
  516. package/src/fields/Select/index.tsx +1 -6
  517. package/src/fields/Slider/Slider.spec.tsx +8 -22
  518. package/src/fields/Slider/Slider.stories.tsx +5 -5
  519. package/src/fields/Slider/index.tsx +1 -6
  520. package/src/fields/TextArea/TextArea.spec.tsx +17 -35
  521. package/src/fields/TextArea/TextArea.stories.tsx +6 -6
  522. package/src/fields/TextArea/index.tsx +0 -4
  523. package/src/fields/ToggleGroup/ToggleGroup.spec.tsx +2 -11
  524. package/src/fields/ToggleGroup/ToggleGroup.stories.tsx +5 -5
  525. package/src/fields/ToggleGroup/index.tsx +1 -6
  526. package/src/fields/pickerActivation.spec.tsx +1 -1
  527. package/src/fields/pickerRows.spec.tsx +4 -4
  528. package/src/index.gnome.ts +150 -0
  529. package/src/index.ts +3 -0
  530. package/src/nativeTwins.ts +8 -0
  531. package/src/shared/OverlayWindow.native.tsx +1 -28
  532. package/src/shared/nativeOverlayWindow.tsx +28 -0
  533. package/types/Button/glass.d.ts +5 -0
  534. package/types/Button/glass.d.ts.map +1 -1
  535. package/types/Button/glass.native.d.ts +2 -0
  536. package/types/Button/glass.native.d.ts.map +1 -1
  537. package/types/Button/index.d.ts +1 -2
  538. package/types/Button/index.d.ts.map +1 -1
  539. package/types/Composer/index.d.ts +28 -0
  540. package/types/Composer/index.d.ts.map +1 -0
  541. package/types/FloatingPanel/index.d.ts +1 -7
  542. package/types/FloatingPanel/index.d.ts.map +1 -1
  543. package/types/FloatingPanel/index.native.d.ts +1 -1
  544. package/types/FloatingPanel/index.native.d.ts.map +1 -1
  545. package/types/FloatingPanel/useFloatingPanel.d.ts +1 -11
  546. package/types/FloatingPanel/useFloatingPanel.d.ts.map +1 -1
  547. package/types/InputParts/index.d.ts.map +1 -1
  548. package/types/fields/Checkbox/Checkbox.d.ts +1 -3
  549. package/types/fields/Checkbox/Checkbox.d.ts.map +1 -1
  550. package/types/fields/Checkbox/CheckboxGroup.d.ts +1 -4
  551. package/types/fields/Checkbox/CheckboxGroup.d.ts.map +1 -1
  552. package/types/fields/Checkbox/index.d.ts +3 -3
  553. package/types/fields/ColorPicker/index.d.ts +1 -3
  554. package/types/fields/ColorPicker/index.d.ts.map +1 -1
  555. package/types/fields/Combobox/index.d.ts +1 -4
  556. package/types/fields/Combobox/index.d.ts.map +1 -1
  557. package/types/fields/DatePicker/DatetimePicker.catalog.d.ts +0 -3
  558. package/types/fields/DatePicker/DatetimePicker.catalog.d.ts.map +1 -1
  559. package/types/fields/DatePicker/DatetimePicker.native.d.ts +0 -1
  560. package/types/fields/DatePicker/DatetimePicker.native.d.ts.map +1 -1
  561. package/types/fields/DatePicker/catalog.d.ts +0 -3
  562. package/types/fields/DatePicker/catalog.d.ts.map +1 -1
  563. package/types/fields/DatePicker/index.native.d.ts +0 -1
  564. package/types/fields/DatePicker/index.native.d.ts.map +1 -1
  565. package/types/fields/FileUpload/index.d.ts +1 -3
  566. package/types/fields/FileUpload/index.d.ts.map +1 -1
  567. package/types/fields/Icon/index.d.ts +0 -2
  568. package/types/fields/Icon/index.d.ts.map +1 -1
  569. package/types/fields/ImageField/index.d.ts +2 -4
  570. package/types/fields/ImageField/index.d.ts.map +1 -1
  571. package/types/fields/MentionInput/index.d.ts +0 -2
  572. package/types/fields/MentionInput/index.d.ts.map +1 -1
  573. package/types/fields/RadioGroup/index.d.ts +1 -4
  574. package/types/fields/RadioGroup/index.d.ts.map +1 -1
  575. package/types/fields/Select/index.d.ts +1 -4
  576. package/types/fields/Select/index.d.ts.map +1 -1
  577. package/types/fields/Slider/index.d.ts +1 -4
  578. package/types/fields/Slider/index.d.ts.map +1 -1
  579. package/types/fields/TextArea/index.d.ts +1 -3
  580. package/types/fields/TextArea/index.d.ts.map +1 -1
  581. package/types/fields/ToggleGroup/index.d.ts +1 -4
  582. package/types/fields/ToggleGroup/index.d.ts.map +1 -1
  583. package/types/index.d.ts +2 -0
  584. package/types/index.d.ts.map +1 -1
  585. package/types/index.gnome.d.ts +88 -0
  586. package/types/index.gnome.d.ts.map +1 -0
  587. package/types/nativeTwins.d.ts +8 -0
  588. package/types/nativeTwins.d.ts.map +1 -0
  589. package/types/shared/OverlayWindow.native.d.ts +1 -14
  590. package/types/shared/OverlayWindow.native.d.ts.map +1 -1
  591. package/types/shared/nativeOverlayWindow.d.ts +15 -0
  592. package/types/shared/nativeOverlayWindow.d.ts.map +1 -0
  593. package/types/shared/pickerTriggerContract.d.ts +3 -3
@@ -0,0 +1,99 @@
1
+ /**
2
+ * LC-268 (FZ-10606): on iOS 26 a field in chrome, the composer and the search
3
+ * field in a bar, sits on the system's Liquid Glass. Everywhere else, and in
4
+ * content, it is the plain field. One component and one API: the bar and the
5
+ * platform pick it, never an app prop.
6
+ */
7
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
8
+ import { Surface } from "@multiplatform.one/theme";
9
+ import type { ReactElement } from "react";
10
+ import { afterEach, describe, expect, it, vi } from "vitest";
11
+ import { SearchInput } from "../fields/SearchInput";
12
+ import { Input } from "./index";
13
+
14
+ const glass = vi.hoisted(() => ({ system: false }));
15
+ vi.mock("../Button/glass", async (importOriginal) => {
16
+ const real = await importOriginal<typeof import("../Button/glass")>();
17
+ function FakeSystemGlass({
18
+ glassEffectStyle,
19
+ isInteractive,
20
+ style: _style,
21
+ children,
22
+ }: Record<string, unknown>) {
23
+ return (
24
+ <div
25
+ data-glass="system"
26
+ data-effect={glassEffectStyle as string}
27
+ data-interactive={String(isInteractive)}
28
+ >
29
+ {children as never}
30
+ </div>
31
+ );
32
+ }
33
+ return {
34
+ ...real,
35
+ loadFieldGlassView: () => (glass.system ? FakeSystemGlass : null),
36
+ };
37
+ });
38
+
39
+ afterEach(() => {
40
+ glass.system = false;
41
+ });
42
+
43
+ function field(): ReactElement {
44
+ return (
45
+ <Input.Box aria-label="Message">
46
+ <Input.Area placeholder="Type a message" />
47
+ </Input.Box>
48
+ );
49
+ }
50
+
51
+ function glassOf(container: HTMLElement): Element | null {
52
+ return container.querySelector("[data-glass]");
53
+ }
54
+
55
+ describe("LC-268: a field in chrome sits on system Liquid Glass (FZ-10606)", () => {
56
+ it("in a bar on iOS 26 the field's ground is the system's glass, not MPO's fill", () => {
57
+ glass.system = true;
58
+ const { container } = renderWithProviders(<Surface bar>{field()}</Surface>);
59
+ const layer = glassOf(container)!;
60
+ expect(layer.getAttribute("data-glass")).toBe("system");
61
+ expect(layer.getAttribute("data-effect")).toBe("regular");
62
+ expect(layer.getAttribute("data-interactive")).toBe("false");
63
+ const box = container.querySelector("[data-mp-field-glass]")!;
64
+ expect(box.contains(layer)).toBe(true);
65
+ expect(box.contains(container.querySelector("textarea, input"))).toBe(true);
66
+ const ground = getComputedStyle(box as HTMLElement).backgroundColor;
67
+ expect(["", "transparent", "rgba(0, 0, 0, 0)"]).toContain(ground);
68
+ });
69
+
70
+ it("a search field in a bar takes the same glass, its slotted glyphs stay bare", () => {
71
+ glass.system = true;
72
+ const { container, getByLabelText } = renderWithProviders(
73
+ <Surface bar>
74
+ <SearchInput placeholder="Search" />
75
+ </Surface>,
76
+ );
77
+ expect(glassOf(container)?.getAttribute("data-glass")).toBe("system");
78
+ expect(container.querySelector("[data-mp-field-glass]")).not.toBeNull();
79
+ expect(getByLabelText("Search")).toBeTruthy();
80
+ });
81
+
82
+ it("in content the field stays plain even where iOS draws glass", () => {
83
+ glass.system = true;
84
+ const { container } = renderWithProviders(field());
85
+ expect(glassOf(container)).toBeNull();
86
+ expect(container.querySelector("[data-mp-field-glass]")).toBeNull();
87
+ });
88
+
89
+ it("without system glass (Android, the web, iOS before 26) a bar's field stays plain", () => {
90
+ const { container } = renderWithProviders(<Surface bar>{field()}</Surface>);
91
+ expect(glassOf(container)).toBeNull();
92
+ expect(container.querySelector("[data-mp-field-glass]")).toBeNull();
93
+ });
94
+
95
+ it("the web loader never hands a field glass, iOS Safari included", async () => {
96
+ const real = await vi.importActual<typeof import("../Button/glass")>("../Button/glass");
97
+ expect(real.loadFieldGlassView()).toBeNull();
98
+ });
99
+ });
@@ -48,6 +48,7 @@ import {
48
48
  resolveGlyphPaint,
49
49
  SIZE_RECIPE_RADIUS_TOKEN_TO_STOP,
50
50
  Surface,
51
+ useBarSurface,
51
52
  sizeRecipeBoxVariants,
52
53
  sizeRecipeForToken,
53
54
  sizeRecipeIconVariants,
@@ -67,6 +68,7 @@ import { useFieldRow } from "../shared/fieldRowContext";
67
68
  import { useIsInTableCell } from "../shared/tableCellContext";
68
69
  import { useInPanelEcho, usePanelTriggerRadiusReporter } from "../FloatingPanel/echoContext";
69
70
  import { keyboardAppearanceFor } from "./keyboardAppearance";
71
+ import { loadFieldGlassView } from "../Button/glass";
70
72
  import { useFieldA11y, useFieldDescribedBy } from "../fieldLayout";
71
73
 
72
74
  /**
@@ -394,6 +396,7 @@ const InputGroupImpl = InputGroupFrame.styleable<{
394
396
  const inFieldRow = useFieldRow();
395
397
  const groupedVertical = useControlGroupVertical();
396
398
  const inTableCell = useIsInTableCell() || inFieldRow;
399
+ const barSurface = useBarSurface();
397
400
  // Native Pressable owns onPress; do not also pass it to XGroup (double-fire).
398
401
  const framePressProps = isWeb ? { onPress, disabled } : { disabled };
399
402
  // Standalone Box clips children to radius. Grouped / in-cell frames leave
@@ -604,6 +607,15 @@ const InputGroupImpl = InputGroupFrame.styleable<{
604
607
  );
605
608
  }
606
609
 
610
+ const FieldGlass = barSurface && !inPanelEcho ? loadFieldGlassView() : null;
611
+ const glassChrome = FieldGlass
612
+ ? {
613
+ ...fieldGlassChrome,
614
+ ...(focused ? undefined : { borderColor: "transparent" }),
615
+ "data-mp-field-glass": "",
616
+ }
617
+ : undefined;
618
+
607
619
  return inFieldFrame(
608
620
  <FocusContext.Provider focused={focused} setFocused={setFocused}>
609
621
  {wrapNativePressable(
@@ -652,8 +664,16 @@ const InputGroupImpl = InputGroupFrame.styleable<{
652
664
  }
653
665
  : undefined)}
654
666
  {...echoChrome}
667
+ {...glassChrome}
655
668
  overflow={boxOverflow}
656
669
  >
670
+ {FieldGlass ? (
671
+ <FieldGlass
672
+ glassEffectStyle="regular"
673
+ isInteractive={false}
674
+ style={{ ...fieldGlassFill, borderRadius: drawnRadius }}
675
+ />
676
+ ) : null}
657
677
  {children}
658
678
  {trailingSlot}
659
679
  </InputGroupFrame>,
@@ -662,6 +682,27 @@ const InputGroupImpl = InputGroupFrame.styleable<{
662
682
  );
663
683
  });
664
684
 
685
+ /**
686
+ * LC-268 (FZ-10606): a field in a bar on iOS 26 sits on the system's Liquid
687
+ * Glass, the composer and search field of the iOS 26 bars. The glass is the
688
+ * ground, so MPO paints no fill, shadow or resting edge over it; focus keeps
689
+ * its accent border (LC-133).
690
+ */
691
+ const fieldGlassChrome = {
692
+ backgroundColor: "transparent",
693
+ elevation: undefined,
694
+ shadowColor: "transparent",
695
+ shadowOpacity: 0,
696
+ } as const;
697
+
698
+ const fieldGlassFill = {
699
+ position: "absolute",
700
+ top: 0,
701
+ right: 0,
702
+ bottom: 0,
703
+ left: 0,
704
+ } as const;
705
+
665
706
  /**
666
707
  * LC-176 (FZ-8711): everything inside a field's frame is part of the field,
667
708
  * so an icon button in its leading or trailing slot draws the bare tinted
@@ -62,14 +62,14 @@ describe("Checkbox", () => {
62
62
  expect(result.container.querySelector("[role='checkbox']")).toBeNull();
63
63
  });
64
64
 
65
- it("calls onCheckedChange when clicked", () => {
66
- const onCheckedChange = vi.fn();
65
+ it("calls onChange when clicked", () => {
66
+ const onChange = vi.fn();
67
67
  const result = renderWithProviders(
68
- <Checkbox name="cb" defaultValue={false} onCheckedChange={onCheckedChange} />,
68
+ <Checkbox name="cb" defaultValue={false} onChange={onChange} />,
69
69
  );
70
70
  const checkbox = result.getCheckbox();
71
71
  if (checkbox) fireEvent.click(checkbox);
72
- expect(onCheckedChange).toHaveBeenCalledWith(true);
72
+ expect(onChange).toHaveBeenCalledWith(true);
73
73
  });
74
74
 
75
75
  it("clicking the painted box still toggles", () => {
@@ -86,23 +86,15 @@ describe("Checkbox", () => {
86
86
  expect(onChange).toHaveBeenCalledWith(true);
87
87
  });
88
88
 
89
- it("fires canonical onChange and the deprecated onCheckedChange alias once each", () => {
89
+ it("fires canonical onChange once", () => {
90
90
  const onChange = vi.fn();
91
- const onCheckedChange = vi.fn();
92
91
  const result = renderWithProviders(
93
- <Checkbox
94
- name="cb"
95
- defaultValue={false}
96
- onChange={onChange}
97
- onCheckedChange={onCheckedChange}
98
- />,
92
+ <Checkbox name="cb" defaultValue={false} onChange={onChange} />,
99
93
  );
100
94
  const checkbox = result.getCheckbox();
101
95
  if (checkbox) fireEvent.click(checkbox);
102
96
  expect(onChange).toHaveBeenCalledTimes(1);
103
97
  expect(onChange).toHaveBeenCalledWith(true);
104
- expect(onCheckedChange).toHaveBeenCalledTimes(1);
105
- expect(onCheckedChange).toHaveBeenCalledWith(true);
106
98
  });
107
99
  });
108
100
 
@@ -236,25 +228,16 @@ describe("CheckboxGroup", () => {
236
228
  expect(result.findTextElement("Option C")).toBeDefined();
237
229
  });
238
230
 
239
- it("fires canonical onChange and the deprecated onValueChange alias once each", () => {
231
+ it("fires canonical onChange once", () => {
240
232
  const onChange = vi.fn();
241
- const onValueChange = vi.fn();
242
233
  const result = renderWithProviders(
243
- <CheckboxGroup
244
- label="Pick options"
245
- name="opts"
246
- options={options}
247
- onChange={onChange}
248
- onValueChange={onValueChange}
249
- />,
234
+ <CheckboxGroup label="Pick options" name="opts" options={options} onChange={onChange} />,
250
235
  );
251
236
  const checkbox = result.container.querySelector("[role='checkbox']");
252
237
  expect(checkbox).toBeTruthy();
253
238
  if (checkbox) fireEvent.click(checkbox);
254
239
  expect(onChange).toHaveBeenCalledTimes(1);
255
240
  expect(onChange).toHaveBeenCalledWith(["a"]);
256
- expect(onValueChange).toHaveBeenCalledTimes(1);
257
- expect(onValueChange).toHaveBeenCalledWith(["a"]);
258
241
  });
259
242
 
260
243
  it("renders required label with asterisk", () => {
@@ -182,9 +182,9 @@ export const Comparison: StoryObj = {
182
182
  <Checkbox
183
183
  label="Accept terms"
184
184
  defaultValue={customChecked}
185
- onCheckedChange={(val) => {
185
+ onChange={(val) => {
186
186
  setCustomChecked(!!val);
187
- action("custom.onCheckedChange")(val);
187
+ action("custom.onChange")(val);
188
188
  }}
189
189
  />
190
190
  </YStack>
@@ -332,9 +332,9 @@ export const CheckboxGroupInteractive: StoryObj = {
332
332
  { value: "opt3", label: "Option 3" },
333
333
  ]}
334
334
  value={selected}
335
- onValueChange={(values) => {
335
+ onChange={(values) => {
336
336
  setSelected(values);
337
- action("onValueChange")(values);
337
+ action("onChange")(values);
338
338
  }}
339
339
  />
340
340
  <Paragraph size="$2">Selected: {selected.join(", ") || "None"}</Paragraph>
@@ -64,8 +64,6 @@ export interface CheckboxProps {
64
64
  * (Input/Select/Switch all use `onChange`). Prefer this.
65
65
  */
66
66
  onChange?: (checked: CheckedState) => void;
67
- /** @deprecated Use `onChange` instead. Kept as an alias for the tamagui/Radix name. */
68
- onCheckedChange?: (checked: CheckedState) => void;
69
67
  onBlur?: (...args: any[]) => void;
70
68
  checkboxProps?: Omit<TamaguiCheckboxProps, "children" | "checked" | "id" | "onCheckedChange">;
71
69
  children?: ReactNode;
@@ -102,18 +100,16 @@ export function Checkbox({
102
100
  checked,
103
101
  defaultValue,
104
102
  onChange,
105
- onCheckedChange,
106
103
  onBlur,
107
104
  checkboxProps,
108
105
  children,
109
106
  pointy,
110
107
  skeleton,
111
108
  }: CheckboxProps) {
112
- // Canonical `onChange` and the alias `onCheckedChange` both fire from a
109
+ // Canonical `onChange` fires from a
113
110
  // single emit site (same reconciliation as Switch).
114
111
  const handleValueChange = (val: CheckedState) => {
115
112
  onChange?.(val);
116
- onCheckedChange?.(val);
117
113
  };
118
114
  const { resolvedForm, knobProps, text, elevation, disabledState, id } = useFormField({
119
115
  form: formProp,
@@ -40,7 +40,7 @@ type Story = StoryObj<typeof CheckboxGroup>;
40
40
  export const Basic: Story = {
41
41
  render: (args) => (
42
42
  <YStack maxWidth={400}>
43
- <CheckboxGroup {...args} onValueChange={action("onValueChange")} />
43
+ <CheckboxGroup {...args} onChange={action("onChange")} />
44
44
  </YStack>
45
45
  ),
46
46
  };
@@ -226,7 +226,7 @@ export const ElevationLarge: Story = {
226
226
  render: (args) => (
227
227
  <Preset overrides={{ elevation: "large" }}>
228
228
  <YStack maxWidth={400}>
229
- <CheckboxGroup {...args} onValueChange={action("onValueChange")} />
229
+ <CheckboxGroup {...args} onChange={action("onChange")} />
230
230
  </YStack>
231
231
  </Preset>
232
232
  ),
@@ -54,11 +54,8 @@ export interface CheckboxGroupProps {
54
54
  defaultValue?: string[];
55
55
  /**
56
56
  * Canonical change handler, consistent with the rest of the field family.
57
- * Prefer this over `onValueChange`.
58
57
  */
59
58
  onChange?: (value: string[]) => void;
60
- /** @deprecated Use `onChange` instead. */
61
- onValueChange?: (value: string[]) => void;
62
59
  onBlur?: (...args: any[]) => void;
63
60
  options?: CheckboxGroupOption[];
64
61
  orientation?: "horizontal" | "vertical";
@@ -89,7 +86,6 @@ export function CheckboxGroup({
89
86
  value,
90
87
  defaultValue,
91
88
  onChange,
92
- onValueChange,
93
89
  onBlur,
94
90
  options,
95
91
  orientation = "vertical",
@@ -98,11 +94,10 @@ export function CheckboxGroup({
98
94
  skeleton,
99
95
  card,
100
96
  }: CheckboxGroupProps) {
101
- // Canonical `onChange` and the alias `onValueChange` both fire from the
97
+ // Canonical `onChange` fires from the
102
98
  // single emit site below (same reconciliation as Switch).
103
99
  const handleValueChange = (newValues: string[]) => {
104
100
  onChange?.(newValues);
105
- onValueChange?.(newValues);
106
101
  };
107
102
  const { resolvedForm, knobProps, disabledState, id } = useFormField({
108
103
  form: formProp,
@@ -212,7 +207,7 @@ export function CheckboxGroup({
212
207
  <Checkbox
213
208
  id={itemId}
214
209
  checked={isChecked}
215
- onCheckedChange={(checked) => {
210
+ onChange={(checked) => {
216
211
  if (isDisabled || readOnly) return;
217
212
  emit(toggleValue(currentValues, option.value, checked));
218
213
  }}
@@ -260,7 +255,7 @@ export function CheckboxGroup({
260
255
  label={option.label}
261
256
  id={itemId}
262
257
  checked={isChecked}
263
- onCheckedChange={(checked) => {
258
+ onChange={(checked) => {
264
259
  if (isDisabled || readOnly) return;
265
260
  const newValues = toggleValue(currentValues, option.value, checked);
266
261
  handleChange?.(newValues);
@@ -118,18 +118,11 @@ describe("ColorPicker", () => {
118
118
  });
119
119
  });
120
120
 
121
- it("fires canonical onChange and the deprecated onValueChange alias once when cleared", async () => {
121
+ it("fires canonical onChange once when cleared", async () => {
122
122
  const ColorPicker = await loadColorPicker();
123
123
  const onChange = vi.fn();
124
- const onValueChange = vi.fn();
125
124
  const result = renderWithProviders(
126
- <ColorPicker
127
- label="Color"
128
- name="color"
129
- defaultValue="#112233"
130
- onChange={onChange}
131
- onValueChange={onValueChange}
132
- />,
125
+ <ColorPicker label="Color" name="color" defaultValue="#112233" onChange={onChange} />,
133
126
  );
134
127
 
135
128
  const triggerButton = result.container.querySelector("button");
@@ -142,8 +135,6 @@ describe("ColorPicker", () => {
142
135
  expect(onChange).toHaveBeenCalledWith("");
143
136
  });
144
137
  expect(onChange).toHaveBeenCalledTimes(1);
145
- expect(onValueChange).toHaveBeenCalledTimes(1);
146
- expect(onValueChange).toHaveBeenCalledWith("");
147
138
  });
148
139
 
149
140
  it("shows format validation error for unrecognized rgb value", async () => {
@@ -77,11 +77,9 @@ export type ColorPickerProps<
77
77
  value?: string;
78
78
  /**
79
79
  * Canonical change handler, consistent with the rest of the field family.
80
- * Fires in both standalone and form mode. Prefer this over `onValueChange`.
80
+ * Fires in both standalone and form mode.
81
81
  */
82
82
  onChange?: (value: string) => void;
83
- /** @deprecated Use `onChange` instead. */
84
- onValueChange?: (value: string) => void;
85
83
  /** When true, renders a skeleton placeholder instead of the color picker */
86
84
  skeleton?: boolean;
87
85
  };
@@ -743,7 +741,6 @@ export function ColorPicker<
743
741
  onBlur,
744
742
  value: controlledValue,
745
743
  onChange,
746
- onValueChange,
747
744
  skeleton,
748
745
  id: idProp,
749
746
  } = useProps(props);
@@ -751,14 +748,13 @@ export function ColorPicker<
751
748
  const themePresets = useThemePresetColors();
752
749
  const presetColors = presetColorsProp ?? themePresets;
753
750
 
754
- // Canonical `onChange` and the alias `onValueChange` both fire from a
751
+ // Canonical `onChange` fires from a
755
752
  // single emit per change (same reconciliation as Switch).
756
753
  const emitValueChange = useCallback(
757
754
  (newValue: string) => {
758
755
  onChange?.(newValue);
759
- onValueChange?.(newValue);
760
756
  },
761
- [onChange, onValueChange],
757
+ [onChange],
762
758
  );
763
759
 
764
760
  const { resolvedForm, knobProps, id } = useFormField({ form, id: idProp });
@@ -110,9 +110,8 @@ describe("Combobox", () => {
110
110
  expect(findInPage("Disabled")).toBeDefined();
111
111
  });
112
112
 
113
- it("fires canonical onChange and the deprecated onValueChange alias once when dismissing a chip", async () => {
113
+ it("fires canonical onChange once when dismissing a chip", async () => {
114
114
  const onChange = vi.fn();
115
- const onValueChange = vi.fn();
116
115
  const result = renderWithProviders(
117
116
  <Combobox
118
117
  label="Fruits"
@@ -122,7 +121,6 @@ describe("Combobox", () => {
122
121
  dismissible
123
122
  value={["apple", "banana"]}
124
123
  onChange={onChange}
125
- onValueChange={onValueChange}
126
124
  />,
127
125
  );
128
126
  // Labels are differentiated per chip now — "Remove {label}".
@@ -134,8 +132,6 @@ describe("Combobox", () => {
134
132
  // Exactly once each — guards against the standalone double-fire bug.
135
133
  expect(onChange).toHaveBeenCalledTimes(1);
136
134
  expect(onChange).toHaveBeenCalledWith(["banana"]);
137
- expect(onValueChange).toHaveBeenCalledTimes(1);
138
- expect(onValueChange).toHaveBeenCalledWith(["banana"]);
139
135
  });
140
136
 
141
137
  it("stable keeps Cherry in third position when selected and open", async () => {
@@ -182,9 +182,9 @@ export const Basic: Story = {
182
182
  <Combobox
183
183
  {...args}
184
184
  value={value}
185
- onValueChange={(val) => {
185
+ onChange={(val) => {
186
186
  setValue(Array.isArray(val) ? val[0] : val);
187
- action("onValueChange")(val);
187
+ action("onChange")(val);
188
188
  }}
189
189
  />
190
190
  {value && <Text color="$colorHover">Selected: {value}</Text>}
@@ -203,7 +203,7 @@ export const WithLabel: Story = {
203
203
  helperText="Select an author from the list"
204
204
  options={authorOptions}
205
205
  value={value}
206
- onValueChange={(v) => setValue(Array.isArray(v) ? v[0] : v)}
206
+ onChange={(v) => setValue(Array.isArray(v) ? v[0] : v)}
207
207
  placeholder="Select an author..."
208
208
  searchPlaceholder="Type to search..."
209
209
  />
@@ -251,7 +251,7 @@ export const Interactive: Story = {
251
251
  label="Pick an author"
252
252
  options={authorOptions}
253
253
  value={value}
254
- onValueChange={(v) => setValue(Array.isArray(v) ? v[0] : v)}
254
+ onChange={(v) => setValue(Array.isArray(v) ? v[0] : v)}
255
255
  placeholder="Select an author..."
256
256
  />
257
257
  <Text>Selected: {value || "None"}</Text>
@@ -275,7 +275,7 @@ export const CustomTrigger: StoryObj<typeof Combobox> = {
275
275
  <Combobox
276
276
  options={authorOptions}
277
277
  value={value}
278
- onValueChange={(v) => setValue(Array.isArray(v) ? v[0] : v)}
278
+ onChange={(v) => setValue(Array.isArray(v) ? v[0] : v)}
279
279
  searchPlaceholder="Type to search..."
280
280
  popoverWidth={260}
281
281
  trigger={(selected) => (
@@ -321,7 +321,7 @@ export const ManyOptions: StoryObj<typeof Combobox> = {
321
321
  label="Pick an item"
322
322
  options={options}
323
323
  value={value}
324
- onValueChange={(v) => setValue(Array.isArray(v) ? v[0] : v)}
324
+ onChange={(v) => setValue(Array.isArray(v) ? v[0] : v)}
325
325
  placeholder="Select from 100 items..."
326
326
  searchPlaceholder="Type to filter..."
327
327
  emptyMessage="No matching items."
@@ -163,11 +163,8 @@ export interface ComboboxProps {
163
163
  defaultValue?: string | string[];
164
164
  /**
165
165
  * Canonical change handler, consistent with the rest of the field family.
166
- * Prefer this over `onValueChange`.
167
166
  */
168
167
  onChange?: (value: string | string[]) => void;
169
- /** @deprecated Use `onChange` instead. */
170
- onValueChange?: (value: string | string[]) => void;
171
168
  placeholder?: string;
172
169
  searchPlaceholder?: string;
173
170
  emptyMessage?: string;
@@ -2564,7 +2561,6 @@ export function Combobox({
2564
2561
  value: valueProp,
2565
2562
  defaultValue,
2566
2563
  onChange,
2567
- onValueChange,
2568
2564
  placeholder: placeholderProp,
2569
2565
  searchPlaceholder: searchPlaceholderProp,
2570
2566
  emptyMessage: emptyMessageProp,
@@ -2704,10 +2700,9 @@ export function Combobox({
2704
2700
  onValueChange={(value) => {
2705
2701
  if (disabled) return;
2706
2702
  handleValueChange?.(value);
2707
- // Canonical `onChange` and the alias `onValueChange` both fire from
2703
+ // Canonical `onChange` fires from
2708
2704
  // this single emit site (same reconciliation as Switch).
2709
2705
  onChange?.(value);
2710
- onValueChange?.(value);
2711
2706
  }}
2712
2707
  onBlur={handleBlur}
2713
2708
  placeholder={placeholder}
@@ -82,12 +82,11 @@ describe("DatePicker", () => {
82
82
  expect(document.querySelector('[data-testid="floating-panel-viewport"]')).toBeNull();
83
83
  });
84
84
 
85
- it("fires canonical onChange and the deprecated onValueChange alias once when a day is picked", async () => {
85
+ it("fires canonical onChange once when a day is picked", async () => {
86
86
  const DatePicker = await loadDatePicker();
87
87
  const onChange = vi.fn();
88
- const onValueChange = vi.fn();
89
88
  const result = renderWithProviders(
90
- <DatePicker label="Date" name="date" onChange={onChange} onValueChange={onValueChange} />,
89
+ <DatePicker label="Date" name="date" onChange={onChange} />,
91
90
  );
92
91
 
93
92
  const trigger = result.container.querySelector("input,button,[role='button']");
@@ -106,9 +105,7 @@ describe("DatePicker", () => {
106
105
  });
107
106
 
108
107
  expect(onChange).toHaveBeenCalledTimes(1);
109
- expect(onValueChange).toHaveBeenCalledTimes(1);
110
108
  expect(onChange.mock.calls[0][0]).toBeInstanceOf(Date);
111
- expect(onChange.mock.calls[0][0]).toEqual(onValueChange.mock.calls[0][0]);
112
109
  });
113
110
  });
114
111
 
@@ -262,32 +259,18 @@ describe("DatePicker", () => {
262
259
  it("standalone controlled: a value arriving after mount displays, without onChange", async () => {
263
260
  const DatePicker = await loadDatePicker();
264
261
  const onChange = vi.fn();
265
- const onValueChange = vi.fn();
266
262
  const result = renderWithProviders(
267
- <DatePicker
268
- label="Due Date"
269
- value={null}
270
- onChange={onChange}
271
- onValueChange={onValueChange}
272
- />,
263
+ <DatePicker label="Due Date" value={null} onChange={onChange} />,
273
264
  );
274
265
  expect(getDisplayInput(result.container)?.value ?? "").toBe("");
275
266
 
276
267
  // Late seed: the upstream doc value (frappe wire string) arrives after
277
268
  // first paint.
278
- result.rerender(
279
- <DatePicker
280
- label="Due Date"
281
- value="2026-03-05"
282
- onChange={onChange}
283
- onValueChange={onValueChange}
284
- />,
285
- );
269
+ result.rerender(<DatePicker label="Due Date" value="2026-03-05" onChange={onChange} />);
286
270
  await waitFor(() => {
287
271
  expect(getDisplayInput(result.container)?.value).toBe("Mar 5, 2026");
288
272
  });
289
273
  expect(onChange).not.toHaveBeenCalled();
290
- expect(onValueChange).not.toHaveBeenCalled();
291
274
  });
292
275
 
293
276
  it("form-integrated: a field value set after mount displays, without onChange", async () => {
@@ -75,11 +75,8 @@ export type DatetimePickerProps<
75
75
  value?: Date | string | null;
76
76
  /**
77
77
  * Canonical change handler, consistent with the rest of the field family.
78
- * Prefer this over `onValueChange`.
79
78
  */
80
79
  onChange?: (value: Date | null) => void;
81
- /** @deprecated Use `onChange` instead. */
82
- onValueChange?: (value: Date | null) => void;
83
80
  /** Native only. `false` keeps the catalog overlay; omit for the OS picker. */
84
81
  native?: boolean;
85
82
  /**
@@ -359,7 +356,6 @@ export function DatetimePicker<
359
356
  defaultValue,
360
357
  value: controlledValue,
361
358
  onChange,
362
- onValueChange,
363
359
  form,
364
360
  inputProps: _inputProps,
365
361
  placeholder = t("Select date and time"),
@@ -419,11 +415,10 @@ export function DatetimePicker<
419
415
  setSelectedDatetime(date);
420
416
  setDisplayDate(date);
421
417
  fieldChange?.(date);
422
- // Canonical `onChange` and the alias `onValueChange` both fire (single emit).
418
+ // Canonical `onChange` fires (single emit).
423
419
  onChange?.(date);
424
- onValueChange?.(date);
425
420
  },
426
- [minDate, maxDate, setDisplayDate, onChange, onValueChange],
421
+ [minDate, maxDate, setDisplayDate, onChange],
427
422
  );
428
423
 
429
424
  const handleClearDatetime = useCallback(
@@ -432,9 +427,8 @@ export function DatetimePicker<
432
427
  setDisplayDate(new Date());
433
428
  fieldChange?.(null);
434
429
  onChange?.(null);
435
- onValueChange?.(null);
436
430
  },
437
- [setDisplayDate, onChange, onValueChange],
431
+ [setDisplayDate, onChange],
438
432
  );
439
433
 
440
434
  const displayValue = useMemo(