@multiplatform.one/forms 8.3.0 → 8.5.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 (520) hide show
  1. package/dist/cjs/AdaptivePopup/index.native.js +2 -2
  2. package/dist/cjs/AdaptivePopup/index.native.js.map +1 -1
  3. package/dist/cjs/Button/IconButtonGroup.native.js.map +1 -1
  4. package/dist/cjs/Button/circleGlyph.native.js.map +1 -1
  5. package/dist/cjs/Button/iconButtonGroupContext.native.js.map +1 -1
  6. package/dist/cjs/Button/index.native.js +2 -2
  7. package/dist/cjs/Button/index.native.js.map +1 -1
  8. package/dist/cjs/Button/webGlass.native.js.map +1 -1
  9. package/dist/cjs/Chip/index.native.js.map +1 -1
  10. package/dist/cjs/Composer/index.cjs +10 -4
  11. package/dist/cjs/Composer/index.native.js +15 -9
  12. package/dist/cjs/Composer/index.native.js.map +1 -1
  13. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js +1 -1
  14. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  15. package/dist/cjs/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
  16. package/dist/cjs/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
  17. package/dist/cjs/ContextualSaveBar/index.native.js +3 -3
  18. package/dist/cjs/ContextualSaveBar/index.native.js.map +1 -1
  19. package/dist/cjs/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
  20. package/dist/cjs/ControlGroup/index.cjs +2 -1
  21. package/dist/cjs/ControlGroup/index.native.js +3 -2
  22. package/dist/cjs/ControlGroup/index.native.js.map +1 -1
  23. package/dist/cjs/DescriptionList/index.native.js +2 -2
  24. package/dist/cjs/DescriptionList/index.native.js.map +1 -1
  25. package/dist/cjs/ErrorSummary.native.js.map +1 -1
  26. package/dist/cjs/FieldDisplay/editMode.native.js.map +1 -1
  27. package/dist/cjs/FieldDisplay/formatters.native.js.map +1 -1
  28. package/dist/cjs/FieldDisplay/index.native.js +1 -1
  29. package/dist/cjs/FieldDisplay/index.native.js.map +1 -1
  30. package/dist/cjs/FieldGroup.native.js.map +1 -1
  31. package/dist/cjs/FloatingPanel/PanelHeader.native.js.map +1 -1
  32. package/dist/cjs/FloatingPanel/RegularPanel.native.js.map +1 -1
  33. package/dist/cjs/FloatingPanel/compactFace.native.js.map +1 -1
  34. package/dist/cjs/FloatingPanel/containingBlock.native.js.map +1 -1
  35. package/dist/cjs/FloatingPanel/coverRect.native.js.map +1 -1
  36. package/dist/cjs/FloatingPanel/echoContext.native.js.map +1 -1
  37. package/dist/cjs/FloatingPanel/index.cjs +11 -2
  38. package/dist/cjs/FloatingPanel/index.native.js +32 -17
  39. package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
  40. package/dist/cjs/FloatingPanel/nestedAction.native.js.map +1 -1
  41. package/dist/cjs/FloatingPanel/paintedBox.native.js.map +1 -1
  42. package/dist/cjs/FloatingPanel/panelWidth.native.js.map +1 -1
  43. package/dist/cjs/FloatingPanel/pointAnchor.native.js.map +1 -1
  44. package/dist/cjs/FloatingPanel/regularPlacement.native.js.map +1 -1
  45. package/dist/cjs/FloatingPanel/trailingAction.native.js +1 -1
  46. package/dist/cjs/FloatingPanel/trailingAction.native.js.map +1 -1
  47. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  48. package/dist/cjs/Form/index.native.js +1 -1
  49. package/dist/cjs/Form/index.native.js.map +1 -1
  50. package/dist/cjs/Form/submissionController.native.js.map +1 -1
  51. package/dist/cjs/Form/validateOn.native.js.map +1 -1
  52. package/dist/cjs/FormGrid.native.js.map +1 -1
  53. package/dist/cjs/FormSection.native.js.map +1 -1
  54. package/dist/cjs/InputParts/PasswordReveal.native.js.map +1 -1
  55. package/dist/cjs/InputParts/index.cjs +1 -0
  56. package/dist/cjs/InputParts/index.native.js +1 -0
  57. package/dist/cjs/InputParts/index.native.js.map +1 -1
  58. package/dist/cjs/InputParts/keyboardAppearance.native.js.map +1 -1
  59. package/dist/cjs/Label/index.native.js.map +1 -1
  60. package/dist/cjs/MediaPicker/base64.native.js.map +1 -1
  61. package/dist/cjs/MediaPicker/payload.native.js.map +1 -1
  62. package/dist/cjs/MediaPicker/types.native.js.map +1 -1
  63. package/dist/cjs/MediaPicker/useMediaPicker.native.js.map +1 -1
  64. package/dist/cjs/Skeleton/index.native.js.map +1 -1
  65. package/dist/cjs/Spinner/SpinnerGlyph.native.js.map +1 -1
  66. package/dist/cjs/Spinner/spinnerSize.native.js.map +1 -1
  67. package/dist/cjs/Table/index.native.js.map +1 -1
  68. package/dist/cjs/Wheel/haptic.native.js.map +1 -1
  69. package/dist/cjs/Wheel/index.cjs +22 -6
  70. package/dist/cjs/Wheel/index.native.js +26 -8
  71. package/dist/cjs/Wheel/index.native.js.map +1 -1
  72. package/dist/cjs/Wheel/wheelShared.native.js.map +1 -1
  73. package/dist/cjs/actionLabel.native.js.map +1 -1
  74. package/dist/cjs/fieldDefaults.native.js.map +1 -1
  75. package/dist/cjs/fieldLayout.native.js +1 -1
  76. package/dist/cjs/fieldLayout.native.js.map +1 -1
  77. package/dist/cjs/fields/Barcode/BarcodePreview.native.js.map +1 -1
  78. package/dist/cjs/fields/Barcode/BarcodeScanner.native.js +1 -1
  79. package/dist/cjs/fields/Barcode/code128.native.js.map +1 -1
  80. package/dist/cjs/fields/Barcode/index.native.js +2 -2
  81. package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
  82. package/dist/cjs/fields/Barcode/qr.native.js.map +1 -1
  83. package/dist/cjs/fields/Barcode/scannerTypes.native.js.map +1 -1
  84. package/dist/cjs/fields/Checkbox/Checkbox.native.js +1 -1
  85. package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -1
  86. package/dist/cjs/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  87. package/dist/cjs/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  88. package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  89. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js +1 -1
  90. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  91. package/dist/cjs/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
  92. package/dist/cjs/fields/Checkbox/index.native.js.map +1 -1
  93. package/dist/cjs/fields/ColorPicker/SystemColorField.native.js.map +1 -1
  94. package/dist/cjs/fields/ColorPicker/index.native.js +2 -2
  95. package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
  96. package/dist/cjs/fields/ColorPicker/parts.native.js +2 -2
  97. package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
  98. package/dist/cjs/fields/ColorPicker/systemColorWell.gnome.native.js.map +1 -1
  99. package/dist/cjs/fields/Combobox/authorOptions.native.js.map +1 -1
  100. package/dist/cjs/fields/Combobox/index.native.js +5 -5
  101. package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
  102. package/dist/cjs/fields/DatePicker/Calendar.native.js.map +1 -1
  103. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +2 -2
  104. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  105. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js +3 -3
  106. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  107. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +2 -2
  108. package/dist/cjs/fields/DatePicker/MonthPicker.native.js +2 -2
  109. package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -1
  110. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +2 -2
  111. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  112. package/dist/cjs/fields/DatePicker/catalog.native.js +2 -2
  113. package/dist/cjs/fields/DatePicker/catalog.native.js.map +1 -1
  114. package/dist/cjs/fields/DatePicker/fieldValueSync.native.js.map +1 -1
  115. package/dist/cjs/fields/DatePicker/index.native.js +2 -2
  116. package/dist/cjs/fields/DatePicker/parts.cjs +33 -30
  117. package/dist/cjs/fields/DatePicker/parts.native.js +36 -32
  118. package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
  119. package/dist/cjs/fields/DatePicker/utils.native.js.map +1 -1
  120. package/dist/cjs/fields/Duration/DurationWheel.native.js +1 -1
  121. package/dist/cjs/fields/Duration/durationMath.native.js.map +1 -1
  122. package/dist/cjs/fields/Duration/durationWheelTypes.native.js.map +1 -1
  123. package/dist/cjs/fields/Duration/index.native.js +3 -3
  124. package/dist/cjs/fields/Duration/index.native.js.map +1 -1
  125. package/dist/cjs/fields/FileUpload/filePickerTypes.native.js.map +1 -1
  126. package/dist/cjs/fields/FileUpload/index.cjs +32 -15
  127. package/dist/cjs/fields/FileUpload/index.native.js +42 -21
  128. package/dist/cjs/fields/FileUpload/index.native.js.map +1 -1
  129. package/dist/cjs/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  130. package/dist/cjs/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
  131. package/dist/cjs/fields/Geolocation/geoValue.native.js.map +1 -1
  132. package/dist/cjs/fields/Geolocation/geocoder.native.js.map +1 -1
  133. package/dist/cjs/fields/Geolocation/geocoderContext.native.js.map +1 -1
  134. package/dist/cjs/fields/Geolocation/index.native.js +5 -5
  135. package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
  136. package/dist/cjs/fields/Geolocation/mapMath.native.js.map +1 -1
  137. package/dist/cjs/fields/Geolocation/mapTypes.native.js.map +1 -1
  138. package/dist/cjs/fields/Geolocation/nativeSearchFocus.native.js.map +1 -1
  139. package/dist/cjs/fields/Geolocation/photonGeocoder.native.js.map +1 -1
  140. package/dist/cjs/fields/Icon/drawnSet.native.js.map +1 -1
  141. package/dist/cjs/fields/Icon/index.native.js +3 -3
  142. package/dist/cjs/fields/Icon/index.native.js.map +1 -1
  143. package/dist/cjs/fields/ImageField/index.cjs +35 -20
  144. package/dist/cjs/fields/ImageField/index.native.js +39 -22
  145. package/dist/cjs/fields/ImageField/index.native.js.map +1 -1
  146. package/dist/cjs/fields/Input/index.native.js +3 -3
  147. package/dist/cjs/fields/Input/index.native.js.map +1 -1
  148. package/dist/cjs/fields/MentionInput/index.native.js +3 -3
  149. package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
  150. package/dist/cjs/fields/OTPInput/index.native.js +3 -3
  151. package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
  152. package/dist/cjs/fields/OTPInput/otpCellCss.native.js.map +1 -1
  153. package/dist/cjs/fields/OTPInput/otpCellEdge.native.js.map +1 -1
  154. package/dist/cjs/fields/PhoneInput/dialCodes.native.js.map +1 -1
  155. package/dist/cjs/fields/PhoneInput/index.native.js +3 -3
  156. package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
  157. package/dist/cjs/fields/PhoneInput/phone.native.js.map +1 -1
  158. package/dist/cjs/fields/PhoneInput/regionNames.native.js.map +1 -1
  159. package/dist/cjs/fields/Progress/index.cjs +5 -0
  160. package/dist/cjs/fields/Progress/index.native.js +6 -1
  161. package/dist/cjs/fields/Progress/index.native.js.map +1 -1
  162. package/dist/cjs/fields/RadioGroup/index.native.js +1 -1
  163. package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
  164. package/dist/cjs/fields/Rating/index.native.js +1 -1
  165. package/dist/cjs/fields/Rating/index.native.js.map +1 -1
  166. package/dist/cjs/fields/Rating/ratingMath.native.js.map +1 -1
  167. package/dist/cjs/fields/Rating/types.native.js.map +1 -1
  168. package/dist/cjs/fields/SearchInput/index.native.js +2 -2
  169. package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
  170. package/dist/cjs/fields/Select/InlineChoices.native.js.map +1 -1
  171. package/dist/cjs/fields/Select/SheetPickerRow.native.js.map +1 -1
  172. package/dist/cjs/fields/Select/index.native.js +4 -4
  173. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  174. package/dist/cjs/fields/Select/shouldInlineChoices.native.js.map +1 -1
  175. package/dist/cjs/fields/Signature/index.native.js +2 -2
  176. package/dist/cjs/fields/Signature/index.native.js.map +1 -1
  177. package/dist/cjs/fields/Slider/index.cjs +38 -12
  178. package/dist/cjs/fields/Slider/index.native.js +40 -12
  179. package/dist/cjs/fields/Slider/index.native.js.map +1 -1
  180. package/dist/cjs/fields/Slider/jumpMotion.native.js.map +1 -1
  181. package/dist/cjs/fields/Stepper/index.native.js +2 -2
  182. package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
  183. package/dist/cjs/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
  184. package/dist/cjs/fields/Switch/footprint.native.js.map +1 -1
  185. package/dist/cjs/fields/Switch/index.cjs +10 -6
  186. package/dist/cjs/fields/Switch/index.native.js +12 -8
  187. package/dist/cjs/fields/Switch/index.native.js.map +1 -1
  188. package/dist/cjs/fields/TextArea/index.native.js +2 -2
  189. package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
  190. package/dist/cjs/fields/TimePicker/catalog.native.js +3 -3
  191. package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -1
  192. package/dist/cjs/fields/TimePicker/index.native.js +2 -2
  193. package/dist/cjs/fields/TimePicker/parts.cjs +9 -10
  194. package/dist/cjs/fields/TimePicker/parts.native.js +10 -11
  195. package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
  196. package/dist/cjs/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
  197. package/dist/cjs/fields/TimeRangeScrubber/index.native.js +2 -2
  198. package/dist/cjs/fields/TimeRangeScrubber/index.native.js.map +1 -1
  199. package/dist/cjs/fields/ToggleGroup/index.cjs +1 -0
  200. package/dist/cjs/fields/ToggleGroup/index.native.js +2 -1
  201. package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
  202. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js +1 -1
  203. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  204. package/dist/cjs/fields/nativeDateTime/dateTimePickerLoader.native.js.map +1 -1
  205. package/dist/cjs/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
  206. package/dist/cjs/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -1
  207. package/dist/cjs/fields/nativeSelect.native.js.map +1 -1
  208. package/dist/cjs/fields/pickerHandle.cjs +18 -0
  209. package/dist/cjs/fields/pickerHandle.native.js +21 -0
  210. package/dist/cjs/fields/pickerHandle.native.js.map +1 -0
  211. package/dist/cjs/fields/selectedOrder.native.js.map +1 -1
  212. package/dist/cjs/formSpacing.native.js.map +1 -1
  213. package/dist/cjs/hooks/useFocusManagement.native.js.map +1 -1
  214. package/dist/cjs/hooks/useHoldCue.cjs +54 -0
  215. package/dist/cjs/hooks/useHoldCue.native.js +62 -0
  216. package/dist/cjs/hooks/useHoldCue.native.js.map +1 -0
  217. package/dist/cjs/index.cjs +15 -0
  218. package/dist/cjs/index.gnome.cjs +15 -0
  219. package/dist/cjs/index.gnome.native.js +52 -37
  220. package/dist/cjs/index.gnome.native.js.map +1 -1
  221. package/dist/cjs/index.native.js +61 -46
  222. package/dist/cjs/index.native.js.map +1 -1
  223. package/dist/cjs/keyboard/KeyboardDoneBar.native.js +1 -1
  224. package/dist/cjs/keyboard/chain.native.js.map +1 -1
  225. package/dist/cjs/keyboard/index.native.js.map +1 -1
  226. package/dist/cjs/keyboard/types.native.js.map +1 -1
  227. package/dist/cjs/nativeTwins.native.js.map +1 -1
  228. package/dist/cjs/requiredMarking.native.js.map +1 -1
  229. package/dist/cjs/shared/CheckGlyph.native.js.map +1 -1
  230. package/dist/cjs/shared/TimeColumn.native.js +1 -1
  231. package/dist/cjs/shared/TimeColumn.native.js.map +1 -1
  232. package/dist/cjs/shared/capabilityPreflight.native.js.map +1 -1
  233. package/dist/cjs/shared/checkedOnField.native.js.map +1 -1
  234. package/dist/cjs/shared/choiceRowPress.native.js.map +1 -1
  235. package/dist/cjs/shared/colorRamps.cjs +9 -7
  236. package/dist/cjs/shared/colorRamps.native.js +9 -7
  237. package/dist/cjs/shared/colorRamps.native.js.map +1 -1
  238. package/dist/cjs/shared/controlTrack.cjs +32 -0
  239. package/dist/cjs/shared/controlTrack.native.js +35 -0
  240. package/dist/cjs/shared/controlTrack.native.js.map +1 -0
  241. package/dist/cjs/shared/devWarn.native.js.map +1 -1
  242. package/dist/cjs/shared/fieldRowContext.native.js.map +1 -1
  243. package/dist/cjs/shared/floatingList.native.js +1 -1
  244. package/dist/cjs/shared/floatingList.native.js.map +1 -1
  245. package/dist/cjs/shared/focusManagement.native.js.map +1 -1
  246. package/dist/cjs/shared/groupContext.native.js.map +1 -1
  247. package/dist/cjs/shared/i18n.native.js.map +1 -1
  248. package/dist/cjs/shared/instantMotion.native.js.map +1 -1
  249. package/dist/cjs/shared/nativeA11y.native.js.map +1 -1
  250. package/dist/cjs/shared/nativeAutoFocus.native.js.map +1 -1
  251. package/dist/cjs/shared/nativeOverlayWindow.native.js.map +1 -1
  252. package/dist/cjs/shared/overlaySizeClass.native.js.map +1 -1
  253. package/dist/cjs/shared/overlayStack.native.js.map +1 -1
  254. package/dist/cjs/shared/panelPortal.native.js.map +1 -1
  255. package/dist/cjs/shared/pickerTriggerContract.native.js.map +1 -1
  256. package/dist/cjs/shared/pressSlopProps.native.js.map +1 -1
  257. package/dist/cjs/shared/restoreRetries.native.js.map +1 -1
  258. package/dist/cjs/shared/sheetDetents.cjs +109 -0
  259. package/dist/cjs/shared/sheetDetents.native.js +125 -0
  260. package/dist/cjs/shared/sheetDetents.native.js.map +1 -0
  261. package/dist/cjs/shared/sheetNavigation.native.js.map +1 -1
  262. package/dist/cjs/shared/systemControlModules.gnome.native.js.map +1 -1
  263. package/dist/cjs/shared/systemControls.native.js.map +1 -1
  264. package/dist/cjs/shared/t.native.js.map +1 -1
  265. package/dist/cjs/shared/tableCellContext.native.js.map +1 -1
  266. package/dist/cjs/shared/useDragScroll.native.js.map +1 -1
  267. package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
  268. package/dist/cjs/shared/useSheetEscapeDismiss.native.js.map +1 -1
  269. package/dist/cjs/shared/useWheelIncrement.native.js.map +1 -1
  270. package/dist/cjs/shared/utils.native.js +1 -1
  271. package/dist/cjs/shared/utils.native.js.map +1 -1
  272. package/dist/cjs/shared/zIndex.native.js.map +1 -1
  273. package/dist/cjs/standardActions.native.js.map +1 -1
  274. package/dist/cjs/themedPrimitives.native.js.map +1 -1
  275. package/dist/cjs/types.native.js.map +1 -1
  276. package/dist/cjs/utils/LinkCell.native.js.map +1 -1
  277. package/dist/esm/Composer/index.mjs +10 -4
  278. package/dist/esm/Composer/index.mjs.map +1 -1
  279. package/dist/esm/Composer/index.native.js +14 -8
  280. package/dist/esm/Composer/index.native.js.map +1 -1
  281. package/dist/esm/ControlGroup/index.mjs +2 -1
  282. package/dist/esm/ControlGroup/index.mjs.map +1 -1
  283. package/dist/esm/ControlGroup/index.native.js +2 -1
  284. package/dist/esm/ControlGroup/index.native.js.map +1 -1
  285. package/dist/esm/FloatingPanel/index.mjs +12 -3
  286. package/dist/esm/FloatingPanel/index.mjs.map +1 -1
  287. package/dist/esm/FloatingPanel/index.native.js +31 -16
  288. package/dist/esm/FloatingPanel/index.native.js.map +1 -1
  289. package/dist/esm/InputParts/index.mjs +1 -0
  290. package/dist/esm/InputParts/index.mjs.map +1 -1
  291. package/dist/esm/InputParts/index.native.js +1 -0
  292. package/dist/esm/InputParts/index.native.js.map +1 -1
  293. package/dist/esm/Wheel/index.mjs +23 -7
  294. package/dist/esm/Wheel/index.mjs.map +1 -1
  295. package/dist/esm/Wheel/index.native.js +27 -9
  296. package/dist/esm/Wheel/index.native.js.map +1 -1
  297. package/dist/esm/fields/DatePicker/parts.mjs +35 -32
  298. package/dist/esm/fields/DatePicker/parts.mjs.map +1 -1
  299. package/dist/esm/fields/DatePicker/parts.native.js +36 -32
  300. package/dist/esm/fields/DatePicker/parts.native.js.map +1 -1
  301. package/dist/esm/fields/FileUpload/index.mjs +33 -16
  302. package/dist/esm/fields/FileUpload/index.mjs.map +1 -1
  303. package/dist/esm/fields/FileUpload/index.native.js +41 -20
  304. package/dist/esm/fields/FileUpload/index.native.js.map +1 -1
  305. package/dist/esm/fields/ImageField/index.mjs +36 -21
  306. package/dist/esm/fields/ImageField/index.mjs.map +1 -1
  307. package/dist/esm/fields/ImageField/index.native.js +38 -21
  308. package/dist/esm/fields/ImageField/index.native.js.map +1 -1
  309. package/dist/esm/fields/Progress/index.mjs +5 -0
  310. package/dist/esm/fields/Progress/index.mjs.map +1 -1
  311. package/dist/esm/fields/Progress/index.native.js +5 -0
  312. package/dist/esm/fields/Progress/index.native.js.map +1 -1
  313. package/dist/esm/fields/Slider/index.mjs +38 -12
  314. package/dist/esm/fields/Slider/index.mjs.map +1 -1
  315. package/dist/esm/fields/Slider/index.native.js +39 -11
  316. package/dist/esm/fields/Slider/index.native.js.map +1 -1
  317. package/dist/esm/fields/Switch/index.mjs +10 -6
  318. package/dist/esm/fields/Switch/index.mjs.map +1 -1
  319. package/dist/esm/fields/Switch/index.native.js +10 -6
  320. package/dist/esm/fields/Switch/index.native.js.map +1 -1
  321. package/dist/esm/fields/TimePicker/parts.mjs +9 -10
  322. package/dist/esm/fields/TimePicker/parts.mjs.map +1 -1
  323. package/dist/esm/fields/TimePicker/parts.native.js +9 -10
  324. package/dist/esm/fields/TimePicker/parts.native.js.map +1 -1
  325. package/dist/esm/fields/ToggleGroup/index.mjs +2 -1
  326. package/dist/esm/fields/ToggleGroup/index.mjs.map +1 -1
  327. package/dist/esm/fields/ToggleGroup/index.native.js +2 -1
  328. package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -1
  329. package/dist/esm/fields/pickerHandle.mjs +2 -0
  330. package/dist/esm/fields/pickerHandle.mjs.map +1 -0
  331. package/dist/esm/fields/pickerHandle.native.js +2 -0
  332. package/dist/esm/fields/pickerHandle.native.js.map +1 -0
  333. package/dist/esm/hooks/useHoldCue.mjs +27 -0
  334. package/dist/esm/hooks/useHoldCue.mjs.map +1 -0
  335. package/dist/esm/hooks/useHoldCue.native.js +32 -0
  336. package/dist/esm/hooks/useHoldCue.native.js.map +1 -0
  337. package/dist/esm/index.gnome.mjs +3 -1
  338. package/dist/esm/index.gnome.mjs.map +1 -1
  339. package/dist/esm/index.gnome.native.js +3 -1
  340. package/dist/esm/index.gnome.native.js.map +1 -1
  341. package/dist/esm/index.mjs +3 -1
  342. package/dist/esm/index.mjs.map +1 -1
  343. package/dist/esm/index.native.js +3 -1
  344. package/dist/esm/index.native.js.map +1 -1
  345. package/dist/esm/shared/colorRamps.mjs +9 -7
  346. package/dist/esm/shared/colorRamps.mjs.map +1 -1
  347. package/dist/esm/shared/colorRamps.native.js +9 -7
  348. package/dist/esm/shared/colorRamps.native.js.map +1 -1
  349. package/dist/esm/shared/controlTrack.mjs +7 -0
  350. package/dist/esm/shared/controlTrack.mjs.map +1 -0
  351. package/dist/esm/shared/controlTrack.native.js +7 -0
  352. package/dist/esm/shared/controlTrack.native.js.map +1 -0
  353. package/dist/esm/shared/nativeOverlayWindow.mjs.map +1 -1
  354. package/dist/esm/shared/sheetDetents.mjs +75 -0
  355. package/dist/esm/shared/sheetDetents.mjs.map +1 -0
  356. package/dist/esm/shared/sheetDetents.native.js +88 -0
  357. package/dist/esm/shared/sheetDetents.native.js.map +1 -0
  358. package/dist/esm/shared/systemControls.mjs.map +1 -1
  359. package/dist/esm/shared/systemControls.native.js.map +1 -1
  360. package/dist/jsx/Composer/index.mjs +10 -4
  361. package/dist/jsx/Composer/index.mjs.map +1 -1
  362. package/dist/jsx/Composer/index.native.js +14 -8
  363. package/dist/jsx/Composer/index.native.js.map +1 -1
  364. package/dist/jsx/ControlGroup/index.mjs +2 -1
  365. package/dist/jsx/ControlGroup/index.mjs.map +1 -1
  366. package/dist/jsx/ControlGroup/index.native.js +2 -1
  367. package/dist/jsx/ControlGroup/index.native.js.map +1 -1
  368. package/dist/jsx/FloatingPanel/index.mjs +12 -3
  369. package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
  370. package/dist/jsx/FloatingPanel/index.native.js +32 -17
  371. package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
  372. package/dist/jsx/InputParts/index.mjs +1 -0
  373. package/dist/jsx/InputParts/index.mjs.map +1 -1
  374. package/dist/jsx/InputParts/index.native.js +1 -0
  375. package/dist/jsx/InputParts/index.native.js.map +1 -1
  376. package/dist/jsx/Wheel/index.mjs +23 -7
  377. package/dist/jsx/Wheel/index.mjs.map +1 -1
  378. package/dist/jsx/Wheel/index.native.js +26 -8
  379. package/dist/jsx/Wheel/index.native.js.map +1 -1
  380. package/dist/jsx/fields/DatePicker/parts.mjs +35 -32
  381. package/dist/jsx/fields/DatePicker/parts.mjs.map +1 -1
  382. package/dist/jsx/fields/DatePicker/parts.native.js +34 -30
  383. package/dist/jsx/fields/DatePicker/parts.native.js.map +1 -1
  384. package/dist/jsx/fields/FileUpload/index.mjs +33 -16
  385. package/dist/jsx/fields/FileUpload/index.mjs.map +1 -1
  386. package/dist/jsx/fields/FileUpload/index.native.js +40 -19
  387. package/dist/jsx/fields/FileUpload/index.native.js.map +1 -1
  388. package/dist/jsx/fields/ImageField/index.mjs +36 -21
  389. package/dist/jsx/fields/ImageField/index.mjs.map +1 -1
  390. package/dist/jsx/fields/ImageField/index.native.js +37 -20
  391. package/dist/jsx/fields/ImageField/index.native.js.map +1 -1
  392. package/dist/jsx/fields/Progress/index.mjs +5 -0
  393. package/dist/jsx/fields/Progress/index.mjs.map +1 -1
  394. package/dist/jsx/fields/Progress/index.native.js +5 -0
  395. package/dist/jsx/fields/Progress/index.native.js.map +1 -1
  396. package/dist/jsx/fields/Slider/index.mjs +38 -12
  397. package/dist/jsx/fields/Slider/index.mjs.map +1 -1
  398. package/dist/jsx/fields/Slider/index.native.js +39 -11
  399. package/dist/jsx/fields/Slider/index.native.js.map +1 -1
  400. package/dist/jsx/fields/Switch/index.mjs +10 -6
  401. package/dist/jsx/fields/Switch/index.mjs.map +1 -1
  402. package/dist/jsx/fields/Switch/index.native.js +10 -6
  403. package/dist/jsx/fields/Switch/index.native.js.map +1 -1
  404. package/dist/jsx/fields/TimePicker/parts.mjs +9 -10
  405. package/dist/jsx/fields/TimePicker/parts.mjs.map +1 -1
  406. package/dist/jsx/fields/TimePicker/parts.native.js +9 -10
  407. package/dist/jsx/fields/TimePicker/parts.native.js.map +1 -1
  408. package/dist/jsx/fields/ToggleGroup/index.mjs +2 -1
  409. package/dist/jsx/fields/ToggleGroup/index.mjs.map +1 -1
  410. package/dist/jsx/fields/ToggleGroup/index.native.js +1 -0
  411. package/dist/jsx/fields/ToggleGroup/index.native.js.map +1 -1
  412. package/dist/jsx/fields/pickerHandle.mjs +2 -0
  413. package/dist/jsx/fields/pickerHandle.mjs.map +1 -0
  414. package/dist/jsx/fields/pickerHandle.native.js +21 -0
  415. package/dist/jsx/fields/pickerHandle.native.js.map +1 -0
  416. package/dist/jsx/hooks/useHoldCue.mjs +27 -0
  417. package/dist/jsx/hooks/useHoldCue.mjs.map +1 -0
  418. package/dist/jsx/hooks/useHoldCue.native.js +62 -0
  419. package/dist/jsx/hooks/useHoldCue.native.js.map +1 -0
  420. package/dist/jsx/index.gnome.mjs +3 -1
  421. package/dist/jsx/index.gnome.mjs.map +1 -1
  422. package/dist/jsx/index.gnome.native.js +15 -0
  423. package/dist/jsx/index.gnome.native.js.map +1 -1
  424. package/dist/jsx/index.js +3 -1
  425. package/dist/jsx/index.js.map +1 -1
  426. package/dist/jsx/index.mjs +3 -1
  427. package/dist/jsx/index.mjs.map +1 -1
  428. package/dist/jsx/index.native.js +15 -0
  429. package/dist/jsx/index.native.js.map +1 -1
  430. package/dist/jsx/shared/colorRamps.mjs +9 -7
  431. package/dist/jsx/shared/colorRamps.mjs.map +1 -1
  432. package/dist/jsx/shared/colorRamps.native.js +9 -7
  433. package/dist/jsx/shared/colorRamps.native.js.map +1 -1
  434. package/dist/jsx/shared/controlTrack.mjs +7 -0
  435. package/dist/jsx/shared/controlTrack.mjs.map +1 -0
  436. package/dist/jsx/shared/controlTrack.native.js +35 -0
  437. package/dist/jsx/shared/controlTrack.native.js.map +1 -0
  438. package/dist/jsx/shared/nativeOverlayWindow.mjs.map +1 -1
  439. package/dist/jsx/shared/nativeOverlayWindow.native.js.map +1 -1
  440. package/dist/jsx/shared/sheetDetents.mjs +75 -0
  441. package/dist/jsx/shared/sheetDetents.mjs.map +1 -0
  442. package/dist/jsx/shared/sheetDetents.native.js +125 -0
  443. package/dist/jsx/shared/sheetDetents.native.js.map +1 -0
  444. package/dist/jsx/shared/systemControls.mjs.map +1 -1
  445. package/package.json +11 -10
  446. package/src/Button/Button.controlTiers.spec.tsx +2 -2
  447. package/src/Composer/Composer.glass.spec.tsx +106 -0
  448. package/src/Composer/Composer.spec.tsx +11 -2
  449. package/src/Composer/index.tsx +11 -8
  450. package/src/ControlGroup/index.tsx +2 -1
  451. package/src/FloatingPanel/FloatingPanel.holdCue.native.spec.tsx +72 -0
  452. package/src/FloatingPanel/index.native.tsx +18 -19
  453. package/src/FloatingPanel/index.tsx +24 -2
  454. package/src/InputParts/index.tsx +1 -0
  455. package/src/Wheel/Wheel.edgeFade.spec.tsx +74 -0
  456. package/src/Wheel/index.tsx +25 -11
  457. package/src/fields/DatePicker/dateFieldMarks.spec.tsx +154 -0
  458. package/src/fields/DatePicker/parts.tsx +33 -30
  459. package/src/fields/FileUpload/index.tsx +45 -16
  460. package/src/fields/ImageField/index.tsx +42 -19
  461. package/src/fields/Progress/index.tsx +3 -0
  462. package/src/fields/Slider/Slider.system.native.spec.tsx +44 -0
  463. package/src/fields/Slider/index.tsx +40 -12
  464. package/src/fields/Stepper/Stepper.stories.tsx +42 -0
  465. package/src/fields/Switch/Switch.spec.tsx +14 -10
  466. package/src/fields/Switch/index.tsx +11 -7
  467. package/src/fields/TimePicker/parts.tsx +8 -8
  468. package/src/fields/ToggleGroup/index.tsx +7 -1
  469. package/src/fields/fieldTriggerSlot.spec.tsx +89 -0
  470. package/src/fields/pickerHandle.ts +13 -0
  471. package/src/hooks/useHoldCue.ts +26 -0
  472. package/src/index.gnome.ts +19 -0
  473. package/src/index.ts +20 -0
  474. package/src/overlayGround.spec.ts +5 -3
  475. package/src/shared/OverlayWindow.tsx +2 -2
  476. package/src/shared/colorRamps.ts +9 -6
  477. package/src/shared/controlTrack.ts +7 -0
  478. package/src/shared/nativeOverlayWindow.tsx +1 -1
  479. package/src/shared/sheetDetents.spec.ts +117 -0
  480. package/src/shared/sheetDetents.ts +183 -0
  481. package/src/shared/systemControls.ts +10 -2
  482. package/types/Composer/index.d.ts.map +1 -1
  483. package/types/ControlGroup/index.d.ts.map +1 -1
  484. package/types/FloatingPanel/index.d.ts +9 -0
  485. package/types/FloatingPanel/index.d.ts.map +1 -1
  486. package/types/FloatingPanel/index.native.d.ts +1 -1
  487. package/types/FloatingPanel/index.native.d.ts.map +1 -1
  488. package/types/InputParts/index.d.ts +4 -4
  489. package/types/InputParts/index.d.ts.map +1 -1
  490. package/types/Wheel/index.d.ts.map +1 -1
  491. package/types/fields/DatePicker/parts.d.ts +4 -3
  492. package/types/fields/DatePicker/parts.d.ts.map +1 -1
  493. package/types/fields/FileUpload/index.d.ts +6 -1
  494. package/types/fields/FileUpload/index.d.ts.map +1 -1
  495. package/types/fields/ImageField/index.d.ts +7 -2
  496. package/types/fields/ImageField/index.d.ts.map +1 -1
  497. package/types/fields/Progress/index.d.ts.map +1 -1
  498. package/types/fields/Slider/index.d.ts.map +1 -1
  499. package/types/fields/Switch/index.d.ts.map +1 -1
  500. package/types/fields/ToggleGroup/index.d.ts.map +1 -1
  501. package/types/fields/pickerHandle.d.ts +12 -0
  502. package/types/fields/pickerHandle.d.ts.map +1 -0
  503. package/types/hooks/useHoldCue.d.ts +10 -0
  504. package/types/hooks/useHoldCue.d.ts.map +1 -0
  505. package/types/index.d.ts +4 -0
  506. package/types/index.d.ts.map +1 -1
  507. package/types/index.gnome.d.ts +3 -0
  508. package/types/index.gnome.d.ts.map +1 -1
  509. package/types/shared/OverlayWindow.d.ts +2 -2
  510. package/types/shared/OverlayWindow.d.ts.map +1 -1
  511. package/types/shared/colorRamps.d.ts +8 -6
  512. package/types/shared/colorRamps.d.ts.map +1 -1
  513. package/types/shared/controlTrack.d.ts +3 -0
  514. package/types/shared/controlTrack.d.ts.map +1 -0
  515. package/types/shared/nativeOverlayWindow.d.ts +1 -1
  516. package/types/shared/nativeOverlayWindow.d.ts.map +1 -1
  517. package/types/shared/sheetDetents.d.ts +122 -0
  518. package/types/shared/sheetDetents.d.ts.map +1 -0
  519. package/types/shared/systemControls.d.ts +2 -1
  520. package/types/shared/systemControls.d.ts.map +1 -1
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var controlTrack_exports = {};
26
+ __export(controlTrack_exports, {
27
+ useControlTrackFill: () => useControlTrackFill
28
+ });
29
+ module.exports = __toCommonJS(controlTrack_exports);
30
+ var import_theme = require("@multiplatform.one/theme");
31
+ var import_tamagui = require("tamagui");
32
+ function useControlTrackFill() {
33
+ return (0, import_theme.controlTrackFill)((0, import_theme.isDarkThemeName)((0, import_tamagui.useThemeName)()), (0, import_theme.useElevatedSurface)());
34
+ }
35
+ //# sourceMappingURL=controlTrack.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty"],"sources":["../../../src/shared/controlTrack.ts"],"sourcesContent":[null],"mappings":"AAAA,YAAS;;AACT,IAAAA,SAAS,GAAAC,MAAA,CAAAC,cAAoB;AAGtB,IAAAC,gBAAS,GAAAF,MAAA,CAAAG,wBAA8B;AAC5C,IAAAC,iBAAO,GAAAJ,MAAiB,CAAAK,mBAAgB;AAC1C,IAAAC,YAAA,GAAAN,MAAA,CAAAO,SAAA,CAAAC,cAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["StyleSheet","View","RNView","PortalHost","PortalProvider","OverlayStackProvider","jsx","jsxs","OverlayWindow","zIndex","children","shouldAddRootHost","pointerEvents","style","absoluteFill","testID","name"],"sources":["../../../src/shared/nativeOverlayWindow.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,EAAYC,IAAA,IAAQC,MAAA,QAAc;AAC3C,SAASC,UAAA,EAAYC,cAAA,QAAsB;AAC3C,SAASC,oBAAA,QAA4B;AAkBjC,SACEC,GAAA,EADFC,IAAA;AAFG,SAASC,cAAc;EAAEC,MAAA;EAAQC;AAAS,GAAuB;EACtE,OACE,eAAAH,IAAA,CAACH,cAAA;IAAeO,iBAAA,EAAmB;IACjCD,QAAA,kBAAAJ,GAAA,CAACD,oBAAA;MAAqBI,MAAA;MAAiBC;IAAA,CAAS,GAChD,eAAAJ,GAAA,CAACJ,MAAA;MAAOU,aAAA,EAAc;MAAWC,KAAA,EAAOb,UAAA,CAAWc,YAAA;MAAcC,MAAA,EAAO;MACtEL,QAAA,iBAAAJ,GAAA,CAACH,UAAA;QAAWa,IAAA,EAAK;MAAA,CAAO;IAAA,CAC1B;EAAA,CACF;AAEJ","ignoreList":[]}
1
+ {"version":3,"names":["StyleSheet","View","RNView","PortalHost","PortalProvider","OverlayStackProvider","jsx","jsxs","OverlayWindow","zIndex","children","shouldAddRootHost","pointerEvents","style","absoluteFill","testID","name"],"sources":["../../../src/shared/nativeOverlayWindow.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,EAAYC,IAAA,IAAQC,MAAA,QAAc;AAC3C,SAASC,UAAA,EAAYC,cAAA,QAAsB;AAC3C,SAASC,oBAAA,QAA4B;AAkBjC,SACEC,GAAA,EADFC,IAAA;AAFG,SAASC,cAAc;EAAEC,MAAA;EAAQC;AAAS,GAAiC;EAChF,OACE,eAAAH,IAAA,CAACH,cAAA;IAAeO,iBAAA,EAAmB;IACjCD,QAAA,kBAAAJ,GAAA,CAACD,oBAAA;MAAqBI,MAAA;MAAiBC;IAAA,CAAS,GAChD,eAAAJ,GAAA,CAACJ,MAAA;MAAOU,aAAA,EAAc;MAAWC,KAAA,EAAOb,UAAA,CAAWc,YAAA;MAAcC,MAAA,EAAO;MACtEL,QAAA,iBAAAJ,GAAA,CAACH,UAAA;QAAWa,IAAA,EAAK;MAAA,CAAO;IAAA,CAC1B;EAAA,CACF;AAEJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc"],"sources":["../../../src/shared/nativeOverlayWindow.tsx"],"sourcesContent":[null],"mappings":"AAAA,YAAS;;AACT,IAAAA,SAAS,GAAAC,MAAY,CAAAC,cAAA;AACrB,IAAAC,gBAAS,GAAAF,MAAA,CAAAG,wBAA4B;AAkBjC,IAAAC,iBAAA,GAAAJ,MAAA,CAAAK,mBAAA;AAFG,IAAAC,YAAS,GAAAN,MAAgB,CAAAO,SAAQ,CAAAC,cAAgC;AACtE,IAAAC,QACE,GAAAA,CAAAC,MAAA,EAAAC,GAAA,KAAC;EACC,SAAAC,IAAA,IAAAD,GAAA,EACAZ,SAAA,CAAAW,MAAA,EAAAE,IAAC;IAAAC,GAAA,EAAOF,GAAA,CAAAC,IAAA;IAAAE,UAAc;EAAW;AAEjC;AAGN,IAAAC,WAAA,GAAAA,CAAAC,EAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAC,IAAA","ignoreList":[]}
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc"],"sources":["../../../src/shared/nativeOverlayWindow.tsx"],"sourcesContent":[null],"mappings":"AAAA,YAAS;;AACT,IAAAA,SAAS,GAAAC,MAAY,CAAAC,cAAA;AACrB,IAAAC,gBAAS,GAAAF,MAAA,CAAAG,wBAA4B;AAkBjC,IAAAC,iBAAA,GAAAJ,MAAA,CAAAK,mBAAA;AAFG,IAAAC,YAAS,GAAAN,MAAgB,CAAAO,SAAQ,CAAAC,cAA0C;AAChF,IAAAC,QACE,GAAAA,CAAAC,MAAA,EAAAC,GAAA,KAAC;EACC,SAAAC,IAAA,IAAAD,GAAA,EACAZ,SAAA,CAAAW,MAAA,EAAAE,IAAC;IAAAC,GAAA,EAAOF,GAAA,CAAAC,IAAA;IAAAE,UAAc;EAAW;AAEjC;AAGN,IAAAC,WAAA,GAAAA,CAAAC,EAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAC,IAAA","ignoreList":[]}
@@ -0,0 +1,75 @@
1
+ const minSheetHeight = 180;
2
+ const largeDetentRatio = 0.85;
3
+ const fillSnapPoint = 60;
4
+ const sheetDismissThreshold = 56;
5
+ const sheetDetent = {
6
+ /** `.medium()` — half-open, for a sheet that owns a scrollport. */
7
+ medium: 55,
8
+ /** `.large()` — the sheet's full height. */
9
+ large: 100
10
+ };
11
+ const mediumDetent = sheetDetent.medium / 100;
12
+ function percent(value) {
13
+ if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) return null;
14
+ return Math.min(value, sheetDetent.large);
15
+ }
16
+ function descending(values) {
17
+ return Array.from(new Set(values)).sort((a, b) => b - a);
18
+ }
19
+ function resolveDetentPercents({
20
+ detents,
21
+ snapPoint,
22
+ scrollable
23
+ }) {
24
+ const declared = (detents ?? []).map(percent).filter(p => p !== null);
25
+ if (declared.length > 0) return descending(declared);
26
+ const points = [sheetDetent.large];
27
+ if (scrollable) points.push(sheetDetent.medium);
28
+ const single = percent(snapPoint);
29
+ if (single !== null) points.push(single);
30
+ return descending(points);
31
+ }
32
+ function openingDetentIndex(points, snapPoint) {
33
+ const single = percent(snapPoint);
34
+ if (single === null) return 0;
35
+ const index = points.indexOf(single);
36
+ return index === -1 ? 0 : index;
37
+ }
38
+ function resolveSheetDetents({
39
+ travel,
40
+ detents,
41
+ scrollable,
42
+ snapPoint
43
+ }) {
44
+ const points = resolveDetentPercents({
45
+ detents,
46
+ snapPoint,
47
+ scrollable
48
+ }).map(p => Math.round(travel * (p / 100)));
49
+ const floor = Math.min(minSheetHeight, travel);
50
+ return descending(points.filter(h => h >= floor));
51
+ }
52
+ function resolveWebSnap({
53
+ detents,
54
+ snapPoint,
55
+ scrollable,
56
+ fill
57
+ }) {
58
+ const declared = (detents ?? []).map(percent).filter(p => p !== null);
59
+ if (declared.length === 0 && snapPoint === void 0 && !fill) return {
60
+ snapPointsMode: "fit"
61
+ };
62
+ const opensAt = snapPoint ?? (declared.length === 0 ? fillSnapPoint : void 0);
63
+ const snapPoints = resolveDetentPercents({
64
+ detents,
65
+ snapPoint: opensAt,
66
+ scrollable
67
+ });
68
+ return {
69
+ snapPointsMode: "percent",
70
+ snapPoints,
71
+ defaultPosition: openingDetentIndex(snapPoints, opensAt)
72
+ };
73
+ }
74
+ export { fillSnapPoint, largeDetentRatio, mediumDetent, minSheetHeight, openingDetentIndex, resolveDetentPercents, resolveSheetDetents, resolveWebSnap, sheetDetent, sheetDismissThreshold };
75
+ //# sourceMappingURL=sheetDetents.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["minSheetHeight","largeDetentRatio","fillSnapPoint","sheetDismissThreshold","sheetDetent","medium","large","mediumDetent","percent","value","Number","isFinite","Math","min","descending","values","Array","from","Set","sort","a","b","resolveDetentPercents","detents","snapPoint","scrollable","declared","map","filter","p","length","points","push","single","openingDetentIndex","index","indexOf","resolveSheetDetents","travel","round","floor","h","resolveWebSnap","fill","snapPointsMode","opensAt","snapPoints","defaultPosition"],"sources":["../../../src/shared/sheetDetents.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var sheetDetents_exports = {};
26
+ __export(sheetDetents_exports, {
27
+ fillSnapPoint: () => fillSnapPoint,
28
+ largeDetentRatio: () => largeDetentRatio,
29
+ mediumDetent: () => mediumDetent,
30
+ minSheetHeight: () => minSheetHeight,
31
+ openingDetentIndex: () => openingDetentIndex,
32
+ resolveDetentPercents: () => resolveDetentPercents,
33
+ resolveSheetDetents: () => resolveSheetDetents,
34
+ resolveWebSnap: () => resolveWebSnap,
35
+ sheetDetent: () => sheetDetent,
36
+ sheetDismissThreshold: () => sheetDismissThreshold
37
+ });
38
+ module.exports = __toCommonJS(sheetDetents_exports);
39
+ var minSheetHeight = 180;
40
+ var largeDetentRatio = 0.85;
41
+ var fillSnapPoint = 60;
42
+ var sheetDismissThreshold = 56;
43
+ var sheetDetent = {
44
+ /** `.medium()` — half-open, for a sheet that owns a scrollport. */
45
+ medium: 55,
46
+ /** `.large()` — the sheet's full height. */
47
+ large: 100
48
+ };
49
+ var mediumDetent = sheetDetent.medium / 100;
50
+ function percent(value) {
51
+ if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) return null;
52
+ return Math.min(value, sheetDetent.large);
53
+ }
54
+ function descending(values) {
55
+ return Array.from(new Set(values)).sort(function (a, b) {
56
+ return b - a;
57
+ });
58
+ }
59
+ function resolveDetentPercents(param) {
60
+ var {
61
+ detents,
62
+ snapPoint,
63
+ scrollable
64
+ } = param;
65
+ var declared = (detents !== null && detents !== void 0 ? detents : []).map(percent).filter(function (p) {
66
+ return p !== null;
67
+ });
68
+ if (declared.length > 0) return descending(declared);
69
+ var points = [sheetDetent.large];
70
+ if (scrollable) points.push(sheetDetent.medium);
71
+ var single = percent(snapPoint);
72
+ if (single !== null) points.push(single);
73
+ return descending(points);
74
+ }
75
+ function openingDetentIndex(points, snapPoint) {
76
+ var single = percent(snapPoint);
77
+ if (single === null) return 0;
78
+ var index = points.indexOf(single);
79
+ return index === -1 ? 0 : index;
80
+ }
81
+ function resolveSheetDetents(param) {
82
+ var {
83
+ travel,
84
+ detents,
85
+ scrollable,
86
+ snapPoint
87
+ } = param;
88
+ var points = resolveDetentPercents({
89
+ detents,
90
+ snapPoint,
91
+ scrollable
92
+ }).map(function (p) {
93
+ return Math.round(travel * (p / 100));
94
+ });
95
+ var floor = Math.min(minSheetHeight, travel);
96
+ return descending(points.filter(function (h) {
97
+ return h >= floor;
98
+ }));
99
+ }
100
+ function resolveWebSnap(param) {
101
+ var {
102
+ detents,
103
+ snapPoint,
104
+ scrollable,
105
+ fill
106
+ } = param;
107
+ var declared = (detents !== null && detents !== void 0 ? detents : []).map(percent).filter(function (p) {
108
+ return p !== null;
109
+ });
110
+ if (declared.length === 0 && snapPoint === void 0 && !fill) return {
111
+ snapPointsMode: "fit"
112
+ };
113
+ var opensAt = snapPoint !== null && snapPoint !== void 0 ? snapPoint : declared.length === 0 ? fillSnapPoint : void 0;
114
+ var snapPoints = resolveDetentPercents({
115
+ detents,
116
+ snapPoint: opensAt,
117
+ scrollable
118
+ });
119
+ return {
120
+ snapPointsMode: "percent",
121
+ snapPoints,
122
+ defaultPosition: openingDetentIndex(snapPoints, opensAt)
123
+ };
124
+ }
125
+ //# sourceMappingURL=sheetDetents.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","sheetDetents_exports","fillSnapPoint","largeDetentRatio","mediumDetent","minSheetHeight","openingDetentIndex","resolveDetentPercents","resolveSheetDetents","resolveWebSnap","sheetDetent","sheetDismissThreshold","module","exports","medium","large","percent","Number","isFinite","Math","min","descending","values","Array","Set","sort","a","b","param","detents","snapPoint","scrollable","declared","map","filter","p","length","points","push","single"],"sources":["../../../src/shared/sheetDetents.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","isDarkThemeName","useTheme","useThemeName","Switch","systemControlPlatform","OS","useThemeLiteral","theme","token","value","startsWith","slice","val","useSystemControlScheme"],"sources":["../../../src/shared/systemControls.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,QAAA,QAAgB;AACzB,SAASC,eAAA,QAAuB;AAChC,SAASC,QAAA,EAAUC,YAAA,QAAoB;AASvC,SAAmBC,MAAA,QAAwB;AAEpC,SAASC,sBAAA,EAA+C;EAC7D,OAAOL,QAAA,CAASM,EAAA,KAAO,SAASN,QAAA,CAASM,EAAA,KAAO,YAAYN,QAAA,CAASM,EAAA,GAAK;AAC5E;AAGO,SAASC,gBAAA,EAAyD;EACvE,MAAMC,KAAA,GAAQN,QAAA,CAAS;EACvB,OAAQO,KAAA,IAAU;IAChB,MAAMC,KAAA,GAAQF,KAAA,CAAMC,KAAA,CAAME,UAAA,CAAW,GAAG,IAAIF,KAAA,CAAMG,KAAA,CAAM,CAAC,IAAIH,KAAK,GAAGI,GAAA;IACrE,OAAO,OAAOH,KAAA,KAAU,WAAWA,KAAA,GAAQ;EAC7C;AACF;AAGO,SAASI,uBAAA,EAA2C;EACzD,OAAOb,eAAA,CAAgBE,YAAA,CAAa,CAAC,IAAI,SAAS;AACpD","ignoreList":[]}
1
+ {"version":3,"names":["Platform","isDarkThemeName","useTheme","useThemeName","Switch","systemControlPlatform","OS","useThemeLiteral","theme","token","value","startsWith","slice","val","useSystemControlScheme"],"sources":["../../../src/shared/systemControls.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,QAAA,QAAyC;AAClD,SAASC,eAAA,QAAuB;AAChC,SAASC,QAAA,EAAUC,YAAA,QAAoB;AASvC,SAAmBC,MAAA,QAAwB;AAEpC,SAASC,sBAAA,EAA+C;EAC7D,OAAOL,QAAA,CAASM,EAAA,KAAO,SAASN,QAAA,CAASM,EAAA,KAAO,YAAYN,QAAA,CAASM,EAAA,GAAK;AAC5E;AAGO,SAASC,gBAAA,EAAyD;EACvE,MAAMC,KAAA,GAAQN,QAAA,CAAS;EACvB,OAAQO,KAAA,IAAU;IAChB,MAAMC,KAAA,GAAQF,KAAA,CAAMC,KAAA,CAAME,UAAA,CAAW,GAAG,IAAIF,KAAA,CAAMG,KAAA,CAAM,CAAC,IAAIH,KAAK,GAAGI,GAAA;IACrE,OAAO,OAAOH,KAAA,KAAU,WAAWA,KAAA,GAAQ;EAC7C;AACF;AAGO,SAASI,uBAAA,EAA2C;EACzD,OAAOb,eAAA,CAAgBE,YAAA,CAAa,CAAC,IAAI,SAAS;AACpD","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/forms",
3
- "version": "8.3.0",
3
+ "version": "8.5.0",
4
4
  "description": "Cross-platform form components with URL state management",
5
5
  "keywords": [
6
6
  "cross-platform",
@@ -70,10 +70,10 @@
70
70
  },
71
71
  "dependencies": {
72
72
  "@floating-ui/react": "^0.27.20",
73
- "@multiplatform.one/platform": "^8.3.0",
74
- "@multiplatform.one/router": "^8.3.0",
75
- "@multiplatform.one/table-primitives": "^8.3.0",
76
- "@multiplatform.one/theme": "^8.3.0",
73
+ "@multiplatform.one/platform": "^8.5.0",
74
+ "@multiplatform.one/router": "^8.5.0",
75
+ "@multiplatform.one/table-primitives": "^8.5.0",
76
+ "@multiplatform.one/theme": "^8.5.0",
77
77
  "@phosphor-icons/react": "^2.1.10",
78
78
  "@tamagui/get-font-sized": "2.7.6",
79
79
  "@tamagui/get-token": "2.7.6",
@@ -88,14 +88,13 @@
88
88
  "expo-linear-gradient": "~55.0.13",
89
89
  "html5-qrcode": "^2.3.8",
90
90
  "perfect-freehand": "^1.2.3",
91
- "react-native-svg": "15.15.4",
92
91
  "tamagui": "2.7.6"
93
92
  },
94
93
  "devDependencies": {
95
94
  "@expo/ui": "~55.0.17",
96
- "@multiplatform.one/config": "8.3.0",
97
- "@multiplatform.one/storybook": "8.3.0",
98
- "@multiplatform.one/test-utils": "8.3.0",
95
+ "@multiplatform.one/config": "8.5.0",
96
+ "@multiplatform.one/storybook": "8.5.0",
97
+ "@multiplatform.one/test-utils": "8.5.0",
99
98
  "@tamagui/build": "2.7.6",
100
99
  "@tamagui/config": "2.7.6",
101
100
  "@tamagui/vite-plugin": "2.7.6",
@@ -113,6 +112,7 @@
113
112
  "react": "19.2.5",
114
113
  "react-dom": "19.2.5",
115
114
  "react-i18next": "^16.6.6",
115
+ "react-native-svg": "15.15.4",
116
116
  "react-native-web": "^0.21.2",
117
117
  "vitest": "^4.1.12"
118
118
  },
@@ -132,7 +132,8 @@
132
132
  "react-dom": "^19.1.0",
133
133
  "react-i18next": ">=14",
134
134
  "react-native": ">=0.83.0",
135
- "react-native-safe-area-context": "*"
135
+ "react-native-safe-area-context": "*",
136
+ "react-native-svg": "^15.15.0"
136
137
  },
137
138
  "peerDependenciesMeta": {
138
139
  "@expo/ui": {
@@ -37,9 +37,9 @@ const SCHEMES = ["light", "dark"] as const;
37
37
  type Scheme = (typeof SCHEMES)[number];
38
38
  const WASH: Record<Scheme, { rest: string; hover: string; press: string }> = {
39
39
  light: { rest: "color3", hover: "color4", press: "color5" },
40
- dark: { rest: "color4", hover: "color5", press: "color6" },
40
+ dark: { rest: "color5", hover: "color6", press: "color7" },
41
41
  };
42
- const ELEVATED_DARK_WASH = { rest: "color5", hover: "color6", press: "color7" };
42
+ const ELEVATED_DARK_WASH = { rest: "color6", hover: "color7", press: "color8" };
43
43
 
44
44
  function houseRender(ui: ReactElement, scheme: Scheme = "light", knobs?: object) {
45
45
  return render(
@@ -0,0 +1,106 @@
1
+ /**
2
+ * @vitest-environment jsdom
3
+ *
4
+ * LC-268 GLASS-SURFACE (FZ-10734). A composer is a bar: iOS 26 draws Messages'
5
+ * compose field and the buttons beside it on one material, so the composer's
6
+ * field and its tool buttons sit on the system's Liquid Glass. FZ-10606
7
+ * approved that for "the composer's field"; FZ-10608's rewrite wrapped the
8
+ * field and tools in `Surface painted elevated`, which resets the bar flag, so
9
+ * neither drew glass. The witnesses are the ones the components already
10
+ * publish: `data-mp-field-glass` on the field's box and `data-mp-icon-button`
11
+ * on the tool buttons.
12
+ *
13
+ * Off an iPhone nothing loads, and LC-268 says what the bar draws instead: the
14
+ * plain field and the bare tinted glyph ("glyph"), never the content-tier
15
+ * neutral glyph.
16
+ */
17
+
18
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
19
+ import { useBarSurface } from "@multiplatform.one/theme";
20
+ import { MicrophoneIcon } from "@phosphor-icons/react";
21
+ import { afterEach, describe, expect, it, vi } from "vitest";
22
+ import { IconButton } from "../Button";
23
+ import { Composer } from "./index";
24
+
25
+ const glass = vi.hoisted(() => ({ system: false }));
26
+
27
+ vi.mock("../Button/glass", async (importOriginal) => {
28
+ const real = await importOriginal<typeof import("../Button/glass")>();
29
+ function FakeSystemGlass({
30
+ glassEffectStyle,
31
+ isInteractive,
32
+ style: _style,
33
+ children,
34
+ }: Record<string, unknown>) {
35
+ return (
36
+ <div
37
+ data-glass="system"
38
+ data-effect={glassEffectStyle as string}
39
+ data-interactive={String(isInteractive)}
40
+ >
41
+ {children as never}
42
+ </div>
43
+ );
44
+ }
45
+ return {
46
+ ...real,
47
+ loadGlassView: () => (glass.system ? FakeSystemGlass : null),
48
+ loadFieldGlassView: () => (glass.system ? FakeSystemGlass : null),
49
+ };
50
+ });
51
+
52
+ afterEach(() => {
53
+ glass.system = false;
54
+ });
55
+
56
+ function BarProbe() {
57
+ return <span data-probe="tool" data-bar={String(useBarSurface())} />;
58
+ }
59
+
60
+ function composer() {
61
+ return (
62
+ <Composer
63
+ placeholder="Type a message"
64
+ tools={<IconButton icon={MicrophoneIcon} aria-label="Dictate" />}
65
+ />
66
+ );
67
+ }
68
+
69
+ describe("LC-268: the composer is a bar, so its field and tools take the glass", () => {
70
+ it("puts the field and the tool row on a bar surface", () => {
71
+ const result = renderWithProviders(<Composer placeholder="Ask" tools={<BarProbe />} />);
72
+ const probe = result.container.querySelector("[data-probe='tool']")!;
73
+ expect(probe.getAttribute("data-bar")).toBe("true");
74
+ expect(probe.closest("[data-composer-tools]")).not.toBeNull();
75
+ });
76
+
77
+ it("on iOS 26 the field's ground is the system's glass", () => {
78
+ glass.system = true;
79
+ const { container } = renderWithProviders(composer());
80
+ const box = container.querySelector("[data-mp-field-glass]");
81
+ expect(box).not.toBeNull();
82
+ const layer = box!.querySelector("[data-glass='system']")!;
83
+ expect(layer.getAttribute("data-effect")).toBe("regular");
84
+ expect(layer.getAttribute("data-interactive")).toBe("false");
85
+ expect(box!.contains(container.querySelector("textarea, input"))).toBe(true);
86
+ });
87
+
88
+ it("on iOS 26 a tool button sits in system glass", () => {
89
+ glass.system = true;
90
+ const { container } = renderWithProviders(composer());
91
+ const tools = container.querySelector("[data-composer-tools]")!;
92
+ expect(tools.querySelector("[data-mp-icon-button]")!.getAttribute("data-mp-icon-button")).toBe(
93
+ "glass",
94
+ );
95
+ });
96
+
97
+ it("off an iPhone the field stays plain and a tool is the bare tinted glyph", () => {
98
+ const { container } = renderWithProviders(composer());
99
+ expect(container.querySelector("[data-mp-field-glass]")).toBeNull();
100
+ expect(container.querySelector("[data-glass]")).toBeNull();
101
+ const tools = container.querySelector("[data-composer-tools]")!;
102
+ expect(tools.querySelector("[data-mp-icon-button]")!.getAttribute("data-mp-icon-button")).toBe(
103
+ "glyph",
104
+ );
105
+ });
106
+ });
@@ -25,7 +25,7 @@ describe("Composer", () => {
25
25
  expect(onChange).toHaveBeenCalledWith("hello");
26
26
  });
27
27
 
28
- it("lays the tools out as one row inside the card, off any bar surface", () => {
28
+ it("lays the tools out as one row inside the card, on the composer's bar surface", () => {
29
29
  const result = renderWithProviders(
30
30
  <Composer
31
31
  placeholder="Type a message"
@@ -40,7 +40,16 @@ describe("Composer", () => {
40
40
  const row = result.container.querySelector("[data-composer-tools]") as HTMLElement;
41
41
  expect(row.closest("[data-composer-card]")).not.toBeNull();
42
42
  expect(row.querySelectorAll("[data-probe]")).toHaveLength(2);
43
- expect(row.querySelector('[data-probe="first"]')!.getAttribute("data-bar")).toBe("false");
43
+ expect(row.querySelector('[data-probe="first"]')!.getAttribute("data-bar")).toBe("true");
44
+ });
45
+
46
+ it("puts testID on the text field and a derived id on the outer stack (FZ-10735)", () => {
47
+ const result = renderWithProviders(<Composer placeholder="Ask" testID="chat-input" />);
48
+ const input = result.container.querySelector("input, textarea") as HTMLElement;
49
+ expect(input.getAttribute("data-testid")).toBe("chat-input");
50
+ const stack = result.container.querySelector("[data-composer]")!;
51
+ expect(stack.getAttribute("data-testid")).toBe("chat-input-root");
52
+ expect(stack.querySelector("[data-testid='chat-input']")).toBe(input);
44
53
  });
45
54
 
46
55
  it("draws the tool row inside the card and the footer under it", () => {
@@ -42,7 +42,7 @@ export function Composer({
42
42
  }: ComposerProps) {
43
43
  const { knobProps } = useResolvedKnobs({ component: "Card" });
44
44
  return (
45
- <YStack data-composer="" testID={testID} {...knobProps.gapSm}>
45
+ <YStack data-composer="" testID={testID ? `${testID}-root` : undefined} {...knobProps.gapSm}>
46
46
  <YStack
47
47
  data-composer-card=""
48
48
  {...knobProps.panelPadding}
@@ -50,7 +50,7 @@ export function Composer({
50
50
  {...knobProps.containerRadius}
51
51
  {...knobProps.gapSm}
52
52
  >
53
- <Surface painted elevated>
53
+ <Surface painted elevated bar>
54
54
  <Input
55
55
  placeholder={placeholder}
56
56
  label={placeholder}
@@ -61,12 +61,15 @@ export function Composer({
61
61
  defaultValue={defaultValue}
62
62
  onChangeText={(text: string) => onChange?.(text)}
63
63
  inputProps={
64
- onSubmit
65
- ? ({
66
- onSubmitEditing: (event: { nativeEvent?: { text?: string } }) =>
67
- onSubmit(event?.nativeEvent?.text ?? value ?? ""),
68
- } as never)
69
- : undefined
64
+ {
65
+ ...(testID ? { testID } : undefined),
66
+ ...(onSubmit
67
+ ? {
68
+ onSubmitEditing: (event: { nativeEvent?: { text?: string } }) =>
69
+ onSubmit(event?.nativeEvent?.text ?? value ?? ""),
70
+ }
71
+ : undefined),
72
+ } as never
70
73
  }
71
74
  />
72
75
  {tools ? (
@@ -186,7 +186,7 @@ function ControlGroupImpl({ children, orientation = "horizontal", ...props }: Co
186
186
  <View
187
187
  key={`seam-${index}`}
188
188
  {...(isVertical ? hairline.line : hairline.vline)}
189
- backgroundColor={formInputColors.border.base}
189
+ backgroundColor={formCommonColors.divider}
190
190
  flexGrow={0}
191
191
  flexShrink={0}
192
192
  alignSelf="stretch"
@@ -235,6 +235,7 @@ function ControlGroupImpl({ children, orientation = "horizontal", ...props }: Co
235
235
  backgroundColor={knobProps.outlined ? "transparent" : formInputColors.background.base}
236
236
  {...knobProps.inputSurface}
237
237
  {...knobProps.borderRadius}
238
+ borderColor={formInputColors.border.base}
238
239
  {...elevationWrapperProps}
239
240
  {...transitionProps(knobProps.motion.control, [
240
241
  "borderRadius",
@@ -0,0 +1,72 @@
1
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
2
+ import { act, screen } from "@testing-library/react";
3
+ import { useState } from "react";
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
5
+ import { Text } from "tamagui";
6
+ import { holdCueStartMs } from "../hooks/useHoldCue";
7
+ import { FloatingPanel } from "./index.native";
8
+
9
+ vi.mock("react-native-web", async (importOriginal) => {
10
+ const actual = await importOriginal<typeof import("react-native")>();
11
+ return {
12
+ ...actual,
13
+ ActionSheetIOS: undefined,
14
+ Modal: ({ children, visible }: { children: import("react").ReactNode; visible: boolean }) =>
15
+ visible ? children : null,
16
+ };
17
+ });
18
+
19
+ beforeEach(() => {
20
+ vi.useFakeTimers();
21
+ });
22
+ afterEach(() => {
23
+ vi.useRealTimers();
24
+ });
25
+
26
+ function ContextPanel() {
27
+ const [open, setOpen] = useState(false);
28
+ return (
29
+ <FloatingPanel
30
+ open={open}
31
+ onOpenChange={setOpen}
32
+ openOn="contextmenu"
33
+ trigger={<Text>Row</Text>}
34
+ triggerA11y={{ label: "Row" }}
35
+ >
36
+ <Text>Copy</Text>
37
+ </FloatingPanel>
38
+ );
39
+ }
40
+
41
+ function press(target: Element, type: "mousedown" | "mouseup") {
42
+ act(() => {
43
+ target.dispatchEvent(new MouseEvent(type, { bubbles: true, cancelable: true, button: 0 }));
44
+ });
45
+ }
46
+
47
+ describe("FloatingPanel native context trigger hold cue (LC-197, FZ-8902)", () => {
48
+ it("shows the cue partway to the 500ms hold and clears it on release", () => {
49
+ renderWithProviders(<ContextPanel />);
50
+ const trigger = screen.getByRole("button", { name: "Row" });
51
+ press(trigger, "mousedown");
52
+ expect(trigger).not.toHaveAttribute("data-hold");
53
+ act(() => {
54
+ vi.advanceTimersByTime(holdCueStartMs);
55
+ });
56
+ expect(trigger).toHaveAttribute("data-hold", "progress");
57
+ expect(screen.queryByText("Copy")).toBeNull();
58
+ press(trigger, "mouseup");
59
+ expect(trigger).not.toHaveAttribute("data-hold");
60
+ });
61
+
62
+ it("drops the cue when the hold opens the menu", () => {
63
+ renderWithProviders(<ContextPanel />);
64
+ const trigger = screen.getByRole("button", { name: "Row" });
65
+ press(trigger, "mousedown");
66
+ act(() => {
67
+ vi.advanceTimersByTime(600);
68
+ });
69
+ expect(screen.getByText("Copy")).toBeTruthy();
70
+ expect(trigger).not.toHaveAttribute("data-hold");
71
+ });
72
+ });