@multiplatform.one/forms 7.79.0 → 7.81.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 (604) hide show
  1. package/dist/cjs/AdaptivePopup/index.cjs +1 -1
  2. package/dist/cjs/AdaptivePopup/index.native.js +3 -3
  3. package/dist/cjs/AdaptivePopup/index.native.js.map +1 -1
  4. package/dist/cjs/Button/IconButtonGroup.native.js.map +1 -1
  5. package/dist/cjs/Button/circleGlyph.native.js.map +1 -1
  6. package/dist/cjs/Button/glass.cjs +1 -2
  7. package/dist/cjs/Button/iconButtonGroupContext.native.js.map +1 -1
  8. package/dist/cjs/Button/index.cjs +12 -5
  9. package/dist/cjs/Button/index.native.js +16 -8
  10. package/dist/cjs/Button/index.native.js.map +1 -1
  11. package/dist/cjs/Button/webGlass.native.js.map +1 -1
  12. package/dist/cjs/Chip/index.native.js.map +1 -1
  13. package/dist/cjs/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.native.js +1 -1
  21. package/dist/cjs/ControlGroup/index.native.js.map +1 -1
  22. package/dist/cjs/DescriptionList/index.native.js +2 -2
  23. package/dist/cjs/DescriptionList/index.native.js.map +1 -1
  24. package/dist/cjs/ErrorSummary.native.js.map +1 -1
  25. package/dist/cjs/FieldDisplay/editMode.native.js.map +1 -1
  26. package/dist/cjs/FieldDisplay/formatters.native.js.map +1 -1
  27. package/dist/cjs/FieldDisplay/index.native.js +1 -1
  28. package/dist/cjs/FieldDisplay/index.native.js.map +1 -1
  29. package/dist/cjs/FieldGroup.native.js.map +1 -1
  30. package/dist/cjs/FloatingPanel/PanelHeader.cjs +3 -8
  31. package/dist/cjs/FloatingPanel/PanelHeader.native.js +3 -8
  32. package/dist/cjs/FloatingPanel/PanelHeader.native.js.map +1 -1
  33. package/dist/cjs/FloatingPanel/RegularPanel.native.js.map +1 -1
  34. package/dist/cjs/FloatingPanel/compactFace.native.js.map +1 -1
  35. package/dist/cjs/FloatingPanel/containingBlock.native.js.map +1 -1
  36. package/dist/cjs/FloatingPanel/coverRect.cjs +0 -8
  37. package/dist/cjs/FloatingPanel/coverRect.native.js +0 -8
  38. package/dist/cjs/FloatingPanel/coverRect.native.js.map +1 -1
  39. package/dist/cjs/FloatingPanel/echoContext.cjs +5 -27
  40. package/dist/cjs/FloatingPanel/echoContext.native.js +5 -28
  41. package/dist/cjs/FloatingPanel/echoContext.native.js.map +1 -1
  42. package/dist/cjs/FloatingPanel/index.cjs +49 -131
  43. package/dist/cjs/FloatingPanel/index.native.js +26 -91
  44. package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
  45. package/dist/cjs/FloatingPanel/nestedAction.native.js.map +1 -1
  46. package/dist/cjs/FloatingPanel/paintedBox.native.js.map +1 -1
  47. package/dist/cjs/FloatingPanel/panelWidth.native.js.map +1 -1
  48. package/dist/cjs/FloatingPanel/pointAnchor.native.js.map +1 -1
  49. package/dist/cjs/FloatingPanel/regularPlacement.native.js.map +1 -1
  50. package/dist/cjs/FloatingPanel/trailingAction.native.js +1 -1
  51. package/dist/cjs/FloatingPanel/trailingAction.native.js.map +1 -1
  52. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  53. package/dist/cjs/Form/index.native.js +1 -1
  54. package/dist/cjs/Form/index.native.js.map +1 -1
  55. package/dist/cjs/Form/submissionController.native.js.map +1 -1
  56. package/dist/cjs/Form/validateOn.native.js.map +1 -1
  57. package/dist/cjs/FormGrid.native.js.map +1 -1
  58. package/dist/cjs/FormSection.native.js.map +1 -1
  59. package/dist/cjs/InputParts/PasswordReveal.native.js.map +1 -1
  60. package/dist/cjs/InputParts/index.native.js.map +1 -1
  61. package/dist/cjs/InputParts/keyboardAppearance.native.js.map +1 -1
  62. package/dist/cjs/Label/index.native.js.map +1 -1
  63. package/dist/cjs/MediaPicker/base64.native.js.map +1 -1
  64. package/dist/cjs/MediaPicker/payload.native.js.map +1 -1
  65. package/dist/cjs/MediaPicker/types.native.js.map +1 -1
  66. package/dist/cjs/MediaPicker/useMediaPicker.native.js.map +1 -1
  67. package/dist/cjs/Skeleton/index.native.js.map +1 -1
  68. package/dist/cjs/Spinner/SpinnerGlyph.native.js.map +1 -1
  69. package/dist/cjs/Spinner/spinnerSize.native.js.map +1 -1
  70. package/dist/cjs/Table/index.native.js.map +1 -1
  71. package/dist/cjs/Wheel/haptic.native.js.map +1 -1
  72. package/dist/cjs/Wheel/index.native.js.map +1 -1
  73. package/dist/cjs/Wheel/wheelShared.native.js.map +1 -1
  74. package/dist/cjs/actionLabel.native.js.map +1 -1
  75. package/dist/cjs/fieldDefaults.native.js.map +1 -1
  76. package/dist/cjs/fieldLayout.native.js +1 -1
  77. package/dist/cjs/fieldLayout.native.js.map +1 -1
  78. package/dist/cjs/fields/Barcode/BarcodePreview.native.js.map +1 -1
  79. package/dist/cjs/fields/Barcode/BarcodeScanner.native.js +1 -1
  80. package/dist/cjs/fields/Barcode/code128.native.js.map +1 -1
  81. package/dist/cjs/fields/Barcode/index.native.js +2 -2
  82. package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
  83. package/dist/cjs/fields/Barcode/qr.native.js.map +1 -1
  84. package/dist/cjs/fields/Barcode/scannerTypes.native.js.map +1 -1
  85. package/dist/cjs/fields/Checkbox/Checkbox.native.js +1 -1
  86. package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -1
  87. package/dist/cjs/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  88. package/dist/cjs/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  89. package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  90. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js +1 -1
  91. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  92. package/dist/cjs/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
  93. package/dist/cjs/fields/Checkbox/index.native.js.map +1 -1
  94. package/dist/cjs/fields/ColorPicker/SystemColorField.native.js.map +1 -1
  95. package/dist/cjs/fields/ColorPicker/index.native.js +2 -2
  96. package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
  97. package/dist/cjs/fields/ColorPicker/parts.native.js +2 -2
  98. package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
  99. package/dist/cjs/fields/ColorPicker/systemColorWell.gnome.native.js.map +1 -1
  100. package/dist/cjs/fields/Combobox/authorOptions.native.js.map +1 -1
  101. package/dist/cjs/fields/Combobox/index.cjs +3 -10
  102. package/dist/cjs/fields/Combobox/index.native.js +8 -15
  103. package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
  104. package/dist/cjs/fields/DatePicker/Calendar.native.js.map +1 -1
  105. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +2 -2
  106. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  107. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js +3 -3
  108. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  109. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +2 -2
  110. package/dist/cjs/fields/DatePicker/MonthPicker.native.js +2 -2
  111. package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -1
  112. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +2 -2
  113. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  114. package/dist/cjs/fields/DatePicker/catalog.native.js +2 -2
  115. package/dist/cjs/fields/DatePicker/catalog.native.js.map +1 -1
  116. package/dist/cjs/fields/DatePicker/fieldValueSync.native.js.map +1 -1
  117. package/dist/cjs/fields/DatePicker/index.native.js +2 -2
  118. package/dist/cjs/fields/DatePicker/parts.native.js +2 -2
  119. package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
  120. package/dist/cjs/fields/DatePicker/utils.native.js.map +1 -1
  121. package/dist/cjs/fields/Duration/DurationWheel.native.js +1 -1
  122. package/dist/cjs/fields/Duration/durationMath.native.js.map +1 -1
  123. package/dist/cjs/fields/Duration/durationWheelTypes.native.js.map +1 -1
  124. package/dist/cjs/fields/Duration/index.native.js +3 -3
  125. package/dist/cjs/fields/Duration/index.native.js.map +1 -1
  126. package/dist/cjs/fields/FileUpload/filePickerTypes.native.js.map +1 -1
  127. package/dist/cjs/fields/FileUpload/index.native.js +2 -2
  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.native.js +2 -2
  144. package/dist/cjs/fields/ImageField/index.native.js.map +1 -1
  145. package/dist/cjs/fields/Input/index.native.js +3 -3
  146. package/dist/cjs/fields/Input/index.native.js.map +1 -1
  147. package/dist/cjs/fields/MentionInput/index.native.js +3 -3
  148. package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
  149. package/dist/cjs/fields/OTPInput/index.native.js +3 -3
  150. package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
  151. package/dist/cjs/fields/OTPInput/otpCellCss.native.js.map +1 -1
  152. package/dist/cjs/fields/PhoneInput/dialCodes.native.js.map +1 -1
  153. package/dist/cjs/fields/PhoneInput/index.native.js +3 -3
  154. package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
  155. package/dist/cjs/fields/PhoneInput/phone.native.js.map +1 -1
  156. package/dist/cjs/fields/PhoneInput/regionNames.native.js.map +1 -1
  157. package/dist/cjs/fields/Progress/index.native.js +1 -1
  158. package/dist/cjs/fields/Progress/index.native.js.map +1 -1
  159. package/dist/cjs/fields/RadioGroup/index.native.js +1 -1
  160. package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
  161. package/dist/cjs/fields/Rating/index.native.js +1 -1
  162. package/dist/cjs/fields/Rating/index.native.js.map +1 -1
  163. package/dist/cjs/fields/Rating/ratingMath.native.js.map +1 -1
  164. package/dist/cjs/fields/Rating/types.native.js.map +1 -1
  165. package/dist/cjs/fields/SearchInput/index.native.js +2 -2
  166. package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
  167. package/dist/cjs/fields/Select/InlineChoices.cjs +4 -8
  168. package/dist/cjs/fields/Select/InlineChoices.native.js +4 -8
  169. package/dist/cjs/fields/Select/InlineChoices.native.js.map +1 -1
  170. package/dist/cjs/fields/Select/SheetPickerRow.native.js.map +1 -1
  171. package/dist/cjs/fields/Select/index.cjs +46 -199
  172. package/dist/cjs/fields/Select/index.native.js +56 -211
  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.native.js +1 -1
  178. package/dist/cjs/fields/Slider/index.native.js.map +1 -1
  179. package/dist/cjs/fields/Slider/jumpMotion.native.js.map +1 -1
  180. package/dist/cjs/fields/Stepper/index.native.js +2 -2
  181. package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
  182. package/dist/cjs/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
  183. package/dist/cjs/fields/Switch/footprint.native.js.map +1 -1
  184. package/dist/cjs/fields/Switch/index.native.js +2 -2
  185. package/dist/cjs/fields/Switch/index.native.js.map +1 -1
  186. package/dist/cjs/fields/TextArea/index.native.js +2 -2
  187. package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
  188. package/dist/cjs/fields/TimePicker/catalog.native.js +3 -3
  189. package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -1
  190. package/dist/cjs/fields/TimePicker/index.native.js +2 -2
  191. package/dist/cjs/fields/TimePicker/parts.native.js +1 -1
  192. package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
  193. package/dist/cjs/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
  194. package/dist/cjs/fields/TimeRangeScrubber/index.native.js +2 -2
  195. package/dist/cjs/fields/TimeRangeScrubber/index.native.js.map +1 -1
  196. package/dist/cjs/fields/ToggleGroup/index.native.js +1 -1
  197. package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
  198. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.cjs +2 -2
  199. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js +3 -3
  200. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  201. package/dist/cjs/fields/nativeDateTime/dateTimePickerLoader.native.js.map +1 -1
  202. package/dist/cjs/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
  203. package/dist/cjs/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -1
  204. package/dist/cjs/fields/nativeSelect.native.js.map +1 -1
  205. package/dist/cjs/fields/selectedOrder.native.js.map +1 -1
  206. package/dist/cjs/formSpacing.native.js.map +1 -1
  207. package/dist/cjs/hooks/useFocusManagement.native.js.map +1 -1
  208. package/dist/cjs/index.cjs +4 -0
  209. package/dist/cjs/index.native.js +49 -45
  210. package/dist/cjs/index.native.js.map +1 -1
  211. package/dist/cjs/keyboard/KeyboardDoneBar.native.js +1 -1
  212. package/dist/cjs/keyboard/chain.native.js.map +1 -1
  213. package/dist/cjs/keyboard/index.native.js.map +1 -1
  214. package/dist/cjs/keyboard/types.native.js.map +1 -1
  215. package/dist/cjs/requiredMarking.native.js.map +1 -1
  216. package/dist/cjs/shared/CheckGlyph.cjs +40 -0
  217. package/dist/cjs/shared/CheckGlyph.native.js +44 -0
  218. package/dist/cjs/shared/CheckGlyph.native.js.map +1 -0
  219. package/dist/cjs/shared/TimeColumn.native.js +1 -1
  220. package/dist/cjs/shared/TimeColumn.native.js.map +1 -1
  221. package/dist/cjs/shared/capabilityPreflight.native.js.map +1 -1
  222. package/dist/cjs/shared/choiceRowPress.native.js.map +1 -1
  223. package/dist/cjs/shared/colorRamps.native.js.map +1 -1
  224. package/dist/cjs/shared/devWarn.native.js.map +1 -1
  225. package/dist/cjs/shared/fieldRowContext.native.js.map +1 -1
  226. package/dist/cjs/shared/floatingList.cjs +82 -3
  227. package/dist/cjs/shared/floatingList.native.js +96 -6
  228. package/dist/cjs/shared/floatingList.native.js.map +1 -1
  229. package/dist/cjs/shared/focusManagement.native.js.map +1 -1
  230. package/dist/cjs/shared/groupContext.native.js.map +1 -1
  231. package/dist/cjs/shared/i18n.native.js.map +1 -1
  232. package/dist/cjs/shared/instantMotion.native.js.map +1 -1
  233. package/dist/cjs/shared/nativeA11y.native.js.map +1 -1
  234. package/dist/cjs/shared/nativeAutoFocus.native.js.map +1 -1
  235. package/dist/cjs/shared/overlaySizeClass.native.js.map +1 -1
  236. package/dist/cjs/shared/overlayStack.native.js.map +1 -1
  237. package/dist/cjs/shared/panelPortal.native.js.map +1 -1
  238. package/dist/cjs/shared/pickerTriggerContract.native.js.map +1 -1
  239. package/dist/cjs/shared/pressSlopProps.native.js.map +1 -1
  240. package/dist/cjs/shared/restoreRetries.native.js.map +1 -1
  241. package/dist/cjs/shared/sheetNavigation.native.js.map +1 -1
  242. package/dist/cjs/shared/systemControlModules.gnome.native.js.map +1 -1
  243. package/dist/cjs/shared/systemControls.native.js.map +1 -1
  244. package/dist/cjs/shared/t.native.js.map +1 -1
  245. package/dist/cjs/shared/tableCellContext.native.js.map +1 -1
  246. package/dist/cjs/shared/useDragScroll.native.js.map +1 -1
  247. package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
  248. package/dist/cjs/shared/useSheetEscapeDismiss.native.js.map +1 -1
  249. package/dist/cjs/shared/useWheelIncrement.native.js.map +1 -1
  250. package/dist/cjs/shared/utils.native.js +1 -1
  251. package/dist/cjs/shared/utils.native.js.map +1 -1
  252. package/dist/cjs/shared/zIndex.native.js.map +1 -1
  253. package/dist/cjs/standardActions.native.js.map +1 -1
  254. package/dist/cjs/themedPrimitives.native.js.map +1 -1
  255. package/dist/cjs/types.native.js.map +1 -1
  256. package/dist/cjs/utils/LinkCell.native.js.map +1 -1
  257. package/dist/esm/AdaptivePopup/index.mjs +2 -2
  258. package/dist/esm/AdaptivePopup/index.mjs.map +1 -1
  259. package/dist/esm/AdaptivePopup/index.native.js +2 -2
  260. package/dist/esm/AdaptivePopup/index.native.js.map +1 -1
  261. package/dist/esm/Button/IconButtonGroup.native.js.map +1 -1
  262. package/dist/esm/Button/circleGlyph.native.js.map +1 -1
  263. package/dist/esm/Button/glass.mjs +1 -2
  264. package/dist/esm/Button/glass.mjs.map +1 -1
  265. package/dist/esm/Button/iconButtonGroupContext.native.js.map +1 -1
  266. package/dist/esm/Button/index.mjs +12 -5
  267. package/dist/esm/Button/index.mjs.map +1 -1
  268. package/dist/esm/Button/index.native.js +14 -6
  269. package/dist/esm/Button/index.native.js.map +1 -1
  270. package/dist/esm/Button/webGlass.mjs.map +1 -1
  271. package/dist/esm/Button/webGlass.native.js.map +1 -1
  272. package/dist/esm/Chip/index.native.js.map +1 -1
  273. package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  274. package/dist/esm/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
  275. package/dist/esm/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
  276. package/dist/esm/ContextualSaveBar/index.native.js.map +1 -1
  277. package/dist/esm/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
  278. package/dist/esm/ControlGroup/index.native.js.map +1 -1
  279. package/dist/esm/DescriptionList/index.native.js.map +1 -1
  280. package/dist/esm/ErrorSummary.native.js.map +1 -1
  281. package/dist/esm/FieldDisplay/editMode.native.js.map +1 -1
  282. package/dist/esm/FieldDisplay/formatters.native.js.map +1 -1
  283. package/dist/esm/FieldDisplay/index.native.js.map +1 -1
  284. package/dist/esm/FieldGroup.native.js.map +1 -1
  285. package/dist/esm/FloatingPanel/PanelHeader.mjs +3 -8
  286. package/dist/esm/FloatingPanel/PanelHeader.mjs.map +1 -1
  287. package/dist/esm/FloatingPanel/PanelHeader.native.js +3 -8
  288. package/dist/esm/FloatingPanel/PanelHeader.native.js.map +1 -1
  289. package/dist/esm/FloatingPanel/RegularPanel.native.js.map +1 -1
  290. package/dist/esm/FloatingPanel/compactFace.native.js.map +1 -1
  291. package/dist/esm/FloatingPanel/containingBlock.native.js.map +1 -1
  292. package/dist/esm/FloatingPanel/coverRect.mjs +1 -8
  293. package/dist/esm/FloatingPanel/coverRect.mjs.map +1 -1
  294. package/dist/esm/FloatingPanel/coverRect.native.js +1 -8
  295. package/dist/esm/FloatingPanel/coverRect.native.js.map +1 -1
  296. package/dist/esm/FloatingPanel/echoContext.mjs +4 -24
  297. package/dist/esm/FloatingPanel/echoContext.mjs.map +1 -1
  298. package/dist/esm/FloatingPanel/echoContext.native.js +4 -25
  299. package/dist/esm/FloatingPanel/echoContext.native.js.map +1 -1
  300. package/dist/esm/FloatingPanel/index.mjs +53 -135
  301. package/dist/esm/FloatingPanel/index.mjs.map +1 -1
  302. package/dist/esm/FloatingPanel/index.native.js +30 -95
  303. package/dist/esm/FloatingPanel/index.native.js.map +1 -1
  304. package/dist/esm/FloatingPanel/nestedAction.native.js.map +1 -1
  305. package/dist/esm/FloatingPanel/paintedBox.native.js.map +1 -1
  306. package/dist/esm/FloatingPanel/panelWidth.native.js.map +1 -1
  307. package/dist/esm/FloatingPanel/pointAnchor.native.js.map +1 -1
  308. package/dist/esm/FloatingPanel/regularPlacement.native.js.map +1 -1
  309. package/dist/esm/FloatingPanel/trailingAction.native.js.map +1 -1
  310. package/dist/esm/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  311. package/dist/esm/Form/index.native.js.map +1 -1
  312. package/dist/esm/Form/submissionController.native.js.map +1 -1
  313. package/dist/esm/Form/validateOn.native.js.map +1 -1
  314. package/dist/esm/FormGrid.native.js.map +1 -1
  315. package/dist/esm/FormSection.native.js.map +1 -1
  316. package/dist/esm/InputParts/PasswordReveal.native.js.map +1 -1
  317. package/dist/esm/InputParts/index.native.js.map +1 -1
  318. package/dist/esm/InputParts/keyboardAppearance.native.js.map +1 -1
  319. package/dist/esm/Label/index.native.js.map +1 -1
  320. package/dist/esm/MediaPicker/base64.native.js.map +1 -1
  321. package/dist/esm/MediaPicker/payload.native.js.map +1 -1
  322. package/dist/esm/MediaPicker/types.native.js.map +1 -1
  323. package/dist/esm/MediaPicker/useMediaPicker.native.js.map +1 -1
  324. package/dist/esm/Skeleton/index.native.js.map +1 -1
  325. package/dist/esm/Spinner/SpinnerGlyph.native.js.map +1 -1
  326. package/dist/esm/Spinner/spinnerSize.native.js.map +1 -1
  327. package/dist/esm/Table/index.native.js.map +1 -1
  328. package/dist/esm/Wheel/haptic.native.js.map +1 -1
  329. package/dist/esm/Wheel/index.native.js.map +1 -1
  330. package/dist/esm/Wheel/wheelShared.native.js.map +1 -1
  331. package/dist/esm/actionLabel.native.js.map +1 -1
  332. package/dist/esm/fieldDefaults.native.js.map +1 -1
  333. package/dist/esm/fieldLayout.native.js.map +1 -1
  334. package/dist/esm/fields/Barcode/BarcodePreview.native.js.map +1 -1
  335. package/dist/esm/fields/Barcode/code128.native.js.map +1 -1
  336. package/dist/esm/fields/Barcode/index.native.js.map +1 -1
  337. package/dist/esm/fields/Barcode/qr.native.js.map +1 -1
  338. package/dist/esm/fields/Barcode/scannerTypes.native.js.map +1 -1
  339. package/dist/esm/fields/Checkbox/Checkbox.native.js.map +1 -1
  340. package/dist/esm/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  341. package/dist/esm/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  342. package/dist/esm/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  343. package/dist/esm/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  344. package/dist/esm/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
  345. package/dist/esm/fields/Checkbox/index.native.js.map +1 -1
  346. package/dist/esm/fields/ColorPicker/SystemColorField.native.js.map +1 -1
  347. package/dist/esm/fields/ColorPicker/index.native.js.map +1 -1
  348. package/dist/esm/fields/ColorPicker/parts.native.js.map +1 -1
  349. package/dist/esm/fields/ColorPicker/systemColorWell.gnome.native.js.map +1 -1
  350. package/dist/esm/fields/Combobox/authorOptions.native.js.map +1 -1
  351. package/dist/esm/fields/Combobox/index.mjs +4 -11
  352. package/dist/esm/fields/Combobox/index.mjs.map +1 -1
  353. package/dist/esm/fields/Combobox/index.native.js +4 -11
  354. package/dist/esm/fields/Combobox/index.native.js.map +1 -1
  355. package/dist/esm/fields/DatePicker/Calendar.native.js.map +1 -1
  356. package/dist/esm/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  357. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  358. package/dist/esm/fields/DatePicker/MonthPicker.native.js.map +1 -1
  359. package/dist/esm/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  360. package/dist/esm/fields/DatePicker/catalog.native.js.map +1 -1
  361. package/dist/esm/fields/DatePicker/fieldValueSync.native.js.map +1 -1
  362. package/dist/esm/fields/DatePicker/parts.native.js.map +1 -1
  363. package/dist/esm/fields/DatePicker/utils.native.js.map +1 -1
  364. package/dist/esm/fields/Duration/durationMath.native.js.map +1 -1
  365. package/dist/esm/fields/Duration/durationWheelTypes.native.js.map +1 -1
  366. package/dist/esm/fields/Duration/index.native.js.map +1 -1
  367. package/dist/esm/fields/FileUpload/filePickerTypes.native.js.map +1 -1
  368. package/dist/esm/fields/FileUpload/index.native.js.map +1 -1
  369. package/dist/esm/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  370. package/dist/esm/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
  371. package/dist/esm/fields/Geolocation/geoValue.native.js.map +1 -1
  372. package/dist/esm/fields/Geolocation/geocoder.native.js.map +1 -1
  373. package/dist/esm/fields/Geolocation/geocoderContext.native.js.map +1 -1
  374. package/dist/esm/fields/Geolocation/index.native.js.map +1 -1
  375. package/dist/esm/fields/Geolocation/mapMath.native.js.map +1 -1
  376. package/dist/esm/fields/Geolocation/mapTypes.native.js.map +1 -1
  377. package/dist/esm/fields/Geolocation/nativeSearchFocus.native.js.map +1 -1
  378. package/dist/esm/fields/Geolocation/photonGeocoder.native.js.map +1 -1
  379. package/dist/esm/fields/Icon/drawnSet.native.js.map +1 -1
  380. package/dist/esm/fields/Icon/index.native.js.map +1 -1
  381. package/dist/esm/fields/ImageField/index.native.js.map +1 -1
  382. package/dist/esm/fields/Input/index.native.js.map +1 -1
  383. package/dist/esm/fields/MentionInput/index.native.js.map +1 -1
  384. package/dist/esm/fields/OTPInput/index.native.js.map +1 -1
  385. package/dist/esm/fields/OTPInput/otpCellCss.native.js.map +1 -1
  386. package/dist/esm/fields/PhoneInput/dialCodes.native.js.map +1 -1
  387. package/dist/esm/fields/PhoneInput/index.native.js.map +1 -1
  388. package/dist/esm/fields/PhoneInput/phone.native.js.map +1 -1
  389. package/dist/esm/fields/PhoneInput/regionNames.native.js.map +1 -1
  390. package/dist/esm/fields/Progress/index.native.js.map +1 -1
  391. package/dist/esm/fields/RadioGroup/index.native.js.map +1 -1
  392. package/dist/esm/fields/Rating/index.native.js.map +1 -1
  393. package/dist/esm/fields/Rating/ratingMath.native.js.map +1 -1
  394. package/dist/esm/fields/Rating/types.native.js.map +1 -1
  395. package/dist/esm/fields/SearchInput/index.native.js.map +1 -1
  396. package/dist/esm/fields/Select/InlineChoices.mjs +2 -6
  397. package/dist/esm/fields/Select/InlineChoices.mjs.map +1 -1
  398. package/dist/esm/fields/Select/InlineChoices.native.js +2 -6
  399. package/dist/esm/fields/Select/InlineChoices.native.js.map +1 -1
  400. package/dist/esm/fields/Select/SheetPickerRow.native.js.map +1 -1
  401. package/dist/esm/fields/Select/index.mjs +49 -202
  402. package/dist/esm/fields/Select/index.mjs.map +1 -1
  403. package/dist/esm/fields/Select/index.native.js +55 -210
  404. package/dist/esm/fields/Select/index.native.js.map +1 -1
  405. package/dist/esm/fields/Select/shouldInlineChoices.native.js.map +1 -1
  406. package/dist/esm/fields/Signature/index.native.js.map +1 -1
  407. package/dist/esm/fields/Slider/index.native.js.map +1 -1
  408. package/dist/esm/fields/Slider/jumpMotion.native.js.map +1 -1
  409. package/dist/esm/fields/Stepper/index.native.js.map +1 -1
  410. package/dist/esm/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
  411. package/dist/esm/fields/Switch/footprint.native.js.map +1 -1
  412. package/dist/esm/fields/Switch/index.native.js.map +1 -1
  413. package/dist/esm/fields/TextArea/index.native.js.map +1 -1
  414. package/dist/esm/fields/TimePicker/catalog.native.js.map +1 -1
  415. package/dist/esm/fields/TimePicker/parts.native.js.map +1 -1
  416. package/dist/esm/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
  417. package/dist/esm/fields/TimeRangeScrubber/index.native.js.map +1 -1
  418. package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -1
  419. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs +3 -3
  420. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -1
  421. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js +3 -3
  422. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  423. package/dist/esm/fields/nativeDateTime/dateTimePickerLoader.native.js.map +1 -1
  424. package/dist/esm/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
  425. package/dist/esm/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -1
  426. package/dist/esm/fields/nativeSelect.native.js.map +1 -1
  427. package/dist/esm/fields/selectedOrder.native.js.map +1 -1
  428. package/dist/esm/formSpacing.native.js.map +1 -1
  429. package/dist/esm/hooks/useFocusManagement.native.js.map +1 -1
  430. package/dist/esm/index.mjs +3 -1
  431. package/dist/esm/index.mjs.map +1 -1
  432. package/dist/esm/index.native.js +3 -1
  433. package/dist/esm/index.native.js.map +1 -1
  434. package/dist/esm/keyboard/chain.native.js.map +1 -1
  435. package/dist/esm/keyboard/index.native.js.map +1 -1
  436. package/dist/esm/keyboard/types.native.js.map +1 -1
  437. package/dist/esm/requiredMarking.native.js.map +1 -1
  438. package/dist/esm/shared/CheckGlyph.mjs +15 -0
  439. package/dist/esm/shared/CheckGlyph.mjs.map +1 -0
  440. package/dist/esm/shared/CheckGlyph.native.js +16 -0
  441. package/dist/esm/shared/CheckGlyph.native.js.map +1 -0
  442. package/dist/esm/shared/TimeColumn.native.js.map +1 -1
  443. package/dist/esm/shared/capabilityPreflight.native.js.map +1 -1
  444. package/dist/esm/shared/choiceRowPress.native.js.map +1 -1
  445. package/dist/esm/shared/colorRamps.native.js.map +1 -1
  446. package/dist/esm/shared/devWarn.native.js.map +1 -1
  447. package/dist/esm/shared/fieldRowContext.native.js.map +1 -1
  448. package/dist/esm/shared/floatingList.mjs +80 -4
  449. package/dist/esm/shared/floatingList.mjs.map +1 -1
  450. package/dist/esm/shared/floatingList.native.js +93 -6
  451. package/dist/esm/shared/floatingList.native.js.map +1 -1
  452. package/dist/esm/shared/focusManagement.native.js.map +1 -1
  453. package/dist/esm/shared/groupContext.native.js.map +1 -1
  454. package/dist/esm/shared/i18n.native.js.map +1 -1
  455. package/dist/esm/shared/instantMotion.native.js.map +1 -1
  456. package/dist/esm/shared/nativeA11y.native.js.map +1 -1
  457. package/dist/esm/shared/nativeAutoFocus.native.js.map +1 -1
  458. package/dist/esm/shared/overlaySizeClass.native.js.map +1 -1
  459. package/dist/esm/shared/overlayStack.native.js.map +1 -1
  460. package/dist/esm/shared/panelPortal.native.js.map +1 -1
  461. package/dist/esm/shared/pickerTriggerContract.native.js.map +1 -1
  462. package/dist/esm/shared/pressSlopProps.native.js.map +1 -1
  463. package/dist/esm/shared/restoreRetries.native.js.map +1 -1
  464. package/dist/esm/shared/sheetNavigation.native.js.map +1 -1
  465. package/dist/esm/shared/systemControlModules.gnome.native.js.map +1 -1
  466. package/dist/esm/shared/systemControls.native.js.map +1 -1
  467. package/dist/esm/shared/t.native.js.map +1 -1
  468. package/dist/esm/shared/tableCellContext.native.js.map +1 -1
  469. package/dist/esm/shared/useDragScroll.native.js.map +1 -1
  470. package/dist/esm/shared/useKeyboardInset.native.js.map +1 -1
  471. package/dist/esm/shared/useSheetEscapeDismiss.native.js.map +1 -1
  472. package/dist/esm/shared/useWheelIncrement.native.js.map +1 -1
  473. package/dist/esm/shared/utils.native.js.map +1 -1
  474. package/dist/esm/shared/zIndex.native.js.map +1 -1
  475. package/dist/esm/standardActions.native.js.map +1 -1
  476. package/dist/esm/themedPrimitives.native.js.map +1 -1
  477. package/dist/esm/types.native.js.map +1 -1
  478. package/dist/esm/utils/LinkCell.native.js.map +1 -1
  479. package/dist/jsx/AdaptivePopup/index.mjs +2 -2
  480. package/dist/jsx/AdaptivePopup/index.mjs.map +1 -1
  481. package/dist/jsx/AdaptivePopup/index.native.js +1 -1
  482. package/dist/jsx/AdaptivePopup/index.native.js.map +1 -1
  483. package/dist/jsx/Button/glass.mjs +1 -2
  484. package/dist/jsx/Button/glass.mjs.map +1 -1
  485. package/dist/jsx/Button/index.mjs +12 -5
  486. package/dist/jsx/Button/index.mjs.map +1 -1
  487. package/dist/jsx/Button/index.native.js +14 -6
  488. package/dist/jsx/Button/index.native.js.map +1 -1
  489. package/dist/jsx/Button/webGlass.mjs.map +1 -1
  490. package/dist/jsx/Button/webGlass.native.js.map +1 -1
  491. package/dist/jsx/FloatingPanel/PanelHeader.mjs +3 -8
  492. package/dist/jsx/FloatingPanel/PanelHeader.mjs.map +1 -1
  493. package/dist/jsx/FloatingPanel/PanelHeader.native.js +3 -8
  494. package/dist/jsx/FloatingPanel/PanelHeader.native.js.map +1 -1
  495. package/dist/jsx/FloatingPanel/coverRect.mjs +1 -8
  496. package/dist/jsx/FloatingPanel/coverRect.mjs.map +1 -1
  497. package/dist/jsx/FloatingPanel/coverRect.native.js +0 -8
  498. package/dist/jsx/FloatingPanel/coverRect.native.js.map +1 -1
  499. package/dist/jsx/FloatingPanel/echoContext.mjs +4 -24
  500. package/dist/jsx/FloatingPanel/echoContext.mjs.map +1 -1
  501. package/dist/jsx/FloatingPanel/echoContext.native.js +5 -28
  502. package/dist/jsx/FloatingPanel/echoContext.native.js.map +1 -1
  503. package/dist/jsx/FloatingPanel/index.mjs +53 -135
  504. package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
  505. package/dist/jsx/FloatingPanel/index.native.js +26 -91
  506. package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
  507. package/dist/jsx/fields/Combobox/index.mjs +4 -11
  508. package/dist/jsx/fields/Combobox/index.mjs.map +1 -1
  509. package/dist/jsx/fields/Combobox/index.native.js +3 -10
  510. package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
  511. package/dist/jsx/fields/Select/InlineChoices.mjs +2 -6
  512. package/dist/jsx/fields/Select/InlineChoices.mjs.map +1 -1
  513. package/dist/jsx/fields/Select/InlineChoices.native.js +4 -8
  514. package/dist/jsx/fields/Select/InlineChoices.native.js.map +1 -1
  515. package/dist/jsx/fields/Select/index.mjs +49 -202
  516. package/dist/jsx/fields/Select/index.mjs.map +1 -1
  517. package/dist/jsx/fields/Select/index.native.js +52 -207
  518. package/dist/jsx/fields/Select/index.native.js.map +1 -1
  519. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs +3 -3
  520. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -1
  521. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js +2 -2
  522. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  523. package/dist/jsx/index.js +3 -1
  524. package/dist/jsx/index.js.map +1 -1
  525. package/dist/jsx/index.mjs +3 -1
  526. package/dist/jsx/index.mjs.map +1 -1
  527. package/dist/jsx/index.native.js +4 -0
  528. package/dist/jsx/index.native.js.map +1 -1
  529. package/dist/jsx/shared/CheckGlyph.mjs +15 -0
  530. package/dist/jsx/shared/CheckGlyph.mjs.map +1 -0
  531. package/dist/jsx/shared/CheckGlyph.native.js +44 -0
  532. package/dist/jsx/shared/CheckGlyph.native.js.map +1 -0
  533. package/dist/jsx/shared/floatingList.mjs +80 -4
  534. package/dist/jsx/shared/floatingList.mjs.map +1 -1
  535. package/dist/jsx/shared/floatingList.native.js +95 -5
  536. package/dist/jsx/shared/floatingList.native.js.map +1 -1
  537. package/package.json +8 -8
  538. package/src/AdaptivePopup/index.tsx +2 -2
  539. package/src/Button/Button.glassPress.spec.tsx +117 -0
  540. package/src/Button/Button.iconButton.spec.tsx +39 -0
  541. package/src/Button/IconButtonGroup.spec.tsx +1 -1
  542. package/src/Button/glass.spec.ts +48 -18
  543. package/src/Button/glass.ts +5 -12
  544. package/src/Button/index.tsx +22 -10
  545. package/src/Button/webGlass.ts +5 -4
  546. package/src/FloatingPanel/FloatingPanel.iconCover.spec.tsx +279 -0
  547. package/src/FloatingPanel/FloatingPanel.menuFace.native.spec.tsx +78 -69
  548. package/src/FloatingPanel/FloatingPanel.seamlessCover.spec.tsx +12 -0
  549. package/src/FloatingPanel/PanelHeader.tsx +4 -12
  550. package/src/FloatingPanel/coverRect.ts +2 -15
  551. package/src/FloatingPanel/echoContext.ts +6 -40
  552. package/src/FloatingPanel/index.native.tsx +36 -145
  553. package/src/FloatingPanel/index.tsx +61 -187
  554. package/src/FloatingPanel/pointAnchor.spec.ts +1 -1
  555. package/src/FloatingPanel/pointAnchor.ts +4 -4
  556. package/src/fields/Combobox/index.tsx +4 -9
  557. package/src/fields/Select/InlineChoices.tsx +2 -2
  558. package/src/fields/Select/Select.containingBlock.spec.tsx +131 -130
  559. package/src/fields/Select/Select.stories.tsx +10 -0
  560. package/src/fields/Select/index.tsx +66 -253
  561. package/src/fields/nativeDateTime/OsDateTimeSheet.tsx +3 -3
  562. package/src/index.ts +2 -1
  563. package/src/shared/CheckGlyph.tsx +12 -0
  564. package/src/shared/floatingList.spec.tsx +154 -1
  565. package/src/shared/floatingList.tsx +125 -8
  566. package/types/Button/glass.d.ts +4 -3
  567. package/types/Button/glass.d.ts.map +1 -1
  568. package/types/Button/index.d.ts.map +1 -1
  569. package/types/Button/webGlass.d.ts +5 -4
  570. package/types/Button/webGlass.d.ts.map +1 -1
  571. package/types/FloatingPanel/PanelHeader.d.ts +1 -6
  572. package/types/FloatingPanel/PanelHeader.d.ts.map +1 -1
  573. package/types/FloatingPanel/coverRect.d.ts +2 -11
  574. package/types/FloatingPanel/coverRect.d.ts.map +1 -1
  575. package/types/FloatingPanel/echoContext.d.ts +5 -22
  576. package/types/FloatingPanel/echoContext.d.ts.map +1 -1
  577. package/types/FloatingPanel/index.d.ts +6 -8
  578. package/types/FloatingPanel/index.d.ts.map +1 -1
  579. package/types/FloatingPanel/index.native.d.ts +1 -1
  580. package/types/FloatingPanel/index.native.d.ts.map +1 -1
  581. package/types/FloatingPanel/pointAnchor.d.ts +4 -4
  582. package/types/fields/Combobox/index.d.ts.map +1 -1
  583. package/types/fields/Select/index.d.ts.map +1 -1
  584. package/types/index.d.ts +2 -1
  585. package/types/index.d.ts.map +1 -1
  586. package/types/shared/CheckGlyph.d.ts +10 -0
  587. package/types/shared/CheckGlyph.d.ts.map +1 -0
  588. package/types/shared/floatingList.d.ts +55 -1
  589. package/types/shared/floatingList.d.ts.map +1 -1
  590. package/dist/cjs/FloatingPanel/iconEcho.cjs +0 -106
  591. package/dist/cjs/FloatingPanel/iconEcho.native.js +0 -116
  592. package/dist/cjs/FloatingPanel/iconEcho.native.js.map +0 -1
  593. package/dist/esm/FloatingPanel/iconEcho.mjs +0 -79
  594. package/dist/esm/FloatingPanel/iconEcho.mjs.map +0 -1
  595. package/dist/esm/FloatingPanel/iconEcho.native.js +0 -86
  596. package/dist/esm/FloatingPanel/iconEcho.native.js.map +0 -1
  597. package/dist/jsx/FloatingPanel/iconEcho.mjs +0 -79
  598. package/dist/jsx/FloatingPanel/iconEcho.mjs.map +0 -1
  599. package/dist/jsx/FloatingPanel/iconEcho.native.js +0 -116
  600. package/dist/jsx/FloatingPanel/iconEcho.native.js.map +0 -1
  601. package/src/FloatingPanel/FloatingPanel.iconEcho.spec.tsx +0 -357
  602. package/src/FloatingPanel/iconEcho.tsx +0 -124
  603. package/types/FloatingPanel/iconEcho.d.ts +0 -29
  604. package/types/FloatingPanel/iconEcho.d.ts.map +0 -1
@@ -4,8 +4,8 @@
4
4
  * so only inside another overlay, so a sheet never stacks on a sheet.
5
5
  */
6
6
  import { renderWithProviders } from "@multiplatform.one/test-utils";
7
- import { act, render } from "@testing-library/react";
8
- import { PlusIcon, XIcon } from "@phosphor-icons/react";
7
+ import { act } from "@testing-library/react";
8
+ import { PlusIcon } from "@phosphor-icons/react";
9
9
  import { useState, type ReactNode } from "react";
10
10
  import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
11
11
  import { Text, XStack, YStack, getTokens, getVariableValue } from "tamagui";
@@ -462,7 +462,7 @@ describe("FloatingPanel native menu face panelWidth (LC-112, FZ-8438 r3)", () =>
462
462
  });
463
463
  });
464
464
 
465
- function EchoMenu({ kind }: { kind: "close" | "menu" }) {
465
+ function CoverMenu() {
466
466
  const [open, setOpen] = useState(false);
467
467
  return (
468
468
  <FloatingPanel
@@ -471,7 +471,7 @@ function EchoMenu({ kind }: { kind: "close" | "menu" }) {
471
471
  compactFace="menu"
472
472
  anchorMode="cover-trigger"
473
473
  triggerEcho={false}
474
- iconEcho={kind}
474
+ iconCover
475
475
  coverAlign="auto"
476
476
  triggerSizing="content"
477
477
  contentPadding="none"
@@ -483,67 +483,92 @@ function EchoMenu({ kind }: { kind: "close" | "menu" }) {
483
483
  );
484
484
  }
485
485
 
486
- const iconEcho = () =>
487
- document.querySelector<HTMLElement>('[data-testid="floating-panel-icon-echo"]');
488
- const iconBand = () =>
489
- document.querySelector<HTMLElement>('[data-testid="floating-panel-icon-echo-band"]');
490
- const glyphPath = (node: Element | null) => node?.querySelector("svg path")?.getAttribute("d");
486
+ const clip = () =>
487
+ document.querySelector<HTMLElement>('[data-testid="floating-panel-menu-clip"]') as HTMLElement;
488
+
489
+ /** The live prop a component took: RN-web drops the ones it has no DOM use for. */
490
+ function propOf<T>(node: Element, name: string): T | undefined {
491
+ const key = Object.keys(node).find((candidate) => candidate.startsWith("__reactFiber$"));
492
+ let fiber = (node as unknown as Record<string, FiberLike | undefined>)[key ?? ""];
493
+ while (fiber) {
494
+ const value = fiber.memoizedProps?.[name];
495
+ if (value !== undefined) return value as T;
496
+ fiber = fiber.return;
497
+ }
498
+ return undefined;
499
+ }
500
+ type FiberLike = { memoizedProps?: Record<string, unknown>; return?: FiberLike };
501
+
502
+ function settleMenu() {
503
+ layout(menu() as HTMLElement, MENU_MIN_WIDTH, 180);
504
+ act(() => {
505
+ vi.advanceTimersByTime(1000);
506
+ });
507
+ }
491
508
 
492
- describe("LC-112 icon trigger echo on native (FZ-8480, rv_2607879d3bdaf9bf)", () => {
493
- it("draws the + again as an X in the button's own box, at the menu's top trailing corner", () => {
509
+ describe("LC-112 icon trigger cover on native (FZ-8665, reversing Round 37's X)", () => {
510
+ it("covers the + from the button's top trailing corner and repeats nothing", () => {
494
511
  trigger = { x: 330, y: 60, width: 44, height: 44 };
495
- const result = renderWithProviders(<EchoMenu kind="close" />);
512
+ const result = renderWithProviders(<CoverMenu />);
496
513
  tap(result.getAllByRole("button", { name: "Add node" })[0]!);
497
514
  const panel = menu() as HTMLElement;
498
515
  layout(panel, MENU_MIN_WIDTH, 180);
499
516
  expect(panel.style.top).toBe(`${trigger.y}px`);
500
517
  expect(panel.style.left).toBe(`${trigger.x + trigger.width - MENU_MIN_WIDTH}px`);
501
- const band = iconBand() as HTMLElement;
502
- expect(band.style.height).toBe("44px");
503
- const box = band.firstElementChild as HTMLElement;
504
- expect(box.style.width).toBe("44px");
505
- expect(box.style.height).toBe("44px");
506
- // The box sits where the trigger is: its start offset is the trigger's x
507
- // less the menu's left edge.
508
- expect(box.style.marginInlineStart || box.style.marginLeft).toBe(
509
- `${trigger.x - (trigger.x + trigger.width - MENU_MIN_WIDTH)}px`,
510
- );
511
- const echoButton = iconEcho() as HTMLElement;
512
- expect(echoButton.getAttribute("aria-label")).toBe("Close");
513
- const x = render(<XIcon weight="bold" />);
514
- expect(glyphPath(echoButton)).toBe(glyphPath(x.container));
515
- x.unmount();
516
518
  expect(echo()).toBeNull();
519
+ expect(document.querySelector('[data-testid="floating-panel-icon-echo"]')).toBeNull();
520
+ expect(document.querySelector('[data-testid="floating-panel-icon-echo-band"]')).toBeNull();
517
521
  });
518
522
 
519
- it("closes the menu when the echo is pressed", () => {
523
+ it("starts the rows at the panel's top edge: the scroll view is the panel's only child", () => {
520
524
  trigger = { x: 330, y: 60, width: 44, height: 44 };
521
- const result = renderWithProviders(<EchoMenu kind="close" />);
525
+ const result = renderWithProviders(<CoverMenu />);
522
526
  tap(result.getAllByRole("button", { name: "Add node" })[0]!);
523
527
  layout(menu() as HTMLElement, MENU_MIN_WIDTH, 180);
524
- act(() => {
525
- vi.advanceTimersByTime(1000);
526
- });
527
- tap(iconEcho() as HTMLElement);
528
+ expect(clip().children).toHaveLength(1);
529
+ expect(clip().textContent).toBe("Add a node");
530
+ });
531
+
532
+ it("closes from the backdrop, which a screen reader reads as Close", () => {
533
+ trigger = { x: 330, y: 60, width: 44, height: 44 };
534
+ const result = renderWithProviders(<CoverMenu />);
535
+ tap(result.getAllByRole("button", { name: "Add node" })[0]!);
536
+ settleMenu();
537
+ tap(result.getByRole("button", { name: "Close" }));
538
+ expect(menu()).toBeNull();
539
+ });
540
+
541
+ it("closes from VoiceOver's escape gesture", () => {
542
+ trigger = { x: 330, y: 60, width: 44, height: 44 };
543
+ const result = renderWithProviders(<CoverMenu />);
544
+ tap(result.getAllByRole("button", { name: "Add node" })[0]!);
545
+ settleMenu();
546
+ const escape = propOf<() => void>(frame() as HTMLElement, "onAccessibilityEscape");
547
+ expect(escape).toBeTypeOf("function");
548
+ act(() => escape?.());
528
549
  expect(menu()).toBeNull();
529
550
  });
530
551
 
531
- it("turns a menu trigger into an X too, and opens up from the button's bottom edge near the bottom", () => {
552
+ it("is modal to VoiceOver, holding only its backdrop Close and the panel", () => {
553
+ trigger = { x: 330, y: 60, width: 44, height: 44 };
554
+ const result = renderWithProviders(<CoverMenu />);
555
+ tap(result.getAllByRole("button", { name: "Add node" })[0]!);
556
+ settleMenu();
557
+ const layer = document.querySelector<HTMLElement>('[data-testid="floating-panel-menu-layer"]');
558
+ expect(layer).not.toBeNull();
559
+ expect(propOf<boolean>(layer as HTMLElement, "accessibilityViewIsModal")).toBe(true);
560
+ expect(layer?.contains(result.getByRole("button", { name: "Close" }))).toBe(true);
561
+ expect(layer?.contains(menu())).toBe(true);
562
+ });
563
+
564
+ it("still covers its button when it opens up from the bottom edge", () => {
532
565
  trigger = { x: 20, y: 760, width: 44, height: 44 };
533
- const result = renderWithProviders(<EchoMenu kind="menu" />);
534
- const live = result.getAllByRole("button", { name: "Add node" })[0]!;
535
- tap(live);
566
+ const result = renderWithProviders(<CoverMenu />);
567
+ tap(result.getAllByRole("button", { name: "Add node" })[0]!);
536
568
  const panel = menu() as HTMLElement;
537
569
  layout(panel, MENU_MIN_WIDTH, 300);
538
570
  expect(parseFloat(panel.style.top) + 300).toBe(trigger.y + trigger.height);
539
- const surface = frame() as HTMLElement;
540
- const band = iconBand() as HTMLElement;
541
- const clip = surface.querySelector('[data-testid="floating-panel-menu-clip"]') as HTMLElement;
542
- expect(clip.lastElementChild).toBe(band);
543
- const x = render(<XIcon weight="bold" />);
544
- expect(glyphPath(iconEcho())).toBe(glyphPath(x.container));
545
- x.unmount();
546
- expect(glyphPath(iconEcho())).not.toBe(glyphPath(live));
571
+ expect(clip().children).toHaveLength(1);
547
572
  });
548
573
  });
549
574
 
@@ -554,11 +579,11 @@ const capsuleSurface = (plate: IconButtonGroupPlate): IconButtonGroupSurface =>
554
579
  describe("LC-112 grouped glass capsule on native (FZ-8550, Round 37 second pass)", () => {
555
580
  const plate = { x: 200, y: 50, width: 174, height: 44, radius: 22 };
556
581
 
557
- it("covers the whole capsule from context at its radius; only the pressed trigger shows, as its X", () => {
582
+ it("covers the whole capsule from context at its radius, showing none of its buttons", () => {
558
583
  trigger = { x: 330, y: 50, width: 44, height: 44 };
559
584
  const result = renderWithProviders(
560
585
  <IconButtonGroupSurfaceContext.Provider value={capsuleSurface(plate)}>
561
- <EchoMenu kind="menu" />
586
+ <CoverMenu />
562
587
  </IconButtonGroupSurfaceContext.Provider>,
563
588
  );
564
589
  tap(result.getAllByRole("button", { name: "Add node" })[0]!);
@@ -572,18 +597,8 @@ describe("LC-112 grouped glass capsule on native (FZ-8550, Round 37 second pass)
572
597
  expect(left + MENU_MIN_WIDTH).toBeGreaterThanOrEqual(plate.x + plate.width);
573
598
  expect(left).toBe(plate.x + plate.width - MENU_MIN_WIDTH);
574
599
  expect(corners(frame() as HTMLElement)).toEqual(radiusAtoms(plate.radius));
575
- // The band is the capsule's height; the X keeps the trigger's own box.
576
- const band = iconBand() as HTMLElement;
577
- expect(band.style.height).toBe(`${plate.height}px`);
578
- const box = band.firstElementChild as HTMLElement;
579
- expect(box.style.width).toBe(`${trigger.width}px`);
580
- expect(box.style.marginInlineStart || box.style.marginLeft).toBe(`${trigger.x - left}px`);
581
- // Only the pressed trigger shows, as an X; nothing else of the group.
582
- const echoes = document.querySelectorAll('[data-testid="floating-panel-icon-echo"]');
583
- expect(echoes).toHaveLength(1);
584
- const x = render(<XIcon weight="bold" />);
585
- expect(glyphPath(echoes[0] as Element)).toBe(glyphPath(x.container));
586
- x.unmount();
600
+ expect(clip().children).toHaveLength(1);
601
+ expect(clip().textContent).toBe("Add a node");
587
602
  });
588
603
 
589
604
  it("takes the capsule's width as its floor when the capsule is wider than the menu", () => {
@@ -591,7 +606,7 @@ describe("LC-112 grouped glass capsule on native (FZ-8550, Round 37 second pass)
591
606
  trigger = { x: 330, y: 50, width: 44, height: 44 };
592
607
  const result = renderWithProviders(
593
608
  <IconButtonGroupSurfaceContext.Provider value={capsuleSurface(wide)}>
594
- <EchoMenu kind="menu" />
609
+ <CoverMenu />
595
610
  </IconButtonGroupSurfaceContext.Provider>,
596
611
  );
597
612
  tap(result.getAllByRole("button", { name: "Add node" })[0]!);
@@ -612,7 +627,7 @@ describe("LC-112 grouped glass capsule on native (FZ-8550, Round 37 second pass)
612
627
  },
613
628
  }}
614
629
  >
615
- <EchoMenu kind="menu" />
630
+ <CoverMenu />
616
631
  </IconButtonGroupSurfaceContext.Provider>,
617
632
  );
618
633
  tap(result.getAllByRole("button", { name: "Add node" })[0]!);
@@ -626,20 +641,14 @@ describe("LC-112 grouped glass capsule on native (FZ-8550, Round 37 second pass)
626
641
 
627
642
  it("covers a 32pt avatar at its 44pt target, so its centre is the row-icon column (FZ-8480)", () => {
628
643
  trigger = { x: 100, y: 56, width: 32, height: 32 };
629
- const result = renderWithProviders(<EchoMenu kind="menu" />);
644
+ const result = renderWithProviders(<CoverMenu />);
630
645
  tap(result.getAllByRole("button", { name: "Add node" })[0]!);
631
646
  const panel = menu() as HTMLElement;
632
647
  layout(panel, MENU_MIN_WIDTH, 180);
633
648
  const inset = (MIN_PRESS_TARGET - trigger.width) / 2;
634
649
  expect(panel.style.left).toBe(`${trigger.x - inset}px`);
635
650
  expect(panel.style.top).toBe(`${trigger.y - inset}px`);
636
- const band = iconBand() as HTMLElement;
637
- expect(band.style.height).toBe(`${MIN_PRESS_TARGET}px`);
638
- const box = band.firstElementChild as HTMLElement;
639
- expect(box.style.width).toBe(`${trigger.width}px`);
640
- expect(box.style.marginTop).toBe(`${inset}px`);
641
- expect(box.style.marginInlineStart || box.style.marginLeft).toBe(`${inset}px`);
642
- // The X's centre sits half a press target in: where a row's leading
651
+ // The avatar's centre sits half a press target in: where a row's leading
643
652
  // glyph centres (row inset plus half its 18pt slot, on the frame border).
644
653
  expect(inset + trigger.width / 2).toBe(MIN_PRESS_TARGET / 2);
645
654
  });
@@ -212,6 +212,18 @@ describe("LC-112 icon trigger: the menu opens on its button (rv_d86cc201997dffd4
212
212
  expect(within(panel).queryByRole("button", { name: "Appearance" })).toBeNull();
213
213
  });
214
214
 
215
+ it("lands on a whole pixel when its button sits on a half pixel, so rows reach the far edge (FZ-8557)", async () => {
216
+ const button = { x: 16.5, y: 12, width: 40, height: 40 };
217
+ measure(button, 124.6);
218
+ const result = renderWithProviders(<IconPanel />);
219
+ fireEvent.click(result.getByRole("button", { name: "Appearance" }), { detail: 0 });
220
+ const panel = (await result.findByTestId("floating-panel-viewport")) as HTMLElement;
221
+ await waitFor(() => expect(panel.style.top).toBe(`${button.y}px`));
222
+ const left = parseFloat(panel.style.left);
223
+ expect(Number.isInteger(left)).toBe(true);
224
+ expect(Math.abs(left - button.x)).toBeLessThanOrEqual(0.5);
225
+ });
226
+
215
227
  it("slides up over its button near the bottom edge instead of opening a sheet", async () => {
216
228
  const button = { x: 16, y: window.innerHeight - 60, width: 44, height: 44 };
217
229
  measure(button, 200);
@@ -1,22 +1,14 @@
1
1
  import { XStack, type XStackProps } from "tamagui";
2
- import { usePanelIconEchoBox } from "./echoContext";
3
2
 
4
- /**
5
- * A floating panel's header row (LC-112, FZ-8480 Round 37). Over an
6
- * icon-trigger panel whose X shares the header's row, it takes the X's
7
- * height and centres its content on the X's line, keeping clear of the X;
8
- * anywhere else it is the panel's padded top row.
9
- */
3
+ /** A floating panel's title row: the panel's padded top row (LC-112). */
10
4
  export function PanelHeader({ children, ...rest }: XStackProps) {
11
- const echo = usePanelIconEchoBox();
12
5
  return (
13
6
  <XStack
14
7
  alignItems="center"
15
8
  gap="$2"
16
- paddingLeft={echo?.left || "$4"}
17
- paddingRight={echo?.right || "$4"}
18
- paddingTop={echo ? 0 : "$4"}
19
- {...(echo ? { minHeight: echo.height } : undefined)}
9
+ paddingLeft="$4"
10
+ paddingRight="$4"
11
+ paddingTop="$4"
20
12
  data-fp-panel-header=""
21
13
  {...rest}
22
14
  >
@@ -5,8 +5,8 @@ import type { TriggerRect } from "./pointAnchor";
5
5
  * The 44pt box an icon trigger is pressed in, centred on the trigger
6
6
  * (LC-176). A trigger drawn smaller than its target (a 32pt avatar) is
7
7
  * covered at its target, so the panel's row-icon column, which centres on
8
- * a 44pt start inset, runs through the trigger's centre and the X drawn on
9
- * it (FZ-8480 GAP). A trigger at least that big is its own box.
8
+ * a 44pt start inset, runs through the trigger's centre (FZ-8480 GAP). A
9
+ * trigger at least that big is its own box.
10
10
  */
11
11
  export function pressTargetRect(trigger: TriggerRect, min = MIN_PRESS_TARGET): TriggerRect {
12
12
  const width = Math.max(trigger.width, min);
@@ -27,16 +27,3 @@ export function pressTargetRect(trigger: TriggerRect, min = MIN_PRESS_TARGET): T
27
27
  export function iconCoverRect(trigger: TriggerRect, group: TriggerRect | null): TriggerRect {
28
28
  return group ?? pressTargetRect(trigger);
29
29
  }
30
-
31
- /**
32
- * Where the trigger sits inside the surface its panel covers: the X box's
33
- * offset from the cover's top, and the band's height. Null when the cover is
34
- * the trigger itself.
35
- */
36
- export function echoInCover(
37
- trigger: TriggerRect,
38
- cover: TriggerRect,
39
- ): { top: number; height: number } | null {
40
- if (cover.y === trigger.y && cover.height === trigger.height) return null;
41
- return { top: trigger.y - cover.y, height: cover.height };
42
- }
@@ -22,46 +22,12 @@ export function usePanelTriggerRadiusReporter(): ((radius: number) => void) | nu
22
22
  }
23
23
 
24
24
  /**
25
- * The X a panel lays over its content's header row (LC-112, FZ-8480 Round
26
- * 37): its height, and how far the header keeps clear of it on each side.
27
- * A panel header sits on the X's line and never runs under it.
25
+ * True inside a panel's sheet face (a phone's bottom sheet, web or native). A
26
+ * sheet isn't laid over its trigger, so LC-112's echo row has nothing to
27
+ * cover: a picker titles the sheet instead, per HIG (FZ-8557, Round 40).
28
28
  */
29
- export interface PanelIconEchoBox {
30
- height: number;
31
- left: number;
32
- right: number;
33
- }
34
-
35
- export const PanelIconEchoBoxContext = createContext<PanelIconEchoBox | null>(null);
36
-
37
- export function usePanelIconEchoBox(): PanelIconEchoBox | null {
38
- return useContext(PanelIconEchoBoxContext);
39
- }
40
-
41
- /**
42
- * The header's clearance around an X `offset` in from the panel's start edge:
43
- * the X's side keeps clear of it, the other side keeps none of its own.
44
- */
45
- export function echoHeaderBox({
46
- offset,
47
- width,
48
- height,
49
- panelWidth,
50
- rtl = false,
51
- }: {
52
- offset: number;
53
- width: number;
54
- height: number;
55
- panelWidth: number;
56
- rtl?: boolean;
57
- }): PanelIconEchoBox {
58
- const atStart = offset + width / 2 < panelWidth / 2;
59
- const start = atStart ? Math.max(0, offset + width) : 0;
60
- const end = atStart ? 0 : Math.max(0, panelWidth - offset);
61
- return { height, left: rtl ? end : start, right: rtl ? start : end };
62
- }
29
+ export const PanelSheetContext = createContext(false);
63
30
 
64
- export function sameEchoBox(a: PanelIconEchoBox | null, b: PanelIconEchoBox | null): boolean {
65
- if (a == null || b == null) return a === b;
66
- return a.height === b.height && a.left === b.left && a.right === b.right;
31
+ export function useInPanelSheet(): boolean {
32
+ return useContext(PanelSheetContext);
67
33
  }