@multiplatform.one/forms 7.65.2 → 7.67.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 (367) hide show
  1. package/dist/cjs/FloatingPanel/RegularPanel.cjs +164 -0
  2. package/dist/cjs/FloatingPanel/RegularPanel.native.js +169 -0
  3. package/dist/cjs/FloatingPanel/RegularPanel.native.js.map +1 -0
  4. package/dist/cjs/FloatingPanel/compactFace.cjs +6 -0
  5. package/dist/cjs/FloatingPanel/compactFace.native.js +6 -0
  6. package/dist/cjs/FloatingPanel/compactFace.native.js.map +1 -1
  7. package/dist/cjs/FloatingPanel/containingBlock.cjs +46 -0
  8. package/dist/cjs/FloatingPanel/containingBlock.native.js +51 -0
  9. package/dist/cjs/FloatingPanel/containingBlock.native.js.map +1 -0
  10. package/dist/cjs/FloatingPanel/index.cjs +2 -20
  11. package/dist/cjs/FloatingPanel/index.native.js +79 -45
  12. package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
  13. package/dist/cjs/FloatingPanel/pointAnchor.cjs +25 -0
  14. package/dist/cjs/FloatingPanel/pointAnchor.native.js +26 -0
  15. package/dist/cjs/FloatingPanel/pointAnchor.native.js.map +1 -1
  16. package/dist/cjs/FloatingPanel/regularPlacement.cjs +61 -0
  17. package/dist/cjs/FloatingPanel/regularPlacement.native.js +65 -0
  18. package/dist/cjs/FloatingPanel/regularPlacement.native.js.map +1 -0
  19. package/dist/cjs/fields/Combobox/index.cjs +8 -10
  20. package/dist/cjs/fields/Combobox/index.native.js +10 -10
  21. package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
  22. package/dist/cjs/fields/DatePicker/parts.cjs +1 -0
  23. package/dist/cjs/fields/DatePicker/parts.native.js +3 -0
  24. package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
  25. package/dist/cjs/fields/Input/index.cjs +5 -0
  26. package/dist/cjs/fields/Input/index.native.js +5 -0
  27. package/dist/cjs/fields/Input/index.native.js.map +1 -1
  28. package/dist/cjs/fields/Select/InlineChoices.cjs +3 -2
  29. package/dist/cjs/fields/Select/InlineChoices.native.js +5 -2
  30. package/dist/cjs/fields/Select/InlineChoices.native.js.map +1 -1
  31. package/dist/cjs/fields/Select/SheetPickerRow.cjs +154 -0
  32. package/dist/cjs/fields/Select/SheetPickerRow.native.js +165 -0
  33. package/dist/cjs/fields/Select/SheetPickerRow.native.js.map +1 -0
  34. package/dist/cjs/fields/Select/index.cjs +64 -5
  35. package/dist/cjs/fields/Select/index.native.js +86 -27
  36. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  37. package/dist/cjs/fields/Select/shouldInlineChoices.cjs +14 -1
  38. package/dist/cjs/fields/Select/shouldInlineChoices.native.js +15 -1
  39. package/dist/cjs/fields/Select/shouldInlineChoices.native.js.map +1 -1
  40. package/dist/cjs/fields/Slider/index.cjs +96 -4
  41. package/dist/cjs/fields/Slider/index.native.js +103 -5
  42. package/dist/cjs/fields/Slider/index.native.js.map +1 -1
  43. package/dist/cjs/fields/Switch/index.cjs +71 -1
  44. package/dist/cjs/fields/Switch/index.native.js +72 -1
  45. package/dist/cjs/fields/Switch/index.native.js.map +1 -1
  46. package/dist/cjs/fields/TimePicker/parts.cjs +1 -0
  47. package/dist/cjs/fields/TimePicker/parts.native.js +1 -0
  48. package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
  49. package/dist/cjs/fields/ToggleGroup/index.cjs +67 -1
  50. package/dist/cjs/fields/ToggleGroup/index.native.js +75 -1
  51. package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
  52. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.cjs +34 -19
  53. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js +44 -21
  54. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  55. package/dist/cjs/fields/nativeDateTime/sheetKeyboard.cjs +54 -0
  56. package/dist/cjs/fields/nativeDateTime/sheetKeyboard.native.js +57 -0
  57. package/dist/cjs/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -0
  58. package/dist/cjs/index.cjs +11 -0
  59. package/dist/cjs/index.native.js +11 -0
  60. package/dist/cjs/index.native.js.map +1 -1
  61. package/dist/cjs/shared/overlaySizeClass.cjs +42 -0
  62. package/dist/cjs/shared/overlaySizeClass.native.js +45 -0
  63. package/dist/cjs/shared/overlaySizeClass.native.js.map +1 -0
  64. package/dist/cjs/shared/sheetNavigation.cjs +76 -0
  65. package/dist/cjs/shared/sheetNavigation.native.js +129 -0
  66. package/dist/cjs/shared/sheetNavigation.native.js.map +1 -0
  67. package/dist/cjs/shared/systemControlModules.cjs +34 -0
  68. package/dist/cjs/shared/systemControlModules.gnome.cjs +34 -0
  69. package/dist/cjs/shared/systemControlModules.gnome.native.js +37 -0
  70. package/dist/cjs/shared/systemControlModules.gnome.native.js.map +1 -0
  71. package/dist/cjs/shared/systemControlModules.native.js +77 -0
  72. package/dist/cjs/shared/systemControlModules.native.js.map +1 -0
  73. package/dist/cjs/shared/systemControls.cjs +47 -0
  74. package/dist/cjs/shared/systemControls.native.js +51 -0
  75. package/dist/cjs/shared/systemControls.native.js.map +1 -0
  76. package/dist/esm/FloatingPanel/RegularPanel.mjs +139 -0
  77. package/dist/esm/FloatingPanel/RegularPanel.mjs.map +1 -0
  78. package/dist/esm/FloatingPanel/RegularPanel.native.js +141 -0
  79. package/dist/esm/FloatingPanel/RegularPanel.native.js.map +1 -0
  80. package/dist/esm/FloatingPanel/compactFace.mjs +5 -1
  81. package/dist/esm/FloatingPanel/compactFace.mjs.map +1 -1
  82. package/dist/esm/FloatingPanel/compactFace.native.js +5 -1
  83. package/dist/esm/FloatingPanel/compactFace.native.js.map +1 -1
  84. package/dist/esm/FloatingPanel/containingBlock.mjs +21 -0
  85. package/dist/esm/FloatingPanel/containingBlock.mjs.map +1 -0
  86. package/dist/esm/FloatingPanel/containingBlock.native.js +23 -0
  87. package/dist/esm/FloatingPanel/containingBlock.native.js.map +1 -0
  88. package/dist/esm/FloatingPanel/index.mjs +1 -19
  89. package/dist/esm/FloatingPanel/index.mjs.map +1 -1
  90. package/dist/esm/FloatingPanel/index.native.js +83 -49
  91. package/dist/esm/FloatingPanel/index.native.js.map +1 -1
  92. package/dist/esm/FloatingPanel/pointAnchor.mjs +25 -1
  93. package/dist/esm/FloatingPanel/pointAnchor.mjs.map +1 -1
  94. package/dist/esm/FloatingPanel/pointAnchor.native.js +26 -1
  95. package/dist/esm/FloatingPanel/pointAnchor.native.js.map +1 -1
  96. package/dist/esm/FloatingPanel/regularPlacement.mjs +35 -0
  97. package/dist/esm/FloatingPanel/regularPlacement.mjs.map +1 -0
  98. package/dist/esm/FloatingPanel/regularPlacement.native.js +36 -0
  99. package/dist/esm/FloatingPanel/regularPlacement.native.js.map +1 -0
  100. package/dist/esm/fields/Combobox/index.mjs +9 -11
  101. package/dist/esm/fields/Combobox/index.mjs.map +1 -1
  102. package/dist/esm/fields/Combobox/index.native.js +11 -11
  103. package/dist/esm/fields/Combobox/index.native.js.map +1 -1
  104. package/dist/esm/fields/DatePicker/parts.mjs +1 -0
  105. package/dist/esm/fields/DatePicker/parts.mjs.map +1 -1
  106. package/dist/esm/fields/DatePicker/parts.native.js +3 -0
  107. package/dist/esm/fields/DatePicker/parts.native.js.map +1 -1
  108. package/dist/esm/fields/Input/index.mjs +6 -1
  109. package/dist/esm/fields/Input/index.mjs.map +1 -1
  110. package/dist/esm/fields/Input/index.native.js +6 -1
  111. package/dist/esm/fields/Input/index.native.js.map +1 -1
  112. package/dist/esm/fields/Select/InlineChoices.mjs +3 -2
  113. package/dist/esm/fields/Select/InlineChoices.mjs.map +1 -1
  114. package/dist/esm/fields/Select/InlineChoices.native.js +5 -2
  115. package/dist/esm/fields/Select/InlineChoices.native.js.map +1 -1
  116. package/dist/esm/fields/Select/SheetPickerRow.mjs +129 -0
  117. package/dist/esm/fields/Select/SheetPickerRow.mjs.map +1 -0
  118. package/dist/esm/fields/Select/SheetPickerRow.native.js +137 -0
  119. package/dist/esm/fields/Select/SheetPickerRow.native.js.map +1 -0
  120. package/dist/esm/fields/Select/index.mjs +66 -7
  121. package/dist/esm/fields/Select/index.mjs.map +1 -1
  122. package/dist/esm/fields/Select/index.native.js +88 -29
  123. package/dist/esm/fields/Select/index.native.js.map +1 -1
  124. package/dist/esm/fields/Select/shouldInlineChoices.mjs +12 -1
  125. package/dist/esm/fields/Select/shouldInlineChoices.mjs.map +1 -1
  126. package/dist/esm/fields/Select/shouldInlineChoices.native.js +13 -1
  127. package/dist/esm/fields/Select/shouldInlineChoices.native.js.map +1 -1
  128. package/dist/esm/fields/Slider/index.mjs +96 -4
  129. package/dist/esm/fields/Slider/index.mjs.map +1 -1
  130. package/dist/esm/fields/Slider/index.native.js +103 -5
  131. package/dist/esm/fields/Slider/index.native.js.map +1 -1
  132. package/dist/esm/fields/Switch/index.mjs +71 -1
  133. package/dist/esm/fields/Switch/index.mjs.map +1 -1
  134. package/dist/esm/fields/Switch/index.native.js +72 -1
  135. package/dist/esm/fields/Switch/index.native.js.map +1 -1
  136. package/dist/esm/fields/TimePicker/parts.mjs +1 -0
  137. package/dist/esm/fields/TimePicker/parts.mjs.map +1 -1
  138. package/dist/esm/fields/TimePicker/parts.native.js +1 -0
  139. package/dist/esm/fields/TimePicker/parts.native.js.map +1 -1
  140. package/dist/esm/fields/ToggleGroup/index.mjs +67 -1
  141. package/dist/esm/fields/ToggleGroup/index.mjs.map +1 -1
  142. package/dist/esm/fields/ToggleGroup/index.native.js +75 -1
  143. package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -1
  144. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs +36 -21
  145. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -1
  146. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js +46 -23
  147. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  148. package/dist/esm/fields/nativeDateTime/sheetKeyboard.mjs +21 -0
  149. package/dist/esm/fields/nativeDateTime/sheetKeyboard.mjs.map +1 -0
  150. package/dist/esm/fields/nativeDateTime/sheetKeyboard.native.js +21 -0
  151. package/dist/esm/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -0
  152. package/dist/esm/index.mjs +3 -1
  153. package/dist/esm/index.mjs.map +1 -1
  154. package/dist/esm/index.native.js +3 -1
  155. package/dist/esm/index.native.js.map +1 -1
  156. package/dist/esm/shared/overlaySizeClass.mjs +14 -0
  157. package/dist/esm/shared/overlaySizeClass.mjs.map +1 -0
  158. package/dist/esm/shared/overlaySizeClass.native.js +14 -0
  159. package/dist/esm/shared/overlaySizeClass.native.js.map +1 -0
  160. package/dist/esm/shared/sheetNavigation.mjs +47 -0
  161. package/dist/esm/shared/sheetNavigation.mjs.map +1 -0
  162. package/dist/esm/shared/sheetNavigation.native.js +97 -0
  163. package/dist/esm/shared/sheetNavigation.native.js.map +1 -0
  164. package/dist/esm/shared/systemControlModules.gnome.mjs +8 -0
  165. package/dist/esm/shared/systemControlModules.gnome.mjs.map +1 -0
  166. package/dist/esm/shared/systemControlModules.gnome.native.js +8 -0
  167. package/dist/esm/shared/systemControlModules.gnome.native.js.map +1 -0
  168. package/dist/esm/shared/systemControlModules.mjs +8 -0
  169. package/dist/esm/shared/systemControlModules.mjs.map +1 -0
  170. package/dist/esm/shared/systemControlModules.native.js +47 -0
  171. package/dist/esm/shared/systemControlModules.native.js.map +1 -0
  172. package/dist/esm/shared/systemControls.mjs +19 -0
  173. package/dist/esm/shared/systemControls.mjs.map +1 -0
  174. package/dist/esm/shared/systemControls.native.js +20 -0
  175. package/dist/esm/shared/systemControls.native.js.map +1 -0
  176. package/dist/jsx/FloatingPanel/RegularPanel.mjs +139 -0
  177. package/dist/jsx/FloatingPanel/RegularPanel.mjs.map +1 -0
  178. package/dist/jsx/FloatingPanel/RegularPanel.native.js +169 -0
  179. package/dist/jsx/FloatingPanel/RegularPanel.native.js.map +1 -0
  180. package/dist/jsx/FloatingPanel/compactFace.mjs +5 -1
  181. package/dist/jsx/FloatingPanel/compactFace.mjs.map +1 -1
  182. package/dist/jsx/FloatingPanel/compactFace.native.js +6 -0
  183. package/dist/jsx/FloatingPanel/compactFace.native.js.map +1 -1
  184. package/dist/jsx/FloatingPanel/containingBlock.mjs +21 -0
  185. package/dist/jsx/FloatingPanel/containingBlock.mjs.map +1 -0
  186. package/dist/jsx/FloatingPanel/containingBlock.native.js +51 -0
  187. package/dist/jsx/FloatingPanel/containingBlock.native.js.map +1 -0
  188. package/dist/jsx/FloatingPanel/index.mjs +1 -19
  189. package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
  190. package/dist/jsx/FloatingPanel/index.native.js +79 -45
  191. package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
  192. package/dist/jsx/FloatingPanel/pointAnchor.mjs +25 -1
  193. package/dist/jsx/FloatingPanel/pointAnchor.mjs.map +1 -1
  194. package/dist/jsx/FloatingPanel/pointAnchor.native.js +26 -0
  195. package/dist/jsx/FloatingPanel/pointAnchor.native.js.map +1 -1
  196. package/dist/jsx/FloatingPanel/regularPlacement.mjs +35 -0
  197. package/dist/jsx/FloatingPanel/regularPlacement.mjs.map +1 -0
  198. package/dist/jsx/FloatingPanel/regularPlacement.native.js +65 -0
  199. package/dist/jsx/FloatingPanel/regularPlacement.native.js.map +1 -0
  200. package/dist/jsx/fields/Combobox/index.mjs +9 -11
  201. package/dist/jsx/fields/Combobox/index.mjs.map +1 -1
  202. package/dist/jsx/fields/Combobox/index.native.js +10 -10
  203. package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
  204. package/dist/jsx/fields/DatePicker/parts.mjs +1 -0
  205. package/dist/jsx/fields/DatePicker/parts.mjs.map +1 -1
  206. package/dist/jsx/fields/DatePicker/parts.native.js +3 -0
  207. package/dist/jsx/fields/DatePicker/parts.native.js.map +1 -1
  208. package/dist/jsx/fields/Input/index.mjs +6 -1
  209. package/dist/jsx/fields/Input/index.mjs.map +1 -1
  210. package/dist/jsx/fields/Input/index.native.js +5 -0
  211. package/dist/jsx/fields/Input/index.native.js.map +1 -1
  212. package/dist/jsx/fields/Select/InlineChoices.mjs +3 -2
  213. package/dist/jsx/fields/Select/InlineChoices.mjs.map +1 -1
  214. package/dist/jsx/fields/Select/InlineChoices.native.js +5 -2
  215. package/dist/jsx/fields/Select/InlineChoices.native.js.map +1 -1
  216. package/dist/jsx/fields/Select/SheetPickerRow.mjs +129 -0
  217. package/dist/jsx/fields/Select/SheetPickerRow.mjs.map +1 -0
  218. package/dist/jsx/fields/Select/SheetPickerRow.native.js +165 -0
  219. package/dist/jsx/fields/Select/SheetPickerRow.native.js.map +1 -0
  220. package/dist/jsx/fields/Select/index.mjs +66 -7
  221. package/dist/jsx/fields/Select/index.mjs.map +1 -1
  222. package/dist/jsx/fields/Select/index.native.js +86 -27
  223. package/dist/jsx/fields/Select/index.native.js.map +1 -1
  224. package/dist/jsx/fields/Select/shouldInlineChoices.mjs +12 -1
  225. package/dist/jsx/fields/Select/shouldInlineChoices.mjs.map +1 -1
  226. package/dist/jsx/fields/Select/shouldInlineChoices.native.js +15 -1
  227. package/dist/jsx/fields/Select/shouldInlineChoices.native.js.map +1 -1
  228. package/dist/jsx/fields/Slider/index.mjs +96 -4
  229. package/dist/jsx/fields/Slider/index.mjs.map +1 -1
  230. package/dist/jsx/fields/Slider/index.native.js +103 -5
  231. package/dist/jsx/fields/Slider/index.native.js.map +1 -1
  232. package/dist/jsx/fields/Switch/index.mjs +71 -1
  233. package/dist/jsx/fields/Switch/index.mjs.map +1 -1
  234. package/dist/jsx/fields/Switch/index.native.js +72 -1
  235. package/dist/jsx/fields/Switch/index.native.js.map +1 -1
  236. package/dist/jsx/fields/TimePicker/parts.mjs +1 -0
  237. package/dist/jsx/fields/TimePicker/parts.mjs.map +1 -1
  238. package/dist/jsx/fields/TimePicker/parts.native.js +1 -0
  239. package/dist/jsx/fields/TimePicker/parts.native.js.map +1 -1
  240. package/dist/jsx/fields/ToggleGroup/index.mjs +67 -1
  241. package/dist/jsx/fields/ToggleGroup/index.mjs.map +1 -1
  242. package/dist/jsx/fields/ToggleGroup/index.native.js +75 -1
  243. package/dist/jsx/fields/ToggleGroup/index.native.js.map +1 -1
  244. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs +36 -21
  245. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -1
  246. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js +44 -21
  247. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  248. package/dist/jsx/fields/nativeDateTime/sheetKeyboard.mjs +21 -0
  249. package/dist/jsx/fields/nativeDateTime/sheetKeyboard.mjs.map +1 -0
  250. package/dist/jsx/fields/nativeDateTime/sheetKeyboard.native.js +57 -0
  251. package/dist/jsx/fields/nativeDateTime/sheetKeyboard.native.js.map +1 -0
  252. package/dist/jsx/index.js +3 -1
  253. package/dist/jsx/index.js.map +1 -1
  254. package/dist/jsx/index.mjs +3 -1
  255. package/dist/jsx/index.mjs.map +1 -1
  256. package/dist/jsx/index.native.js +11 -0
  257. package/dist/jsx/index.native.js.map +1 -1
  258. package/dist/jsx/shared/overlaySizeClass.mjs +14 -0
  259. package/dist/jsx/shared/overlaySizeClass.mjs.map +1 -0
  260. package/dist/jsx/shared/overlaySizeClass.native.js +45 -0
  261. package/dist/jsx/shared/overlaySizeClass.native.js.map +1 -0
  262. package/dist/jsx/shared/sheetNavigation.mjs +47 -0
  263. package/dist/jsx/shared/sheetNavigation.mjs.map +1 -0
  264. package/dist/jsx/shared/sheetNavigation.native.js +129 -0
  265. package/dist/jsx/shared/sheetNavigation.native.js.map +1 -0
  266. package/dist/jsx/shared/systemControlModules.gnome.mjs +8 -0
  267. package/dist/jsx/shared/systemControlModules.gnome.mjs.map +1 -0
  268. package/dist/jsx/shared/systemControlModules.gnome.native.js +37 -0
  269. package/dist/jsx/shared/systemControlModules.gnome.native.js.map +1 -0
  270. package/dist/jsx/shared/systemControlModules.mjs +8 -0
  271. package/dist/jsx/shared/systemControlModules.mjs.map +1 -0
  272. package/dist/jsx/shared/systemControlModules.native.js +77 -0
  273. package/dist/jsx/shared/systemControlModules.native.js.map +1 -0
  274. package/dist/jsx/shared/systemControls.mjs +19 -0
  275. package/dist/jsx/shared/systemControls.mjs.map +1 -0
  276. package/dist/jsx/shared/systemControls.native.js +51 -0
  277. package/dist/jsx/shared/systemControls.native.js.map +1 -0
  278. package/package.json +16 -8
  279. package/src/FloatingPanel/FloatingPanel.menuFace.native.spec.tsx +73 -3
  280. package/src/FloatingPanel/FloatingPanel.regularWidth.native.spec.tsx +193 -0
  281. package/src/FloatingPanel/RegularPanel.tsx +159 -0
  282. package/src/FloatingPanel/compactFace.spec.ts +24 -1
  283. package/src/FloatingPanel/compactFace.ts +16 -0
  284. package/src/FloatingPanel/containingBlock.ts +32 -0
  285. package/src/FloatingPanel/index.native.tsx +80 -35
  286. package/src/FloatingPanel/index.tsx +1 -33
  287. package/src/FloatingPanel/pointAnchor.spec.ts +29 -0
  288. package/src/FloatingPanel/pointAnchor.ts +30 -0
  289. package/src/FloatingPanel/regularPlacement.spec.ts +65 -0
  290. package/src/FloatingPanel/regularPlacement.ts +40 -0
  291. package/src/fields/Combobox/Combobox.regularWidth.native.spec.tsx +94 -0
  292. package/src/fields/Combobox/index.tsx +11 -34
  293. package/src/fields/DatePicker/parts.tsx +3 -0
  294. package/src/fields/DatePicker/touchWeb.spec.tsx +13 -0
  295. package/src/fields/Input/Input.formName.spec.tsx +53 -0
  296. package/src/fields/Input/index.tsx +6 -1
  297. package/src/fields/Select/InlineChoices.tsx +6 -3
  298. package/src/fields/Select/SheetPickerRow.tsx +160 -0
  299. package/src/fields/Select/index.tsx +67 -5
  300. package/src/fields/Select/shouldInlineChoices.spec.ts +21 -1
  301. package/src/fields/Select/shouldInlineChoices.ts +26 -0
  302. package/src/fields/Slider/Slider.system.native.spec.tsx +168 -0
  303. package/src/fields/Slider/index.tsx +166 -30
  304. package/src/fields/Switch/Switch.system.native.spec.tsx +162 -0
  305. package/src/fields/Switch/index.tsx +98 -0
  306. package/src/fields/TimePicker/parts.tsx +1 -0
  307. package/src/fields/ToggleGroup/ToggleGroup.system.native.spec.tsx +192 -0
  308. package/src/fields/ToggleGroup/index.tsx +111 -0
  309. package/src/fields/nativeDateTime/OsDateTimeSheet.presentation.spec.tsx +167 -0
  310. package/src/fields/nativeDateTime/OsDateTimeSheet.tsx +36 -18
  311. package/src/fields/nativeDateTime/sheetKeyboard.spec.ts +60 -0
  312. package/src/fields/nativeDateTime/sheetKeyboard.ts +45 -0
  313. package/src/index.ts +15 -0
  314. package/src/shared/overlaySizeClass.spec.ts +27 -0
  315. package/src/shared/overlaySizeClass.ts +36 -0
  316. package/src/shared/sheetNavigation.ts +82 -0
  317. package/src/shared/systemControlModules.gnome.ts +10 -0
  318. package/src/shared/systemControlModules.native.spec.ts +52 -0
  319. package/src/shared/systemControlModules.native.ts +66 -0
  320. package/src/shared/systemControlModules.ts +10 -0
  321. package/src/shared/systemControls.ts +70 -0
  322. package/types/FloatingPanel/RegularPanel.d.ts +29 -0
  323. package/types/FloatingPanel/RegularPanel.d.ts.map +1 -0
  324. package/types/FloatingPanel/compactFace.d.ts +12 -0
  325. package/types/FloatingPanel/compactFace.d.ts.map +1 -1
  326. package/types/FloatingPanel/containingBlock.d.ts +14 -0
  327. package/types/FloatingPanel/containingBlock.d.ts.map +1 -0
  328. package/types/FloatingPanel/index.d.ts.map +1 -1
  329. package/types/FloatingPanel/index.native.d.ts +6 -1
  330. package/types/FloatingPanel/index.native.d.ts.map +1 -1
  331. package/types/FloatingPanel/pointAnchor.d.ts +12 -0
  332. package/types/FloatingPanel/pointAnchor.d.ts.map +1 -1
  333. package/types/FloatingPanel/regularPlacement.d.ts +20 -0
  334. package/types/FloatingPanel/regularPlacement.d.ts.map +1 -0
  335. package/types/fields/Combobox/index.d.ts.map +1 -1
  336. package/types/fields/DatePicker/parts.d.ts.map +1 -1
  337. package/types/fields/Input/index.d.ts.map +1 -1
  338. package/types/fields/Select/InlineChoices.d.ts.map +1 -1
  339. package/types/fields/Select/SheetPickerRow.d.ts +23 -0
  340. package/types/fields/Select/SheetPickerRow.d.ts.map +1 -0
  341. package/types/fields/Select/index.d.ts.map +1 -1
  342. package/types/fields/Select/shouldInlineChoices.d.ts +15 -0
  343. package/types/fields/Select/shouldInlineChoices.d.ts.map +1 -1
  344. package/types/fields/Slider/index.d.ts +7 -1
  345. package/types/fields/Slider/index.d.ts.map +1 -1
  346. package/types/fields/Switch/index.d.ts +7 -1
  347. package/types/fields/Switch/index.d.ts.map +1 -1
  348. package/types/fields/TimePicker/parts.d.ts.map +1 -1
  349. package/types/fields/ToggleGroup/index.d.ts +8 -1
  350. package/types/fields/ToggleGroup/index.d.ts.map +1 -1
  351. package/types/fields/nativeDateTime/OsDateTimeSheet.d.ts.map +1 -1
  352. package/types/fields/nativeDateTime/sheetKeyboard.d.ts +20 -0
  353. package/types/fields/nativeDateTime/sheetKeyboard.d.ts.map +1 -0
  354. package/types/index.d.ts +4 -0
  355. package/types/index.d.ts.map +1 -1
  356. package/types/shared/overlaySizeClass.d.ts +24 -0
  357. package/types/shared/overlaySizeClass.d.ts.map +1 -0
  358. package/types/shared/sheetNavigation.d.ts +31 -0
  359. package/types/shared/sheetNavigation.d.ts.map +1 -0
  360. package/types/shared/systemControlModules.d.ts +5 -0
  361. package/types/shared/systemControlModules.d.ts.map +1 -0
  362. package/types/shared/systemControlModules.gnome.d.ts +5 -0
  363. package/types/shared/systemControlModules.gnome.d.ts.map +1 -0
  364. package/types/shared/systemControlModules.native.d.ts +20 -0
  365. package/types/shared/systemControlModules.native.d.ts.map +1 -0
  366. package/types/shared/systemControls.d.ts +53 -0
  367. package/types/shared/systemControls.d.ts.map +1 -0
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var overlaySizeClass_exports = {};
26
+ __export(overlaySizeClass_exports, {
27
+ SHEET_PANEL_WIDTH: () => SHEET_PANEL_WIDTH,
28
+ overlaySizeClass: () => overlaySizeClass,
29
+ sheetPanelWidth: () => sheetPanelWidth,
30
+ useOverlaySizeClass: () => useOverlaySizeClass
31
+ });
32
+ module.exports = __toCommonJS(overlaySizeClass_exports);
33
+ var import_theme = require("@multiplatform.one/theme");
34
+ var import_react_native = require("react-native");
35
+ function overlaySizeClass(windowWidth) {
36
+ return windowWidth > import_theme.OVERLAY_BREAKPOINT ? "regular" : "compact";
37
+ }
38
+ function useOverlaySizeClass() {
39
+ return overlaySizeClass((0, import_react_native.useWindowDimensions)().width);
40
+ }
41
+ var SHEET_PANEL_WIDTH = import_theme.layoutBreakpoints.medium;
42
+ function sheetPanelWidth(windowWidth) {
43
+ return Math.max(0, Math.min(SHEET_PANEL_WIDTH, windowWidth));
44
+ }
45
+ //# sourceMappingURL=overlaySizeClass.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key"],"sources":["../../../src/shared/overlaySizeClass.ts"],"sourcesContent":[null],"mappings":"AAAA,YAAS;;AACT,IAAAA,SAAS,GAAAC,MAAA,CAAAC,cAA2B;AAe7B,IAAAC,gBAAS,GAAAF,MAAiB,CAAAG,wBAAuC;AACtE,IAAAC,iBAAO,GAAcJ,MAAA,CAAAK,mBAAqB;AAC5C,IAAAC,YAAA,GAAAN,MAAA,CAAAO,SAAA,CAAAC,cAAA;AAEO,IAAAC,QAAS,GAAAA,CAAAC,MAAA,EAAAC,GAAA,KAAwC;EACtD,SAAOC,IAAA,IAAAD,GAAA,EACTZ,SAAA,CAAAW,MAAA,EAAAE,IAAA;IAAAC,GAAA,EAAAF,GAAA,CAAAC,IAAA;IAAAE,UAAA;EAAA;AAQO;AAGA,IAAAC,WAAS,GAAAA,CAAAC,EAAA,EAAAC,IAAgB,EAAAC,MAAA,EAAAC,IAA6B;EAC3D,IAAAF,IAAO,IAAK,OAAOA,IAAA,KAAS,mBAAmBA,IAAA,eAAY;IAC7D,SAAAG,GAAA,IAAAhB,iBAAA,CAAAa,IAAA,G","ignoreList":[]}
@@ -0,0 +1,47 @@
1
+ import { createContext, useContext, useSyncExternalStore } from "react";
2
+ function createSheetNavigationStore() {
3
+ let pages = [];
4
+ const listeners = /* @__PURE__ */new Set();
5
+ const set = next => {
6
+ pages = next;
7
+ for (const listener of listeners) listener();
8
+ };
9
+ return {
10
+ subscribe(listener) {
11
+ listeners.add(listener);
12
+ return () => listeners.delete(listener);
13
+ },
14
+ getPages: () => pages,
15
+ has: id => pages.some(page => page.id === id),
16
+ push(page) {
17
+ set([...pages.filter(p => p.id !== page.id), page]);
18
+ },
19
+ update(page) {
20
+ if (!pages.some(p => p.id === page.id)) return;
21
+ set(pages.map(p => p.id === page.id ? page : p));
22
+ },
23
+ remove(id) {
24
+ if (!pages.some(p => p.id === id)) return;
25
+ set(pages.filter(p => p.id !== id));
26
+ },
27
+ pop() {
28
+ if (pages.length) set(pages.slice(0, -1));
29
+ }
30
+ };
31
+ }
32
+ const SheetNavigationContext = createContext(void 0);
33
+ const SheetNavigationProvider = SheetNavigationContext.Provider;
34
+ function useSheetNavigation() {
35
+ return useContext(SheetNavigationContext);
36
+ }
37
+ const noPages = [];
38
+ const noSubscribe = () => () => {};
39
+ function useSheetPages(store) {
40
+ return useSyncExternalStore(store?.subscribe ?? noSubscribe, store ? store.getPages : () => noPages, store ? store.getPages : () => noPages);
41
+ }
42
+ function useSheetPageOpen(store, id) {
43
+ const has = () => store?.has(id) ?? false;
44
+ return useSyncExternalStore(store?.subscribe ?? noSubscribe, has, has);
45
+ }
46
+ export { SheetNavigationProvider, createSheetNavigationStore, useSheetNavigation, useSheetPageOpen, useSheetPages };
47
+ //# sourceMappingURL=sheetNavigation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useContext","useSyncExternalStore","createSheetNavigationStore","pages","listeners","Set","set","next","listener","subscribe","add","delete","getPages","has","id","some","page","push","filter","p","update","map","remove","pop","length","slice","SheetNavigationContext","SheetNavigationProvider","Provider","useSheetNavigation","noPages","noSubscribe","useSheetPages","store","useSheetPageOpen"],"sources":["../../../src/shared/sheetNavigation.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,aAAA,EAAeC,UAAA,EAAYC,oBAAA,QAA4C;AAyBzE,SAASC,2BAAA,EAAmD;EACjE,IAAIC,KAAA,GAA8B,EAAC;EACnC,MAAMC,SAAA,GAAY,mBAAIC,GAAA,CAAgB;EACtC,MAAMC,GAAA,GAAOC,IAAA,IAA+B;IAC1CJ,KAAA,GAAQI,IAAA;IACR,WAAWC,QAAA,IAAYJ,SAAA,EAAWI,QAAA,CAAS;EAC7C;EACA,OAAO;IACLC,UAAUD,QAAA,EAAU;MAClBJ,SAAA,CAAUM,GAAA,CAAIF,QAAQ;MACtB,OAAO,MAAMJ,SAAA,CAAUO,MAAA,CAAOH,QAAQ;IACxC;IACAI,QAAA,EAAUA,CAAA,KAAMT,KAAA;IAChBU,GAAA,EAAMC,EAAA,IAAOX,KAAA,CAAMY,IAAA,CAAMC,IAAA,IAASA,IAAA,CAAKF,EAAA,KAAOA,EAAE;IAChDG,KAAKD,IAAA,EAAM;MACTV,GAAA,CAAI,CAAC,GAAGH,KAAA,CAAMe,MAAA,CAAQC,CAAA,IAAMA,CAAA,CAAEL,EAAA,KAAOE,IAAA,CAAKF,EAAE,GAAGE,IAAI,CAAC;IACtD;IACAI,OAAOJ,IAAA,EAAM;MACX,IAAI,CAACb,KAAA,CAAMY,IAAA,CAAMI,CAAA,IAAMA,CAAA,CAAEL,EAAA,KAAOE,IAAA,CAAKF,EAAE,GAAG;MAC1CR,GAAA,CAAIH,KAAA,CAAMkB,GAAA,CAAKF,CAAA,IAAOA,CAAA,CAAEL,EAAA,KAAOE,IAAA,CAAKF,EAAA,GAAKE,IAAA,GAAOG,CAAE,CAAC;IACrD;IACAG,OAAOR,EAAA,EAAI;MACT,IAAI,CAACX,KAAA,CAAMY,IAAA,CAAMI,CAAA,IAAMA,CAAA,CAAEL,EAAA,KAAOA,EAAE,GAAG;MACrCR,GAAA,CAAIH,KAAA,CAAMe,MAAA,CAAQC,CAAA,IAAMA,CAAA,CAAEL,EAAA,KAAOA,EAAE,CAAC;IACtC;IACAS,IAAA,EAAM;MACJ,IAAIpB,KAAA,CAAMqB,MAAA,EAAQlB,GAAA,CAAIH,KAAA,CAAMsB,KAAA,CAAM,GAAG,EAAE,CAAC;IAC1C;EACF;AACF;AAEA,MAAMC,sBAAA,GAAyB3B,aAAA,CAAgD,MAAS;AAEjF,MAAM4B,uBAAA,GAA0BD,sBAAA,CAAuBE,QAAA;AAGvD,SAASC,mBAAA,EAAuD;EACrE,OAAO7B,UAAA,CAAW0B,sBAAsB;AAC1C;AAEA,MAAMI,OAAA,GAAgC,EAAC;AACvC,MAAMC,WAAA,GAAcA,CAAA,KAAM,MAAM,CAAC;AAG1B,SAASC,cAAcC,KAAA,EAA+D;EAC3F,OAAOhC,oBAAA,CACLgC,KAAA,EAAOxB,SAAA,IAAasB,WAAA,EACpBE,KAAA,GAAQA,KAAA,CAAMrB,QAAA,GAAW,MAAMkB,OAAA,EAC/BG,KAAA,GAAQA,KAAA,CAAMrB,QAAA,GAAW,MAAMkB,OACjC;AACF;AAGO,SAASI,iBAAiBD,KAAA,EAAyCnB,EAAA,EAAqB;EAC7F,MAAMD,GAAA,GAAMA,CAAA,KAAMoB,KAAA,EAAOpB,GAAA,CAAIC,EAAE,KAAK;EACpC,OAAOb,oBAAA,CAAqBgC,KAAA,EAAOxB,SAAA,IAAasB,WAAA,EAAalB,GAAA,EAAKA,GAAG;AACvE","ignoreList":[]}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var sheetNavigation_exports = {};
26
+ __export(sheetNavigation_exports, {
27
+ SheetNavigationProvider: () => SheetNavigationProvider,
28
+ createSheetNavigationStore: () => createSheetNavigationStore,
29
+ useSheetNavigation: () => useSheetNavigation,
30
+ useSheetPageOpen: () => useSheetPageOpen,
31
+ useSheetPages: () => useSheetPages
32
+ });
33
+ module.exports = __toCommonJS(sheetNavigation_exports);
34
+ var import_react = require("react");
35
+ function createSheetNavigationStore() {
36
+ var pages = [];
37
+ var listeners = /* @__PURE__ */new Set();
38
+ var set = function set2(next) {
39
+ pages = next;
40
+ var _iteratorNormalCompletion = true,
41
+ _didIteratorError = false,
42
+ _iteratorError = void 0;
43
+ try {
44
+ for (var _iterator = listeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
45
+ var listener = _step.value;
46
+ listener();
47
+ }
48
+ } catch (err) {
49
+ _didIteratorError = true;
50
+ _iteratorError = err;
51
+ } finally {
52
+ try {
53
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
54
+ _iterator.return();
55
+ }
56
+ } finally {
57
+ if (_didIteratorError) {
58
+ throw _iteratorError;
59
+ }
60
+ }
61
+ }
62
+ };
63
+ return {
64
+ subscribe(listener) {
65
+ listeners.add(listener);
66
+ return function () {
67
+ return listeners.delete(listener);
68
+ };
69
+ },
70
+ getPages: function getPages() {
71
+ return pages;
72
+ },
73
+ has: function has(id) {
74
+ return pages.some(function (page) {
75
+ return page.id === id;
76
+ });
77
+ },
78
+ push(page) {
79
+ set([...pages.filter(function (p) {
80
+ return p.id !== page.id;
81
+ }), page]);
82
+ },
83
+ update(page) {
84
+ if (!pages.some(function (p) {
85
+ return p.id === page.id;
86
+ })) return;
87
+ set(pages.map(function (p) {
88
+ return p.id === page.id ? page : p;
89
+ }));
90
+ },
91
+ remove(id) {
92
+ if (!pages.some(function (p) {
93
+ return p.id === id;
94
+ })) return;
95
+ set(pages.filter(function (p) {
96
+ return p.id !== id;
97
+ }));
98
+ },
99
+ pop() {
100
+ if (pages.length) set(pages.slice(0, -1));
101
+ }
102
+ };
103
+ }
104
+ var SheetNavigationContext = (0, import_react.createContext)(void 0);
105
+ var SheetNavigationProvider = SheetNavigationContext.Provider;
106
+ function useSheetNavigation() {
107
+ return (0, import_react.useContext)(SheetNavigationContext);
108
+ }
109
+ var noPages = [];
110
+ var noSubscribe = function noSubscribe2() {
111
+ return function () {};
112
+ };
113
+ function useSheetPages(store) {
114
+ var _ref;
115
+ return (0, import_react.useSyncExternalStore)((_ref = store === null || store === void 0 ? void 0 : store.subscribe) !== null && _ref !== void 0 ? _ref : noSubscribe, store ? store.getPages : function () {
116
+ return noPages;
117
+ }, store ? store.getPages : function () {
118
+ return noPages;
119
+ });
120
+ }
121
+ function useSheetPageOpen(store, id) {
122
+ var _ref;
123
+ var has = function has2() {
124
+ var _ref2;
125
+ return (_ref2 = store === null || store === void 0 ? void 0 : store.has(id)) !== null && _ref2 !== void 0 ? _ref2 : false;
126
+ };
127
+ return (0, import_react.useSyncExternalStore)((_ref = store === null || store === void 0 ? void 0 : store.subscribe) !== null && _ref !== void 0 ? _ref : noSubscribe, has, has);
128
+ }
129
+ //# sourceMappingURL=sheetNavigation.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","sheetNavigation_exports","SheetNavigationProvider","createSheetNavigationStore","useSheetNavigation","useSheetPageOpen","useSheetPages","module","exports","import_react","require","pages","listeners","Set","set","set2","next","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","done","listener","err","return"],"sources":["../../../src/shared/sheetNavigation.ts"],"sourcesContent":[null],"mappings":"AAAA,YAAS;;AAyBF,IAAAA,SAAS,GAAAC,MAAA,CAAAC,cAAA;AACd,IAAAC,gBAAmC,GAAAF,MAAA,CAAAG,wBAAA;AACnC,IAAAC,iBAAkB,GAAAJ,MAAA,CAAAK,mBAAoB;AACtC,IAAAC,YAAa,GAAAN,MAA+B,CAAAO,SAAA,CAAAC,cAAA;AAC1C,IAAAC,QAAQ,GAAAA,CAAAC,MAAA,EAAAC,GAAA;EACR,SAAAC,IAAW,IAAAD,GAAA,EACbZ,SAAA,CAAAW,MAAA,EAAAE,IAAA;IAAAC,GAAA,EAAAF,GAAA,CAAAC,IAAA;IAAAE,UAAA;EAAA;AACA;AAAO,IACLC,WAAU,GAAAA,CAAAC,EAAA,EAAAC,IAAU,EAAAC,MAAA,EAAAC,IAAA;EAClB,IAAAF,IAAA,WAAcA,IAAA,KAAQ,mBAAAA,IAAA;IACtB,SAAOG,GAAA,IAAMhB,iBAAiB,CAAAa,IAAA,GAChC,KAAAX,YAAA,CAAAe,IAAA,CAAAL,EAAA,EAAAI,GAAA,KAAAA,GAAA,KAAAF,MAAA,EACAnB,SAAU,CAAAiB,EAAM,EAAAI,GAAA;MAAAP,GAAA,EAAAA,CAAA,KAAAI,IAAA,CAAAG,GAAA;MAAAN,UAAA,IAAAK,IAAA,GAAAjB,gBAAA,CAAAe,IAAA,EAAAG,GAAA,MAAAD,IAAA,CAAAL;IAAA;EAAA;EACgC,OAC3CE,EAAA;AACH;AAAoD,IACtDM,YAAA,GAAAC,GAAA,IAAAR,WAAA,CAAAhB,SAAA;EAAAyB,KAAA;AAAA,IAAAD,GAAA;AAAA,IACAE,uBAAa;AACXhB,QAAA,CAAAgB,uBAAyB;EACzBC,uBAAe,EAAOA,CAAA,KAAEA,uBAA2B;EAAAC,0BACrD,EAAAA,CAAA,KAAAA,0BAAA;EAAAC,kBACW,EAAAA,CAAA,KAAAA,kBAAA;EACTC,gBAAW,EAAAA,CAAA,KAAMA,gBAAoB;EACrCC,aAAI,EAAMA,CAAA,KAAOA;AAAmB;AACtCC,MACA,CAAAC,OAAM,GAAAV,YAAA,CAAAG,uBAAA;AACJ,IAAAQ,YAAU,GAAAC,OAAQ,QAAU;AAAY,SAC1CP,2BAAA;EACF,IAAAQ,KAAA;EACF,IAAAC,SAAA,sBAAAC,GAAA;EAEA,IAAMC,GAAA,YAAAC,KAAAC,IAAA,EAAyB;IAExBL,KAAM,GAAAK,IAAA;IAGN,IAAAC,yBAAgE;MAAAC,iBAAA;MAAAC,cAAA;IACrE;MACF,SAAAC,SAAA,GAAAR,SAAA,CAAAS,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAJ,IAAA,IAAAQ,IAAA,GAAAP,yBAAA;QAEM,IAAAQ,QAAiC,GAAAF,KAAA,CAAAvB,KAAA;QACjCyB,QAAA;MAA2B;IAG1B,SAASC,GAAA;MACdR,iBAAO;MACLC,cAAO,GAAAO,GAAa;IACpB,UAAQ;MACR;QACF,KAAAT,yBAAA,IAAAG,SAAA,CAAAO,MAAA;UACFP,SAAA,CAAAO,MAAA;QAGO;MACL,UAAY;QACZ,IAAOT,iBAAA,EAAqB;UAC9B,MAAAC,cAAA","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ function loadSystemSlider() {
2
+ return null;
3
+ }
4
+ function loadSystemSegmentedControl() {
5
+ return null;
6
+ }
7
+ export { loadSystemSegmentedControl, loadSystemSlider };
8
+ //# sourceMappingURL=systemControlModules.gnome.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["loadSystemSlider","loadSystemSegmentedControl"],"sources":["../../../src/shared/systemControlModules.gnome.ts"],"sourcesContent":[null],"mappings":"AAGO,SAASA,iBAAA,EAAiD;EAC/D,OAAO;AACT;AAEO,SAASC,2BAAA,EAAqE;EACnF,OAAO;AACT","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var systemControlModules_gnome_exports = {};
26
+ __export(systemControlModules_gnome_exports, {
27
+ loadSystemSegmentedControl: () => loadSystemSegmentedControl,
28
+ loadSystemSlider: () => loadSystemSlider
29
+ });
30
+ module.exports = __toCommonJS(systemControlModules_gnome_exports);
31
+ function loadSystemSlider() {
32
+ return null;
33
+ }
34
+ function loadSystemSegmentedControl() {
35
+ return null;
36
+ }
37
+ //# sourceMappingURL=systemControlModules.gnome.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all"],"sources":["../../../src/shared/systemControlModules.gnome.ts"],"sourcesContent":[null],"mappings":"AAGO,YAAS;;AACd,IAAAA,SAAO,GAAAC,MAAA,CAAAC,cAAA;AACT,IAAAC,gBAAA,GAAAF,MAAA,CAAAG,wBAAA;AAEO,IAAAC,iBAAS,GAAAJ,MAAA,CAAAK,mBAAqE;AACnF,IAAAC,YAAO,GAAAN,MAAA,CAAAO,SAAA,CAAAC,cAAA;AACT,IAAAC,QAAA,GAAAA,CAAAC,MAAA,EAAAC,GAAA","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ function loadSystemSlider() {
2
+ return null;
3
+ }
4
+ function loadSystemSegmentedControl() {
5
+ return null;
6
+ }
7
+ export { loadSystemSegmentedControl, loadSystemSlider };
8
+ //# sourceMappingURL=systemControlModules.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["loadSystemSlider","loadSystemSegmentedControl"],"sources":["../../../src/shared/systemControlModules.ts"],"sourcesContent":[null],"mappings":"AAGO,SAASA,iBAAA,EAAiD;EAC/D,OAAO;AACT;AAEO,SAASC,2BAAA,EAAqE;EACnF,OAAO;AACT","ignoreList":[]}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var systemControlModules_native_exports = {};
26
+ __export(systemControlModules_native_exports, {
27
+ loadSystemModule: () => loadSystemModule,
28
+ loadSystemSegmentedControl: () => loadSystemSegmentedControl,
29
+ loadSystemSlider: () => loadSystemSlider
30
+ });
31
+ module.exports = __toCommonJS(systemControlModules_native_exports);
32
+ var import_react_native = require("react-native");
33
+ function hasNativeView(name, registry) {
34
+ try {
35
+ var _registry_hasViewManagerConfig;
36
+ return Boolean((_registry_hasViewManagerConfig = registry.hasViewManagerConfig) === null || _registry_hasViewManagerConfig === void 0 ? void 0 : _registry_hasViewManagerConfig.call(registry, name));
37
+ } catch (unused) {
38
+ return false;
39
+ }
40
+ }
41
+ function loadSystemModule(requireModule, viewName) {
42
+ var registry = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : import_react_native.UIManager;
43
+ try {
44
+ var _requireModule;
45
+ var component = (_requireModule = requireModule()) === null || _requireModule === void 0 ? void 0 : _requireModule.default;
46
+ return component && hasNativeView(viewName, registry) ? component : null;
47
+ } catch (unused) {
48
+ return null;
49
+ }
50
+ }
51
+ var slider;
52
+ var segmentedControl;
53
+ function loadSystemSlider() {
54
+ if (slider === void 0) {
55
+ slider = loadSystemModule(function () {
56
+ try {
57
+ return require("@react-native-community/slider");
58
+ } catch (unused) {
59
+ return void 0;
60
+ }
61
+ }, "RNCSlider");
62
+ }
63
+ return slider;
64
+ }
65
+ function loadSystemSegmentedControl() {
66
+ if (segmentedControl === void 0) {
67
+ segmentedControl = loadSystemModule(function () {
68
+ try {
69
+ return require("@react-native-segmented-control/segmented-control");
70
+ } catch (unused) {
71
+ return void 0;
72
+ }
73
+ }, "RNCSegmentedControl");
74
+ }
75
+ return segmentedControl;
76
+ }
77
+ //# sourceMappingURL=systemControlModules.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["systemControlModules_native_exports","__export","loadSystemModule","loadSystemSegmentedControl","loadSystemSlider","module","exports","__toCommonJS","import_react_native","require","hasNativeView","name","registry","_registry_hasViewManagerConfig","Boolean","hasViewManagerConfig","call","unused","requireModule","viewName","arguments","length","UIManager","_requireModule","component","default","slider","segmentedControl"],"sources":["../../../src/shared/systemControlModules.native.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,mCAAA;AAAAC,QAAA,CAAAD,mCAAA;EAAAE,gBAAA,EAAAA,CAAA,KAAAA,gBAAA;EAAAC,0BAAA,EAAAA,CAAA,KAAAA,0BAAA;EAAAC,gBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAC,YAAA,CAAAP,mCAAA;AAAA,IAAAQ,mBAAA,GAA0BC,OAAA;AAUtB,SAASC,cAAcC,IAAA,EAAMC,QAAA,EAAU;EACvC,IAAI;IACA,IAAIC,8BAAA;IACJ,OAAOC,OAAA,EAASD,8BAAA,GAAiCD,QAAA,CAASG,oBAAA,MAA0B,QAAQF,8BAAA,KAAmC,SAAS,SAASA,8BAAA,CAA+BG,IAAA,CAAKJ,QAAA,EAAUD,IAAI,CAAC;EACxM,SAASM,MAAA,EAAQ;IACb,OAAO;EACX;AACJ;AACO,SAASf,iBAAiBgB,aAAA,EAAeC,QAAA,EAAU;EACtD,IAAIP,QAAA,GAAWQ,SAAA,CAAUC,MAAA,GAAS,KAAKD,SAAA,CAAU,CAAC,MAAM,SAASA,SAAA,CAAU,CAAC,IAAIZ,mBAAA,CAAAc,SAAA;EAChF,IAAI;IACA,IAAIC,cAAA;IACJ,IAAIC,SAAA,IAAaD,cAAA,GAAiBL,aAAA,CAAc,OAAO,QAAQK,cAAA,KAAmB,SAAS,SAASA,cAAA,CAAeE,OAAA;IACnH,OAAOD,SAAA,IAAad,aAAA,CAAcS,QAAA,EAAUP,QAAQ,IAAIY,SAAA,GAAY;EACxE,SAASP,MAAA,EAAQ;IACb,OAAO;EACX;AACJ;AACA,IAAIS,MAAA;AACJ,IAAIC,gBAAA;AACG,SAASvB,iBAAA,EAAmB;EAC/B,IAAIsB,MAAA,KAAW,QAAW;IACtBA,MAAA,GAASxB,gBAAA,CAAiB,YAAW;MACjC,IAAI;QACA,OAAOO,OAAA,CAAQ,gCAAgC;MACnD,SAASQ,MAAA,EAAQ;QACb,OAAO;MACX;IACJ,GAAG,WAAW;EAClB;EACA,OAAOS,MAAA;AACX;AACO,SAASvB,2BAAA,EAA6B;EACzC,IAAIwB,gBAAA,KAAqB,QAAW;IAChCA,gBAAA,GAAmBzB,gBAAA,CAAiB,YAAW;MAC3C,IAAI;QACA,OAAOO,OAAA,CAAQ,mDAAmD;MACtE,SAASQ,MAAA,EAAQ;QACb,OAAO;MACX;IACJ,GAAG,qBAAqB;EAC5B;EACA,OAAOU,gBAAA;AACX","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ import { Platform } from "react-native-web";
2
+ import { isDarkThemeName } from "@multiplatform.one/theme";
3
+ import { useTheme, useThemeName } from "tamagui";
4
+ import { Switch } from "react-native-web";
5
+ function systemControlPlatform() {
6
+ return Platform.OS === "ios" || Platform.OS === "android" ? Platform.OS : null;
7
+ }
8
+ function useThemeLiteral() {
9
+ const theme = useTheme();
10
+ return token => {
11
+ const value = theme[token.startsWith("$") ? token.slice(1) : token]?.val;
12
+ return typeof value === "string" ? value : void 0;
13
+ };
14
+ }
15
+ function useSystemControlScheme() {
16
+ return isDarkThemeName(useThemeName()) ? "dark" : "light";
17
+ }
18
+ export { Switch as SystemSwitchView, systemControlPlatform, useSystemControlScheme, useThemeLiteral };
19
+ //# sourceMappingURL=systemControls.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","isDarkThemeName","useTheme","useThemeName","Switch","systemControlPlatform","OS","useThemeLiteral","theme","token","value","startsWith","slice","val","useSystemControlScheme"],"sources":["../../../src/shared/systemControls.ts"],"sourcesContent":[null],"mappings":"AACA,SAASA,QAAA,QAAgB;AACzB,SAASC,eAAA,QAAuB;AAChC,SAASC,QAAA,EAAUC,YAAA,QAAoB;AASvC,SAAmBC,MAAA,QAAwB;AAEpC,SAASC,sBAAA,EAA+C;EAC7D,OAAOL,QAAA,CAASM,EAAA,KAAO,SAASN,QAAA,CAASM,EAAA,KAAO,YAAYN,QAAA,CAASM,EAAA,GAAK;AAC5E;AAGO,SAASC,gBAAA,EAAyD;EACvE,MAAMC,KAAA,GAAQN,QAAA,CAAS;EACvB,OAAQO,KAAA,IAAU;IAChB,MAAMC,KAAA,GAAQF,KAAA,CAAMC,KAAA,CAAME,UAAA,CAAW,GAAG,IAAIF,KAAA,CAAMG,KAAA,CAAM,CAAC,IAAIH,KAAK,GAAGI,GAAA;IACrE,OAAO,OAAOH,KAAA,KAAU,WAAWA,KAAA,GAAQ;EAC7C;AACF;AAGO,SAASI,uBAAA,EAA2C;EACzD,OAAOb,eAAA,CAAgBE,YAAA,CAAa,CAAC,IAAI,SAAS;AACpD","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var systemControls_exports = {};
26
+ __export(systemControls_exports, {
27
+ SystemSwitchView: () => import_react_native2.Switch,
28
+ systemControlPlatform: () => systemControlPlatform,
29
+ useSystemControlScheme: () => useSystemControlScheme,
30
+ useThemeLiteral: () => useThemeLiteral
31
+ });
32
+ module.exports = __toCommonJS(systemControls_exports);
33
+ var import_react_native = require("react-native");
34
+ var import_theme = require("@multiplatform.one/theme");
35
+ var import_tamagui = require("tamagui");
36
+ var import_react_native2 = require("react-native");
37
+ function systemControlPlatform() {
38
+ return import_react_native.Platform.OS === "ios" || import_react_native.Platform.OS === "android" ? import_react_native.Platform.OS : null;
39
+ }
40
+ function useThemeLiteral() {
41
+ var theme = (0, import_tamagui.useTheme)();
42
+ return function (token) {
43
+ var _theme_;
44
+ var value = (_theme_ = theme[token.startsWith("$") ? token.slice(1) : token]) === null || _theme_ === void 0 ? void 0 : _theme_.val;
45
+ return typeof value === "string" ? value : void 0;
46
+ };
47
+ }
48
+ function useSystemControlScheme() {
49
+ return (0, import_theme.isDarkThemeName)((0, import_tamagui.useThemeName)()) ? "dark" : "light";
50
+ }
51
+ //# sourceMappingURL=systemControls.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call"],"sources":["../../../src/shared/systemControls.ts"],"sourcesContent":[null],"mappings":"AACA,YAAS;;AACT,IAAAA,SAAS,GAAAC,MAAA,CAAAC,cAAuB;AAChC,IAAAC,gBAAmB,GAAAF,MAAA,CAAAG,wBAAoB;AASvC,IAAAC,iBAAmB,GAAwBJ,MAAA,CAAAK,mBAAA;AAEpC,IAAAC,YAAS,GAAAN,MAAA,CAAAO,SAA+C,CAAAC,cAAA;AAC7D,IAAAC,QAAO,GAAAA,CAAAC,MAAS,EAAAC,GAAO;EACzB,SAAAC,IAAA,IAAAD,GAAA,EAGOZ,SAAS,CAAAW,MAAA,EAAAE,IAAA,EAAyD;IAAAC,GAAA,EAAAF,GAAA,CAAAC,IAAA;IAAAE,UAAA;EAAA;AACvE;AACA,IAAAC,WAAQ,GAAAA,CAAAC,EAAU,EAAAC,IAAA,EAAAC,MAAA,EAAAC,IAAA;EAChB,IAAAF,IAAM,WAAQA,IAAM,KAAM,YAAW,OAAOA,IAAA,KAAM,UAAW,EAAK;IAClE,SAAOG,GAAA,IAAOhB,iBAAU,CAAAa,IAAW,GACrC,KAAAX,YAAA,CAAAe,IAAA,CAAAL,EAAA,EAAAI,GAAA,KAAAA,GAAA,KAAAF,MAAA,EACFnB,SAAA,CAAAiB,EAAA,EAAAI,GAAA;MAAAP,GAAA,EAAAA,CAAA,KAAAI,IAAA,CAAAG,GAAA;MAAAN,UAAA,IAAAK,IAAA,GAAAjB,gBAAA,CAAAe,IAAA,EAAAG,GAAA,MAAAD,IAAA,CAAAL;IAAA;EAGO;EACL,OAAOE,EAAA;AACT","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/forms",
3
- "version": "7.65.2",
3
+ "version": "7.67.0",
4
4
  "description": "Cross-platform form components with URL state management",
5
5
  "keywords": [
6
6
  "cross-platform",
@@ -57,10 +57,10 @@
57
57
  },
58
58
  "dependencies": {
59
59
  "@floating-ui/react": "^0.27.20",
60
- "@multiplatform.one/platform": "^7.65.2",
61
- "@multiplatform.one/router": "^7.65.2",
62
- "@multiplatform.one/table-primitives": "^7.65.2",
63
- "@multiplatform.one/theme": "^7.65.2",
60
+ "@multiplatform.one/platform": "^7.67.0",
61
+ "@multiplatform.one/router": "^7.67.0",
62
+ "@multiplatform.one/table-primitives": "^7.67.0",
63
+ "@multiplatform.one/theme": "^7.67.0",
64
64
  "@phosphor-icons/react": "^2.1.10",
65
65
  "@tamagui/get-font-sized": "2.7.6",
66
66
  "@tamagui/get-token": "2.7.6",
@@ -80,9 +80,9 @@
80
80
  },
81
81
  "devDependencies": {
82
82
  "@expo/ui": "~55.0.17",
83
- "@multiplatform.one/config": "7.65.2",
84
- "@multiplatform.one/storybook": "7.65.2",
85
- "@multiplatform.one/test-utils": "7.65.2",
83
+ "@multiplatform.one/config": "7.67.0",
84
+ "@multiplatform.one/storybook": "7.67.0",
85
+ "@multiplatform.one/test-utils": "7.67.0",
86
86
  "@tamagui/build": "2.7.6",
87
87
  "@tamagui/config": "2.7.6",
88
88
  "@tamagui/vite-plugin": "2.7.6",
@@ -106,6 +106,8 @@
106
106
  "peerDependencies": {
107
107
  "@expo/ui": "*",
108
108
  "@react-native-community/datetimepicker": ">=8.0.1",
109
+ "@react-native-community/slider": ">=4.5.0",
110
+ "@react-native-segmented-control/segmented-control": ">=2.5.0",
109
111
  "expo-document-picker": "*",
110
112
  "expo-haptics": "55.0.17",
111
113
  "expo-image-picker": "*",
@@ -125,6 +127,12 @@
125
127
  "@react-native-community/datetimepicker": {
126
128
  "optional": true
127
129
  },
130
+ "@react-native-community/slider": {
131
+ "optional": true
132
+ },
133
+ "@react-native-segmented-control/segmented-control": {
134
+ "optional": true
135
+ },
128
136
  "expo-document-picker": {
129
137
  "optional": true
130
138
  },
@@ -7,12 +7,14 @@ import { renderWithProviders } from "@multiplatform.one/test-utils";
7
7
  import { act } from "@testing-library/react";
8
8
  import { useState, type ReactNode } from "react";
9
9
  import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
10
- import { Text } from "tamagui";
10
+ import { Text, XStack, YStack } from "tamagui";
11
11
  import { OverlayStackProvider } from "../shared/overlayStack";
12
- import type { CompactFace } from "./compactFace";
12
+ import { MENU_MIN_WIDTH, type CompactFace } from "./compactFace";
13
13
  import { FloatingPanel } from "./index.native";
14
14
  import { panelViewportPadding } from "./useFloatingPanel";
15
15
 
16
+ const win = vi.hoisted(() => ({ width: 390 }));
17
+
16
18
  vi.mock("react-native-web", async (importOriginal) => {
17
19
  const actual = await importOriginal<typeof import("react-native")>();
18
20
  return {
@@ -20,7 +22,7 @@ vi.mock("react-native-web", async (importOriginal) => {
20
22
  ActionSheetIOS: undefined,
21
23
  Modal: ({ children, visible }: { children: ReactNode; visible: boolean }) =>
22
24
  visible ? children : null,
23
- useWindowDimensions: () => ({ width: 390, height: 844, scale: 3, fontScale: 1 }),
25
+ useWindowDimensions: () => ({ width: win.width, height: 844, scale: 3, fontScale: 1 }),
24
26
  };
25
27
  });
26
28
 
@@ -28,6 +30,7 @@ let trigger = { x: 20, y: 240, width: 120, height: 44 };
28
30
  beforeEach(() => {
29
31
  vi.useFakeTimers();
30
32
  trigger = { x: 20, y: 240, width: 120, height: 44 };
33
+ win.width = 390;
31
34
  // RN-web's measureInWindow reads the node's client rect on a timer.
32
35
  vi.spyOn(HTMLElement.prototype, "getBoundingClientRect").mockImplementation(() => ({
33
36
  x: trigger.x,
@@ -120,6 +123,16 @@ describe("FloatingPanel native menu face (FZ-7830)", () => {
120
123
  expect(row.getAttribute("aria-expanded")).toBe("true");
121
124
  });
122
125
 
126
+ it("keeps its shadow: an inner view clips, not the elevated surface (FZ-8116)", () => {
127
+ const result = renderWithProviders(<Menu face="menu" />);
128
+ tap(result.getByRole("button", { name: "Stack actions" }));
129
+ const surface = document.querySelector('[data-testid="floating-panel-menu-surface"]');
130
+ const clip = document.querySelector('[data-testid="floating-panel-menu-clip"]');
131
+ expect(surface?.contains(clip)).toBe(true);
132
+ expect(surface?.className).not.toContain("_ox-hidden");
133
+ expect(clip?.className).toContain("_ox-hidden");
134
+ });
135
+
123
136
  it("closes when the repeated trigger row is pressed", () => {
124
137
  const result = renderWithProviders(<Menu face="menu" />);
125
138
  tap(result.getByRole("button", { name: "Stack actions" }));
@@ -193,3 +206,60 @@ describe("FloatingPanel native menu face (FZ-7830)", () => {
193
206
  expect(sheet()).toBeNull();
194
207
  });
195
208
  });
209
+
210
+ /** The SHC account menu's shape: an avatar-sized trigger over rows that fill their width. */
211
+ function AccountMenu() {
212
+ const [open, setOpen] = useState(false);
213
+ return (
214
+ <FloatingPanel
215
+ open={open}
216
+ onOpenChange={setOpen}
217
+ compactFace="menu"
218
+ anchorMode="attach"
219
+ triggerEcho={false}
220
+ triggerSizing="content"
221
+ contentPadding="none"
222
+ trigger={<Text>A</Text>}
223
+ triggerA11y={{ label: "Account" }}
224
+ >
225
+ <XStack testID="identity-row" width="100%">
226
+ <YStack flex={1} minWidth={0}>
227
+ <Text numberOfLines={1}>Clay Risser</Text>
228
+ <Text numberOfLines={1}>clayrisser@gmail.com</Text>
229
+ </YStack>
230
+ </XStack>
231
+ <Text>Sign out</Text>
232
+ </FloatingPanel>
233
+ );
234
+ }
235
+
236
+ describe("FloatingPanel native menu face width (FZ-8220)", () => {
237
+ it("opens rows with no intrinsic width at the platform minimum, not the trigger's 44pt", () => {
238
+ trigger = { x: 336, y: 52, width: 44, height: 44 };
239
+ const result = renderWithProviders(<AccountMenu />);
240
+ tap(result.getByRole("button", { name: "Account" }));
241
+ const panel = menu() as HTMLElement;
242
+ expect(MENU_MIN_WIDTH).toBe(250);
243
+ expect(panel.style.minWidth).toBe(`${MENU_MIN_WIDTH}px`);
244
+ expect(panel.style.maxWidth).toBe(`${390 - 2 * panelViewportPadding}px`);
245
+ layout(panel, MENU_MIN_WIDTH, 160);
246
+ expect(panel.style.left).toBe(`${390 - panelViewportPadding - MENU_MIN_WIDTH}px`);
247
+ expect(panel.style.top).toBe(`${52 + 44}px`);
248
+ expect(echo()).toBeNull();
249
+ });
250
+
251
+ it("clamps the minimum to the screen less its margins on a narrow window", () => {
252
+ win.width = 240;
253
+ trigger = { x: 186, y: 52, width: 44, height: 44 };
254
+ const result = renderWithProviders(<AccountMenu />);
255
+ tap(result.getByRole("button", { name: "Account" }));
256
+ expect(menu()?.style.minWidth).toBe(`${240 - 2 * panelViewportPadding}px`);
257
+ });
258
+
259
+ it("keeps a trigger wider than the minimum as the floor", () => {
260
+ trigger = { x: 20, y: 240, width: 320, height: 44 };
261
+ const result = renderWithProviders(<Menu face="menu" />);
262
+ tap(result.getByRole("button", { name: "Stack actions" }));
263
+ expect(menu()?.style.minWidth).toBe("320px");
264
+ });
265
+ });