@multiplatform.one/forms 7.11.0 → 7.15.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 (724) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/AdaptivePopup/index.cjs +0 -10
  3. package/dist/cjs/AdaptivePopup/index.native.js +0 -10
  4. package/dist/cjs/AdaptivePopup/index.native.js.map +1 -1
  5. package/dist/cjs/Button/index.cjs +6 -3
  6. package/dist/cjs/Button/index.native.js +6 -3
  7. package/dist/cjs/Button/index.native.js.map +1 -1
  8. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.cjs +2 -11
  9. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js +2 -11
  10. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  11. package/dist/cjs/ContextualSaveBar/index.cjs +12 -10
  12. package/dist/cjs/ContextualSaveBar/index.native.js +12 -19
  13. package/dist/cjs/ContextualSaveBar/index.native.js.map +1 -1
  14. package/dist/cjs/FieldDisplay/index.cjs +24 -12
  15. package/dist/cjs/FieldDisplay/index.native.js +25 -13
  16. package/dist/cjs/FieldDisplay/index.native.js.map +1 -1
  17. package/dist/cjs/FloatingPanel/PanelPortal.cjs +145 -0
  18. package/dist/cjs/FloatingPanel/PanelPortal.native.js +43 -0
  19. package/dist/cjs/FloatingPanel/PanelPortal.native.js.map +1 -0
  20. package/dist/cjs/FloatingPanel/index.cjs +115 -67
  21. package/dist/cjs/FloatingPanel/index.native.js +67 -12
  22. package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
  23. package/dist/cjs/FloatingPanel/useFloatingPanel.cjs +4 -2
  24. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js +4 -2
  25. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  26. package/dist/cjs/Form/index.cjs +2 -1
  27. package/dist/cjs/Form/index.native.js +2 -1
  28. package/dist/cjs/Form/index.native.js.map +1 -1
  29. package/dist/cjs/Form/submissionController.cjs +74 -0
  30. package/dist/cjs/Form/submissionController.native.js +99 -0
  31. package/dist/cjs/Form/submissionController.native.js.map +1 -0
  32. package/dist/cjs/InputParts/index.cjs +66 -12
  33. package/dist/cjs/InputParts/index.native.js +72 -12
  34. package/dist/cjs/InputParts/index.native.js.map +1 -1
  35. package/dist/cjs/Wheel/index.cjs +0 -2
  36. package/dist/cjs/Wheel/index.native.js +0 -2
  37. package/dist/cjs/Wheel/index.native.js.map +1 -1
  38. package/dist/cjs/fields/Barcode/BarcodePreview.cjs +18 -15
  39. package/dist/cjs/fields/Barcode/BarcodePreview.native.js +21 -18
  40. package/dist/cjs/fields/Barcode/BarcodePreview.native.js.map +1 -1
  41. package/dist/cjs/fields/Barcode/qr.native.js +34 -34
  42. package/dist/cjs/fields/Checkbox/Checkbox.cjs +1 -3
  43. package/dist/cjs/fields/Checkbox/Checkbox.native.js +1 -3
  44. package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -1
  45. package/dist/cjs/fields/Checkbox/CheckboxBox.cjs +2 -3
  46. package/dist/cjs/fields/Checkbox/CheckboxBox.native.js +2 -3
  47. package/dist/cjs/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  48. package/dist/cjs/fields/ColorPicker/index.cjs +2 -0
  49. package/dist/cjs/fields/ColorPicker/index.native.js +2 -0
  50. package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
  51. package/dist/cjs/fields/ColorPicker/parts.cjs +1 -0
  52. package/dist/cjs/fields/ColorPicker/parts.native.js +1 -0
  53. package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
  54. package/dist/cjs/fields/Combobox/index.cjs +206 -200
  55. package/dist/cjs/fields/Combobox/index.native.js +214 -208
  56. package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
  57. package/dist/cjs/fields/DatePicker/DateRangePicker.cjs +7 -7
  58. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +7 -7
  59. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  60. package/dist/cjs/fields/DatePicker/MultiDatePicker.cjs +6 -4
  61. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +6 -4
  62. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  63. package/dist/cjs/fields/Duration/index.cjs +5 -3
  64. package/dist/cjs/fields/Duration/index.native.js +5 -3
  65. package/dist/cjs/fields/Duration/index.native.js.map +1 -1
  66. package/dist/cjs/fields/FileUpload/index.cjs +10 -8
  67. package/dist/cjs/fields/FileUpload/index.native.js +10 -8
  68. package/dist/cjs/fields/FileUpload/index.native.js.map +1 -1
  69. package/dist/cjs/fields/FileUpload/nativePickerLoader.cjs +7 -2
  70. package/dist/cjs/fields/FileUpload/nativePickerLoader.native.js +7 -2
  71. package/dist/cjs/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  72. package/dist/cjs/fields/Geolocation/GeolocationMap.cjs +3 -0
  73. package/dist/cjs/fields/Geolocation/geocoderContext.cjs +71 -0
  74. package/dist/cjs/fields/Geolocation/geocoderContext.native.js +75 -0
  75. package/dist/cjs/fields/Geolocation/geocoderContext.native.js.map +1 -0
  76. package/dist/cjs/fields/Geolocation/index.cjs +72 -82
  77. package/dist/cjs/fields/Geolocation/index.native.js +72 -82
  78. package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
  79. package/dist/cjs/fields/Geolocation/photonGeocoder.cjs +138 -0
  80. package/dist/cjs/fields/Geolocation/photonGeocoder.native.js +179 -0
  81. package/dist/cjs/fields/Geolocation/photonGeocoder.native.js.map +1 -0
  82. package/dist/cjs/fields/Input/index.cjs +7 -5
  83. package/dist/cjs/fields/Input/index.native.js +7 -5
  84. package/dist/cjs/fields/Input/index.native.js.map +1 -1
  85. package/dist/cjs/fields/MentionInput/index.cjs +118 -112
  86. package/dist/cjs/fields/MentionInput/index.native.js +130 -124
  87. package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
  88. package/dist/cjs/fields/OTPInput/index.cjs +11 -8
  89. package/dist/cjs/fields/OTPInput/index.native.js +11 -8
  90. package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
  91. package/dist/cjs/fields/PhoneInput/index.cjs +9 -6
  92. package/dist/cjs/fields/PhoneInput/index.native.js +9 -6
  93. package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
  94. package/dist/cjs/fields/PhoneInput/phone.cjs +6 -5
  95. package/dist/cjs/fields/PhoneInput/phone.native.js +7 -6
  96. package/dist/cjs/fields/PhoneInput/phone.native.js.map +1 -1
  97. package/dist/cjs/fields/PhoneInput/regionNames.cjs +274 -0
  98. package/dist/cjs/fields/PhoneInput/regionNames.native.js +277 -0
  99. package/dist/cjs/fields/PhoneInput/regionNames.native.js.map +1 -0
  100. package/dist/cjs/fields/RadioGroup/index.cjs +2 -6
  101. package/dist/cjs/fields/RadioGroup/index.native.js +2 -6
  102. package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
  103. package/dist/cjs/fields/SearchInput/index.cjs +10 -8
  104. package/dist/cjs/fields/SearchInput/index.native.js +10 -8
  105. package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
  106. package/dist/cjs/fields/Select/index.cjs +20 -17
  107. package/dist/cjs/fields/Select/index.native.js +20 -17
  108. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  109. package/dist/cjs/fields/Signature/index.cjs +10 -9
  110. package/dist/cjs/fields/Signature/index.native.js +10 -9
  111. package/dist/cjs/fields/Signature/index.native.js.map +1 -1
  112. package/dist/cjs/fields/Slider/index.cjs +21 -15
  113. package/dist/cjs/fields/Slider/index.native.js +21 -17
  114. package/dist/cjs/fields/Slider/index.native.js.map +1 -1
  115. package/dist/cjs/fields/Slider/jumpMotion.cjs +2 -2
  116. package/dist/cjs/fields/Slider/jumpMotion.native.js +2 -1
  117. package/dist/cjs/fields/Slider/jumpMotion.native.js.map +1 -1
  118. package/dist/cjs/fields/Stepper/index.cjs +25 -6
  119. package/dist/cjs/fields/Stepper/index.native.js +25 -6
  120. package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
  121. package/dist/cjs/fields/Switch/footprint.cjs +54 -0
  122. package/dist/cjs/fields/Switch/footprint.native.js +57 -0
  123. package/dist/cjs/fields/Switch/footprint.native.js.map +1 -0
  124. package/dist/cjs/fields/Switch/index.cjs +60 -43
  125. package/dist/cjs/fields/Switch/index.native.js +60 -50
  126. package/dist/cjs/fields/Switch/index.native.js.map +1 -1
  127. package/dist/cjs/fields/TextArea/index.cjs +6 -3
  128. package/dist/cjs/fields/TextArea/index.native.js +6 -3
  129. package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
  130. package/dist/cjs/fields/TimePicker/catalog.cjs +1 -0
  131. package/dist/cjs/fields/TimePicker/catalog.native.js +1 -0
  132. package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -1
  133. package/dist/cjs/fields/TimePicker/parts.cjs +5 -0
  134. package/dist/cjs/fields/TimePicker/parts.native.js +7 -0
  135. package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
  136. package/dist/cjs/index.cjs +12 -0
  137. package/dist/cjs/index.native.js +12 -0
  138. package/dist/cjs/index.native.js.map +1 -1
  139. package/dist/cjs/shared/panelPortal.cjs +52 -0
  140. package/dist/cjs/shared/panelPortal.native.js +65 -0
  141. package/dist/cjs/shared/panelPortal.native.js.map +1 -0
  142. package/dist/cjs/shared/pressSlopProps.cjs +16 -11
  143. package/dist/cjs/shared/pressSlopProps.native.js +18 -12
  144. package/dist/cjs/shared/pressSlopProps.native.js.map +1 -1
  145. package/dist/cjs/shared/utils.cjs +2 -2
  146. package/dist/cjs/shared/utils.native.js +3 -2
  147. package/dist/cjs/shared/utils.native.js.map +1 -1
  148. package/dist/cjs/themedPrimitives.cjs +15 -2
  149. package/dist/cjs/themedPrimitives.native.js +16 -3
  150. package/dist/cjs/themedPrimitives.native.js.map +1 -1
  151. package/dist/esm/AdaptivePopup/index.mjs +0 -10
  152. package/dist/esm/AdaptivePopup/index.mjs.map +1 -1
  153. package/dist/esm/AdaptivePopup/index.native.js +0 -10
  154. package/dist/esm/AdaptivePopup/index.native.js.map +1 -1
  155. package/dist/esm/Button/index.mjs +6 -3
  156. package/dist/esm/Button/index.mjs.map +1 -1
  157. package/dist/esm/Button/index.native.js +6 -3
  158. package/dist/esm/Button/index.native.js.map +1 -1
  159. package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.mjs +3 -12
  160. package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.mjs.map +1 -1
  161. package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.native.js +3 -12
  162. package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  163. package/dist/esm/ContextualSaveBar/index.mjs +13 -11
  164. package/dist/esm/ContextualSaveBar/index.mjs.map +1 -1
  165. package/dist/esm/ContextualSaveBar/index.native.js +13 -20
  166. package/dist/esm/ContextualSaveBar/index.native.js.map +1 -1
  167. package/dist/esm/FieldDisplay/index.mjs +24 -12
  168. package/dist/esm/FieldDisplay/index.mjs.map +1 -1
  169. package/dist/esm/FieldDisplay/index.native.js +25 -13
  170. package/dist/esm/FieldDisplay/index.native.js.map +1 -1
  171. package/dist/esm/FloatingPanel/PanelPortal.mjs +119 -0
  172. package/dist/esm/FloatingPanel/PanelPortal.mjs.map +1 -0
  173. package/dist/esm/FloatingPanel/PanelPortal.native.js +14 -0
  174. package/dist/esm/FloatingPanel/PanelPortal.native.js.map +1 -0
  175. package/dist/esm/FloatingPanel/index.mjs +117 -69
  176. package/dist/esm/FloatingPanel/index.mjs.map +1 -1
  177. package/dist/esm/FloatingPanel/index.native.js +68 -13
  178. package/dist/esm/FloatingPanel/index.native.js.map +1 -1
  179. package/dist/esm/FloatingPanel/useFloatingPanel.mjs +4 -2
  180. package/dist/esm/FloatingPanel/useFloatingPanel.mjs.map +1 -1
  181. package/dist/esm/FloatingPanel/useFloatingPanel.native.js +4 -2
  182. package/dist/esm/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  183. package/dist/esm/Form/index.mjs +2 -1
  184. package/dist/esm/Form/index.mjs.map +1 -1
  185. package/dist/esm/Form/index.native.js +2 -1
  186. package/dist/esm/Form/index.native.js.map +1 -1
  187. package/dist/esm/Form/submissionController.mjs +49 -0
  188. package/dist/esm/Form/submissionController.mjs.map +1 -0
  189. package/dist/esm/Form/submissionController.native.js +71 -0
  190. package/dist/esm/Form/submissionController.native.js.map +1 -0
  191. package/dist/esm/InputParts/index.mjs +67 -13
  192. package/dist/esm/InputParts/index.mjs.map +1 -1
  193. package/dist/esm/InputParts/index.native.js +73 -13
  194. package/dist/esm/InputParts/index.native.js.map +1 -1
  195. package/dist/esm/Wheel/index.mjs +0 -2
  196. package/dist/esm/Wheel/index.mjs.map +1 -1
  197. package/dist/esm/Wheel/index.native.js +0 -2
  198. package/dist/esm/Wheel/index.native.js.map +1 -1
  199. package/dist/esm/fields/Barcode/BarcodePreview.mjs +19 -16
  200. package/dist/esm/fields/Barcode/BarcodePreview.mjs.map +1 -1
  201. package/dist/esm/fields/Barcode/BarcodePreview.native.js +22 -19
  202. package/dist/esm/fields/Barcode/BarcodePreview.native.js.map +1 -1
  203. package/dist/esm/fields/Barcode/qr.native.js +34 -34
  204. package/dist/esm/fields/Checkbox/Checkbox.mjs +2 -4
  205. package/dist/esm/fields/Checkbox/Checkbox.mjs.map +1 -1
  206. package/dist/esm/fields/Checkbox/Checkbox.native.js +2 -4
  207. package/dist/esm/fields/Checkbox/Checkbox.native.js.map +1 -1
  208. package/dist/esm/fields/Checkbox/CheckboxBox.mjs +3 -4
  209. package/dist/esm/fields/Checkbox/CheckboxBox.mjs.map +1 -1
  210. package/dist/esm/fields/Checkbox/CheckboxBox.native.js +3 -4
  211. package/dist/esm/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  212. package/dist/esm/fields/ColorPicker/index.mjs +2 -0
  213. package/dist/esm/fields/ColorPicker/index.mjs.map +1 -1
  214. package/dist/esm/fields/ColorPicker/index.native.js +2 -0
  215. package/dist/esm/fields/ColorPicker/index.native.js.map +1 -1
  216. package/dist/esm/fields/ColorPicker/parts.mjs +1 -0
  217. package/dist/esm/fields/ColorPicker/parts.mjs.map +1 -1
  218. package/dist/esm/fields/ColorPicker/parts.native.js +1 -0
  219. package/dist/esm/fields/ColorPicker/parts.native.js.map +1 -1
  220. package/dist/esm/fields/Combobox/index.mjs +197 -191
  221. package/dist/esm/fields/Combobox/index.mjs.map +1 -1
  222. package/dist/esm/fields/Combobox/index.native.js +205 -199
  223. package/dist/esm/fields/Combobox/index.native.js.map +1 -1
  224. package/dist/esm/fields/DatePicker/DateRangePicker.mjs +5 -5
  225. package/dist/esm/fields/DatePicker/DateRangePicker.mjs.map +1 -1
  226. package/dist/esm/fields/DatePicker/DateRangePicker.native.js +5 -5
  227. package/dist/esm/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  228. package/dist/esm/fields/DatePicker/MultiDatePicker.mjs +3 -1
  229. package/dist/esm/fields/DatePicker/MultiDatePicker.mjs.map +1 -1
  230. package/dist/esm/fields/DatePicker/MultiDatePicker.native.js +3 -1
  231. package/dist/esm/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  232. package/dist/esm/fields/Duration/index.mjs +3 -1
  233. package/dist/esm/fields/Duration/index.mjs.map +1 -1
  234. package/dist/esm/fields/Duration/index.native.js +3 -1
  235. package/dist/esm/fields/Duration/index.native.js.map +1 -1
  236. package/dist/esm/fields/FileUpload/index.mjs +5 -3
  237. package/dist/esm/fields/FileUpload/index.mjs.map +1 -1
  238. package/dist/esm/fields/FileUpload/index.native.js +5 -3
  239. package/dist/esm/fields/FileUpload/index.native.js.map +1 -1
  240. package/dist/esm/fields/FileUpload/nativePickerLoader.mjs +7 -3
  241. package/dist/esm/fields/FileUpload/nativePickerLoader.mjs.map +1 -1
  242. package/dist/esm/fields/FileUpload/nativePickerLoader.native.js +7 -3
  243. package/dist/esm/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  244. package/dist/esm/fields/Geolocation/GeolocationMap.mjs +3 -0
  245. package/dist/esm/fields/Geolocation/GeolocationMap.mjs.map +1 -1
  246. package/dist/esm/fields/Geolocation/geocoderContext.mjs +44 -0
  247. package/dist/esm/fields/Geolocation/geocoderContext.mjs.map +1 -0
  248. package/dist/esm/fields/Geolocation/geocoderContext.native.js +45 -0
  249. package/dist/esm/fields/Geolocation/geocoderContext.native.js.map +1 -0
  250. package/dist/esm/fields/Geolocation/index.mjs +73 -83
  251. package/dist/esm/fields/Geolocation/index.mjs.map +1 -1
  252. package/dist/esm/fields/Geolocation/index.native.js +73 -83
  253. package/dist/esm/fields/Geolocation/index.native.js.map +1 -1
  254. package/dist/esm/fields/Geolocation/photonGeocoder.mjs +112 -0
  255. package/dist/esm/fields/Geolocation/photonGeocoder.mjs.map +1 -0
  256. package/dist/esm/fields/Geolocation/photonGeocoder.native.js +150 -0
  257. package/dist/esm/fields/Geolocation/photonGeocoder.native.js.map +1 -0
  258. package/dist/esm/fields/Input/index.mjs +3 -1
  259. package/dist/esm/fields/Input/index.mjs.map +1 -1
  260. package/dist/esm/fields/Input/index.native.js +3 -1
  261. package/dist/esm/fields/Input/index.native.js.map +1 -1
  262. package/dist/esm/fields/MentionInput/index.mjs +115 -109
  263. package/dist/esm/fields/MentionInput/index.mjs.map +1 -1
  264. package/dist/esm/fields/MentionInput/index.native.js +127 -121
  265. package/dist/esm/fields/MentionInput/index.native.js.map +1 -1
  266. package/dist/esm/fields/OTPInput/index.mjs +7 -4
  267. package/dist/esm/fields/OTPInput/index.mjs.map +1 -1
  268. package/dist/esm/fields/OTPInput/index.native.js +7 -4
  269. package/dist/esm/fields/OTPInput/index.native.js.map +1 -1
  270. package/dist/esm/fields/PhoneInput/index.mjs +6 -3
  271. package/dist/esm/fields/PhoneInput/index.mjs.map +1 -1
  272. package/dist/esm/fields/PhoneInput/index.native.js +6 -3
  273. package/dist/esm/fields/PhoneInput/index.native.js.map +1 -1
  274. package/dist/esm/fields/PhoneInput/phone.mjs +6 -5
  275. package/dist/esm/fields/PhoneInput/phone.mjs.map +1 -1
  276. package/dist/esm/fields/PhoneInput/phone.native.js +7 -6
  277. package/dist/esm/fields/PhoneInput/phone.native.js.map +1 -1
  278. package/dist/esm/fields/PhoneInput/regionNames.mjs +249 -0
  279. package/dist/esm/fields/PhoneInput/regionNames.mjs.map +1 -0
  280. package/dist/esm/fields/PhoneInput/regionNames.native.js +249 -0
  281. package/dist/esm/fields/PhoneInput/regionNames.native.js.map +1 -0
  282. package/dist/esm/fields/RadioGroup/index.mjs +3 -7
  283. package/dist/esm/fields/RadioGroup/index.mjs.map +1 -1
  284. package/dist/esm/fields/RadioGroup/index.native.js +3 -7
  285. package/dist/esm/fields/RadioGroup/index.native.js.map +1 -1
  286. package/dist/esm/fields/SearchInput/index.mjs +5 -3
  287. package/dist/esm/fields/SearchInput/index.mjs.map +1 -1
  288. package/dist/esm/fields/SearchInput/index.native.js +5 -3
  289. package/dist/esm/fields/SearchInput/index.native.js.map +1 -1
  290. package/dist/esm/fields/Select/index.mjs +10 -7
  291. package/dist/esm/fields/Select/index.mjs.map +1 -1
  292. package/dist/esm/fields/Select/index.native.js +10 -7
  293. package/dist/esm/fields/Select/index.native.js.map +1 -1
  294. package/dist/esm/fields/Signature/index.mjs +7 -6
  295. package/dist/esm/fields/Signature/index.mjs.map +1 -1
  296. package/dist/esm/fields/Signature/index.native.js +7 -6
  297. package/dist/esm/fields/Signature/index.native.js.map +1 -1
  298. package/dist/esm/fields/Slider/index.mjs +10 -4
  299. package/dist/esm/fields/Slider/index.mjs.map +1 -1
  300. package/dist/esm/fields/Slider/index.native.js +10 -6
  301. package/dist/esm/fields/Slider/index.native.js.map +1 -1
  302. package/dist/esm/fields/Slider/jumpMotion.mjs +2 -2
  303. package/dist/esm/fields/Slider/jumpMotion.mjs.map +1 -1
  304. package/dist/esm/fields/Slider/jumpMotion.native.js +2 -1
  305. package/dist/esm/fields/Slider/jumpMotion.native.js.map +1 -1
  306. package/dist/esm/fields/Stepper/index.mjs +24 -5
  307. package/dist/esm/fields/Stepper/index.mjs.map +1 -1
  308. package/dist/esm/fields/Stepper/index.native.js +24 -5
  309. package/dist/esm/fields/Stepper/index.native.js.map +1 -1
  310. package/dist/esm/fields/Switch/footprint.mjs +29 -0
  311. package/dist/esm/fields/Switch/footprint.mjs.map +1 -0
  312. package/dist/esm/fields/Switch/footprint.native.js +29 -0
  313. package/dist/esm/fields/Switch/footprint.native.js.map +1 -0
  314. package/dist/esm/fields/Switch/index.mjs +44 -27
  315. package/dist/esm/fields/Switch/index.mjs.map +1 -1
  316. package/dist/esm/fields/Switch/index.native.js +44 -34
  317. package/dist/esm/fields/Switch/index.native.js.map +1 -1
  318. package/dist/esm/fields/TextArea/index.mjs +6 -3
  319. package/dist/esm/fields/TextArea/index.mjs.map +1 -1
  320. package/dist/esm/fields/TextArea/index.native.js +6 -3
  321. package/dist/esm/fields/TextArea/index.native.js.map +1 -1
  322. package/dist/esm/fields/TimePicker/catalog.mjs +1 -0
  323. package/dist/esm/fields/TimePicker/catalog.mjs.map +1 -1
  324. package/dist/esm/fields/TimePicker/catalog.native.js +1 -0
  325. package/dist/esm/fields/TimePicker/catalog.native.js.map +1 -1
  326. package/dist/esm/fields/TimePicker/parts.mjs +5 -0
  327. package/dist/esm/fields/TimePicker/parts.mjs.map +1 -1
  328. package/dist/esm/fields/TimePicker/parts.native.js +7 -0
  329. package/dist/esm/fields/TimePicker/parts.native.js.map +1 -1
  330. package/dist/esm/index.mjs +6 -1
  331. package/dist/esm/index.mjs.map +1 -1
  332. package/dist/esm/index.native.js +6 -1
  333. package/dist/esm/index.native.js.map +1 -1
  334. package/dist/esm/shared/panelPortal.mjs +24 -0
  335. package/dist/esm/shared/panelPortal.mjs.map +1 -0
  336. package/dist/esm/shared/panelPortal.native.js +34 -0
  337. package/dist/esm/shared/panelPortal.native.js.map +1 -0
  338. package/dist/esm/shared/pressSlopProps.mjs +16 -12
  339. package/dist/esm/shared/pressSlopProps.mjs.map +1 -1
  340. package/dist/esm/shared/pressSlopProps.native.js +18 -13
  341. package/dist/esm/shared/pressSlopProps.native.js.map +1 -1
  342. package/dist/esm/shared/utils.mjs +2 -2
  343. package/dist/esm/shared/utils.mjs.map +1 -1
  344. package/dist/esm/shared/utils.native.js +3 -2
  345. package/dist/esm/shared/utils.native.js.map +1 -1
  346. package/dist/esm/themedPrimitives.mjs +16 -3
  347. package/dist/esm/themedPrimitives.mjs.map +1 -1
  348. package/dist/esm/themedPrimitives.native.js +17 -4
  349. package/dist/esm/themedPrimitives.native.js.map +1 -1
  350. package/dist/jsx/AdaptivePopup/index.mjs +0 -10
  351. package/dist/jsx/AdaptivePopup/index.mjs.map +1 -1
  352. package/dist/jsx/AdaptivePopup/index.native.js +0 -10
  353. package/dist/jsx/AdaptivePopup/index.native.js.map +1 -1
  354. package/dist/jsx/Button/index.mjs +6 -3
  355. package/dist/jsx/Button/index.mjs.map +1 -1
  356. package/dist/jsx/Button/index.native.js +6 -3
  357. package/dist/jsx/Button/index.native.js.map +1 -1
  358. package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.mjs +3 -12
  359. package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.mjs.map +1 -1
  360. package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.native.js +2 -11
  361. package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  362. package/dist/jsx/ContextualSaveBar/index.mjs +13 -11
  363. package/dist/jsx/ContextualSaveBar/index.mjs.map +1 -1
  364. package/dist/jsx/ContextualSaveBar/index.native.js +12 -19
  365. package/dist/jsx/ContextualSaveBar/index.native.js.map +1 -1
  366. package/dist/jsx/FieldDisplay/index.mjs +24 -12
  367. package/dist/jsx/FieldDisplay/index.mjs.map +1 -1
  368. package/dist/jsx/FieldDisplay/index.native.js +25 -13
  369. package/dist/jsx/FieldDisplay/index.native.js.map +1 -1
  370. package/dist/jsx/FloatingPanel/PanelPortal.mjs +119 -0
  371. package/dist/jsx/FloatingPanel/PanelPortal.mjs.map +1 -0
  372. package/dist/jsx/FloatingPanel/PanelPortal.native.js +43 -0
  373. package/dist/jsx/FloatingPanel/PanelPortal.native.js.map +1 -0
  374. package/dist/jsx/FloatingPanel/index.mjs +117 -69
  375. package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
  376. package/dist/jsx/FloatingPanel/index.native.js +67 -12
  377. package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
  378. package/dist/jsx/FloatingPanel/useFloatingPanel.mjs +4 -2
  379. package/dist/jsx/FloatingPanel/useFloatingPanel.mjs.map +1 -1
  380. package/dist/jsx/FloatingPanel/useFloatingPanel.native.js +4 -2
  381. package/dist/jsx/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  382. package/dist/jsx/Form/index.mjs +2 -1
  383. package/dist/jsx/Form/index.mjs.map +1 -1
  384. package/dist/jsx/Form/index.native.js +2 -1
  385. package/dist/jsx/Form/index.native.js.map +1 -1
  386. package/dist/jsx/Form/submissionController.mjs +49 -0
  387. package/dist/jsx/Form/submissionController.mjs.map +1 -0
  388. package/dist/jsx/Form/submissionController.native.js +99 -0
  389. package/dist/jsx/Form/submissionController.native.js.map +1 -0
  390. package/dist/jsx/InputParts/index.mjs +67 -13
  391. package/dist/jsx/InputParts/index.mjs.map +1 -1
  392. package/dist/jsx/InputParts/index.native.js +72 -12
  393. package/dist/jsx/InputParts/index.native.js.map +1 -1
  394. package/dist/jsx/Wheel/index.mjs +0 -2
  395. package/dist/jsx/Wheel/index.mjs.map +1 -1
  396. package/dist/jsx/Wheel/index.native.js +0 -2
  397. package/dist/jsx/Wheel/index.native.js.map +1 -1
  398. package/dist/jsx/fields/Barcode/BarcodePreview.mjs +19 -16
  399. package/dist/jsx/fields/Barcode/BarcodePreview.mjs.map +1 -1
  400. package/dist/jsx/fields/Barcode/BarcodePreview.native.js +21 -18
  401. package/dist/jsx/fields/Barcode/BarcodePreview.native.js.map +1 -1
  402. package/dist/jsx/fields/Barcode/qr.native.js +34 -34
  403. package/dist/jsx/fields/Checkbox/Checkbox.mjs +2 -4
  404. package/dist/jsx/fields/Checkbox/Checkbox.mjs.map +1 -1
  405. package/dist/jsx/fields/Checkbox/Checkbox.native.js +1 -3
  406. package/dist/jsx/fields/Checkbox/Checkbox.native.js.map +1 -1
  407. package/dist/jsx/fields/Checkbox/CheckboxBox.mjs +3 -4
  408. package/dist/jsx/fields/Checkbox/CheckboxBox.mjs.map +1 -1
  409. package/dist/jsx/fields/Checkbox/CheckboxBox.native.js +2 -3
  410. package/dist/jsx/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  411. package/dist/jsx/fields/ColorPicker/index.mjs +2 -0
  412. package/dist/jsx/fields/ColorPicker/index.mjs.map +1 -1
  413. package/dist/jsx/fields/ColorPicker/index.native.js +2 -0
  414. package/dist/jsx/fields/ColorPicker/index.native.js.map +1 -1
  415. package/dist/jsx/fields/ColorPicker/parts.mjs +1 -0
  416. package/dist/jsx/fields/ColorPicker/parts.mjs.map +1 -1
  417. package/dist/jsx/fields/ColorPicker/parts.native.js +1 -0
  418. package/dist/jsx/fields/ColorPicker/parts.native.js.map +1 -1
  419. package/dist/jsx/fields/Combobox/index.mjs +197 -191
  420. package/dist/jsx/fields/Combobox/index.mjs.map +1 -1
  421. package/dist/jsx/fields/Combobox/index.native.js +214 -208
  422. package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
  423. package/dist/jsx/fields/DatePicker/DateRangePicker.mjs +5 -5
  424. package/dist/jsx/fields/DatePicker/DateRangePicker.mjs.map +1 -1
  425. package/dist/jsx/fields/DatePicker/DateRangePicker.native.js +7 -7
  426. package/dist/jsx/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  427. package/dist/jsx/fields/DatePicker/MultiDatePicker.mjs +3 -1
  428. package/dist/jsx/fields/DatePicker/MultiDatePicker.mjs.map +1 -1
  429. package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js +6 -4
  430. package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  431. package/dist/jsx/fields/Duration/index.mjs +3 -1
  432. package/dist/jsx/fields/Duration/index.mjs.map +1 -1
  433. package/dist/jsx/fields/Duration/index.native.js +5 -3
  434. package/dist/jsx/fields/Duration/index.native.js.map +1 -1
  435. package/dist/jsx/fields/FileUpload/index.mjs +5 -3
  436. package/dist/jsx/fields/FileUpload/index.mjs.map +1 -1
  437. package/dist/jsx/fields/FileUpload/index.native.js +10 -8
  438. package/dist/jsx/fields/FileUpload/index.native.js.map +1 -1
  439. package/dist/jsx/fields/FileUpload/nativePickerLoader.mjs +7 -3
  440. package/dist/jsx/fields/FileUpload/nativePickerLoader.mjs.map +1 -1
  441. package/dist/jsx/fields/FileUpload/nativePickerLoader.native.js +7 -2
  442. package/dist/jsx/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  443. package/dist/jsx/fields/Geolocation/GeolocationMap.mjs +3 -0
  444. package/dist/jsx/fields/Geolocation/GeolocationMap.mjs.map +1 -1
  445. package/dist/jsx/fields/Geolocation/geocoderContext.mjs +44 -0
  446. package/dist/jsx/fields/Geolocation/geocoderContext.mjs.map +1 -0
  447. package/dist/jsx/fields/Geolocation/geocoderContext.native.js +75 -0
  448. package/dist/jsx/fields/Geolocation/geocoderContext.native.js.map +1 -0
  449. package/dist/jsx/fields/Geolocation/index.mjs +73 -83
  450. package/dist/jsx/fields/Geolocation/index.mjs.map +1 -1
  451. package/dist/jsx/fields/Geolocation/index.native.js +72 -82
  452. package/dist/jsx/fields/Geolocation/index.native.js.map +1 -1
  453. package/dist/jsx/fields/Geolocation/photonGeocoder.mjs +112 -0
  454. package/dist/jsx/fields/Geolocation/photonGeocoder.mjs.map +1 -0
  455. package/dist/jsx/fields/Geolocation/photonGeocoder.native.js +179 -0
  456. package/dist/jsx/fields/Geolocation/photonGeocoder.native.js.map +1 -0
  457. package/dist/jsx/fields/Input/index.mjs +3 -1
  458. package/dist/jsx/fields/Input/index.mjs.map +1 -1
  459. package/dist/jsx/fields/Input/index.native.js +7 -5
  460. package/dist/jsx/fields/Input/index.native.js.map +1 -1
  461. package/dist/jsx/fields/MentionInput/index.mjs +115 -109
  462. package/dist/jsx/fields/MentionInput/index.mjs.map +1 -1
  463. package/dist/jsx/fields/MentionInput/index.native.js +130 -124
  464. package/dist/jsx/fields/MentionInput/index.native.js.map +1 -1
  465. package/dist/jsx/fields/OTPInput/index.mjs +7 -4
  466. package/dist/jsx/fields/OTPInput/index.mjs.map +1 -1
  467. package/dist/jsx/fields/OTPInput/index.native.js +11 -8
  468. package/dist/jsx/fields/OTPInput/index.native.js.map +1 -1
  469. package/dist/jsx/fields/PhoneInput/index.mjs +6 -3
  470. package/dist/jsx/fields/PhoneInput/index.mjs.map +1 -1
  471. package/dist/jsx/fields/PhoneInput/index.native.js +9 -6
  472. package/dist/jsx/fields/PhoneInput/index.native.js.map +1 -1
  473. package/dist/jsx/fields/PhoneInput/phone.mjs +6 -5
  474. package/dist/jsx/fields/PhoneInput/phone.mjs.map +1 -1
  475. package/dist/jsx/fields/PhoneInput/phone.native.js +7 -6
  476. package/dist/jsx/fields/PhoneInput/phone.native.js.map +1 -1
  477. package/dist/jsx/fields/PhoneInput/regionNames.mjs +249 -0
  478. package/dist/jsx/fields/PhoneInput/regionNames.mjs.map +1 -0
  479. package/dist/jsx/fields/PhoneInput/regionNames.native.js +277 -0
  480. package/dist/jsx/fields/PhoneInput/regionNames.native.js.map +1 -0
  481. package/dist/jsx/fields/RadioGroup/index.mjs +3 -7
  482. package/dist/jsx/fields/RadioGroup/index.mjs.map +1 -1
  483. package/dist/jsx/fields/RadioGroup/index.native.js +2 -6
  484. package/dist/jsx/fields/RadioGroup/index.native.js.map +1 -1
  485. package/dist/jsx/fields/SearchInput/index.mjs +5 -3
  486. package/dist/jsx/fields/SearchInput/index.mjs.map +1 -1
  487. package/dist/jsx/fields/SearchInput/index.native.js +10 -8
  488. package/dist/jsx/fields/SearchInput/index.native.js.map +1 -1
  489. package/dist/jsx/fields/Select/index.mjs +10 -7
  490. package/dist/jsx/fields/Select/index.mjs.map +1 -1
  491. package/dist/jsx/fields/Select/index.native.js +20 -17
  492. package/dist/jsx/fields/Select/index.native.js.map +1 -1
  493. package/dist/jsx/fields/Signature/index.mjs +7 -6
  494. package/dist/jsx/fields/Signature/index.mjs.map +1 -1
  495. package/dist/jsx/fields/Signature/index.native.js +10 -9
  496. package/dist/jsx/fields/Signature/index.native.js.map +1 -1
  497. package/dist/jsx/fields/Slider/index.mjs +10 -4
  498. package/dist/jsx/fields/Slider/index.mjs.map +1 -1
  499. package/dist/jsx/fields/Slider/index.native.js +21 -17
  500. package/dist/jsx/fields/Slider/index.native.js.map +1 -1
  501. package/dist/jsx/fields/Slider/jumpMotion.mjs +2 -2
  502. package/dist/jsx/fields/Slider/jumpMotion.mjs.map +1 -1
  503. package/dist/jsx/fields/Slider/jumpMotion.native.js +2 -1
  504. package/dist/jsx/fields/Slider/jumpMotion.native.js.map +1 -1
  505. package/dist/jsx/fields/Stepper/index.mjs +24 -5
  506. package/dist/jsx/fields/Stepper/index.mjs.map +1 -1
  507. package/dist/jsx/fields/Stepper/index.native.js +25 -6
  508. package/dist/jsx/fields/Stepper/index.native.js.map +1 -1
  509. package/dist/jsx/fields/Switch/footprint.mjs +29 -0
  510. package/dist/jsx/fields/Switch/footprint.mjs.map +1 -0
  511. package/dist/jsx/fields/Switch/footprint.native.js +57 -0
  512. package/dist/jsx/fields/Switch/footprint.native.js.map +1 -0
  513. package/dist/jsx/fields/Switch/index.mjs +44 -27
  514. package/dist/jsx/fields/Switch/index.mjs.map +1 -1
  515. package/dist/jsx/fields/Switch/index.native.js +60 -50
  516. package/dist/jsx/fields/Switch/index.native.js.map +1 -1
  517. package/dist/jsx/fields/TextArea/index.mjs +6 -3
  518. package/dist/jsx/fields/TextArea/index.mjs.map +1 -1
  519. package/dist/jsx/fields/TextArea/index.native.js +6 -3
  520. package/dist/jsx/fields/TextArea/index.native.js.map +1 -1
  521. package/dist/jsx/fields/TimePicker/catalog.mjs +1 -0
  522. package/dist/jsx/fields/TimePicker/catalog.mjs.map +1 -1
  523. package/dist/jsx/fields/TimePicker/catalog.native.js +1 -0
  524. package/dist/jsx/fields/TimePicker/catalog.native.js.map +1 -1
  525. package/dist/jsx/fields/TimePicker/parts.mjs +5 -0
  526. package/dist/jsx/fields/TimePicker/parts.mjs.map +1 -1
  527. package/dist/jsx/fields/TimePicker/parts.native.js +7 -0
  528. package/dist/jsx/fields/TimePicker/parts.native.js.map +1 -1
  529. package/dist/jsx/index.js +6 -1
  530. package/dist/jsx/index.js.map +1 -1
  531. package/dist/jsx/index.mjs +6 -1
  532. package/dist/jsx/index.mjs.map +1 -1
  533. package/dist/jsx/index.native.js +12 -0
  534. package/dist/jsx/index.native.js.map +1 -1
  535. package/dist/jsx/shared/panelPortal.mjs +24 -0
  536. package/dist/jsx/shared/panelPortal.mjs.map +1 -0
  537. package/dist/jsx/shared/panelPortal.native.js +65 -0
  538. package/dist/jsx/shared/panelPortal.native.js.map +1 -0
  539. package/dist/jsx/shared/pressSlopProps.mjs +16 -12
  540. package/dist/jsx/shared/pressSlopProps.mjs.map +1 -1
  541. package/dist/jsx/shared/pressSlopProps.native.js +18 -12
  542. package/dist/jsx/shared/pressSlopProps.native.js.map +1 -1
  543. package/dist/jsx/shared/utils.mjs +2 -2
  544. package/dist/jsx/shared/utils.mjs.map +1 -1
  545. package/dist/jsx/shared/utils.native.js +3 -2
  546. package/dist/jsx/shared/utils.native.js.map +1 -1
  547. package/dist/jsx/themedPrimitives.mjs +16 -3
  548. package/dist/jsx/themedPrimitives.mjs.map +1 -1
  549. package/dist/jsx/themedPrimitives.native.js +16 -3
  550. package/dist/jsx/themedPrimitives.native.js.map +1 -1
  551. package/package.json +15 -11
  552. package/src/AdaptivePopup/AdaptivePopup.spec.tsx +2 -3
  553. package/src/AdaptivePopup/index.tsx +11 -10
  554. package/src/Button/Button.borderLadder.spec.tsx +82 -0
  555. package/src/Button/Button.labelInk.spec.tsx +4 -1
  556. package/src/Button/Button.radiusLaw.spec.tsx +153 -0
  557. package/src/Button/index.tsx +6 -3
  558. package/src/ContextualSaveBar/ContextualSaveBar.spec.tsx +24 -0
  559. package/src/ContextualSaveBar/ContextualSaveBar.stories.tsx +37 -1
  560. package/src/ContextualSaveBar/UnsavedChangesDialog.tsx +3 -11
  561. package/src/ContextualSaveBar/index.tsx +17 -11
  562. package/src/ErrorSummary.stories.tsx +20 -11
  563. package/src/FieldDisplay/FieldDisplay.spec.tsx +47 -2
  564. package/src/FieldDisplay/index.tsx +21 -13
  565. package/src/FloatingPanel/FloatingPanel.detentLayout.spec.tsx +148 -0
  566. package/src/FloatingPanel/FloatingPanel.spec.tsx +140 -1
  567. package/src/FloatingPanel/FloatingPanel.stories.tsx +86 -1
  568. package/src/FloatingPanel/PanelPortal.native.tsx +15 -0
  569. package/src/FloatingPanel/PanelPortal.tsx +149 -0
  570. package/src/FloatingPanel/index.native.tsx +96 -19
  571. package/src/FloatingPanel/index.tsx +172 -86
  572. package/src/FloatingPanel/panelPortal.spec.tsx +142 -0
  573. package/src/FloatingPanel/panelWidthContract.spec.ts +17 -5
  574. package/src/FloatingPanel/touchRecipeHydration.spec.tsx +82 -0
  575. package/src/FloatingPanel/useFloatingPanel.ts +5 -2
  576. package/src/FloatingPanel/viewportHydration.spec.tsx +118 -0
  577. package/src/Form/index.tsx +2 -1
  578. package/src/Form/submission.spec.tsx +148 -0
  579. package/src/Form/submissionController.spec.ts +73 -0
  580. package/src/Form/submissionController.ts +59 -0
  581. package/src/Form/submissionDiscard.spec.tsx +41 -0
  582. package/src/Form/submissionPaths.spec.tsx +214 -0
  583. package/src/InputParts/index.tsx +48 -12
  584. package/src/Label/Label.stories.tsx +27 -11
  585. package/src/Wheel/Wheel.spec.tsx +9 -2
  586. package/src/Wheel/index.tsx +0 -2
  587. package/src/fieldFamilyStories.radius.spec.tsx +48 -0
  588. package/src/fields/Barcode/BarcodePreview.spec.tsx +32 -12
  589. package/src/fields/Barcode/BarcodePreview.stories.tsx +5 -4
  590. package/src/fields/Barcode/BarcodePreview.tsx +31 -25
  591. package/src/fields/Checkbox/Checkbox.native.spec.tsx +92 -0
  592. package/src/fields/Checkbox/Checkbox.stories.tsx +1 -0
  593. package/src/fields/Checkbox/Checkbox.tsx +2 -2
  594. package/src/fields/Checkbox/CheckboxBox.spec.tsx +13 -13
  595. package/src/fields/Checkbox/CheckboxBox.tsx +7 -1
  596. package/src/fields/ColorPicker/index.tsx +6 -1
  597. package/src/fields/ColorPicker/parts.tsx +1 -0
  598. package/src/fields/Combobox/Combobox.spec.tsx +85 -55
  599. package/src/fields/Combobox/index.tsx +259 -240
  600. package/src/fields/DatePicker/DateRangePicker.tsx +5 -3
  601. package/src/fields/DatePicker/MultiDatePicker.tsx +3 -1
  602. package/src/fields/Duration/index.tsx +3 -1
  603. package/src/fields/FileUpload/index.tsx +13 -3
  604. package/src/fields/FileUpload/nativePickerLoader.spec.ts +34 -0
  605. package/src/fields/FileUpload/nativePickerLoader.ts +11 -2
  606. package/src/fields/Geolocation/Geolocation.spec.tsx +165 -4
  607. package/src/fields/Geolocation/Geolocation.stories.tsx +110 -26
  608. package/src/fields/Geolocation/GeolocationMap.tsx +3 -0
  609. package/src/fields/Geolocation/geocoderContext.tsx +56 -0
  610. package/src/fields/Geolocation/index.tsx +75 -80
  611. package/src/fields/Geolocation/photonGeocoder.spec.ts +214 -0
  612. package/src/fields/Geolocation/photonGeocoder.ts +150 -0
  613. package/src/fields/Input/index.tsx +3 -1
  614. package/src/fields/MentionInput/MentionInput.spec.tsx +41 -30
  615. package/src/fields/MentionInput/index.tsx +128 -119
  616. package/src/fields/OTPInput/index.tsx +7 -4
  617. package/src/fields/PhoneInput/PhoneInput.spec.tsx +63 -0
  618. package/src/fields/PhoneInput/index.tsx +13 -8
  619. package/src/fields/PhoneInput/phone.native.spec.ts +32 -0
  620. package/src/fields/PhoneInput/phone.ts +5 -2
  621. package/src/fields/PhoneInput/regionNames.ts +250 -0
  622. package/src/fields/RadioGroup/RadioGroup.stories.tsx +4 -3
  623. package/src/fields/RadioGroup/index.tsx +3 -2
  624. package/src/fields/Rating/StarInk.native.spec.tsx +1 -1
  625. package/src/fields/SearchInput/index.tsx +4 -3
  626. package/src/fields/Select/Select.spec.tsx +36 -29
  627. package/src/fields/Select/index.tsx +14 -5
  628. package/src/fields/Signature/index.tsx +7 -3
  629. package/src/fields/Slider/index.tsx +14 -4
  630. package/src/fields/Slider/jumpMotion.ts +6 -2
  631. package/src/fields/Stepper/Stepper.spec.tsx +30 -0
  632. package/src/fields/Stepper/index.tsx +34 -4
  633. package/src/fields/Switch/Switch.footprint.native.spec.tsx +58 -0
  634. package/src/fields/Switch/Switch.footprint.spec.tsx +79 -0
  635. package/src/fields/Switch/Switch.radius.spec.tsx +37 -6
  636. package/src/fields/Switch/footprint.ts +45 -0
  637. package/src/fields/Switch/index.tsx +46 -49
  638. package/src/fields/TextArea/TextArea.spec.tsx +30 -1
  639. package/src/fields/TextArea/index.tsx +6 -3
  640. package/src/fields/TimePicker/TimePicker.native.spec.tsx +48 -0
  641. package/src/fields/TimePicker/catalog.tsx +1 -0
  642. package/src/fields/TimePicker/parts.tsx +4 -0
  643. package/src/fields/ToggleGroup/ToggleGroup.spec.tsx +17 -8
  644. package/src/fields/pickerShellPadding.spec.tsx +54 -0
  645. package/src/index.ts +8 -0
  646. package/src/shared/panelPortal.ts +36 -0
  647. package/src/shared/pressSlopProps.spec.ts +27 -1
  648. package/src/shared/pressSlopProps.ts +26 -17
  649. package/src/shared/utils.ts +2 -2
  650. package/src/themedPrimitives.tsx +16 -3
  651. package/types/AdaptivePopup/index.d.ts.map +1 -1
  652. package/types/Button/index.d.ts.map +1 -1
  653. package/types/ContextualSaveBar/UnsavedChangesDialog.d.ts.map +1 -1
  654. package/types/ContextualSaveBar/index.d.ts.map +1 -1
  655. package/types/FieldDisplay/index.d.ts.map +1 -1
  656. package/types/FloatingPanel/PanelPortal.d.ts +24 -0
  657. package/types/FloatingPanel/PanelPortal.d.ts.map +1 -0
  658. package/types/FloatingPanel/PanelPortal.native.d.ts +9 -0
  659. package/types/FloatingPanel/PanelPortal.native.d.ts.map +1 -0
  660. package/types/FloatingPanel/index.d.ts +0 -5
  661. package/types/FloatingPanel/index.d.ts.map +1 -1
  662. package/types/FloatingPanel/index.native.d.ts.map +1 -1
  663. package/types/FloatingPanel/useFloatingPanel.d.ts.map +1 -1
  664. package/types/Form/index.d.ts.map +1 -1
  665. package/types/Form/submissionController.d.ts +21 -0
  666. package/types/Form/submissionController.d.ts.map +1 -0
  667. package/types/InputParts/index.d.ts +34 -2
  668. package/types/InputParts/index.d.ts.map +1 -1
  669. package/types/Wheel/index.d.ts.map +1 -1
  670. package/types/fields/Barcode/BarcodePreview.d.ts +7 -3
  671. package/types/fields/Barcode/BarcodePreview.d.ts.map +1 -1
  672. package/types/fields/Checkbox/CheckboxBox.d.ts +5 -0
  673. package/types/fields/Checkbox/CheckboxBox.d.ts.map +1 -1
  674. package/types/fields/ColorPicker/index.d.ts.map +1 -1
  675. package/types/fields/ColorPicker/parts.d.ts +2 -0
  676. package/types/fields/ColorPicker/parts.d.ts.map +1 -1
  677. package/types/fields/Combobox/index.d.ts.map +1 -1
  678. package/types/fields/DatePicker/DateRangePicker.d.ts.map +1 -1
  679. package/types/fields/DatePicker/MultiDatePicker.d.ts.map +1 -1
  680. package/types/fields/Duration/index.d.ts.map +1 -1
  681. package/types/fields/FileUpload/index.d.ts.map +1 -1
  682. package/types/fields/FileUpload/nativePickerLoader.d.ts +8 -0
  683. package/types/fields/FileUpload/nativePickerLoader.d.ts.map +1 -1
  684. package/types/fields/Geolocation/GeolocationMap.d.ts.map +1 -1
  685. package/types/fields/Geolocation/geocoderContext.d.ts +24 -0
  686. package/types/fields/Geolocation/geocoderContext.d.ts.map +1 -0
  687. package/types/fields/Geolocation/index.d.ts +2 -1
  688. package/types/fields/Geolocation/index.d.ts.map +1 -1
  689. package/types/fields/Geolocation/photonGeocoder.d.ts +46 -0
  690. package/types/fields/Geolocation/photonGeocoder.d.ts.map +1 -0
  691. package/types/fields/Input/index.d.ts +19 -1
  692. package/types/fields/Input/index.d.ts.map +1 -1
  693. package/types/fields/MentionInput/index.d.ts.map +1 -1
  694. package/types/fields/OTPInput/index.d.ts +1 -1
  695. package/types/fields/OTPInput/index.d.ts.map +1 -1
  696. package/types/fields/PhoneInput/index.d.ts.map +1 -1
  697. package/types/fields/PhoneInput/phone.d.ts.map +1 -1
  698. package/types/fields/PhoneInput/regionNames.d.ts +2 -0
  699. package/types/fields/PhoneInput/regionNames.d.ts.map +1 -0
  700. package/types/fields/RadioGroup/index.d.ts.map +1 -1
  701. package/types/fields/SearchInput/index.d.ts.map +1 -1
  702. package/types/fields/Select/index.d.ts.map +1 -1
  703. package/types/fields/Signature/index.d.ts.map +1 -1
  704. package/types/fields/Slider/index.d.ts.map +1 -1
  705. package/types/fields/Slider/jumpMotion.d.ts +1 -1
  706. package/types/fields/Slider/jumpMotion.d.ts.map +1 -1
  707. package/types/fields/Stepper/index.d.ts +6 -0
  708. package/types/fields/Stepper/index.d.ts.map +1 -1
  709. package/types/fields/Switch/footprint.d.ts +12 -0
  710. package/types/fields/Switch/footprint.d.ts.map +1 -0
  711. package/types/fields/Switch/index.d.ts.map +1 -1
  712. package/types/fields/TextArea/index.d.ts.map +1 -1
  713. package/types/fields/TimePicker/catalog.d.ts.map +1 -1
  714. package/types/fields/TimePicker/parts.d.ts.map +1 -1
  715. package/types/index.d.ts +8 -0
  716. package/types/index.d.ts.map +1 -1
  717. package/types/shared/panelPortal.d.ts +13 -0
  718. package/types/shared/panelPortal.d.ts.map +1 -0
  719. package/types/shared/pressSlopProps.d.ts +9 -2
  720. package/types/shared/pressSlopProps.d.ts.map +1 -1
  721. package/types/shared/utils.d.ts +1 -1
  722. package/types/shared/utils.d.ts.map +1 -1
  723. package/types/themedPrimitives.d.ts +48 -1
  724. package/types/themedPrimitives.d.ts.map +1 -1
@@ -7,7 +7,7 @@ import { Wheel } from "./index";
7
7
  afterEach(cleanup);
8
8
 
9
9
  describe("Wheel contrast contract", () => {
10
- it("uses the selected-text weight and keeps rounding on the selection band", () => {
10
+ it("keeps the selected row on the body weight and rounding on the selection band", () => {
11
11
  renderWithProviders(
12
12
  <Preset overrides={{ borderRadius: "full" }}>
13
13
  <Wheel items={[1, 2, 3, 4, 5]} value={3} visibleItems={5} />
@@ -15,8 +15,15 @@ describe("Wheel contrast contract", () => {
15
15
  );
16
16
  const wheel = screen.getByTestId("wheel");
17
17
  const selected = wheel.querySelector('[data-selected="true"]')?.firstElementChild;
18
+ const idle = wheel.querySelector(
19
+ '[data-testid="wheel-item"]:not([data-selected="true"])',
20
+ )?.firstElementChild;
18
21
  expect(selected).toBeTruthy();
19
- expect(["700", "bold"]).toContain(getComputedStyle(selected as Element).fontWeight);
22
+ expect(idle).toBeTruthy();
23
+ expect(getComputedStyle(selected as Element).fontWeight).toBe("400");
24
+ expect(getComputedStyle(selected as Element).fontWeight).toBe(
25
+ getComputedStyle(idle as Element).fontWeight,
26
+ );
20
27
  expect(["", "0px"]).toContain(getComputedStyle(wheel).borderTopLeftRadius);
21
28
  expect(getComputedStyle(screen.getByTestId("wheel-selection")).borderStartStartRadius).not.toBe(
22
29
  "0px",
@@ -847,7 +847,6 @@ export function Wheel<T = string | number>({
847
847
  <Text
848
848
  {...knobProps.body}
849
849
  fontSize={size}
850
- fontWeight={isSelected && !disabled ? "bold" : knobProps.textWeight.fontWeight}
851
850
  color={itemColor(isSelected)}
852
851
  numberOfLines={1}
853
852
  ellipsizeMode="tail"
@@ -865,7 +864,6 @@ export function Wheel<T = string | number>({
865
864
  width={flex ? "100%" : columnWidth}
866
865
  minWidth={flex ? 0 : columnWidth}
867
866
  flex={flex}
868
- borderRadius={0}
869
867
  data-testid="wheel"
870
868
  data-disabled={disabled ? true : undefined}
871
869
  aria-disabled={disabled || undefined}
@@ -23,10 +23,12 @@ import { Preset, type BorderRadius } from "@multiplatform.one/theme";
23
23
  import type { ReactElement } from "react";
24
24
  import { afterEach, describe, expect, it } from "vitest";
25
25
 
26
+ import * as errorSummaryStories from "./ErrorSummary.stories";
26
27
  import * as fieldGroupStories from "./FieldGroup.stories";
27
28
  import * as fieldLayoutStories from "./FieldLayout.stories";
28
29
  import * as fieldsetStories from "./Fieldset.stories";
29
30
  import * as formGridStories from "./FormGrid.stories";
31
+ import * as labelStories from "./Label/Label.stories";
30
32
 
31
33
  afterEach(cleanup);
32
34
 
@@ -116,3 +118,49 @@ describe("form layout stories mount knob-consuming field chrome", () => {
116
118
  });
117
119
  }
118
120
  });
121
+
122
+ /**
123
+ * ErrorSummary and Label mount a text control beside the part under test, so
124
+ * the probe measures that control's chrome. The Box around each input has to
125
+ * carry the knob's token: a raw tamagui Input pins its own radius and no
126
+ * ancestor moves (MPO-316).
127
+ */
128
+ function inputChromeTokens(container: HTMLElement): string[] {
129
+ return [...container.querySelectorAll<HTMLElement>("input")].map((input) => {
130
+ for (let el = input.parentElement; el && el !== container; el = el.parentElement) {
131
+ for (const cls of String(el.className || "").split(/\s+/)) {
132
+ const match = /^_btlr-t-radius-(\d+)$/.exec(cls);
133
+ if (match) return match[1];
134
+ }
135
+ }
136
+ return "none found";
137
+ });
138
+ }
139
+
140
+ const beside = [
141
+ {
142
+ name: "Forms/ErrorSummary FocusesTheFieldOnPress",
143
+ story: errorSummaryStories.FocusesTheFieldOnPress as StoryLike,
144
+ meta: errorSummaryStories.default,
145
+ inputs: 2,
146
+ },
147
+ {
148
+ name: "Forms/Label WithControl",
149
+ story: labelStories.WithControl as StoryLike,
150
+ meta: labelStories.default,
151
+ inputs: 1,
152
+ },
153
+ ];
154
+
155
+ describe("stories that mount a text control beside a form part use house chrome", () => {
156
+ for (const { name, story, meta, inputs } of beside) {
157
+ describe(name, () => {
158
+ for (const stop of stops) {
159
+ it(`wraps every input in chrome at radius token $${ladder[stop]} at borderRadius:${stop}`, () => {
160
+ const { container } = mountAt(story, meta as { args?: unknown }, stop);
161
+ expect(inputChromeTokens(container)).toEqual(Array(inputs).fill(ladder[stop]));
162
+ });
163
+ }
164
+ });
165
+ }
166
+ });
@@ -1,5 +1,6 @@
1
1
  import { describe, expect, it } from "vitest";
2
2
  import { renderWithProviders } from "@multiplatform.one/test-utils";
3
+ import { Theme } from "tamagui";
3
4
  import { BarcodePreview, barcodePreviewSymbology } from "./BarcodePreview";
4
5
  import { countModules, encodeCode128B } from "./code128";
5
6
  import { QR_QUIET_ZONE_MODULES, encodeQr } from "./qr";
@@ -104,18 +105,37 @@ describe("BarcodePreview — qr format", () => {
104
105
  /** The field's own default bound (Barcode/index.tsx): 36 comfortable, 24 compact. */
105
106
  const formHeight = 36;
106
107
 
107
- it("QR modules paint $color on $background (themed polarity; MPO-94 is not this lane)", () => {
108
- const result = renderWithProviders(<BarcodePreview value="SHC-42" format="qr" height={120} />);
109
- const square = result.container.querySelector(
110
- '[data-testid="barcode-preview-qr"]',
111
- ) as HTMLElement | null;
112
- expect(square).not.toBeNull();
113
- expect(square!.className).toContain("_bg-background");
114
- const darkModule = [...square!.querySelectorAll("*")].find((el) =>
115
- (el as HTMLElement).className?.toString().includes("_bg-color"),
116
- ) as HTMLElement | undefined;
117
- expect(darkModule).toBeTruthy();
118
- expect(darkModule!.className).not.toMatch(/_bg-(?:white|black|color12)\b/);
108
+ /** Nearest Tamagui theme scope above an element (`t_light` / `t_dark`). */
109
+ function themeScope(el: Element | null): string | undefined {
110
+ for (let node = el?.parentElement; node; node = node.parentElement) {
111
+ const scope = String(node.className).match(/\bt_(light|dark)\b/);
112
+ if (scope) return scope[1];
113
+ }
114
+ return undefined;
115
+ }
116
+
117
+ it("the QR face pins dark-on-light in both schemes; the Code 128 strip follows the scheme (MPO-94)", () => {
118
+ for (const scheme of ["light", "dark"] as const) {
119
+ const result = renderWithProviders(
120
+ <Theme name={scheme}>
121
+ <BarcodePreview value="SHC-42" format="qr" height={120} />
122
+ <BarcodePreview value="SKU-001234" format="code128" height={36} />
123
+ </Theme>,
124
+ );
125
+ const square = result.container.querySelector(
126
+ '[data-testid="barcode-preview-qr"]',
127
+ ) as HTMLElement | null;
128
+ expect(square).not.toBeNull();
129
+ expect(themeScope(square), `${scheme}: QR face scope`).toBe("light");
130
+ expect(square!.className).toContain("_bg-background");
131
+ const darkModule = [...square!.querySelectorAll("*")].find((el) =>
132
+ (el as HTMLElement).className?.toString().includes("_bg-color"),
133
+ ) as HTMLElement | undefined;
134
+ expect(darkModule).toBeTruthy();
135
+ const strip = result.container.querySelectorAll('[data-testid="barcode-preview"]')[1];
136
+ expect(themeScope(strip), `${scheme}: strip scope`).toBe(scheme);
137
+ result.unmount();
138
+ }
119
139
  });
120
140
 
121
141
  it("draws the QR matrix canvas-free (labeled image, real module rows)", () => {
@@ -80,16 +80,17 @@ export const Empty: Story = {
80
80
  };
81
81
 
82
82
  /**
83
- * Themed polarity specimen. Both faces paint $color on $background, so a
84
- * scheme flip restyles them with the rest of the screen. Do not treat this
85
- * as a pin-to-dark-on-light preview; that decision lives on MPO-94.
83
+ * Polarity specimen. The QR face is pinned dark-on-light in both schemes
84
+ * (MPO-94: a reversed QR is optional for a reader), while the Code 128 strip
85
+ * paints $color on $background and follows the scheme. Flip the scheme to
86
+ * see one face hold and the other move.
86
87
  */
87
88
  export const ThemedPolarity: Story = {
88
89
  render: () => (
89
90
  <XStack gap="$6" flexWrap="wrap" padding="$4" alignItems="flex-end">
90
91
  <YStack gap="$2" alignItems="center">
91
92
  <Text fontSize="$2" color="$color10">
92
- QR (themed)
93
+ QR (pinned dark-on-light)
93
94
  </Text>
94
95
  <BarcodePreview value="SHC-42" format="qr" height={120} showText />
95
96
  </YStack>
@@ -1,8 +1,12 @@
1
1
  /**
2
2
  * BarcodePreview — draws a value as a real barcode symbol using plain Views
3
- * (cross-platform: no canvas/svg/web-only dependency). Bars use the theme ink
4
- * on the theme surface, so a scheme flip restyles the preview with the rest
5
- * of the screen.
3
+ * (cross-platform: no canvas/svg/web-only dependency). The Code 128 strip
4
+ * uses the theme ink on the theme surface, so a scheme flip restyles it with
5
+ * the rest of the screen. The QR face does not follow the scheme: ISO/IEC
6
+ * 18004 specifies dark modules on a light ground and makes a reversed symbol
7
+ * optional for a reader, so the face renders under the light theme in both
8
+ * schemes (MPO-94). Polarity there is machine meaning, the Axiom 11 literal
9
+ * class, not styling.
6
10
  *
7
11
  * Two symbologies, chosen by the `format` prop through the SAME alias table
8
12
  * the scanner resolves with (scannerTypes) so the field never draws one
@@ -23,7 +27,7 @@
23
27
  * never a fake, truncated or unreadable symbol.
24
28
  */
25
29
 
26
- import { Text, View, XStack, YStack } from "tamagui";
30
+ import { Text, Theme, View, XStack, YStack } from "tamagui";
27
31
  import { t } from "../../shared/t";
28
32
  import { encodeCode128B } from "./code128";
29
33
  import { QR_QUIET_ZONE_MODULES, encodeQr, qrRowRuns } from "./qr";
@@ -185,27 +189,29 @@ function QrPreview({
185
189
  flexShrink={1}
186
190
  overflow="hidden"
187
191
  >
188
- <YStack
189
- testID="barcode-preview-qr"
190
- width={edge}
191
- height={edge}
192
- padding={quietZone}
193
- backgroundColor="$background"
194
- aria-hidden
195
- >
196
- {rows.map((runs, rowIndex) => (
197
- <XStack key={rowIndex} height={cell}>
198
- {runs.map((run, runIndex) => (
199
- <View
200
- key={runIndex}
201
- width={run.modules * cell}
202
- height="100%"
203
- backgroundColor={run.dark ? "$color" : "transparent"}
204
- />
205
- ))}
206
- </XStack>
207
- ))}
208
- </YStack>
192
+ <Theme name="light">
193
+ <YStack
194
+ testID="barcode-preview-qr"
195
+ width={edge}
196
+ height={edge}
197
+ padding={quietZone}
198
+ backgroundColor="$background"
199
+ aria-hidden
200
+ >
201
+ {rows.map((runs, rowIndex) => (
202
+ <XStack key={rowIndex} height={cell}>
203
+ {runs.map((run, runIndex) => (
204
+ <View
205
+ key={runIndex}
206
+ width={run.modules * cell}
207
+ height="100%"
208
+ backgroundColor={run.dark ? "$color" : "transparent"}
209
+ />
210
+ ))}
211
+ </XStack>
212
+ ))}
213
+ </YStack>
214
+ </Theme>
209
215
  {showText && <MonoValue value={value} />}
210
216
  </View>
211
217
  );
@@ -0,0 +1,92 @@
1
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
2
+ import { useForm } from "@tanstack/react-form";
3
+ import { fireEvent } from "@testing-library/react";
4
+ import { beforeEach, describe, expect, it, vi } from "vitest";
5
+ import { Form } from "../../Form";
6
+ import { Checkbox } from "./Checkbox";
7
+ import { Checkboxes } from "./index";
8
+
9
+ vi.mock("tamagui", async (importOriginal) => ({
10
+ ...(await importOriginal<typeof import("tamagui")>()),
11
+ isWeb: false,
12
+ }));
13
+
14
+ // MPO-362. On native, tamagui's HOC event branch (@tamagui/web
15
+ // eventHandling.native.ts) turns any focus or press handler on a styled layer
16
+ // over Checkbox into an `onPress` prop, `undefined` when that layer has no
17
+ // press handler, and createCheckbox spreads it over its own toggle. A tap on
18
+ // the box then does nothing while the label still works. The web renderer
19
+ // here never takes that branch, so the spec pins the handlers that trigger it.
20
+ const frameProps = vi.hoisted(() => [] as Record<string, unknown>[]);
21
+ vi.mock("./CheckboxFieldFrame", async () => {
22
+ const { Checkbox: TamaguiCheckbox } = await vi.importActual<typeof import("tamagui")>("tamagui");
23
+ return {
24
+ CheckboxFieldFrame: (props: Record<string, unknown>) => {
25
+ frameProps.push(props);
26
+ return <TamaguiCheckbox {...props} />;
27
+ },
28
+ };
29
+ });
30
+
31
+ const nativeHandlerKeys = [
32
+ "onFocus",
33
+ "onBlur",
34
+ "onHoverIn",
35
+ "onHoverOut",
36
+ "onPress",
37
+ "onPressIn",
38
+ "onPressOut",
39
+ "onLongPress",
40
+ ];
41
+
42
+ const handlersOnLastFrame = () =>
43
+ nativeHandlerKeys.filter((key) => key in (frameProps.at(-1) ?? {}));
44
+
45
+ function FormCheckbox({ onChange }: { onChange: (checked: unknown) => void }) {
46
+ const form = useForm({ defaultValues: { terms: false } });
47
+ return (
48
+ <Form form={form}>
49
+ <Checkbox name="terms" label="Accept terms" onChange={onChange} />
50
+ </Form>
51
+ );
52
+ }
53
+
54
+ beforeEach(() => {
55
+ frameProps.length = 0;
56
+ });
57
+
58
+ describe("native Checkbox square tap", () => {
59
+ it("hands the standalone frame no handler that would clobber the toggle, and a tap toggles once", () => {
60
+ const onChange = vi.fn();
61
+ const result = renderWithProviders(<Checkbox label="Accept terms" onChange={onChange} />);
62
+ expect(handlersOnLastFrame()).toEqual([]);
63
+ const box = result.getByRole("checkbox");
64
+ fireEvent.click(box);
65
+ expect(onChange).toHaveBeenCalledExactlyOnceWith(true);
66
+ expect(box.getAttribute("aria-checked")).toBe("true");
67
+ fireEvent.click(box);
68
+ expect(onChange).toHaveBeenLastCalledWith(false);
69
+ });
70
+
71
+ it("hands the form-integrated frame no such handler either", () => {
72
+ const onChange = vi.fn();
73
+ const result = renderWithProviders(<FormCheckbox onChange={onChange} />);
74
+ expect(handlersOnLastFrame()).toEqual([]);
75
+ fireEvent.click(result.getByRole("checkbox"));
76
+ expect(onChange).toHaveBeenCalledExactlyOnceWith(true);
77
+ });
78
+
79
+ it("keeps the compound Checkboxes frame free of them too", () => {
80
+ renderWithProviders(
81
+ <Checkboxes values={{ email: false }} onValuesChange={() => {}}>
82
+ <Checkboxes.FocusGroup>
83
+ <Checkboxes.FocusGroup.Item value="email">
84
+ <Checkboxes.Checkbox aria-label="Email" />
85
+ </Checkboxes.FocusGroup.Item>
86
+ </Checkboxes.FocusGroup>
87
+ </Checkboxes>,
88
+ );
89
+ expect(frameProps.length).toBeGreaterThan(0);
90
+ expect(handlersOnLastFrame()).toEqual([]);
91
+ });
92
+ });
@@ -167,6 +167,7 @@ export const compound = () => {
167
167
  };
168
168
 
169
169
  export const Comparison: StoryObj = {
170
+ parameters: { foreignContrastSpecimen: true },
170
171
  render: () => {
171
172
  const ComparisonExample = () => {
172
173
  const [customChecked, setCustomChecked] = useState(false);
@@ -1,5 +1,5 @@
1
1
  import { CheckIcon as CheckRegular, MinusIcon as MinusRegular } from "@phosphor-icons/react";
2
- import { useReadableTextOn } from "@multiplatform.one/theme";
2
+ import { transitionProps, useReadableTextOn } from "@multiplatform.one/theme";
3
3
  import type { AnyFormApi } from "../../types";
4
4
  import type { ReactNode } from "react";
5
5
  import { useMemo, useState } from "react";
@@ -186,7 +186,7 @@ export function Checkbox({
186
186
  // Same native-responder steal as CheckboxGlyphBox — Indicator/SVG
187
187
  // must not claim the press that belongs to the 44px frame.
188
188
  pointerEvents="none"
189
- {...(knobProps.transition ? { transition: knobProps.transition } : undefined)}
189
+ {...transitionProps(knobProps.transition)}
190
190
  >
191
191
  {currentChecked === "indeterminate" ? (
192
192
  <MinusRegular
@@ -205,7 +205,7 @@ describe("CheckboxBox — keyboard-modality focus handlers", () => {
205
205
  const setKbFocus = vi.fn();
206
206
  const handlers = checkboxKbFocusHandlers(setKbFocus, vi.fn());
207
207
  pressKey();
208
- handlers.onFocus({});
208
+ handlers.onFocus?.({});
209
209
  expect(setKbFocus).toHaveBeenCalledWith(true);
210
210
  });
211
211
 
@@ -213,7 +213,7 @@ describe("CheckboxBox — keyboard-modality focus handlers", () => {
213
213
  const setKbFocus = vi.fn();
214
214
  const handlers = checkboxKbFocusHandlers(setKbFocus, vi.fn());
215
215
  pressPointer();
216
- handlers.onFocus({});
216
+ handlers.onFocus?.({});
217
217
  expect(setKbFocus).not.toHaveBeenCalled();
218
218
  });
219
219
 
@@ -221,16 +221,16 @@ describe("CheckboxBox — keyboard-modality focus handlers", () => {
221
221
  const setKbFocus = vi.fn();
222
222
  const handlers = checkboxKbFocusHandlers(setKbFocus, vi.fn());
223
223
  pressPointer();
224
- handlers.onBlur({});
224
+ handlers.onBlur?.({});
225
225
  expect(setKbFocus).toHaveBeenCalledWith(false);
226
226
  });
227
227
 
228
228
  it("tracks hover in and out", () => {
229
229
  const setHovered = vi.fn();
230
230
  const handlers = checkboxKbFocusHandlers(vi.fn(), setHovered);
231
- handlers.onHoverIn({});
231
+ handlers.onHoverIn?.({});
232
232
  expect(setHovered).toHaveBeenLastCalledWith(true);
233
- handlers.onHoverOut({});
233
+ handlers.onHoverOut?.({});
234
234
  expect(setHovered).toHaveBeenLastCalledWith(false);
235
235
  });
236
236
 
@@ -243,10 +243,10 @@ describe("CheckboxBox — keyboard-modality focus handlers", () => {
243
243
  };
244
244
  const handlers = checkboxKbFocusHandlers(vi.fn(), vi.fn(), rest);
245
245
  const event = { id: 1 };
246
- handlers.onFocus(event);
247
- handlers.onBlur(event);
248
- handlers.onHoverIn(event);
249
- handlers.onHoverOut(event);
246
+ handlers.onFocus?.(event);
247
+ handlers.onBlur?.(event);
248
+ handlers.onHoverIn?.(event);
249
+ handlers.onHoverOut?.(event);
250
250
  expect(rest.onFocus).toHaveBeenCalledWith(event);
251
251
  expect(rest.onBlur).toHaveBeenCalledWith(event);
252
252
  expect(rest.onHoverIn).toHaveBeenCalledWith(event);
@@ -256,10 +256,10 @@ describe("CheckboxBox — keyboard-modality focus handlers", () => {
256
256
  it("survives a caller that passes no handlers at all", () => {
257
257
  const handlers = checkboxKbFocusHandlers(vi.fn(), vi.fn());
258
258
  expect(() => {
259
- handlers.onFocus({});
260
- handlers.onBlur({});
261
- handlers.onHoverIn({});
262
- handlers.onHoverOut({});
259
+ handlers.onFocus?.({});
260
+ handlers.onBlur?.({});
261
+ handlers.onHoverIn?.({});
262
+ handlers.onHoverOut?.({});
263
263
  }).not.toThrow();
264
264
  });
265
265
  });
@@ -2,6 +2,7 @@ import {
2
2
  ensureFocusVisibleRing,
3
3
  ensureKeyboardModalityTracking,
4
4
  wasKeyboardFocus,
5
+ transitionProps,
5
6
  } from "@multiplatform.one/theme";
6
7
  import type { ReactNode } from "react";
7
8
  import type { SizeTokens, TransitionProp } from "tamagui";
@@ -97,6 +98,11 @@ export function checkboxKbFocusHandlers(
97
98
  setHovered: (next: boolean) => void,
98
99
  rest?: FocusRest,
99
100
  ) {
101
+ // Native (MPO-362): a focus handler on any styled layer over tamagui's
102
+ // Checkbox makes that layer pass `onPress: undefined` down, and
103
+ // createCheckbox spreads it over its own toggle, so a tap on the box does
104
+ // nothing. RN never fires focus or hover on this frame anyway.
105
+ if (!isWeb) return {};
100
106
  return {
101
107
  onFocus: (e: any) => {
102
108
  if (wasKeyboardFocus()) setKbFocus(true);
@@ -163,7 +169,7 @@ export function CheckboxGlyphBox({
163
169
  // from the 44px role=checkbox frame, so the box itself never toggles
164
170
  // (the Label Pressable still works). `none` lets the press fall through.
165
171
  pointerEvents="none"
166
- {...(transition ? { transition } : undefined)}
172
+ {...transitionProps(transition)}
167
173
  {...(kbFocus ? ensureFocusVisibleRing() : { outlineWidth: 0 as const })}
168
174
  >
169
175
  {children}
@@ -366,7 +366,12 @@ function ColorBody({
366
366
  const hasEyeDropper = typeof window !== "undefined" && "EyeDropper" in window;
367
367
 
368
368
  return (
369
- <YStack {...knobProps.gap} data-dismiss-class="compose">
369
+ <YStack
370
+ {...knobProps.gap}
371
+ {...knobProps.panelPadding}
372
+ data-testid="color-picker-panel"
373
+ data-dismiss-class="compose"
374
+ >
370
375
  <XStack {...knobProps.gap} alignItems="stretch">
371
376
  <SaturationPanel
372
377
  hue={hue}
@@ -1008,6 +1008,7 @@ export function ColorPickerPopoverShell({
1008
1008
  disabled={disabled}
1009
1009
  sizing="fill"
1010
1010
  widthMode="at-least-trigger"
1011
+ contentPadding="none"
1011
1012
  triggerA11y={triggerA11y}
1012
1013
  >
1013
1014
  {children}