@multiplatform.one/forms 7.81.2 → 7.82.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 (707) 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.cjs +13 -9
  4. package/dist/cjs/Button/IconButtonGroup.native.js +13 -9
  5. package/dist/cjs/Button/IconButtonGroup.native.js.map +1 -1
  6. package/dist/cjs/Button/circleGlyph.native.js.map +1 -1
  7. package/dist/cjs/Button/iconButtonGroupContext.cjs +6 -0
  8. package/dist/cjs/Button/iconButtonGroupContext.native.js +6 -0
  9. package/dist/cjs/Button/iconButtonGroupContext.native.js.map +1 -1
  10. package/dist/cjs/Button/index.cjs +38 -26
  11. package/dist/cjs/Button/index.native.js +40 -28
  12. package/dist/cjs/Button/index.native.js.map +1 -1
  13. package/dist/cjs/Button/webGlass.native.js.map +1 -1
  14. package/dist/cjs/Chip/index.native.js.map +1 -1
  15. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js +1 -1
  16. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  17. package/dist/cjs/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
  18. package/dist/cjs/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
  19. package/dist/cjs/ContextualSaveBar/index.native.js +3 -3
  20. package/dist/cjs/ContextualSaveBar/index.native.js.map +1 -1
  21. package/dist/cjs/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
  22. package/dist/cjs/ControlGroup/index.native.js +1 -1
  23. package/dist/cjs/ControlGroup/index.native.js.map +1 -1
  24. package/dist/cjs/DescriptionList/index.native.js +2 -2
  25. package/dist/cjs/DescriptionList/index.native.js.map +1 -1
  26. package/dist/cjs/ErrorSummary.native.js.map +1 -1
  27. package/dist/cjs/FieldDisplay/editMode.native.js.map +1 -1
  28. package/dist/cjs/FieldDisplay/formatters.native.js.map +1 -1
  29. package/dist/cjs/FieldDisplay/index.native.js +1 -1
  30. package/dist/cjs/FieldDisplay/index.native.js.map +1 -1
  31. package/dist/cjs/FieldGroup.native.js.map +1 -1
  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.native.js.map +1 -1
  37. package/dist/cjs/FloatingPanel/echoContext.native.js.map +1 -1
  38. package/dist/cjs/FloatingPanel/nestedAction.native.js.map +1 -1
  39. package/dist/cjs/FloatingPanel/paintedBox.native.js.map +1 -1
  40. package/dist/cjs/FloatingPanel/panelWidth.native.js.map +1 -1
  41. package/dist/cjs/FloatingPanel/pointAnchor.native.js.map +1 -1
  42. package/dist/cjs/FloatingPanel/regularPlacement.native.js.map +1 -1
  43. package/dist/cjs/FloatingPanel/trailingAction.native.js +1 -1
  44. package/dist/cjs/FloatingPanel/trailingAction.native.js.map +1 -1
  45. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  46. package/dist/cjs/Form/index.native.js +1 -1
  47. package/dist/cjs/Form/index.native.js.map +1 -1
  48. package/dist/cjs/Form/submissionController.native.js.map +1 -1
  49. package/dist/cjs/Form/validateOn.native.js.map +1 -1
  50. package/dist/cjs/FormGrid.native.js.map +1 -1
  51. package/dist/cjs/FormSection.native.js.map +1 -1
  52. package/dist/cjs/InputParts/PasswordReveal.native.js.map +1 -1
  53. package/dist/cjs/InputParts/index.cjs +12 -6
  54. package/dist/cjs/InputParts/index.native.js +12 -6
  55. package/dist/cjs/InputParts/index.native.js.map +1 -1
  56. package/dist/cjs/InputParts/keyboardAppearance.native.js.map +1 -1
  57. package/dist/cjs/Label/index.native.js.map +1 -1
  58. package/dist/cjs/MediaPicker/base64.native.js.map +1 -1
  59. package/dist/cjs/MediaPicker/payload.native.js.map +1 -1
  60. package/dist/cjs/MediaPicker/types.native.js.map +1 -1
  61. package/dist/cjs/MediaPicker/useMediaPicker.native.js.map +1 -1
  62. package/dist/cjs/Skeleton/index.native.js.map +1 -1
  63. package/dist/cjs/Spinner/SpinnerGlyph.native.js.map +1 -1
  64. package/dist/cjs/Spinner/spinnerSize.native.js.map +1 -1
  65. package/dist/cjs/Table/index.native.js.map +1 -1
  66. package/dist/cjs/Wheel/haptic.native.js.map +1 -1
  67. package/dist/cjs/Wheel/index.native.js.map +1 -1
  68. package/dist/cjs/Wheel/wheelShared.native.js.map +1 -1
  69. package/dist/cjs/actionLabel.native.js.map +1 -1
  70. package/dist/cjs/fieldDefaults.native.js.map +1 -1
  71. package/dist/cjs/fieldLayout.native.js +1 -1
  72. package/dist/cjs/fieldLayout.native.js.map +1 -1
  73. package/dist/cjs/fields/Barcode/BarcodePreview.native.js.map +1 -1
  74. package/dist/cjs/fields/Barcode/BarcodeScanner.native.js +1 -1
  75. package/dist/cjs/fields/Barcode/code128.native.js.map +1 -1
  76. package/dist/cjs/fields/Barcode/index.native.js +2 -2
  77. package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
  78. package/dist/cjs/fields/Barcode/qr.native.js.map +1 -1
  79. package/dist/cjs/fields/Barcode/scannerTypes.native.js.map +1 -1
  80. package/dist/cjs/fields/Checkbox/Checkbox.native.js +1 -1
  81. package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -1
  82. package/dist/cjs/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  83. package/dist/cjs/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  84. package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  85. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js +1 -1
  86. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  87. package/dist/cjs/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
  88. package/dist/cjs/fields/Checkbox/index.native.js.map +1 -1
  89. package/dist/cjs/fields/ColorPicker/SystemColorField.native.js.map +1 -1
  90. package/dist/cjs/fields/ColorPicker/index.native.js +2 -2
  91. package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
  92. package/dist/cjs/fields/ColorPicker/parts.native.js +2 -2
  93. package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
  94. package/dist/cjs/fields/ColorPicker/systemColorWell.gnome.native.js.map +1 -1
  95. package/dist/cjs/fields/Combobox/authorOptions.native.js.map +1 -1
  96. package/dist/cjs/fields/Combobox/index.native.js +5 -5
  97. package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
  98. package/dist/cjs/fields/DatePicker/Calendar.native.js.map +1 -1
  99. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +2 -2
  100. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  101. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js +3 -3
  102. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  103. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +2 -2
  104. package/dist/cjs/fields/DatePicker/MonthPicker.native.js +2 -2
  105. package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -1
  106. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +2 -2
  107. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  108. package/dist/cjs/fields/DatePicker/catalog.native.js +2 -2
  109. package/dist/cjs/fields/DatePicker/catalog.native.js.map +1 -1
  110. package/dist/cjs/fields/DatePicker/fieldValueSync.native.js.map +1 -1
  111. package/dist/cjs/fields/DatePicker/index.native.js +2 -2
  112. package/dist/cjs/fields/DatePicker/parts.native.js +2 -2
  113. package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
  114. package/dist/cjs/fields/DatePicker/utils.native.js.map +1 -1
  115. package/dist/cjs/fields/Duration/DurationWheel.native.js +1 -1
  116. package/dist/cjs/fields/Duration/durationMath.native.js.map +1 -1
  117. package/dist/cjs/fields/Duration/durationWheelTypes.native.js.map +1 -1
  118. package/dist/cjs/fields/Duration/index.native.js +3 -3
  119. package/dist/cjs/fields/Duration/index.native.js.map +1 -1
  120. package/dist/cjs/fields/FileUpload/filePickerTypes.native.js.map +1 -1
  121. package/dist/cjs/fields/FileUpload/index.native.js +2 -2
  122. package/dist/cjs/fields/FileUpload/index.native.js.map +1 -1
  123. package/dist/cjs/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  124. package/dist/cjs/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
  125. package/dist/cjs/fields/Geolocation/geoValue.native.js.map +1 -1
  126. package/dist/cjs/fields/Geolocation/geocoder.native.js.map +1 -1
  127. package/dist/cjs/fields/Geolocation/geocoderContext.native.js.map +1 -1
  128. package/dist/cjs/fields/Geolocation/index.native.js +5 -5
  129. package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
  130. package/dist/cjs/fields/Geolocation/mapMath.native.js.map +1 -1
  131. package/dist/cjs/fields/Geolocation/mapTypes.native.js.map +1 -1
  132. package/dist/cjs/fields/Geolocation/nativeSearchFocus.native.js.map +1 -1
  133. package/dist/cjs/fields/Geolocation/photonGeocoder.native.js.map +1 -1
  134. package/dist/cjs/fields/Icon/drawnSet.native.js.map +1 -1
  135. package/dist/cjs/fields/Icon/index.native.js +3 -3
  136. package/dist/cjs/fields/Icon/index.native.js.map +1 -1
  137. package/dist/cjs/fields/ImageField/index.native.js +2 -2
  138. package/dist/cjs/fields/ImageField/index.native.js.map +1 -1
  139. package/dist/cjs/fields/Input/index.native.js +3 -3
  140. package/dist/cjs/fields/Input/index.native.js.map +1 -1
  141. package/dist/cjs/fields/MentionInput/index.native.js +3 -3
  142. package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
  143. package/dist/cjs/fields/OTPInput/index.native.js +3 -3
  144. package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
  145. package/dist/cjs/fields/OTPInput/otpCellCss.native.js.map +1 -1
  146. package/dist/cjs/fields/PhoneInput/dialCodes.native.js.map +1 -1
  147. package/dist/cjs/fields/PhoneInput/index.native.js +3 -3
  148. package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
  149. package/dist/cjs/fields/PhoneInput/phone.native.js.map +1 -1
  150. package/dist/cjs/fields/PhoneInput/regionNames.native.js.map +1 -1
  151. package/dist/cjs/fields/Progress/index.native.js +1 -1
  152. package/dist/cjs/fields/Progress/index.native.js.map +1 -1
  153. package/dist/cjs/fields/RadioGroup/index.native.js +1 -1
  154. package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
  155. package/dist/cjs/fields/Rating/index.native.js +1 -1
  156. package/dist/cjs/fields/Rating/index.native.js.map +1 -1
  157. package/dist/cjs/fields/Rating/ratingMath.native.js.map +1 -1
  158. package/dist/cjs/fields/Rating/types.native.js.map +1 -1
  159. package/dist/cjs/fields/SearchInput/index.native.js +2 -2
  160. package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
  161. package/dist/cjs/fields/Select/InlineChoices.native.js.map +1 -1
  162. package/dist/cjs/fields/Select/SheetPickerRow.native.js.map +1 -1
  163. package/dist/cjs/fields/Select/index.native.js +4 -4
  164. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  165. package/dist/cjs/fields/Select/shouldInlineChoices.native.js.map +1 -1
  166. package/dist/cjs/fields/Signature/index.native.js +2 -2
  167. package/dist/cjs/fields/Signature/index.native.js.map +1 -1
  168. package/dist/cjs/fields/Slider/index.native.js +1 -1
  169. package/dist/cjs/fields/Slider/index.native.js.map +1 -1
  170. package/dist/cjs/fields/Slider/jumpMotion.native.js.map +1 -1
  171. package/dist/cjs/fields/Stepper/index.native.js +2 -2
  172. package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
  173. package/dist/cjs/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
  174. package/dist/cjs/fields/Switch/footprint.native.js.map +1 -1
  175. package/dist/cjs/fields/Switch/index.native.js +2 -2
  176. package/dist/cjs/fields/Switch/index.native.js.map +1 -1
  177. package/dist/cjs/fields/TextArea/index.native.js +2 -2
  178. package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
  179. package/dist/cjs/fields/TimePicker/catalog.native.js +3 -3
  180. package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -1
  181. package/dist/cjs/fields/TimePicker/index.native.js +2 -2
  182. package/dist/cjs/fields/TimePicker/parts.native.js +1 -1
  183. package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
  184. package/dist/cjs/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
  185. package/dist/cjs/fields/TimeRangeScrubber/index.native.js +2 -2
  186. package/dist/cjs/fields/TimeRangeScrubber/index.native.js.map +1 -1
  187. package/dist/cjs/fields/ToggleGroup/index.native.js +1 -1
  188. package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
  189. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js +1 -1
  190. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  191. package/dist/cjs/fields/nativeDateTime/dateTimePickerLoader.native.js.map +1 -1
  192. package/dist/cjs/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
  193. package/dist/cjs/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -1
  194. package/dist/cjs/fields/nativeSelect.native.js.map +1 -1
  195. package/dist/cjs/fields/selectedOrder.native.js.map +1 -1
  196. package/dist/cjs/formSpacing.native.js.map +1 -1
  197. package/dist/cjs/hooks/useFocusManagement.native.js.map +1 -1
  198. package/dist/cjs/index.cjs +1 -0
  199. package/dist/cjs/index.native.js +46 -45
  200. package/dist/cjs/index.native.js.map +1 -1
  201. package/dist/cjs/keyboard/KeyboardDoneBar.native.js +1 -1
  202. package/dist/cjs/keyboard/chain.native.js.map +1 -1
  203. package/dist/cjs/keyboard/index.native.js.map +1 -1
  204. package/dist/cjs/keyboard/types.native.js.map +1 -1
  205. package/dist/cjs/requiredMarking.native.js.map +1 -1
  206. package/dist/cjs/shared/CheckGlyph.native.js.map +1 -1
  207. package/dist/cjs/shared/TimeColumn.native.js +1 -1
  208. package/dist/cjs/shared/TimeColumn.native.js.map +1 -1
  209. package/dist/cjs/shared/capabilityPreflight.native.js.map +1 -1
  210. package/dist/cjs/shared/checkedOnField.native.js.map +1 -1
  211. package/dist/cjs/shared/choiceRowPress.native.js.map +1 -1
  212. package/dist/cjs/shared/colorRamps.native.js.map +1 -1
  213. package/dist/cjs/shared/devWarn.native.js.map +1 -1
  214. package/dist/cjs/shared/fieldRowContext.native.js.map +1 -1
  215. package/dist/cjs/shared/floatingList.native.js +1 -1
  216. package/dist/cjs/shared/floatingList.native.js.map +1 -1
  217. package/dist/cjs/shared/focusManagement.native.js.map +1 -1
  218. package/dist/cjs/shared/groupContext.native.js.map +1 -1
  219. package/dist/cjs/shared/i18n.native.js.map +1 -1
  220. package/dist/cjs/shared/instantMotion.native.js.map +1 -1
  221. package/dist/cjs/shared/nativeA11y.native.js.map +1 -1
  222. package/dist/cjs/shared/nativeAutoFocus.native.js.map +1 -1
  223. package/dist/cjs/shared/overlaySizeClass.native.js.map +1 -1
  224. package/dist/cjs/shared/overlayStack.native.js.map +1 -1
  225. package/dist/cjs/shared/panelPortal.native.js.map +1 -1
  226. package/dist/cjs/shared/pickerTriggerContract.native.js.map +1 -1
  227. package/dist/cjs/shared/pressSlopProps.native.js.map +1 -1
  228. package/dist/cjs/shared/restoreRetries.native.js.map +1 -1
  229. package/dist/cjs/shared/sheetNavigation.native.js.map +1 -1
  230. package/dist/cjs/shared/systemControlModules.gnome.native.js.map +1 -1
  231. package/dist/cjs/shared/systemControls.native.js.map +1 -1
  232. package/dist/cjs/shared/t.native.js.map +1 -1
  233. package/dist/cjs/shared/tableCellContext.native.js.map +1 -1
  234. package/dist/cjs/shared/useDragScroll.native.js.map +1 -1
  235. package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
  236. package/dist/cjs/shared/useSheetEscapeDismiss.native.js.map +1 -1
  237. package/dist/cjs/shared/useWheelIncrement.native.js.map +1 -1
  238. package/dist/cjs/shared/utils.native.js +1 -1
  239. package/dist/cjs/shared/utils.native.js.map +1 -1
  240. package/dist/cjs/shared/zIndex.native.js.map +1 -1
  241. package/dist/cjs/standardActions.native.js.map +1 -1
  242. package/dist/cjs/themedPrimitives.native.js.map +1 -1
  243. package/dist/cjs/types.native.js.map +1 -1
  244. package/dist/cjs/utils/LinkCell.native.js.map +1 -1
  245. package/dist/esm/AdaptivePopup/index.native.js.map +1 -1
  246. package/dist/esm/Button/IconButtonGroup.mjs +14 -10
  247. package/dist/esm/Button/IconButtonGroup.mjs.map +1 -1
  248. package/dist/esm/Button/IconButtonGroup.native.js +14 -10
  249. package/dist/esm/Button/IconButtonGroup.native.js.map +1 -1
  250. package/dist/esm/Button/circleGlyph.native.js.map +1 -1
  251. package/dist/esm/Button/iconButtonGroupContext.mjs +5 -1
  252. package/dist/esm/Button/iconButtonGroupContext.mjs.map +1 -1
  253. package/dist/esm/Button/iconButtonGroupContext.native.js +5 -1
  254. package/dist/esm/Button/iconButtonGroupContext.native.js.map +1 -1
  255. package/dist/esm/Button/index.mjs +39 -28
  256. package/dist/esm/Button/index.mjs.map +1 -1
  257. package/dist/esm/Button/index.native.js +39 -28
  258. package/dist/esm/Button/index.native.js.map +1 -1
  259. package/dist/esm/Button/webGlass.native.js.map +1 -1
  260. package/dist/esm/Chip/index.native.js.map +1 -1
  261. package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  262. package/dist/esm/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
  263. package/dist/esm/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
  264. package/dist/esm/ContextualSaveBar/index.native.js.map +1 -1
  265. package/dist/esm/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
  266. package/dist/esm/ControlGroup/index.native.js.map +1 -1
  267. package/dist/esm/DescriptionList/index.native.js.map +1 -1
  268. package/dist/esm/ErrorSummary.native.js.map +1 -1
  269. package/dist/esm/FieldDisplay/editMode.native.js.map +1 -1
  270. package/dist/esm/FieldDisplay/formatters.native.js.map +1 -1
  271. package/dist/esm/FieldDisplay/index.native.js.map +1 -1
  272. package/dist/esm/FieldGroup.native.js.map +1 -1
  273. package/dist/esm/FloatingPanel/PanelHeader.native.js.map +1 -1
  274. package/dist/esm/FloatingPanel/RegularPanel.native.js.map +1 -1
  275. package/dist/esm/FloatingPanel/compactFace.native.js.map +1 -1
  276. package/dist/esm/FloatingPanel/containingBlock.native.js.map +1 -1
  277. package/dist/esm/FloatingPanel/coverRect.native.js.map +1 -1
  278. package/dist/esm/FloatingPanel/echoContext.native.js.map +1 -1
  279. package/dist/esm/FloatingPanel/nestedAction.native.js.map +1 -1
  280. package/dist/esm/FloatingPanel/paintedBox.native.js.map +1 -1
  281. package/dist/esm/FloatingPanel/panelWidth.native.js.map +1 -1
  282. package/dist/esm/FloatingPanel/pointAnchor.native.js.map +1 -1
  283. package/dist/esm/FloatingPanel/regularPlacement.native.js.map +1 -1
  284. package/dist/esm/FloatingPanel/trailingAction.native.js.map +1 -1
  285. package/dist/esm/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  286. package/dist/esm/Form/index.native.js.map +1 -1
  287. package/dist/esm/Form/submissionController.native.js.map +1 -1
  288. package/dist/esm/Form/validateOn.native.js.map +1 -1
  289. package/dist/esm/FormGrid.native.js.map +1 -1
  290. package/dist/esm/FormSection.native.js.map +1 -1
  291. package/dist/esm/InputParts/PasswordReveal.native.js.map +1 -1
  292. package/dist/esm/InputParts/index.mjs +13 -7
  293. package/dist/esm/InputParts/index.mjs.map +1 -1
  294. package/dist/esm/InputParts/index.native.js +13 -7
  295. package/dist/esm/InputParts/index.native.js.map +1 -1
  296. package/dist/esm/InputParts/keyboardAppearance.native.js.map +1 -1
  297. package/dist/esm/Label/index.native.js.map +1 -1
  298. package/dist/esm/MediaPicker/base64.native.js.map +1 -1
  299. package/dist/esm/MediaPicker/payload.native.js.map +1 -1
  300. package/dist/esm/MediaPicker/types.native.js.map +1 -1
  301. package/dist/esm/MediaPicker/useMediaPicker.native.js.map +1 -1
  302. package/dist/esm/Skeleton/index.native.js.map +1 -1
  303. package/dist/esm/Spinner/SpinnerGlyph.native.js.map +1 -1
  304. package/dist/esm/Spinner/spinnerSize.native.js.map +1 -1
  305. package/dist/esm/Table/index.native.js.map +1 -1
  306. package/dist/esm/Wheel/haptic.native.js.map +1 -1
  307. package/dist/esm/Wheel/index.native.js.map +1 -1
  308. package/dist/esm/Wheel/wheelShared.native.js.map +1 -1
  309. package/dist/esm/actionLabel.native.js.map +1 -1
  310. package/dist/esm/fieldDefaults.native.js.map +1 -1
  311. package/dist/esm/fieldLayout.native.js.map +1 -1
  312. package/dist/esm/fields/Barcode/BarcodePreview.native.js.map +1 -1
  313. package/dist/esm/fields/Barcode/code128.native.js.map +1 -1
  314. package/dist/esm/fields/Barcode/index.native.js.map +1 -1
  315. package/dist/esm/fields/Barcode/qr.native.js.map +1 -1
  316. package/dist/esm/fields/Barcode/scannerTypes.native.js.map +1 -1
  317. package/dist/esm/fields/Checkbox/Checkbox.native.js.map +1 -1
  318. package/dist/esm/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  319. package/dist/esm/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  320. package/dist/esm/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  321. package/dist/esm/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  322. package/dist/esm/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
  323. package/dist/esm/fields/Checkbox/index.native.js.map +1 -1
  324. package/dist/esm/fields/ColorPicker/SystemColorField.native.js.map +1 -1
  325. package/dist/esm/fields/ColorPicker/index.native.js.map +1 -1
  326. package/dist/esm/fields/ColorPicker/parts.native.js.map +1 -1
  327. package/dist/esm/fields/ColorPicker/systemColorWell.gnome.native.js.map +1 -1
  328. package/dist/esm/fields/Combobox/authorOptions.native.js.map +1 -1
  329. package/dist/esm/fields/Combobox/index.native.js.map +1 -1
  330. package/dist/esm/fields/DatePicker/Calendar.native.js.map +1 -1
  331. package/dist/esm/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  332. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  333. package/dist/esm/fields/DatePicker/MonthPicker.native.js.map +1 -1
  334. package/dist/esm/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  335. package/dist/esm/fields/DatePicker/catalog.native.js.map +1 -1
  336. package/dist/esm/fields/DatePicker/fieldValueSync.native.js.map +1 -1
  337. package/dist/esm/fields/DatePicker/parts.native.js.map +1 -1
  338. package/dist/esm/fields/DatePicker/utils.native.js.map +1 -1
  339. package/dist/esm/fields/Duration/durationMath.native.js.map +1 -1
  340. package/dist/esm/fields/Duration/durationWheelTypes.native.js.map +1 -1
  341. package/dist/esm/fields/Duration/index.native.js.map +1 -1
  342. package/dist/esm/fields/FileUpload/filePickerTypes.native.js.map +1 -1
  343. package/dist/esm/fields/FileUpload/index.native.js.map +1 -1
  344. package/dist/esm/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  345. package/dist/esm/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
  346. package/dist/esm/fields/Geolocation/geoValue.native.js.map +1 -1
  347. package/dist/esm/fields/Geolocation/geocoder.native.js.map +1 -1
  348. package/dist/esm/fields/Geolocation/geocoderContext.native.js.map +1 -1
  349. package/dist/esm/fields/Geolocation/index.native.js.map +1 -1
  350. package/dist/esm/fields/Geolocation/mapMath.native.js.map +1 -1
  351. package/dist/esm/fields/Geolocation/mapTypes.native.js.map +1 -1
  352. package/dist/esm/fields/Geolocation/nativeSearchFocus.native.js.map +1 -1
  353. package/dist/esm/fields/Geolocation/photonGeocoder.native.js.map +1 -1
  354. package/dist/esm/fields/Icon/drawnSet.native.js.map +1 -1
  355. package/dist/esm/fields/Icon/index.native.js.map +1 -1
  356. package/dist/esm/fields/ImageField/index.native.js.map +1 -1
  357. package/dist/esm/fields/Input/index.native.js.map +1 -1
  358. package/dist/esm/fields/MentionInput/index.native.js.map +1 -1
  359. package/dist/esm/fields/OTPInput/index.native.js.map +1 -1
  360. package/dist/esm/fields/OTPInput/otpCellCss.native.js.map +1 -1
  361. package/dist/esm/fields/PhoneInput/dialCodes.native.js.map +1 -1
  362. package/dist/esm/fields/PhoneInput/index.native.js.map +1 -1
  363. package/dist/esm/fields/PhoneInput/phone.native.js.map +1 -1
  364. package/dist/esm/fields/PhoneInput/regionNames.native.js.map +1 -1
  365. package/dist/esm/fields/Progress/index.native.js.map +1 -1
  366. package/dist/esm/fields/RadioGroup/index.native.js.map +1 -1
  367. package/dist/esm/fields/Rating/index.native.js.map +1 -1
  368. package/dist/esm/fields/Rating/ratingMath.native.js.map +1 -1
  369. package/dist/esm/fields/Rating/types.native.js.map +1 -1
  370. package/dist/esm/fields/SearchInput/index.native.js.map +1 -1
  371. package/dist/esm/fields/Select/InlineChoices.native.js.map +1 -1
  372. package/dist/esm/fields/Select/SheetPickerRow.native.js.map +1 -1
  373. package/dist/esm/fields/Select/index.native.js.map +1 -1
  374. package/dist/esm/fields/Select/shouldInlineChoices.native.js.map +1 -1
  375. package/dist/esm/fields/Signature/index.native.js.map +1 -1
  376. package/dist/esm/fields/Slider/index.native.js.map +1 -1
  377. package/dist/esm/fields/Slider/jumpMotion.native.js.map +1 -1
  378. package/dist/esm/fields/Stepper/index.native.js.map +1 -1
  379. package/dist/esm/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
  380. package/dist/esm/fields/Switch/footprint.native.js.map +1 -1
  381. package/dist/esm/fields/Switch/index.native.js.map +1 -1
  382. package/dist/esm/fields/TextArea/index.native.js.map +1 -1
  383. package/dist/esm/fields/TimePicker/catalog.native.js.map +1 -1
  384. package/dist/esm/fields/TimePicker/parts.native.js.map +1 -1
  385. package/dist/esm/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
  386. package/dist/esm/fields/TimeRangeScrubber/index.native.js.map +1 -1
  387. package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -1
  388. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  389. package/dist/esm/fields/nativeDateTime/dateTimePickerLoader.native.js.map +1 -1
  390. package/dist/esm/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
  391. package/dist/esm/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -1
  392. package/dist/esm/fields/nativeSelect.native.js.map +1 -1
  393. package/dist/esm/fields/selectedOrder.native.js.map +1 -1
  394. package/dist/esm/formSpacing.native.js.map +1 -1
  395. package/dist/esm/hooks/useFocusManagement.native.js.map +1 -1
  396. package/dist/esm/index.mjs +2 -2
  397. package/dist/esm/index.mjs.map +1 -1
  398. package/dist/esm/index.native.js +2 -2
  399. package/dist/esm/index.native.js.map +1 -1
  400. package/dist/esm/keyboard/chain.native.js.map +1 -1
  401. package/dist/esm/keyboard/index.native.js.map +1 -1
  402. package/dist/esm/keyboard/types.native.js.map +1 -1
  403. package/dist/esm/requiredMarking.native.js.map +1 -1
  404. package/dist/esm/shared/CheckGlyph.native.js.map +1 -1
  405. package/dist/esm/shared/TimeColumn.native.js.map +1 -1
  406. package/dist/esm/shared/capabilityPreflight.native.js.map +1 -1
  407. package/dist/esm/shared/checkedOnField.native.js.map +1 -1
  408. package/dist/esm/shared/choiceRowPress.native.js.map +1 -1
  409. package/dist/esm/shared/colorRamps.native.js.map +1 -1
  410. package/dist/esm/shared/devWarn.native.js.map +1 -1
  411. package/dist/esm/shared/fieldRowContext.native.js.map +1 -1
  412. package/dist/esm/shared/floatingList.native.js.map +1 -1
  413. package/dist/esm/shared/focusManagement.native.js.map +1 -1
  414. package/dist/esm/shared/groupContext.native.js.map +1 -1
  415. package/dist/esm/shared/i18n.native.js.map +1 -1
  416. package/dist/esm/shared/instantMotion.native.js.map +1 -1
  417. package/dist/esm/shared/nativeA11y.native.js.map +1 -1
  418. package/dist/esm/shared/nativeAutoFocus.native.js.map +1 -1
  419. package/dist/esm/shared/overlaySizeClass.native.js.map +1 -1
  420. package/dist/esm/shared/overlayStack.native.js.map +1 -1
  421. package/dist/esm/shared/panelPortal.native.js.map +1 -1
  422. package/dist/esm/shared/pickerTriggerContract.native.js.map +1 -1
  423. package/dist/esm/shared/pressSlopProps.native.js.map +1 -1
  424. package/dist/esm/shared/restoreRetries.native.js.map +1 -1
  425. package/dist/esm/shared/sheetNavigation.native.js.map +1 -1
  426. package/dist/esm/shared/systemControlModules.gnome.native.js.map +1 -1
  427. package/dist/esm/shared/systemControls.native.js.map +1 -1
  428. package/dist/esm/shared/t.native.js.map +1 -1
  429. package/dist/esm/shared/tableCellContext.native.js.map +1 -1
  430. package/dist/esm/shared/useDragScroll.native.js.map +1 -1
  431. package/dist/esm/shared/useKeyboardInset.native.js.map +1 -1
  432. package/dist/esm/shared/useSheetEscapeDismiss.native.js.map +1 -1
  433. package/dist/esm/shared/useWheelIncrement.native.js.map +1 -1
  434. package/dist/esm/shared/utils.native.js.map +1 -1
  435. package/dist/esm/shared/zIndex.native.js.map +1 -1
  436. package/dist/esm/standardActions.native.js.map +1 -1
  437. package/dist/esm/themedPrimitives.native.js.map +1 -1
  438. package/dist/esm/types.native.js.map +1 -1
  439. package/dist/esm/utils/LinkCell.native.js.map +1 -1
  440. package/dist/jsx/AdaptivePopup/index.native.js +2 -2
  441. package/dist/jsx/AdaptivePopup/index.native.js.map +1 -1
  442. package/dist/jsx/Button/IconButtonGroup.mjs +14 -10
  443. package/dist/jsx/Button/IconButtonGroup.mjs.map +1 -1
  444. package/dist/jsx/Button/IconButtonGroup.native.js +13 -9
  445. package/dist/jsx/Button/IconButtonGroup.native.js.map +1 -1
  446. package/dist/jsx/Button/circleGlyph.native.js.map +1 -1
  447. package/dist/jsx/Button/iconButtonGroupContext.mjs +5 -1
  448. package/dist/jsx/Button/iconButtonGroupContext.mjs.map +1 -1
  449. package/dist/jsx/Button/iconButtonGroupContext.native.js +6 -0
  450. package/dist/jsx/Button/iconButtonGroupContext.native.js.map +1 -1
  451. package/dist/jsx/Button/index.mjs +39 -28
  452. package/dist/jsx/Button/index.mjs.map +1 -1
  453. package/dist/jsx/Button/index.native.js +40 -28
  454. package/dist/jsx/Button/index.native.js.map +1 -1
  455. package/dist/jsx/Button/webGlass.native.js.map +1 -1
  456. package/dist/jsx/Chip/index.native.js.map +1 -1
  457. package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.native.js +1 -1
  458. package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  459. package/dist/jsx/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
  460. package/dist/jsx/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
  461. package/dist/jsx/ContextualSaveBar/index.native.js +3 -3
  462. package/dist/jsx/ContextualSaveBar/index.native.js.map +1 -1
  463. package/dist/jsx/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
  464. package/dist/jsx/ControlGroup/index.native.js +1 -1
  465. package/dist/jsx/ControlGroup/index.native.js.map +1 -1
  466. package/dist/jsx/DescriptionList/index.native.js +2 -2
  467. package/dist/jsx/DescriptionList/index.native.js.map +1 -1
  468. package/dist/jsx/ErrorSummary.native.js.map +1 -1
  469. package/dist/jsx/FieldDisplay/editMode.native.js.map +1 -1
  470. package/dist/jsx/FieldDisplay/formatters.native.js.map +1 -1
  471. package/dist/jsx/FieldDisplay/index.native.js +1 -1
  472. package/dist/jsx/FieldDisplay/index.native.js.map +1 -1
  473. package/dist/jsx/FieldGroup.native.js.map +1 -1
  474. package/dist/jsx/FloatingPanel/PanelHeader.native.js.map +1 -1
  475. package/dist/jsx/FloatingPanel/RegularPanel.native.js.map +1 -1
  476. package/dist/jsx/FloatingPanel/compactFace.native.js.map +1 -1
  477. package/dist/jsx/FloatingPanel/containingBlock.native.js.map +1 -1
  478. package/dist/jsx/FloatingPanel/coverRect.native.js.map +1 -1
  479. package/dist/jsx/FloatingPanel/echoContext.native.js.map +1 -1
  480. package/dist/jsx/FloatingPanel/nestedAction.native.js.map +1 -1
  481. package/dist/jsx/FloatingPanel/paintedBox.native.js.map +1 -1
  482. package/dist/jsx/FloatingPanel/panelWidth.native.js.map +1 -1
  483. package/dist/jsx/FloatingPanel/pointAnchor.native.js.map +1 -1
  484. package/dist/jsx/FloatingPanel/regularPlacement.native.js.map +1 -1
  485. package/dist/jsx/FloatingPanel/trailingAction.native.js +1 -1
  486. package/dist/jsx/FloatingPanel/trailingAction.native.js.map +1 -1
  487. package/dist/jsx/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  488. package/dist/jsx/Form/index.native.js +1 -1
  489. package/dist/jsx/Form/index.native.js.map +1 -1
  490. package/dist/jsx/Form/submissionController.native.js.map +1 -1
  491. package/dist/jsx/Form/validateOn.native.js.map +1 -1
  492. package/dist/jsx/FormGrid.native.js.map +1 -1
  493. package/dist/jsx/FormSection.native.js.map +1 -1
  494. package/dist/jsx/InputParts/PasswordReveal.native.js.map +1 -1
  495. package/dist/jsx/InputParts/index.mjs +13 -7
  496. package/dist/jsx/InputParts/index.mjs.map +1 -1
  497. package/dist/jsx/InputParts/index.native.js +12 -6
  498. package/dist/jsx/InputParts/index.native.js.map +1 -1
  499. package/dist/jsx/InputParts/keyboardAppearance.native.js.map +1 -1
  500. package/dist/jsx/Label/index.native.js.map +1 -1
  501. package/dist/jsx/MediaPicker/base64.native.js.map +1 -1
  502. package/dist/jsx/MediaPicker/payload.native.js.map +1 -1
  503. package/dist/jsx/MediaPicker/types.native.js.map +1 -1
  504. package/dist/jsx/MediaPicker/useMediaPicker.native.js.map +1 -1
  505. package/dist/jsx/Skeleton/index.native.js.map +1 -1
  506. package/dist/jsx/Spinner/SpinnerGlyph.native.js.map +1 -1
  507. package/dist/jsx/Spinner/spinnerSize.native.js.map +1 -1
  508. package/dist/jsx/Table/index.native.js.map +1 -1
  509. package/dist/jsx/Wheel/haptic.native.js.map +1 -1
  510. package/dist/jsx/Wheel/index.native.js.map +1 -1
  511. package/dist/jsx/Wheel/wheelShared.native.js.map +1 -1
  512. package/dist/jsx/actionLabel.native.js.map +1 -1
  513. package/dist/jsx/fieldDefaults.native.js.map +1 -1
  514. package/dist/jsx/fieldLayout.native.js +1 -1
  515. package/dist/jsx/fieldLayout.native.js.map +1 -1
  516. package/dist/jsx/fields/Barcode/BarcodePreview.native.js.map +1 -1
  517. package/dist/jsx/fields/Barcode/BarcodeScanner.native.js +1 -1
  518. package/dist/jsx/fields/Barcode/code128.native.js.map +1 -1
  519. package/dist/jsx/fields/Barcode/index.native.js +2 -2
  520. package/dist/jsx/fields/Barcode/index.native.js.map +1 -1
  521. package/dist/jsx/fields/Barcode/qr.native.js.map +1 -1
  522. package/dist/jsx/fields/Barcode/scannerTypes.native.js.map +1 -1
  523. package/dist/jsx/fields/Checkbox/Checkbox.native.js +1 -1
  524. package/dist/jsx/fields/Checkbox/Checkbox.native.js.map +1 -1
  525. package/dist/jsx/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  526. package/dist/jsx/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  527. package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  528. package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js +1 -1
  529. package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  530. package/dist/jsx/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
  531. package/dist/jsx/fields/Checkbox/index.native.js.map +1 -1
  532. package/dist/jsx/fields/ColorPicker/SystemColorField.native.js.map +1 -1
  533. package/dist/jsx/fields/ColorPicker/index.native.js +2 -2
  534. package/dist/jsx/fields/ColorPicker/index.native.js.map +1 -1
  535. package/dist/jsx/fields/ColorPicker/parts.native.js +2 -2
  536. package/dist/jsx/fields/ColorPicker/parts.native.js.map +1 -1
  537. package/dist/jsx/fields/ColorPicker/systemColorWell.gnome.native.js.map +1 -1
  538. package/dist/jsx/fields/Combobox/authorOptions.native.js.map +1 -1
  539. package/dist/jsx/fields/Combobox/index.native.js +5 -5
  540. package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
  541. package/dist/jsx/fields/DatePicker/Calendar.native.js.map +1 -1
  542. package/dist/jsx/fields/DatePicker/DateRangePicker.native.js +2 -2
  543. package/dist/jsx/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  544. package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js +3 -3
  545. package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  546. package/dist/jsx/fields/DatePicker/DatetimePicker.native.js +2 -2
  547. package/dist/jsx/fields/DatePicker/MonthPicker.native.js +2 -2
  548. package/dist/jsx/fields/DatePicker/MonthPicker.native.js.map +1 -1
  549. package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js +2 -2
  550. package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  551. package/dist/jsx/fields/DatePicker/catalog.native.js +2 -2
  552. package/dist/jsx/fields/DatePicker/catalog.native.js.map +1 -1
  553. package/dist/jsx/fields/DatePicker/fieldValueSync.native.js.map +1 -1
  554. package/dist/jsx/fields/DatePicker/index.native.js +2 -2
  555. package/dist/jsx/fields/DatePicker/parts.native.js +2 -2
  556. package/dist/jsx/fields/DatePicker/parts.native.js.map +1 -1
  557. package/dist/jsx/fields/DatePicker/utils.native.js.map +1 -1
  558. package/dist/jsx/fields/Duration/DurationWheel.native.js +1 -1
  559. package/dist/jsx/fields/Duration/durationMath.native.js.map +1 -1
  560. package/dist/jsx/fields/Duration/durationWheelTypes.native.js.map +1 -1
  561. package/dist/jsx/fields/Duration/index.native.js +3 -3
  562. package/dist/jsx/fields/Duration/index.native.js.map +1 -1
  563. package/dist/jsx/fields/FileUpload/filePickerTypes.native.js.map +1 -1
  564. package/dist/jsx/fields/FileUpload/index.native.js +2 -2
  565. package/dist/jsx/fields/FileUpload/index.native.js.map +1 -1
  566. package/dist/jsx/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  567. package/dist/jsx/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
  568. package/dist/jsx/fields/Geolocation/geoValue.native.js.map +1 -1
  569. package/dist/jsx/fields/Geolocation/geocoder.native.js.map +1 -1
  570. package/dist/jsx/fields/Geolocation/geocoderContext.native.js.map +1 -1
  571. package/dist/jsx/fields/Geolocation/index.native.js +5 -5
  572. package/dist/jsx/fields/Geolocation/index.native.js.map +1 -1
  573. package/dist/jsx/fields/Geolocation/mapMath.native.js.map +1 -1
  574. package/dist/jsx/fields/Geolocation/mapTypes.native.js.map +1 -1
  575. package/dist/jsx/fields/Geolocation/nativeSearchFocus.native.js.map +1 -1
  576. package/dist/jsx/fields/Geolocation/photonGeocoder.native.js.map +1 -1
  577. package/dist/jsx/fields/Icon/drawnSet.native.js.map +1 -1
  578. package/dist/jsx/fields/Icon/index.native.js +3 -3
  579. package/dist/jsx/fields/Icon/index.native.js.map +1 -1
  580. package/dist/jsx/fields/ImageField/index.native.js +2 -2
  581. package/dist/jsx/fields/ImageField/index.native.js.map +1 -1
  582. package/dist/jsx/fields/Input/index.native.js +3 -3
  583. package/dist/jsx/fields/Input/index.native.js.map +1 -1
  584. package/dist/jsx/fields/MentionInput/index.native.js +3 -3
  585. package/dist/jsx/fields/MentionInput/index.native.js.map +1 -1
  586. package/dist/jsx/fields/OTPInput/index.native.js +3 -3
  587. package/dist/jsx/fields/OTPInput/index.native.js.map +1 -1
  588. package/dist/jsx/fields/OTPInput/otpCellCss.native.js.map +1 -1
  589. package/dist/jsx/fields/PhoneInput/dialCodes.native.js.map +1 -1
  590. package/dist/jsx/fields/PhoneInput/index.native.js +3 -3
  591. package/dist/jsx/fields/PhoneInput/index.native.js.map +1 -1
  592. package/dist/jsx/fields/PhoneInput/phone.native.js.map +1 -1
  593. package/dist/jsx/fields/PhoneInput/regionNames.native.js.map +1 -1
  594. package/dist/jsx/fields/Progress/index.native.js +1 -1
  595. package/dist/jsx/fields/Progress/index.native.js.map +1 -1
  596. package/dist/jsx/fields/RadioGroup/index.native.js +1 -1
  597. package/dist/jsx/fields/RadioGroup/index.native.js.map +1 -1
  598. package/dist/jsx/fields/Rating/index.native.js +1 -1
  599. package/dist/jsx/fields/Rating/index.native.js.map +1 -1
  600. package/dist/jsx/fields/Rating/ratingMath.native.js.map +1 -1
  601. package/dist/jsx/fields/Rating/types.native.js.map +1 -1
  602. package/dist/jsx/fields/SearchInput/index.native.js +2 -2
  603. package/dist/jsx/fields/SearchInput/index.native.js.map +1 -1
  604. package/dist/jsx/fields/Select/InlineChoices.native.js.map +1 -1
  605. package/dist/jsx/fields/Select/SheetPickerRow.native.js.map +1 -1
  606. package/dist/jsx/fields/Select/index.native.js +4 -4
  607. package/dist/jsx/fields/Select/index.native.js.map +1 -1
  608. package/dist/jsx/fields/Select/shouldInlineChoices.native.js.map +1 -1
  609. package/dist/jsx/fields/Signature/index.native.js +2 -2
  610. package/dist/jsx/fields/Signature/index.native.js.map +1 -1
  611. package/dist/jsx/fields/Slider/index.native.js +1 -1
  612. package/dist/jsx/fields/Slider/index.native.js.map +1 -1
  613. package/dist/jsx/fields/Slider/jumpMotion.native.js.map +1 -1
  614. package/dist/jsx/fields/Stepper/index.native.js +2 -2
  615. package/dist/jsx/fields/Stepper/index.native.js.map +1 -1
  616. package/dist/jsx/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
  617. package/dist/jsx/fields/Switch/footprint.native.js.map +1 -1
  618. package/dist/jsx/fields/Switch/index.native.js +2 -2
  619. package/dist/jsx/fields/Switch/index.native.js.map +1 -1
  620. package/dist/jsx/fields/TextArea/index.native.js +2 -2
  621. package/dist/jsx/fields/TextArea/index.native.js.map +1 -1
  622. package/dist/jsx/fields/TimePicker/catalog.native.js +3 -3
  623. package/dist/jsx/fields/TimePicker/catalog.native.js.map +1 -1
  624. package/dist/jsx/fields/TimePicker/index.native.js +2 -2
  625. package/dist/jsx/fields/TimePicker/parts.native.js +1 -1
  626. package/dist/jsx/fields/TimePicker/parts.native.js.map +1 -1
  627. package/dist/jsx/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
  628. package/dist/jsx/fields/TimeRangeScrubber/index.native.js +2 -2
  629. package/dist/jsx/fields/TimeRangeScrubber/index.native.js.map +1 -1
  630. package/dist/jsx/fields/ToggleGroup/index.native.js +1 -1
  631. package/dist/jsx/fields/ToggleGroup/index.native.js.map +1 -1
  632. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js +1 -1
  633. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  634. package/dist/jsx/fields/nativeDateTime/dateTimePickerLoader.native.js.map +1 -1
  635. package/dist/jsx/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
  636. package/dist/jsx/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -1
  637. package/dist/jsx/fields/nativeSelect.native.js.map +1 -1
  638. package/dist/jsx/fields/selectedOrder.native.js.map +1 -1
  639. package/dist/jsx/formSpacing.native.js.map +1 -1
  640. package/dist/jsx/hooks/useFocusManagement.native.js.map +1 -1
  641. package/dist/jsx/index.js +2 -2
  642. package/dist/jsx/index.js.map +1 -1
  643. package/dist/jsx/index.mjs +2 -2
  644. package/dist/jsx/index.mjs.map +1 -1
  645. package/dist/jsx/index.native.js +46 -45
  646. package/dist/jsx/index.native.js.map +1 -1
  647. package/dist/jsx/keyboard/KeyboardDoneBar.native.js +1 -1
  648. package/dist/jsx/keyboard/chain.native.js.map +1 -1
  649. package/dist/jsx/keyboard/index.native.js.map +1 -1
  650. package/dist/jsx/keyboard/types.native.js.map +1 -1
  651. package/dist/jsx/requiredMarking.native.js.map +1 -1
  652. package/dist/jsx/shared/CheckGlyph.native.js.map +1 -1
  653. package/dist/jsx/shared/TimeColumn.native.js +1 -1
  654. package/dist/jsx/shared/TimeColumn.native.js.map +1 -1
  655. package/dist/jsx/shared/capabilityPreflight.native.js.map +1 -1
  656. package/dist/jsx/shared/checkedOnField.native.js.map +1 -1
  657. package/dist/jsx/shared/choiceRowPress.native.js.map +1 -1
  658. package/dist/jsx/shared/colorRamps.native.js.map +1 -1
  659. package/dist/jsx/shared/devWarn.native.js.map +1 -1
  660. package/dist/jsx/shared/fieldRowContext.native.js.map +1 -1
  661. package/dist/jsx/shared/floatingList.native.js +1 -1
  662. package/dist/jsx/shared/floatingList.native.js.map +1 -1
  663. package/dist/jsx/shared/focusManagement.native.js.map +1 -1
  664. package/dist/jsx/shared/groupContext.native.js.map +1 -1
  665. package/dist/jsx/shared/i18n.native.js.map +1 -1
  666. package/dist/jsx/shared/instantMotion.native.js.map +1 -1
  667. package/dist/jsx/shared/nativeA11y.native.js.map +1 -1
  668. package/dist/jsx/shared/nativeAutoFocus.native.js.map +1 -1
  669. package/dist/jsx/shared/overlaySizeClass.native.js.map +1 -1
  670. package/dist/jsx/shared/overlayStack.native.js.map +1 -1
  671. package/dist/jsx/shared/panelPortal.native.js.map +1 -1
  672. package/dist/jsx/shared/pickerTriggerContract.native.js.map +1 -1
  673. package/dist/jsx/shared/pressSlopProps.native.js.map +1 -1
  674. package/dist/jsx/shared/restoreRetries.native.js.map +1 -1
  675. package/dist/jsx/shared/sheetNavigation.native.js.map +1 -1
  676. package/dist/jsx/shared/systemControlModules.gnome.native.js.map +1 -1
  677. package/dist/jsx/shared/systemControls.native.js.map +1 -1
  678. package/dist/jsx/shared/t.native.js.map +1 -1
  679. package/dist/jsx/shared/tableCellContext.native.js.map +1 -1
  680. package/dist/jsx/shared/useDragScroll.native.js.map +1 -1
  681. package/dist/jsx/shared/useKeyboardInset.native.js.map +1 -1
  682. package/dist/jsx/shared/useSheetEscapeDismiss.native.js.map +1 -1
  683. package/dist/jsx/shared/useWheelIncrement.native.js.map +1 -1
  684. package/dist/jsx/shared/utils.native.js +1 -1
  685. package/dist/jsx/shared/utils.native.js.map +1 -1
  686. package/dist/jsx/shared/zIndex.native.js.map +1 -1
  687. package/dist/jsx/standardActions.native.js.map +1 -1
  688. package/dist/jsx/themedPrimitives.native.js.map +1 -1
  689. package/dist/jsx/types.native.js.map +1 -1
  690. package/dist/jsx/utils/LinkCell.native.js.map +1 -1
  691. package/package.json +8 -8
  692. package/src/Button/Button.fieldGlyph.spec.tsx +186 -0
  693. package/src/Button/Button.stories.tsx +97 -82
  694. package/src/Button/IconButtonGroup.spec.tsx +48 -1
  695. package/src/Button/IconButtonGroup.tsx +26 -12
  696. package/src/Button/iconButtonGroupContext.ts +12 -0
  697. package/src/Button/index.tsx +73 -35
  698. package/src/InputParts/index.tsx +40 -27
  699. package/src/index.ts +1 -0
  700. package/types/Button/IconButtonGroup.d.ts.map +1 -1
  701. package/types/Button/iconButtonGroupContext.d.ts +8 -0
  702. package/types/Button/iconButtonGroupContext.d.ts.map +1 -1
  703. package/types/Button/index.d.ts +1 -0
  704. package/types/Button/index.d.ts.map +1 -1
  705. package/types/InputParts/index.d.ts.map +1 -1
  706. package/types/index.d.ts +1 -1
  707. package/types/index.d.ts.map +1 -1
@@ -0,0 +1,186 @@
1
+ /**
2
+ * @vitest-environment jsdom
3
+ *
4
+ * LC-176 (FZ-8711, Round 48): an icon button in a field's leading or trailing
5
+ * slot is part of the field. Clay, on the list search's filter and sort glass
6
+ * circles overhanging the field: "Liquid glass icon should not be inside of
7
+ * inputs though right you should do the no borders no background when you put
8
+ * them inside of here right". On iOS Safari and on native iOS 26 alike it is
9
+ * the bare tinted glyph, even when the field sits in a bar; glass stays on the
10
+ * bar's own buttons.
11
+ */
12
+
13
+ import { createDefaultThemeConfig, Surface, useFieldSurface } from "@multiplatform.one/theme";
14
+ import { cleanup, render, screen } from "@testing-library/react";
15
+ import type { ReactElement } from "react";
16
+ import { TamaguiProvider } from "tamagui";
17
+ import { afterEach, describe, expect, it, vi } from "vitest";
18
+ import { SearchInput } from "../fields/SearchInput";
19
+ import { Input as InputParts } from "../InputParts";
20
+ import { Button, IconButton, IconButtonGroup } from "./index";
21
+
22
+ const glass = vi.hoisted(() => ({ system: false }));
23
+ vi.mock("./glass", async (importOriginal) => {
24
+ const real = await importOriginal<typeof import("./glass")>();
25
+ function FakeSystemGlass({
26
+ glassEffectStyle: _style,
27
+ isInteractive: _interactive,
28
+ colorScheme: _scheme,
29
+ children,
30
+ ...props
31
+ }: Record<string, unknown>) {
32
+ return (
33
+ <div data-glass="system" {...props}>
34
+ {children as never}
35
+ </div>
36
+ );
37
+ }
38
+ return {
39
+ ...real,
40
+ // Native iOS 26 with expo-glass-effect linked, else the real web loader
41
+ // (iOS Safari's drawn face, nothing elsewhere).
42
+ loadGlassView: () => (glass.system ? FakeSystemGlass : real.loadGlassView()),
43
+ loadGlassContainer: () => (glass.system ? FakeSystemGlass : null),
44
+ };
45
+ });
46
+
47
+ afterEach(() => {
48
+ cleanup();
49
+ vi.unstubAllGlobals();
50
+ glass.system = false;
51
+ });
52
+
53
+ const IPHONE =
54
+ "Mozilla/5.0 (iPhone; CPU iPhone OS 26_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1";
55
+
56
+ const houseConfig = createDefaultThemeConfig();
57
+
58
+ function Glyph({ size, weight }: { size?: number; weight?: string }) {
59
+ return <svg data-glyph="" data-weight={weight} width={size} height={size} />;
60
+ }
61
+
62
+ function houseRender(ui: ReactElement, scheme: "light" | "dark") {
63
+ return render(
64
+ <TamaguiProvider config={houseConfig.tamagui} defaultTheme={scheme} disableInjectCSS>
65
+ {ui}
66
+ </TamaguiProvider>,
67
+ );
68
+ }
69
+
70
+ /** A bar holding a search field with filter and sort in its trailing slot, and a bar button. */
71
+ function SearchBar() {
72
+ return (
73
+ <Surface bar>
74
+ <SearchInput
75
+ value=""
76
+ onChange={() => {}}
77
+ aria-label="Search"
78
+ trailing={
79
+ <>
80
+ <Button chromeless accentInk icon={Glyph} aria-label="Filter" />
81
+ <IconButton icon={Glyph} aria-label="Sort" />
82
+ </>
83
+ }
84
+ />
85
+ <IconButton icon={Glyph} aria-label="Add" />
86
+ </Surface>
87
+ );
88
+ }
89
+
90
+ function hasGlass(label: string): boolean {
91
+ return screen.getByLabelText(label).querySelector("[data-glass], [data-mp-glass]") != null;
92
+ }
93
+
94
+ const PLATFORMS = [
95
+ [
96
+ "iOS Safari",
97
+ () => vi.stubGlobal("navigator", { userAgent: IPHONE, platform: "iPhone", maxTouchPoints: 5 }),
98
+ ],
99
+ ["native iOS 26", () => (glass.system = true)],
100
+ ] as const;
101
+
102
+ describe("LC-176: an icon button in a field's slot is the field's bare glyph (FZ-8711)", () => {
103
+ describe.each(PLATFORMS)("%s", (_platform, onIPhone) => {
104
+ it.each(["light", "dark"] as const)(
105
+ "the search's filter and sort draw no glass while the bar's own button keeps it (%s)",
106
+ (scheme) => {
107
+ onIPhone();
108
+ houseRender(<SearchBar />, scheme);
109
+ for (const label of ["Filter", "Sort"]) {
110
+ const button = screen.getByLabelText(label);
111
+ expect(hasGlass(label)).toBe(false);
112
+ expect(button.getAttribute("data-mp-icon-button")).toBe("glyph");
113
+ // Bold glyph, tinted, on its 44pt square.
114
+ expect(button.querySelector("[data-glyph]")!.getAttribute("data-weight")).toBe("bold");
115
+ }
116
+ expect(hasGlass("Add")).toBe(true);
117
+ expect(screen.getByLabelText("Add").getAttribute("data-mp-icon-button")).toBe("glass");
118
+ },
119
+ );
120
+
121
+ it("a framed, plated or toggled icon button in a slot still draws only its glyph", () => {
122
+ onIPhone();
123
+ houseRender(
124
+ <Surface bar>
125
+ <InputParts>
126
+ <InputParts.Box>
127
+ <InputParts.Area aria-label="Value" />
128
+ <Button outlined icon={Glyph} aria-label="Outlined" />
129
+ <Button circular icon={Glyph} aria-label="Circle" />
130
+ <Button plate="media" icon={Glyph} aria-label="Media" />
131
+ <Button selected icon={Glyph} aria-label="Toggle" />
132
+ </InputParts.Box>
133
+ </InputParts>
134
+ </Surface>,
135
+ "light",
136
+ );
137
+ for (const label of ["Outlined", "Circle", "Media", "Toggle"]) {
138
+ const button = screen.getByLabelText(label);
139
+ expect(hasGlass(label)).toBe(false);
140
+ expect(button.getAttribute("data-mp-icon-button")).toBe("glyph");
141
+ expect(button.getAttribute("data-mp-selected")).toBeNull();
142
+ }
143
+ });
144
+
145
+ it("a group in a slot paints no capsule", () => {
146
+ onIPhone();
147
+ houseRender(
148
+ <Surface bar>
149
+ <InputParts>
150
+ <InputParts.Box>
151
+ <InputParts.Area aria-label="Value" />
152
+ <IconButtonGroup data-testid="slot-group">
153
+ <IconButton icon={Glyph} aria-label="Filter" />
154
+ <IconButton icon={Glyph} aria-label="Sort" />
155
+ </IconButtonGroup>
156
+ </InputParts.Box>
157
+ </InputParts>
158
+ </Surface>,
159
+ "light",
160
+ );
161
+ const group = screen.getByTestId("slot-group");
162
+ expect(group.querySelector("[data-glass], [data-mp-glass]")).toBeNull();
163
+ expect(group.getAttribute("data-mp-icon-button-group")).not.toBe("glass");
164
+ });
165
+ });
166
+
167
+ it("an overlay opened from a slot is content again, not part of the field", () => {
168
+ let insideField: boolean | undefined;
169
+ let insideOverlay: boolean | undefined;
170
+ function Probe({ onRead }: { onRead: (field: boolean) => void }) {
171
+ onRead(useFieldSurface());
172
+ return null;
173
+ }
174
+ houseRender(
175
+ <Surface field>
176
+ <Probe onRead={(field) => (insideField = field)} />
177
+ <Surface painted={false} elevated>
178
+ <Probe onRead={(field) => (insideOverlay = field)} />
179
+ </Surface>
180
+ </Surface>,
181
+ "light",
182
+ );
183
+ expect(insideField).toBe(true);
184
+ expect(insideOverlay).toBe(false);
185
+ });
186
+ });
@@ -16,7 +16,6 @@ import {
16
16
  ArchiveIcon,
17
17
  ArrowCircleUpIcon,
18
18
  ArrowsClockwiseIcon,
19
- CaretLeftIcon,
20
19
  CopyIcon,
21
20
  DotsThreeIcon,
22
21
  DownloadSimpleIcon,
@@ -26,6 +25,13 @@ import {
26
25
  TrashIcon,
27
26
  XIcon,
28
27
  } from "@phosphor-icons/react";
28
+ import {
29
+ CodeBlock,
30
+ PageBackButton,
31
+ Popover,
32
+ PopoverContent,
33
+ ScreenToolbar,
34
+ } from "@multiplatform.one/components";
29
35
  import { Button, IconButton, IconButtonGroup, type ButtonProps } from "./index";
30
36
  import { useState } from "react";
31
37
 
@@ -447,89 +453,93 @@ export const IconButtons: Story = {
447
453
  render: () => {
448
454
  const [on, setOn] = useState(false);
449
455
  return (
450
- <YStack gap="$4" padding="$4" backgroundColor="$background">
451
- <Surface bar>
452
- <XStack alignItems="center" data-testid="icon-button-bar">
453
- <IconButton icon={CaretLeftIcon} aria-label="Back" onPress={pressed("back")} />
454
- <Paragraph flex={1} fontWeight="600">
455
- Inbox
456
- </Paragraph>
457
- <IconButtonGroup data-testid="icon-button-toolbar">
458
- <IconButton icon={ArchiveIcon} aria-label="Archive" onPress={pressed("archive")} />
459
- <IconButton icon={TrashIcon} aria-label="Delete" onPress={pressed("delete")} />
460
- <IconButton
461
- icon={EnvelopeSimpleIcon}
462
- aria-label="Mark unread"
463
- selected={on}
464
- onPress={() => setOn((v) => !v)}
465
- />
466
- <IconButton icon={DotsThreeIcon} aria-label="More" onPress={pressed("more")} />
467
- </IconButtonGroup>
468
- </XStack>
469
- </Surface>
470
- <Surface bar>
471
- <XStack alignItems="center" data-testid="icon-button-bar-disabled">
472
- <Paragraph flex={1}>Downloads</Paragraph>
456
+ <YStack backgroundColor="$background">
457
+ <ScreenToolbar
458
+ data-testid="icon-button-bar"
459
+ leading={<PageBackButton onPress={pressed("back")} />}
460
+ title="Inbox"
461
+ trailing={<IconButton icon={DotsThreeIcon} aria-label="More" onPress={pressed("more")} />}
462
+ />
463
+ <YStack gap="$4" padding="$4">
464
+ <Surface bar>
465
+ <XStack justifyContent="center" data-testid="icon-button-toolbar">
466
+ <IconButtonGroup>
467
+ <IconButton icon={ArchiveIcon} aria-label="Archive" onPress={pressed("archive")} />
468
+ <IconButton icon={TrashIcon} aria-label="Delete" onPress={pressed("delete")} />
469
+ <IconButton
470
+ icon={EnvelopeSimpleIcon}
471
+ aria-label="Mark unread"
472
+ selected={on}
473
+ onPress={() => setOn((v) => !v)}
474
+ />
475
+ </IconButtonGroup>
476
+ </XStack>
477
+ </Surface>
478
+ <Surface bar>
479
+ <XStack alignItems="center" data-testid="icon-button-bar-disabled">
480
+ <Paragraph flex={1}>Downloads</Paragraph>
481
+ <IconButtonGroup>
482
+ <IconButton
483
+ icon={DownloadSimpleIcon}
484
+ aria-label="Download"
485
+ onPress={pressed("download")}
486
+ />
487
+ <IconButton
488
+ icon={DownloadSimpleIcon}
489
+ aria-label="Download (nothing to download)"
490
+ disabled
491
+ />
492
+ </IconButtonGroup>
493
+ </XStack>
494
+ </Surface>
495
+ <XStack alignItems="center" data-testid="icon-button-content">
496
+ <Paragraph flex={1}>A row in content</Paragraph>
473
497
  <IconButtonGroup>
474
498
  <IconButton
475
499
  icon={DownloadSimpleIcon}
476
500
  aria-label="Download"
477
501
  onPress={pressed("download")}
478
502
  />
479
- <IconButton
480
- icon={DownloadSimpleIcon}
481
- aria-label="Download (nothing to download)"
482
- disabled
483
- />
503
+ <IconButton icon={TrashIcon} error aria-label="Delete" onPress={pressed("delete")} />
484
504
  </IconButtonGroup>
485
505
  </XStack>
486
- </Surface>
487
- <XStack alignItems="center" data-testid="icon-button-content">
488
- <Paragraph flex={1}>A row in content</Paragraph>
489
- <IconButtonGroup>
490
- <IconButton
491
- icon={DownloadSimpleIcon}
492
- aria-label="Download"
493
- onPress={pressed("download")}
494
- />
495
- <IconButton icon={TrashIcon} error aria-label="Delete" onPress={pressed("delete")} />
496
- </IconButtonGroup>
497
- </XStack>
498
- <XStack alignItems="center" data-testid="icon-button-inline">
499
- <Paragraph>shc node join</Paragraph>
500
- <IconButton inline icon={CopyIcon} aria-label="Copy" onPress={pressed("copy")} />
501
- </XStack>
502
- <YStack
503
- position="relative"
504
- width="$20"
505
- height="$12"
506
- backgroundColor="$blue9"
507
- borderRadius="$4"
508
- data-testid="icon-button-media"
509
- >
510
- <YStack position="absolute" top="$2" left="$2">
511
- <IconButton
512
- plate="media"
513
- icon={HeartIcon}
514
- aria-label="Favourite"
515
- onPress={pressed("favourite")}
516
- />
517
- </YStack>
518
- <YStack position="absolute" top="$2" right="$2">
519
- <IconButtonGroup plate="media">
520
- <IconButton
521
- plate="media"
522
- icon={ArrowsClockwiseIcon}
523
- aria-label="Replace photo"
524
- onPress={pressed("replace")}
525
- />
506
+ <XStack alignItems="center" data-testid="icon-button-inline">
507
+ <Paragraph>10.64.96.1:4003</Paragraph>
508
+ <IconButton inline icon={CopyIcon} aria-label="Copy" onPress={pressed("copy")} />
509
+ </XStack>
510
+ <CodeBlock language="text">shc node join</CodeBlock>
511
+ <YStack
512
+ position="relative"
513
+ width="$20"
514
+ height="$12"
515
+ backgroundColor="$blue9"
516
+ borderRadius="$4"
517
+ data-testid="icon-button-media"
518
+ >
519
+ <YStack position="absolute" top="$2" left="$2">
526
520
  <IconButton
527
521
  plate="media"
528
- icon={XIcon}
529
- aria-label="Remove photo"
530
- onPress={pressed("remove")}
522
+ icon={HeartIcon}
523
+ aria-label="Favourite"
524
+ onPress={pressed("favourite")}
531
525
  />
532
- </IconButtonGroup>
526
+ </YStack>
527
+ <YStack position="absolute" top="$2" right="$2">
528
+ <IconButtonGroup plate="media">
529
+ <IconButton
530
+ plate="media"
531
+ icon={ArrowsClockwiseIcon}
532
+ aria-label="Replace photo"
533
+ onPress={pressed("replace")}
534
+ />
535
+ <IconButton
536
+ plate="media"
537
+ icon={XIcon}
538
+ aria-label="Remove photo"
539
+ onPress={pressed("remove")}
540
+ />
541
+ </IconButtonGroup>
542
+ </YStack>
533
543
  </YStack>
534
544
  </YStack>
535
545
  </YStack>
@@ -560,15 +570,20 @@ export const ShcNodesScreen: TintStory = {
560
570
  <Paragraph flex={1} size="$9" fontWeight="700">
561
571
  Nodes
562
572
  </Paragraph>
563
- <Button size="$3" {...shcRoundGlyph} icon={PlusIcon} aria-label="Add node" />
564
- </XStack>
565
- <XStack alignItems="center" gap="$2">
566
- <Paragraph fontFamily="$mono">shc node join</Paragraph>
567
- <Button size="$2" {...shcRoundGlyph} icon={CopyIcon} aria-label="Copy" />
568
- </XStack>
569
- <XStack alignItems="center">
570
- <Paragraph fontFamily="$mono">shc node join</Paragraph>
571
- <IconButton inline icon={CopyIcon} aria-label="Copy (inline)" />
573
+ <Popover anchorMode="cover-trigger">
574
+ <Popover.Trigger asChild>
575
+ <Button size="$3" {...shcRoundGlyph} icon={PlusIcon} aria-label="Add node" />
576
+ </Popover.Trigger>
577
+ <PopoverContent>
578
+ <YStack padding="$4" gap="$3" width={320} maxWidth="100%">
579
+ <Paragraph size="$5" fontWeight="600">
580
+ Add a node
581
+ </Paragraph>
582
+ <Paragraph color="$color11">Run this on the new machine.</Paragraph>
583
+ <CodeBlock language="text">shc node join</CodeBlock>
584
+ </YStack>
585
+ </PopoverContent>
586
+ </Popover>
572
587
  </XStack>
573
588
  </YStack>
574
589
  </GlyphTintFallbackProvider>
@@ -11,7 +11,7 @@ import { createDefaultThemeConfig, Surface } from "@multiplatform.one/theme";
11
11
  import type { ReactElement } from "react";
12
12
  import { TamaguiProvider } from "tamagui";
13
13
  import { afterEach, describe, expect, it, vi } from "vitest";
14
- import { IconButton, IconButtonGroup } from "./index";
14
+ import { IconButton, IconButtonGroup, useGlyphOnPlate } from "./index";
15
15
 
16
16
  const glass = vi.hoisted(() => ({
17
17
  available: false,
@@ -99,6 +99,53 @@ describe("LC-176: IconButtonGroup", () => {
99
99
  expect(screen.getByLabelText("Back").querySelector("[data-glass]")).not.toBeNull();
100
100
  });
101
101
 
102
+ it("a group of one is no capsule: its button keeps its own glass circle (FZ-8442)", () => {
103
+ vi.stubGlobal("navigator", { userAgent: IPHONE, platform: "iPhone", maxTouchPoints: 5 });
104
+ glass.available = true;
105
+ houseRender(
106
+ <Surface bar>
107
+ <IconButtonGroup data-testid="group">
108
+ <>
109
+ <IconButton icon={Glyph} aria-label="Add node" edge="end" />
110
+ </>
111
+ </IconButtonGroup>
112
+ </Surface>,
113
+ );
114
+ const group = screen.getByTestId("group");
115
+ expect(group.querySelector("[data-mp-glass-capsule]")).toBeNull();
116
+ expect(screen.getByLabelText("Add node").querySelector("[data-glass]")).not.toBeNull();
117
+ });
118
+
119
+ it("a glyph on glass is told it is plated, so it centres instead of pulling (FZ-8442)", () => {
120
+ vi.stubGlobal("navigator", { userAgent: IPHONE, platform: "iPhone", maxTouchPoints: 5 });
121
+ glass.available = true;
122
+ function Probe({ size }: { size?: number }) {
123
+ return <svg data-plated={String(useGlyphOnPlate())} width={size} height={size} />;
124
+ }
125
+ houseRender(
126
+ <>
127
+ <Surface bar>
128
+ <IconButton icon={Probe} aria-label="Back" edge="start" />
129
+ <IconButtonGroup>
130
+ <IconButton icon={Probe} aria-label="Archive" />
131
+ <IconButton icon={Probe} aria-label="Delete" edge="end" />
132
+ </IconButtonGroup>
133
+ </Surface>
134
+ <IconButton icon={Probe} aria-label="Copy" />
135
+ </>,
136
+ );
137
+ for (const name of ["Back", "Archive", "Delete"]) {
138
+ const button = screen.getByLabelText(name);
139
+ expect(button.querySelector("svg")?.getAttribute("data-plated")).toBe("true");
140
+ const style = getComputedStyle(button);
141
+ for (const side of ["marginLeft", "marginRight", "marginInlineStart", "marginInlineEnd"])
142
+ expect(parseFloat(style[side as "marginLeft"] || "0") || 0).toBeGreaterThanOrEqual(0);
143
+ }
144
+ expect(screen.getByLabelText("Copy").querySelector("svg")?.getAttribute("data-plated")).toBe(
145
+ "false",
146
+ );
147
+ });
148
+
102
149
  it("a lone glass circle fills the button's border box, as wide as the ✓ beside it (FZ-8439)", () => {
103
150
  glass.available = true;
104
151
  houseRender(
@@ -1,4 +1,9 @@
1
- import { isDarkThemeName, radiusClassProps, useBarSurface } from "@multiplatform.one/theme";
1
+ import {
2
+ isDarkThemeName,
3
+ radiusClassProps,
4
+ useBarSurface,
5
+ useFieldSurface,
6
+ } from "@multiplatform.one/theme";
2
7
  import { Children, useCallback, useMemo, useRef, useState, type ReactNode } from "react";
3
8
  import { isWeb, Theme, useThemeName, View, XStack, type XStackProps } from "tamagui";
4
9
  import { loadGlassContainer, loadGlassView } from "./glass";
@@ -35,7 +40,10 @@ export interface IconButtonGroupProps extends XStackProps {
35
40
  * bar group with no icon button in it paints no capsule (FZ-8494).
36
41
  */
37
42
  export function IconButtonGroup({ plate, children, ...rest }: IconButtonGroupProps) {
38
- const bar = useBarSurface();
43
+ // LC-176 (FZ-8711): a group in a field's slot is part of the field, so it
44
+ // paints no capsule of its own: neither bar glass nor the media plate.
45
+ const field = useFieldSurface();
46
+ const bar = useBarSurface() && !field;
39
47
  const dark = isDarkThemeName(useThemeName());
40
48
  const [capsuleHeight, setCapsuleHeight] = useState(0);
41
49
  const [members, setMembers] = useState(0);
@@ -59,7 +67,7 @@ export function IconButtonGroup({ plate, children, ...rest }: IconButtonGroupPro
59
67
  }),
60
68
  [],
61
69
  );
62
- if (plate === "media") {
70
+ if (plate === "media" && !field) {
63
71
  return (
64
72
  <IconButtonGroupContext.Provider value="media">
65
73
  <Theme name="dark">
@@ -80,26 +88,34 @@ export function IconButtonGroup({ plate, children, ...rest }: IconButtonGroupPro
80
88
  );
81
89
  }
82
90
  const GlassView = bar ? loadGlassView() : null;
91
+ // A group of one button is a lone button, and keeps its circle (FZ-8442).
92
+ const lone = members === 1 && Children.toArray(children).length === 1;
83
93
  if (GlassView && isWeb && isAppleTouchWeb()) {
84
94
  // The caller's layout props stay on the outer row; the capsule hugs the
85
95
  // buttons inside it, so a stretched slot never draws a wide empty pill.
96
+ // A lone button keeps the same tree, so it never remounts as it registers.
97
+ const capsuled = members > 0 && !lone;
86
98
  return (
87
99
  <IconButtonGroupRegistry.Provider value={register}>
88
- <IconButtonGroupContext.Provider value="glass">
100
+ <IconButtonGroupContext.Provider value={lone ? null : "glass"}>
89
101
  <XStack
90
102
  alignItems="center"
91
- data-mp-icon-button-group={members > 0 ? "glass" : "bar"}
103
+ data-mp-icon-button-group={capsuled ? "glass" : "bar"}
92
104
  {...rest}
93
105
  >
94
106
  <XStack
95
107
  alignItems="center"
96
108
  position="relative"
97
109
  zIndex={0}
98
- paddingHorizontal="$2"
99
- gap="$1"
100
- data-mp-glass-capsule=""
110
+ {...(lone
111
+ ? null
112
+ : {
113
+ paddingHorizontal: "$2" as const,
114
+ gap: "$1" as const,
115
+ "data-mp-glass-capsule": "",
116
+ })}
101
117
  >
102
- {members > 0 ? (
118
+ {capsuled ? (
103
119
  <GlassView
104
120
  style={{
105
121
  position: "absolute",
@@ -120,9 +136,7 @@ export function IconButtonGroup({ plate, children, ...rest }: IconButtonGroupPro
120
136
  }
121
137
  const capsule = GlassView != null && members > 0;
122
138
  // The capsule hugs its buttons with the web twin's $2 end inset and $1 gap,
123
- // so its first and last items never sit on its curve (FZ-8550). A group of
124
- // one button is a lone button, and keeps its circle.
125
- const lone = members === 1 && Children.toArray(children).length === 1;
139
+ // so its first and last items never sit on its curve (FZ-8550).
126
140
  const row = (
127
141
  <XStack
128
142
  alignItems="center"
@@ -15,6 +15,18 @@ export function useIconButtonGroupGround(): IconButtonGroupGround {
15
15
  return useContext(IconButtonGroupContext);
16
16
  }
17
17
 
18
+ /**
19
+ * LC-176: true while a glyph is drawn centred on a visible ground (a glass
20
+ * circle or capsule, the media plate, a framed circle). An icon that pulls
21
+ * itself toward a container edge for optical alignment, such as the back
22
+ * caret, keeps its ink centred instead.
23
+ */
24
+ export const GlyphPlateContext = createContext(false);
25
+
26
+ export function useGlyphOnPlate(): boolean {
27
+ return useContext(GlyphPlateContext);
28
+ }
29
+
18
30
  /**
19
31
  * An icon button counts itself into the group around it, so a bar group of
20
32
  * only non-icon children (a status badge in a page head) paints no capsule