@multiplatform.one/components 7.11.0 → 7.16.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 (691) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/Accordion/index.cjs +2 -6
  3. package/dist/cjs/Accordion/index.native.js +3 -7
  4. package/dist/cjs/Accordion/index.native.js.map +1 -1
  5. package/dist/cjs/Alert/index.native.js.map +1 -1
  6. package/dist/cjs/AnimateHeight/index.cjs +1 -3
  7. package/dist/cjs/AnimateHeight/index.native.js +1 -3
  8. package/dist/cjs/AnimateHeight/index.native.js.map +1 -1
  9. package/dist/cjs/Avatar/getInitials.native.js.map +1 -1
  10. package/dist/cjs/Avatar/index.native.js.map +1 -1
  11. package/dist/cjs/Badge/index.native.js.map +1 -1
  12. package/dist/cjs/Button.native.js.map +1 -1
  13. package/dist/cjs/Card.native.js.map +1 -1
  14. package/dist/cjs/CardFooter.native.js.map +1 -1
  15. package/dist/cjs/CardHeader.native.js.map +1 -1
  16. package/dist/cjs/Carousel/index.cjs +2 -1
  17. package/dist/cjs/Carousel/index.native.js +3 -2
  18. package/dist/cjs/Carousel/index.native.js.map +1 -1
  19. package/dist/cjs/Chip/index.cjs +13 -3
  20. package/dist/cjs/Chip/index.native.js +13 -3
  21. package/dist/cjs/Chip/index.native.js.map +1 -1
  22. package/dist/cjs/Collapsible.native.js.map +1 -1
  23. package/dist/cjs/ContextMenu/index.native.js.map +1 -1
  24. package/dist/cjs/CopyField/index.native.js.map +1 -1
  25. package/dist/cjs/DotIndicator/index.native.js.map +1 -1
  26. package/dist/cjs/DropdownMenu/index.native.js.map +1 -1
  27. package/dist/cjs/ErrorBoundary/index.native.js.map +1 -1
  28. package/dist/cjs/Heading.native.js.map +1 -1
  29. package/dist/cjs/Meter/index.native.js +1 -1
  30. package/dist/cjs/Meter/index.native.js.map +1 -1
  31. package/dist/cjs/Meter/meter.native.js.map +1 -1
  32. package/dist/cjs/Pagination.native.js +1 -1
  33. package/dist/cjs/Pagination.native.js.map +1 -1
  34. package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
  35. package/dist/cjs/Quote/index.native.js.map +1 -1
  36. package/dist/cjs/ScrollView/index.cjs +28 -0
  37. package/dist/cjs/ScrollView/index.native.js +72 -0
  38. package/dist/cjs/ScrollView/index.native.js.map +1 -0
  39. package/dist/cjs/Separator/index.native.js.map +1 -1
  40. package/dist/cjs/SheetModal/detents.native.js.map +1 -1
  41. package/dist/cjs/SheetModal/index.native.js +70 -22
  42. package/dist/cjs/SheetModal/index.native.js.map +1 -1
  43. package/dist/cjs/Skeleton/index.cjs +1 -13
  44. package/dist/cjs/Skeleton/index.native.js +1 -13
  45. package/dist/cjs/Skeleton/index.native.js.map +1 -1
  46. package/dist/cjs/SkipLink/index.native.js.map +1 -1
  47. package/dist/cjs/SortableList/SortableHandle.native.js.map +1 -1
  48. package/dist/cjs/SortableList/index.native.js.map +1 -1
  49. package/dist/cjs/SortableList/useSortableRows.native.js.map +1 -1
  50. package/dist/cjs/Tabs/index.cjs +4 -7
  51. package/dist/cjs/Tabs/index.native.js +4 -7
  52. package/dist/cjs/Tabs/index.native.js.map +1 -1
  53. package/dist/cjs/Text.cjs +2 -0
  54. package/dist/cjs/Text.native.js +2 -0
  55. package/dist/cjs/Text.native.js.map +1 -1
  56. package/dist/cjs/Toast/index.native.js.map +1 -1
  57. package/dist/cjs/Toast/store.native.js.map +1 -1
  58. package/dist/cjs/Tooltip/nativePress.native.js.map +1 -1
  59. package/dist/cjs/Tooltip/tooltipShared.native.js.map +1 -1
  60. package/dist/cjs/TreeSelect/index.cjs +55 -52
  61. package/dist/cjs/TreeSelect/index.native.js +56 -53
  62. package/dist/cjs/TreeSelect/index.native.js.map +1 -1
  63. package/dist/cjs/TreeSelect/treeSelectModel.native.js.map +1 -1
  64. package/dist/cjs/Video/PlayerChrome.cjs +3 -9
  65. package/dist/cjs/Video/PlayerChrome.native.js +3 -9
  66. package/dist/cjs/Video/PlayerChrome.native.js.map +1 -1
  67. package/dist/cjs/Video/VideoFrame.native.js.map +1 -1
  68. package/dist/cjs/Video/types.native.js.map +1 -1
  69. package/dist/cjs/Wheel/index.native.js.map +1 -1
  70. package/dist/cjs/Wizard/index.native.js +2 -2
  71. package/dist/cjs/Wizard/index.native.js.map +1 -1
  72. package/dist/cjs/actions/ActionBar.native.js.map +1 -1
  73. package/dist/cjs/actions/DestructiveAction.native.js.map +1 -1
  74. package/dist/cjs/actions/devWarn.native.js.map +1 -1
  75. package/dist/cjs/actions/index.native.js.map +1 -1
  76. package/dist/cjs/actions/severity.native.js.map +1 -1
  77. package/dist/cjs/charts/Axis.native.js.map +1 -1
  78. package/dist/cjs/charts/BarChart.native.js.map +1 -1
  79. package/dist/cjs/charts/ChartDataView.native.js.map +1 -1
  80. package/dist/cjs/charts/ChartSurface.native.js.map +1 -1
  81. package/dist/cjs/charts/LineChart.native.js.map +1 -1
  82. package/dist/cjs/charts/PieChart.native.js.map +1 -1
  83. package/dist/cjs/charts/Sparkline.native.js.map +1 -1
  84. package/dist/cjs/charts/accessibility.native.js.map +1 -1
  85. package/dist/cjs/charts/composeChart.native.js.map +1 -1
  86. package/dist/cjs/charts/index.native.js.map +1 -1
  87. package/dist/cjs/charts/math.cjs +18 -0
  88. package/dist/cjs/charts/math.native.js +18 -0
  89. package/dist/cjs/charts/math.native.js.map +1 -1
  90. package/dist/cjs/charts/series.cjs +17 -8
  91. package/dist/cjs/charts/series.native.js +17 -8
  92. package/dist/cjs/charts/series.native.js.map +1 -1
  93. package/dist/cjs/charts/svg.cjs +6 -0
  94. package/dist/cjs/charts/svg.native.js +6 -0
  95. package/dist/cjs/charts/svg.native.js.map +1 -1
  96. package/dist/cjs/charts/types.native.js.map +1 -1
  97. package/dist/cjs/charts/useChartTheme.cjs +3 -9
  98. package/dist/cjs/charts/useChartTheme.native.js +4 -10
  99. package/dist/cjs/charts/useChartTheme.native.js.map +1 -1
  100. package/dist/cjs/code/Code/index.cjs +6 -0
  101. package/dist/cjs/code/Code/index.native.js +7 -4
  102. package/dist/cjs/code/Code/index.native.js.map +1 -1
  103. package/dist/cjs/code/CodeBlock/index.cjs +4 -5
  104. package/dist/cjs/code/CodeBlock/index.native.js +10 -11
  105. package/dist/cjs/code/CodeBlock/index.native.js.map +1 -1
  106. package/dist/cjs/code/HighlightedCode/index.native.js.map +1 -1
  107. package/dist/cjs/code/Highlighter/index.native.js.map +1 -1
  108. package/dist/cjs/code/Pre/index.native.js.map +1 -1
  109. package/dist/cjs/code/index.native.js +5 -5
  110. package/dist/cjs/code/index.native.js.map +1 -1
  111. package/dist/cjs/componentColors.native.js.map +1 -1
  112. package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -1
  113. package/dist/cjs/feedback/NotifyHost.native.js +2 -2
  114. package/dist/cjs/feedback/NotifyHost.native.js.map +1 -1
  115. package/dist/cjs/feedback/copy.native.js.map +1 -1
  116. package/dist/cjs/feedback/index.native.js.map +1 -1
  117. package/dist/cjs/feedback/notify.native.js.map +1 -1
  118. package/dist/cjs/feedback/route.native.js.map +1 -1
  119. package/dist/cjs/feedback/store.native.js.map +1 -1
  120. package/dist/cjs/hooks/index.native.js +1 -1
  121. package/dist/cjs/hooks/index.native.js.map +1 -1
  122. package/dist/cjs/hooks/useClipboard.native.js.map +1 -1
  123. package/dist/cjs/hooks/useDocumentTitle.native.js.map +1 -1
  124. package/dist/cjs/icons/CheckRegular.native.js.map +1 -1
  125. package/dist/cjs/icons/MinusRegular.native.js.map +1 -1
  126. package/dist/cjs/icons/index.native.js.map +1 -1
  127. package/dist/cjs/icons/lucide.native.js.map +1 -1
  128. package/dist/cjs/icons/themed.cjs +2 -1
  129. package/dist/cjs/icons/themed.native.js +2 -1
  130. package/dist/cjs/icons/themed.native.js.map +1 -1
  131. package/dist/cjs/images/Image/ImageFrame.native.js +1 -1
  132. package/dist/cjs/images/Image/ImageFrame.native.js.map +1 -1
  133. package/dist/cjs/images/Image/index.native.js +1 -1
  134. package/dist/cjs/images/Image/shared.native.js +1 -1
  135. package/dist/cjs/images/Image/shared.native.js.map +1 -1
  136. package/dist/cjs/images/Image/types.native.js.map +1 -1
  137. package/dist/cjs/images/index.native.js.map +1 -1
  138. package/dist/cjs/index.native.js +29 -29
  139. package/dist/cjs/index.native.js.map +1 -1
  140. package/dist/cjs/knobImmuneExports.cjs +3 -3
  141. package/dist/cjs/knobImmuneExports.native.js +3 -3
  142. package/dist/cjs/knobImmuneExports.native.js.map +1 -1
  143. package/dist/cjs/layouts/AsyncBoundary.native.js +2 -2
  144. package/dist/cjs/layouts/AsyncBoundary.native.js.map +1 -1
  145. package/dist/cjs/layouts/Debug/index.native.js.map +1 -1
  146. package/dist/cjs/layouts/EmptyState.native.js.map +1 -1
  147. package/dist/cjs/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
  148. package/dist/cjs/layouts/PageTemplates.native.js.map +1 -1
  149. package/dist/cjs/layouts/PaneScaffold.cjs +70 -42
  150. package/dist/cjs/layouts/PaneScaffold.native.js +75 -48
  151. package/dist/cjs/layouts/PaneScaffold.native.js.map +1 -1
  152. package/dist/cjs/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
  153. package/dist/cjs/layouts/ViewSwitcher.native.js.map +1 -1
  154. package/dist/cjs/layouts/attachments.cjs +2 -1
  155. package/dist/cjs/layouts/attachments.native.js +3 -2
  156. package/dist/cjs/layouts/attachments.native.js.map +1 -1
  157. package/dist/cjs/layouts/breadcrumbs.native.js.map +1 -1
  158. package/dist/cjs/layouts/index.native.js +3 -3
  159. package/dist/cjs/layouts/index.native.js.map +1 -1
  160. package/dist/cjs/layouts/page.cjs +2 -1
  161. package/dist/cjs/layouts/page.native.js +2 -1
  162. package/dist/cjs/layouts/page.native.js.map +1 -1
  163. package/dist/cjs/layouts/pageHeadingScope.native.js.map +1 -1
  164. package/dist/cjs/layouts/sidebar.cjs +1 -3
  165. package/dist/cjs/layouts/sidebar.native.js +1 -3
  166. package/dist/cjs/layouts/sidebar.native.js.map +1 -1
  167. package/dist/cjs/layouts/tags.native.js +1 -1
  168. package/dist/cjs/layouts/tags.native.js.map +1 -1
  169. package/dist/cjs/layouts/timeline.cjs +9 -1
  170. package/dist/cjs/layouts/timeline.native.js +11 -3
  171. package/dist/cjs/layouts/timeline.native.js.map +1 -1
  172. package/dist/cjs/layouts/toolbar.native.js.map +1 -1
  173. package/dist/cjs/shared/actionScan.native.js.map +1 -1
  174. package/dist/cjs/shared/i18n.native.js.map +1 -1
  175. package/dist/cjs/shared/t.native.js.map +1 -1
  176. package/dist/cjs/shared/textRidesText.native.js.map +1 -1
  177. package/dist/cjs/shared/useReturnFocusOnClose.native.js.map +1 -1
  178. package/dist/cjs/surfaces.cjs +0 -32
  179. package/dist/cjs/surfaces.native.js +1 -33
  180. package/dist/cjs/surfaces.native.js.map +1 -1
  181. package/dist/cjs/tamagui.cjs +2 -1
  182. package/dist/cjs/tamagui.native.js +2 -1
  183. package/dist/cjs/tamagui.native.js.map +1 -1
  184. package/dist/cjs/testSetup.native.js.map +1 -1
  185. package/dist/cjs/utils/setTinted.native.js.map +1 -1
  186. package/dist/cjs/utils/unwrapText.native.js.map +1 -1
  187. package/dist/cjs/views/Calendar.native.js.map +1 -1
  188. package/dist/cjs/views/Dashboard.native.js +1 -1
  189. package/dist/cjs/views/Dashboard.native.js.map +1 -1
  190. package/dist/cjs/views/Gantt.native.js +1 -1
  191. package/dist/cjs/views/Gantt.native.js.map +1 -1
  192. package/dist/cjs/views/ImageGrid.native.js +1 -1
  193. package/dist/cjs/views/ImageGrid.native.js.map +1 -1
  194. package/dist/cjs/views/Kanban.cjs +1 -0
  195. package/dist/cjs/views/Kanban.native.js +3 -1
  196. package/dist/cjs/views/Kanban.native.js.map +1 -1
  197. package/dist/cjs/views/List.cjs +4 -4
  198. package/dist/cjs/views/List.native.js +7 -7
  199. package/dist/cjs/views/List.native.js.map +1 -1
  200. package/dist/cjs/views/Matrix.cjs +568 -0
  201. package/dist/cjs/views/Matrix.native.js +612 -0
  202. package/dist/cjs/views/Matrix.native.js.map +1 -0
  203. package/dist/cjs/views/ReportBuilder.native.js +1 -1
  204. package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
  205. package/dist/cjs/views/TreeView.native.js.map +1 -1
  206. package/dist/cjs/views/calendarMath.native.js.map +1 -1
  207. package/dist/cjs/views/ganttMath.cjs +2 -0
  208. package/dist/cjs/views/ganttMath.native.js +2 -0
  209. package/dist/cjs/views/ganttMath.native.js.map +1 -1
  210. package/dist/cjs/views/index.cjs +16 -0
  211. package/dist/cjs/views/index.native.js +17 -1
  212. package/dist/cjs/views/index.native.js.map +1 -1
  213. package/dist/cjs/views/kanbanDnd.native.js.map +1 -1
  214. package/dist/cjs/views/matrixMath.cjs +157 -0
  215. package/dist/cjs/views/matrixMath.native.js +229 -0
  216. package/dist/cjs/views/matrixMath.native.js.map +1 -0
  217. package/dist/cjs/views/treeViewDnd.native.js.map +1 -1
  218. package/dist/cjs/views/treeViewLayout.native.js.map +1 -1
  219. package/dist/cjs/views/treeViewMotion.native.js.map +1 -1
  220. package/dist/cjs/views/treeViewReveal.native.js.map +1 -1
  221. package/dist/esm/Accordion/index.mjs +3 -7
  222. package/dist/esm/Accordion/index.mjs.map +1 -1
  223. package/dist/esm/Accordion/index.native.js +3 -7
  224. package/dist/esm/Accordion/index.native.js.map +1 -1
  225. package/dist/esm/AnimateHeight/index.mjs +2 -4
  226. package/dist/esm/AnimateHeight/index.mjs.map +1 -1
  227. package/dist/esm/AnimateHeight/index.native.js +2 -4
  228. package/dist/esm/AnimateHeight/index.native.js.map +1 -1
  229. package/dist/esm/Avatar/getInitials.native.js.map +1 -1
  230. package/dist/esm/Avatar/index.native.js.map +1 -1
  231. package/dist/esm/Badge/index.native.js.map +1 -1
  232. package/dist/esm/Button.native.js.map +1 -1
  233. package/dist/esm/Carousel/index.mjs +2 -1
  234. package/dist/esm/Carousel/index.mjs.map +1 -1
  235. package/dist/esm/Carousel/index.native.js +2 -1
  236. package/dist/esm/Carousel/index.native.js.map +1 -1
  237. package/dist/esm/Chip/index.mjs +15 -5
  238. package/dist/esm/Chip/index.mjs.map +1 -1
  239. package/dist/esm/Chip/index.native.js +15 -5
  240. package/dist/esm/Chip/index.native.js.map +1 -1
  241. package/dist/esm/Collapsible.native.js.map +1 -1
  242. package/dist/esm/ContextMenu/index.native.js.map +1 -1
  243. package/dist/esm/CopyField/index.native.js.map +1 -1
  244. package/dist/esm/DotIndicator/index.native.js.map +1 -1
  245. package/dist/esm/DropdownMenu/index.native.js.map +1 -1
  246. package/dist/esm/ErrorBoundary/index.native.js.map +1 -1
  247. package/dist/esm/Heading.native.js.map +1 -1
  248. package/dist/esm/Meter/index.native.js.map +1 -1
  249. package/dist/esm/Meter/meter.native.js.map +1 -1
  250. package/dist/esm/Pagination.native.js.map +1 -1
  251. package/dist/esm/ProgressSteps/index.native.js.map +1 -1
  252. package/dist/esm/Quote/index.native.js.map +1 -1
  253. package/dist/esm/ScrollView/index.mjs +3 -0
  254. package/dist/esm/ScrollView/index.mjs.map +1 -0
  255. package/dist/esm/ScrollView/index.native.js +44 -0
  256. package/dist/esm/ScrollView/index.native.js.map +1 -0
  257. package/dist/esm/Separator/index.native.js.map +1 -1
  258. package/dist/esm/SheetModal/detents.native.js.map +1 -1
  259. package/dist/esm/SheetModal/index.native.js +71 -23
  260. package/dist/esm/SheetModal/index.native.js.map +1 -1
  261. package/dist/esm/Skeleton/index.mjs +1 -13
  262. package/dist/esm/Skeleton/index.mjs.map +1 -1
  263. package/dist/esm/Skeleton/index.native.js +1 -13
  264. package/dist/esm/Skeleton/index.native.js.map +1 -1
  265. package/dist/esm/SkipLink/index.native.js.map +1 -1
  266. package/dist/esm/SortableList/SortableHandle.native.js.map +1 -1
  267. package/dist/esm/SortableList/index.native.js.map +1 -1
  268. package/dist/esm/SortableList/useSortableRows.native.js.map +1 -1
  269. package/dist/esm/Tabs/index.mjs +5 -8
  270. package/dist/esm/Tabs/index.mjs.map +1 -1
  271. package/dist/esm/Tabs/index.native.js +5 -8
  272. package/dist/esm/Tabs/index.native.js.map +1 -1
  273. package/dist/esm/Text.mjs +3 -1
  274. package/dist/esm/Text.mjs.map +1 -1
  275. package/dist/esm/Text.native.js +3 -1
  276. package/dist/esm/Text.native.js.map +1 -1
  277. package/dist/esm/Toast/index.native.js.map +1 -1
  278. package/dist/esm/Toast/store.native.js.map +1 -1
  279. package/dist/esm/Tooltip/nativePress.native.js.map +1 -1
  280. package/dist/esm/Tooltip/tooltipShared.native.js.map +1 -1
  281. package/dist/esm/TreeSelect/index.mjs +56 -53
  282. package/dist/esm/TreeSelect/index.mjs.map +1 -1
  283. package/dist/esm/TreeSelect/index.native.js +56 -53
  284. package/dist/esm/TreeSelect/index.native.js.map +1 -1
  285. package/dist/esm/TreeSelect/treeSelectModel.native.js.map +1 -1
  286. package/dist/esm/Video/PlayerChrome.mjs +4 -10
  287. package/dist/esm/Video/PlayerChrome.mjs.map +1 -1
  288. package/dist/esm/Video/PlayerChrome.native.js +4 -10
  289. package/dist/esm/Video/PlayerChrome.native.js.map +1 -1
  290. package/dist/esm/Video/VideoFrame.native.js.map +1 -1
  291. package/dist/esm/Video/types.native.js.map +1 -1
  292. package/dist/esm/Wheel/index.native.js.map +1 -1
  293. package/dist/esm/Wizard/index.native.js.map +1 -1
  294. package/dist/esm/actions/ActionBar.native.js.map +1 -1
  295. package/dist/esm/actions/DestructiveAction.native.js.map +1 -1
  296. package/dist/esm/actions/devWarn.native.js.map +1 -1
  297. package/dist/esm/actions/index.native.js.map +1 -1
  298. package/dist/esm/actions/severity.native.js.map +1 -1
  299. package/dist/esm/charts/Axis.native.js.map +1 -1
  300. package/dist/esm/charts/BarChart.native.js.map +1 -1
  301. package/dist/esm/charts/ChartDataView.native.js.map +1 -1
  302. package/dist/esm/charts/ChartSurface.native.js.map +1 -1
  303. package/dist/esm/charts/LineChart.native.js.map +1 -1
  304. package/dist/esm/charts/PieChart.native.js.map +1 -1
  305. package/dist/esm/charts/Sparkline.native.js.map +1 -1
  306. package/dist/esm/charts/accessibility.native.js.map +1 -1
  307. package/dist/esm/charts/composeChart.native.js.map +1 -1
  308. package/dist/esm/charts/index.native.js.map +1 -1
  309. package/dist/esm/charts/math.mjs +18 -1
  310. package/dist/esm/charts/math.mjs.map +1 -1
  311. package/dist/esm/charts/math.native.js +18 -1
  312. package/dist/esm/charts/math.native.js.map +1 -1
  313. package/dist/esm/charts/series.mjs +19 -10
  314. package/dist/esm/charts/series.mjs.map +1 -1
  315. package/dist/esm/charts/series.native.js +19 -10
  316. package/dist/esm/charts/series.native.js.map +1 -1
  317. package/dist/esm/charts/svg.mjs +6 -1
  318. package/dist/esm/charts/svg.mjs.map +1 -1
  319. package/dist/esm/charts/svg.native.js +6 -1
  320. package/dist/esm/charts/svg.native.js.map +1 -1
  321. package/dist/esm/charts/types.native.js.map +1 -1
  322. package/dist/esm/charts/useChartTheme.mjs +4 -10
  323. package/dist/esm/charts/useChartTheme.mjs.map +1 -1
  324. package/dist/esm/charts/useChartTheme.native.js +5 -11
  325. package/dist/esm/charts/useChartTheme.native.js.map +1 -1
  326. package/dist/esm/code/Code/index.mjs +6 -0
  327. package/dist/esm/code/Code/index.mjs.map +1 -1
  328. package/dist/esm/code/Code/index.native.js +10 -7
  329. package/dist/esm/code/Code/index.native.js.map +1 -1
  330. package/dist/esm/code/CodeBlock/index.mjs +5 -6
  331. package/dist/esm/code/CodeBlock/index.mjs.map +1 -1
  332. package/dist/esm/code/CodeBlock/index.native.js +5 -6
  333. package/dist/esm/code/CodeBlock/index.native.js.map +1 -1
  334. package/dist/esm/code/HighlightedCode/index.native.js.map +1 -1
  335. package/dist/esm/code/Highlighter/index.native.js.map +1 -1
  336. package/dist/esm/code/Pre/index.native.js.map +1 -1
  337. package/dist/esm/code/index.native.js.map +1 -1
  338. package/dist/esm/componentColors.native.js.map +1 -1
  339. package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
  340. package/dist/esm/feedback/NotifyHost.native.js.map +1 -1
  341. package/dist/esm/feedback/copy.native.js.map +1 -1
  342. package/dist/esm/feedback/index.native.js.map +1 -1
  343. package/dist/esm/feedback/notify.native.js.map +1 -1
  344. package/dist/esm/feedback/route.native.js.map +1 -1
  345. package/dist/esm/feedback/store.native.js.map +1 -1
  346. package/dist/esm/hooks/index.native.js.map +1 -1
  347. package/dist/esm/hooks/useClipboard.native.js.map +1 -1
  348. package/dist/esm/hooks/useDocumentTitle.native.js.map +1 -1
  349. package/dist/esm/icons/CheckRegular.native.js.map +1 -1
  350. package/dist/esm/icons/MinusRegular.native.js.map +1 -1
  351. package/dist/esm/icons/index.native.js.map +1 -1
  352. package/dist/esm/icons/lucide.native.js.map +1 -1
  353. package/dist/esm/icons/themed.mjs +3 -2
  354. package/dist/esm/icons/themed.mjs.map +1 -1
  355. package/dist/esm/icons/themed.native.js +3 -2
  356. package/dist/esm/icons/themed.native.js.map +1 -1
  357. package/dist/esm/images/Image/ImageFrame.native.js.map +1 -1
  358. package/dist/esm/images/Image/shared.native.js.map +1 -1
  359. package/dist/esm/images/Image/types.native.js.map +1 -1
  360. package/dist/esm/images/index.native.js.map +1 -1
  361. package/dist/esm/index.native.js.map +1 -1
  362. package/dist/esm/knobImmuneExports.mjs +3 -3
  363. package/dist/esm/knobImmuneExports.native.js +3 -3
  364. package/dist/esm/knobImmuneExports.native.js.map +1 -1
  365. package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -1
  366. package/dist/esm/layouts/Debug/index.native.js.map +1 -1
  367. package/dist/esm/layouts/EmptyState.native.js.map +1 -1
  368. package/dist/esm/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
  369. package/dist/esm/layouts/PageTemplates.native.js.map +1 -1
  370. package/dist/esm/layouts/PaneScaffold.mjs +70 -42
  371. package/dist/esm/layouts/PaneScaffold.mjs.map +1 -1
  372. package/dist/esm/layouts/PaneScaffold.native.js +75 -48
  373. package/dist/esm/layouts/PaneScaffold.native.js.map +1 -1
  374. package/dist/esm/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
  375. package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
  376. package/dist/esm/layouts/attachments.mjs +3 -2
  377. package/dist/esm/layouts/attachments.mjs.map +1 -1
  378. package/dist/esm/layouts/attachments.native.js +3 -2
  379. package/dist/esm/layouts/attachments.native.js.map +1 -1
  380. package/dist/esm/layouts/breadcrumbs.native.js.map +1 -1
  381. package/dist/esm/layouts/index.native.js.map +1 -1
  382. package/dist/esm/layouts/page.mjs +3 -2
  383. package/dist/esm/layouts/page.mjs.map +1 -1
  384. package/dist/esm/layouts/page.native.js +3 -2
  385. package/dist/esm/layouts/page.native.js.map +1 -1
  386. package/dist/esm/layouts/pageHeadingScope.native.js.map +1 -1
  387. package/dist/esm/layouts/sidebar.mjs +2 -4
  388. package/dist/esm/layouts/sidebar.mjs.map +1 -1
  389. package/dist/esm/layouts/sidebar.native.js +2 -4
  390. package/dist/esm/layouts/sidebar.native.js.map +1 -1
  391. package/dist/esm/layouts/tags.native.js.map +1 -1
  392. package/dist/esm/layouts/timeline.mjs +11 -3
  393. package/dist/esm/layouts/timeline.mjs.map +1 -1
  394. package/dist/esm/layouts/timeline.native.js +11 -3
  395. package/dist/esm/layouts/timeline.native.js.map +1 -1
  396. package/dist/esm/layouts/toolbar.native.js.map +1 -1
  397. package/dist/esm/shared/actionScan.native.js.map +1 -1
  398. package/dist/esm/shared/i18n.native.js.map +1 -1
  399. package/dist/esm/shared/t.native.js.map +1 -1
  400. package/dist/esm/shared/textRidesText.native.js.map +1 -1
  401. package/dist/esm/shared/useReturnFocusOnClose.native.js.map +1 -1
  402. package/dist/esm/surfaces.mjs +1 -33
  403. package/dist/esm/surfaces.mjs.map +1 -1
  404. package/dist/esm/surfaces.native.js +1 -33
  405. package/dist/esm/surfaces.native.js.map +1 -1
  406. package/dist/esm/tamagui.mjs +2 -1
  407. package/dist/esm/tamagui.mjs.map +1 -1
  408. package/dist/esm/tamagui.native.js +2 -1
  409. package/dist/esm/tamagui.native.js.map +1 -1
  410. package/dist/esm/testSetup.native.js.map +1 -1
  411. package/dist/esm/utils/setTinted.native.js.map +1 -1
  412. package/dist/esm/utils/unwrapText.native.js.map +1 -1
  413. package/dist/esm/views/Calendar.native.js.map +1 -1
  414. package/dist/esm/views/Dashboard.native.js.map +1 -1
  415. package/dist/esm/views/Gantt.native.js.map +1 -1
  416. package/dist/esm/views/ImageGrid.native.js.map +1 -1
  417. package/dist/esm/views/Kanban.mjs +1 -0
  418. package/dist/esm/views/Kanban.mjs.map +1 -1
  419. package/dist/esm/views/Kanban.native.js +3 -1
  420. package/dist/esm/views/Kanban.native.js.map +1 -1
  421. package/dist/esm/views/List.mjs +5 -5
  422. package/dist/esm/views/List.mjs.map +1 -1
  423. package/dist/esm/views/List.native.js +8 -8
  424. package/dist/esm/views/List.native.js.map +1 -1
  425. package/dist/esm/views/Matrix.mjs +543 -0
  426. package/dist/esm/views/Matrix.mjs.map +1 -0
  427. package/dist/esm/views/Matrix.native.js +573 -0
  428. package/dist/esm/views/Matrix.native.js.map +1 -0
  429. package/dist/esm/views/ReportBuilder.native.js.map +1 -1
  430. package/dist/esm/views/TreeView.native.js.map +1 -1
  431. package/dist/esm/views/calendarMath.native.js.map +1 -1
  432. package/dist/esm/views/ganttMath.mjs +1 -1
  433. package/dist/esm/views/ganttMath.mjs.map +1 -1
  434. package/dist/esm/views/ganttMath.native.js +1 -1
  435. package/dist/esm/views/ganttMath.native.js.map +1 -1
  436. package/dist/esm/views/index.mjs +4 -2
  437. package/dist/esm/views/index.mjs.map +1 -1
  438. package/dist/esm/views/index.native.js +4 -2
  439. package/dist/esm/views/index.native.js.map +1 -1
  440. package/dist/esm/views/kanbanDnd.native.js.map +1 -1
  441. package/dist/esm/views/matrixMath.mjs +122 -0
  442. package/dist/esm/views/matrixMath.mjs.map +1 -0
  443. package/dist/esm/views/matrixMath.native.js +191 -0
  444. package/dist/esm/views/matrixMath.native.js.map +1 -0
  445. package/dist/esm/views/treeViewDnd.native.js.map +1 -1
  446. package/dist/esm/views/treeViewLayout.native.js.map +1 -1
  447. package/dist/esm/views/treeViewMotion.native.js.map +1 -1
  448. package/dist/esm/views/treeViewReveal.native.js.map +1 -1
  449. package/dist/jsx/Accordion/index.mjs +3 -7
  450. package/dist/jsx/Accordion/index.mjs.map +1 -1
  451. package/dist/jsx/Accordion/index.native.js +2 -6
  452. package/dist/jsx/Accordion/index.native.js.map +1 -1
  453. package/dist/jsx/AnimateHeight/index.mjs +2 -4
  454. package/dist/jsx/AnimateHeight/index.mjs.map +1 -1
  455. package/dist/jsx/AnimateHeight/index.native.js +1 -3
  456. package/dist/jsx/AnimateHeight/index.native.js.map +1 -1
  457. package/dist/jsx/Carousel/index.mjs +2 -1
  458. package/dist/jsx/Carousel/index.mjs.map +1 -1
  459. package/dist/jsx/Carousel/index.native.js +2 -1
  460. package/dist/jsx/Carousel/index.native.js.map +1 -1
  461. package/dist/jsx/Chip/index.mjs +15 -5
  462. package/dist/jsx/Chip/index.mjs.map +1 -1
  463. package/dist/jsx/Chip/index.native.js +13 -3
  464. package/dist/jsx/Chip/index.native.js.map +1 -1
  465. package/dist/jsx/ScrollView/index.mjs +3 -0
  466. package/dist/jsx/ScrollView/index.mjs.map +1 -0
  467. package/dist/jsx/ScrollView/index.native.js +72 -0
  468. package/dist/jsx/ScrollView/index.native.js.map +1 -0
  469. package/dist/jsx/SheetModal/index.native.js +70 -22
  470. package/dist/jsx/SheetModal/index.native.js.map +1 -1
  471. package/dist/jsx/Skeleton/index.mjs +1 -13
  472. package/dist/jsx/Skeleton/index.mjs.map +1 -1
  473. package/dist/jsx/Skeleton/index.native.js +1 -13
  474. package/dist/jsx/Skeleton/index.native.js.map +1 -1
  475. package/dist/jsx/Tabs/index.mjs +5 -8
  476. package/dist/jsx/Tabs/index.mjs.map +1 -1
  477. package/dist/jsx/Tabs/index.native.js +4 -7
  478. package/dist/jsx/Tabs/index.native.js.map +1 -1
  479. package/dist/jsx/Text.mjs +3 -1
  480. package/dist/jsx/Text.mjs.map +1 -1
  481. package/dist/jsx/Text.native.js +2 -0
  482. package/dist/jsx/Text.native.js.map +1 -1
  483. package/dist/jsx/TreeSelect/index.mjs +56 -53
  484. package/dist/jsx/TreeSelect/index.mjs.map +1 -1
  485. package/dist/jsx/TreeSelect/index.native.js +55 -52
  486. package/dist/jsx/TreeSelect/index.native.js.map +1 -1
  487. package/dist/jsx/Video/PlayerChrome.mjs +4 -10
  488. package/dist/jsx/Video/PlayerChrome.mjs.map +1 -1
  489. package/dist/jsx/Video/PlayerChrome.native.js +3 -9
  490. package/dist/jsx/Video/PlayerChrome.native.js.map +1 -1
  491. package/dist/jsx/charts/math.mjs +18 -1
  492. package/dist/jsx/charts/math.mjs.map +1 -1
  493. package/dist/jsx/charts/math.native.js +18 -0
  494. package/dist/jsx/charts/math.native.js.map +1 -1
  495. package/dist/jsx/charts/series.mjs +19 -10
  496. package/dist/jsx/charts/series.mjs.map +1 -1
  497. package/dist/jsx/charts/series.native.js +17 -8
  498. package/dist/jsx/charts/series.native.js.map +1 -1
  499. package/dist/jsx/charts/svg.mjs +6 -1
  500. package/dist/jsx/charts/svg.mjs.map +1 -1
  501. package/dist/jsx/charts/svg.native.js +6 -0
  502. package/dist/jsx/charts/svg.native.js.map +1 -1
  503. package/dist/jsx/charts/useChartTheme.mjs +4 -10
  504. package/dist/jsx/charts/useChartTheme.mjs.map +1 -1
  505. package/dist/jsx/charts/useChartTheme.native.js +4 -10
  506. package/dist/jsx/charts/useChartTheme.native.js.map +1 -1
  507. package/dist/jsx/code/Code/index.mjs +6 -0
  508. package/dist/jsx/code/Code/index.mjs.map +1 -1
  509. package/dist/jsx/code/Code/index.native.js +7 -4
  510. package/dist/jsx/code/Code/index.native.js.map +1 -1
  511. package/dist/jsx/code/CodeBlock/index.mjs +5 -6
  512. package/dist/jsx/code/CodeBlock/index.mjs.map +1 -1
  513. package/dist/jsx/code/CodeBlock/index.native.js +4 -5
  514. package/dist/jsx/code/CodeBlock/index.native.js.map +1 -1
  515. package/dist/jsx/icons/themed.mjs +3 -2
  516. package/dist/jsx/icons/themed.mjs.map +1 -1
  517. package/dist/jsx/icons/themed.native.js +2 -1
  518. package/dist/jsx/icons/themed.native.js.map +1 -1
  519. package/dist/jsx/knobImmuneExports.mjs +3 -3
  520. package/dist/jsx/knobImmuneExports.native.js +3 -3
  521. package/dist/jsx/layouts/PaneScaffold.mjs +70 -42
  522. package/dist/jsx/layouts/PaneScaffold.mjs.map +1 -1
  523. package/dist/jsx/layouts/PaneScaffold.native.js +75 -48
  524. package/dist/jsx/layouts/PaneScaffold.native.js.map +1 -1
  525. package/dist/jsx/layouts/attachments.mjs +3 -2
  526. package/dist/jsx/layouts/attachments.mjs.map +1 -1
  527. package/dist/jsx/layouts/attachments.native.js +2 -1
  528. package/dist/jsx/layouts/attachments.native.js.map +1 -1
  529. package/dist/jsx/layouts/page.mjs +3 -2
  530. package/dist/jsx/layouts/page.mjs.map +1 -1
  531. package/dist/jsx/layouts/page.native.js +2 -1
  532. package/dist/jsx/layouts/page.native.js.map +1 -1
  533. package/dist/jsx/layouts/sidebar.mjs +2 -4
  534. package/dist/jsx/layouts/sidebar.mjs.map +1 -1
  535. package/dist/jsx/layouts/sidebar.native.js +1 -3
  536. package/dist/jsx/layouts/sidebar.native.js.map +1 -1
  537. package/dist/jsx/layouts/timeline.mjs +11 -3
  538. package/dist/jsx/layouts/timeline.mjs.map +1 -1
  539. package/dist/jsx/layouts/timeline.native.js +9 -1
  540. package/dist/jsx/layouts/timeline.native.js.map +1 -1
  541. package/dist/jsx/surfaces.mjs +1 -33
  542. package/dist/jsx/surfaces.mjs.map +1 -1
  543. package/dist/jsx/surfaces.native.js +0 -32
  544. package/dist/jsx/surfaces.native.js.map +1 -1
  545. package/dist/jsx/tamagui.mjs +2 -1
  546. package/dist/jsx/tamagui.mjs.map +1 -1
  547. package/dist/jsx/tamagui.native.js +2 -1
  548. package/dist/jsx/tamagui.native.js.map +1 -1
  549. package/dist/jsx/views/Kanban.mjs +1 -0
  550. package/dist/jsx/views/Kanban.mjs.map +1 -1
  551. package/dist/jsx/views/Kanban.native.js +3 -1
  552. package/dist/jsx/views/Kanban.native.js.map +1 -1
  553. package/dist/jsx/views/List.mjs +5 -5
  554. package/dist/jsx/views/List.mjs.map +1 -1
  555. package/dist/jsx/views/List.native.js +7 -7
  556. package/dist/jsx/views/List.native.js.map +1 -1
  557. package/dist/jsx/views/Matrix.mjs +543 -0
  558. package/dist/jsx/views/Matrix.mjs.map +1 -0
  559. package/dist/jsx/views/Matrix.native.js +612 -0
  560. package/dist/jsx/views/Matrix.native.js.map +1 -0
  561. package/dist/jsx/views/ganttMath.mjs +1 -1
  562. package/dist/jsx/views/ganttMath.mjs.map +1 -1
  563. package/dist/jsx/views/ganttMath.native.js +2 -0
  564. package/dist/jsx/views/ganttMath.native.js.map +1 -1
  565. package/dist/jsx/views/index.mjs +4 -2
  566. package/dist/jsx/views/index.mjs.map +1 -1
  567. package/dist/jsx/views/index.native.js +16 -0
  568. package/dist/jsx/views/index.native.js.map +1 -1
  569. package/dist/jsx/views/matrixMath.mjs +122 -0
  570. package/dist/jsx/views/matrixMath.mjs.map +1 -0
  571. package/dist/jsx/views/matrixMath.native.js +229 -0
  572. package/dist/jsx/views/matrixMath.native.js.map +1 -0
  573. package/package.json +10 -10
  574. package/src/Accordion/Accordion.spec.tsx +20 -0
  575. package/src/Accordion/index.tsx +7 -3
  576. package/src/AnimateHeight/index.tsx +143 -142
  577. package/src/Carousel/index.tsx +2 -1
  578. package/src/Chip/Chip.borderLadder.spec.tsx +54 -0
  579. package/src/Chip/Chip.pressSlop.spec.tsx +57 -0
  580. package/src/Chip/Chip.spec.tsx +21 -16
  581. package/src/Chip/index.tsx +25 -3
  582. package/src/Heading.native.spec.tsx +1 -1
  583. package/src/ScrollView/ScrollView.native.spec.tsx +157 -0
  584. package/src/ScrollView/index.native.tsx +45 -0
  585. package/src/ScrollView/index.tsx +2 -0
  586. package/src/Separator/index.tsx +3 -3
  587. package/src/SheetModal/SheetModal.detentLayout.spec.tsx +173 -0
  588. package/src/SheetModal/SheetModal.touch.spec.tsx +63 -0
  589. package/src/SheetModal/index.native.tsx +95 -17
  590. package/src/Skeleton/Skeleton.spec.tsx +3 -3
  591. package/src/Skeleton/index.tsx +2 -15
  592. package/src/Tabs/Tabs.hydration.spec.tsx +123 -0
  593. package/src/Tabs/index.tsx +4 -3
  594. package/src/Text.spec.tsx +32 -2
  595. package/src/Text.tsx +7 -6
  596. package/src/Toast/Toast.spec.tsx +50 -0
  597. package/src/Tooltip/Tooltip.spec.tsx +55 -2
  598. package/src/TreeSelect/TreeSelect.spec.tsx +15 -15
  599. package/src/TreeSelect/index.tsx +53 -50
  600. package/src/Video/PlayerChrome.tsx +4 -3
  601. package/src/Wheel/Wheel.spec.tsx +4 -4
  602. package/src/adjacency.l1.spec.tsx +175 -0
  603. package/src/charts/charts.spec.tsx +49 -6
  604. package/src/charts/math.spec.ts +30 -0
  605. package/src/charts/math.ts +36 -0
  606. package/src/charts/series.tsx +14 -9
  607. package/src/charts/svg.ts +13 -0
  608. package/src/charts/useChartTheme.ts +14 -15
  609. package/src/code/Code/code.spec.tsx +2 -19
  610. package/src/code/Code/index.tsx +0 -6
  611. package/src/code/CodeBlock/index.tsx +5 -3
  612. package/src/code/highlightedCode.spec.tsx +2 -2
  613. package/src/code/hostProps.spec.tsx +55 -0
  614. package/src/icons/themed.hydration.spec.tsx +60 -0
  615. package/src/icons/themed.tsx +3 -6
  616. package/src/knobImmuneExports.ts +3 -3
  617. package/src/layouts/PaneScaffold.spec.tsx +148 -2
  618. package/src/layouts/PaneScaffold.stories.tsx +33 -1
  619. package/src/layouts/PaneScaffold.tsx +101 -48
  620. package/src/layouts/attachments.radius.spec.tsx +74 -0
  621. package/src/layouts/attachments.tsx +3 -1
  622. package/src/layouts/page.designLaw.spec.tsx +20 -0
  623. package/src/layouts/page.tsx +2 -0
  624. package/src/layouts/sidebar.tsx +2 -3
  625. package/src/layouts/timeline-radius.spec.tsx +38 -0
  626. package/src/layouts/timeline.tsx +16 -1
  627. package/src/overlayElevation.spec.tsx +39 -51
  628. package/src/surfaces.spec.tsx +13 -10
  629. package/src/surfaces.tsx +4 -33
  630. package/src/tamagui.spec.ts +4 -3
  631. package/src/tamagui.ts +4 -1
  632. package/src/textAccentSecondary.spec.tsx +100 -2
  633. package/src/views/Kanban.native.tsx +3 -1
  634. package/src/views/Kanban.spec.tsx +15 -0
  635. package/src/views/Kanban.tsx +1 -0
  636. package/src/views/List.spec.tsx +50 -0
  637. package/src/views/List.tsx +13 -5
  638. package/src/views/Matrix.spec.tsx +339 -0
  639. package/src/views/Matrix.stories.spec.tsx +68 -0
  640. package/src/views/Matrix.stories.tsx +153 -0
  641. package/src/views/Matrix.tsx +738 -0
  642. package/src/views/ganttMath.ts +4 -2
  643. package/src/views/index.ts +30 -0
  644. package/src/views/matrixMath.spec.ts +237 -0
  645. package/src/views/matrixMath.ts +251 -0
  646. package/src/views/views.spec.tsx +3 -1
  647. package/types/Accordion/index.d.ts.map +1 -1
  648. package/types/AnimateHeight/index.d.ts.map +1 -1
  649. package/types/Carousel/index.d.ts.map +1 -1
  650. package/types/Chip/index.d.ts.map +1 -1
  651. package/types/ScrollView/index.d.ts +3 -0
  652. package/types/ScrollView/index.d.ts.map +1 -0
  653. package/types/ScrollView/index.native.d.ts +4 -0
  654. package/types/ScrollView/index.native.d.ts.map +1 -0
  655. package/types/Separator/index.d.ts +3 -3
  656. package/types/SheetModal/index.native.d.ts.map +1 -1
  657. package/types/Skeleton/index.d.ts.map +1 -1
  658. package/types/Tabs/index.d.ts.map +1 -1
  659. package/types/Text.d.ts.map +1 -1
  660. package/types/TreeSelect/index.d.ts.map +1 -1
  661. package/types/Video/PlayerChrome.d.ts.map +1 -1
  662. package/types/charts/math.d.ts +18 -0
  663. package/types/charts/math.d.ts.map +1 -1
  664. package/types/charts/series.d.ts +2 -1
  665. package/types/charts/series.d.ts.map +1 -1
  666. package/types/charts/svg.d.ts +8 -0
  667. package/types/charts/svg.d.ts.map +1 -1
  668. package/types/charts/useChartTheme.d.ts +4 -3
  669. package/types/charts/useChartTheme.d.ts.map +1 -1
  670. package/types/code/Code/index.d.ts.map +1 -1
  671. package/types/code/CodeBlock/index.d.ts.map +1 -1
  672. package/types/icons/themed.d.ts.map +1 -1
  673. package/types/layouts/PaneScaffold.d.ts +14 -1
  674. package/types/layouts/PaneScaffold.d.ts.map +1 -1
  675. package/types/layouts/attachments.d.ts.map +1 -1
  676. package/types/layouts/page.d.ts.map +1 -1
  677. package/types/layouts/sidebar.d.ts.map +1 -1
  678. package/types/layouts/timeline.d.ts.map +1 -1
  679. package/types/surfaces.d.ts.map +1 -1
  680. package/types/tamagui.d.ts +2 -1
  681. package/types/tamagui.d.ts.map +1 -1
  682. package/types/views/Kanban.native.d.ts.map +1 -1
  683. package/types/views/List.d.ts.map +1 -1
  684. package/types/views/Matrix.d.ts +102 -0
  685. package/types/views/Matrix.d.ts.map +1 -0
  686. package/types/views/ganttMath.d.ts +4 -0
  687. package/types/views/ganttMath.d.ts.map +1 -1
  688. package/types/views/index.d.ts +3 -1
  689. package/types/views/index.d.ts.map +1 -1
  690. package/types/views/matrixMath.d.ts +114 -0
  691. package/types/views/matrixMath.d.ts.map +1 -0
@@ -1,3 +1,4 @@
1
+ import { pressSlopOutsetProps } from "@multiplatform.one/forms";
1
2
  import { isWeb } from "@multiplatform.one/platform";
2
3
  import {
3
4
  MIN_PRESS_TARGET,
@@ -5,6 +6,8 @@ import {
5
6
  ensureFocusVisibleRing,
6
7
  pressTargetHitSlop,
7
8
  pressTargetStyle,
9
+ radiusStopFromToken,
10
+ resolveRadiusClass,
8
11
  sizeRecipeForToken,
9
12
  useAccentTintedSurface,
10
13
  useReadableTextOn,
@@ -20,7 +23,7 @@ import {
20
23
  } from "react";
21
24
  import { useTranslation } from "react-i18next";
22
25
  import type { ColorTokens, GetProps } from "tamagui";
23
- import { Text, View, styled } from "tamagui";
26
+ import { Text, View, getTokenValue, styled } from "tamagui";
24
27
 
25
28
  // ── Types ─────────────────────────────────────────────────────
26
29
 
@@ -290,6 +293,18 @@ const DismissRing = styled(View, {
290
293
  },
291
294
  });
292
295
 
296
+ // K12 (LC-54 pitch-limited): wrapped chip rows sit `$2` apart, so each row's
297
+ // press target may reach half that gap before it meets the next row's. The
298
+ // outset stops there rather than at 44; no chip size paints tall enough for
299
+ // the half-gap to overshoot the floor. The slop pseudo-element is placed from
300
+ // the padding box, so the frame's own border width is added back.
301
+ const CHIP_ROW_GAP = "$2";
302
+
303
+ function chipBodySlop(borderWidth: number): number {
304
+ const gap = getTokenValue(CHIP_ROW_GAP as Parameters<typeof getTokenValue>[0], "space");
305
+ return typeof gap === "number" ? Math.floor(gap / 2) + Math.ceil(borderWidth) : 0;
306
+ }
307
+
293
308
  function normalizeIcon(icon: ReactNode, size: number): ReactNode {
294
309
  if (icon == null || icon === false) return null;
295
310
  if (isValidElement(icon)) {
@@ -333,6 +348,12 @@ export function Chip({
333
348
  const RING_INSET = 2;
334
349
  const dismissVisual = iconSize + RING_INSET * 2;
335
350
  const dismissOutset = Math.max(0, Math.ceil((MIN_PRESS_TARGET - dismissVisual) / 2));
351
+ // DG-RAD-02 CIRCULAR-AT-FULL. At full, 1000 paints the same h/2 circle
352
+ // and stays a token the constraint audit reads as a pill.
353
+ const dismissStop = radiusStopFromToken(knobProps.borderRadius.borderRadius);
354
+ let dismissRadius: string | number = knobProps.borderRadius.borderRadius;
355
+ if (dismissStop === "full") dismissRadius = 1000;
356
+ else if (dismissStop) dismissRadius = resolveRadiusClass("CIRCULAR-AT-FULL", dismissStop);
336
357
 
337
358
  let backgroundColor: ColorTokens | "transparent" | string = colors.tint;
338
359
  let textColor: ColorTokens | string = colors.text;
@@ -407,6 +428,7 @@ export function Chip({
407
428
  role: "button",
408
429
  tabIndex: 0,
409
430
  ...(selected != null ? { "aria-pressed": isSelected } : undefined),
431
+ ...pressSlopOutsetProps(chipBodySlop(knobProps.borderRadius.borderWidth), "vertical"),
410
432
  }
411
433
  : undefined)}
412
434
  {...(disabled
@@ -463,7 +485,7 @@ export function Chip({
463
485
  aria-label={t("Remove")}
464
486
  tabIndex={0}
465
487
  className="mp-chip-dismiss"
466
- borderRadius={knobProps.pointy ? 0 : 1000}
488
+ borderRadius={dismissRadius}
467
489
  {...pressTargetStyle()}
468
490
  marginVertical={-dismissOutset}
469
491
  marginHorizontal={-dismissOutset}
@@ -482,7 +504,7 @@ export function Chip({
482
504
  }) as unknown as () => void
483
505
  }
484
506
  >
485
- <DismissRing className="mp-chip-dismiss-ring" borderRadius={knobProps.pointy ? 0 : 1000}>
507
+ <DismissRing className="mp-chip-dismiss-ring" borderRadius={dismissRadius}>
486
508
  <XIcon size={iconSize} />
487
509
  </DismissRing>
488
510
  </DismissButton>
@@ -24,7 +24,7 @@
24
24
  * rescue is mounted in NEITHER arm; the props channel is the only channel
25
25
  * carrying the knob here, which is the channel native has. It does NOT
26
26
  * execute the React Native renderer — it is the standing substitute for a
27
- * simulator capture (`agent-os/standards/testing/falsifiability.md`), not a
27
+ * simulator capture (`docs/standards/testing/falsifiability.md`), not a
28
28
  * replacement for one.
29
29
  */
30
30
  import { cleanup, screen } from "@testing-library/react";
@@ -0,0 +1,157 @@
1
+ /**
2
+ * MPO-368: on native, a consumer onScroll must reach the React Native
3
+ * ScrollView. These cases run tamagui's NATIVE build (see
4
+ * ../../tests/nativeTamagui.ts); vitest's usual web build keeps onScroll and
5
+ * would pass with or without the fix.
6
+ */
7
+ import { readdirSync, readFileSync } from "node:fs";
8
+ import { join, relative } from "node:path";
9
+ import { act, createElement, createRef } from "react";
10
+ import { createRoot, type Root } from "react-dom/client";
11
+ import { afterAll, afterEach, beforeAll, describe, expect, it, vi } from "vitest";
12
+
13
+ const runtime = await vi.hoisted(async () => {
14
+ const { loadNativeTamagui } = await import("../../tests/nativeTamagui");
15
+ return loadNativeTamagui();
16
+ });
17
+
18
+ vi.mock("react-native-web", () => runtime.reactNative);
19
+ vi.mock("tamagui", () => ({ ...runtime.core, ScrollView: runtime.RawScrollView }));
20
+
21
+ const { ScrollView } = await import("./index.native");
22
+
23
+ const { TamaguiProvider, createTamagui, createTokens, styled } = runtime.core;
24
+ const previousGlobalConfig = (globalThis as { __tamaguiConfig?: unknown }).__tamaguiConfig;
25
+ const config = createTamagui({
26
+ tokens: createTokens({ size: {}, space: {}, radius: {}, zIndex: {}, color: {} }),
27
+ themes: { light: {} },
28
+ shorthands: {},
29
+ media: {},
30
+ });
31
+
32
+ let container: HTMLDivElement;
33
+ let root: Root;
34
+
35
+ beforeAll(() => {
36
+ (globalThis as { IS_REACT_ACT_ENVIRONMENT?: boolean }).IS_REACT_ACT_ENVIRONMENT = true;
37
+ });
38
+
39
+ afterEach(() => {
40
+ act(() => root?.unmount());
41
+ container?.remove();
42
+ runtime.resetHosts();
43
+ });
44
+
45
+ afterAll(() => {
46
+ (globalThis as { __tamaguiConfig?: unknown }).__tamaguiConfig = previousGlobalConfig;
47
+ });
48
+
49
+ function render(element: React.ReactElement) {
50
+ container = document.createElement("div");
51
+ document.body.append(container);
52
+ root = createRoot(container);
53
+ act(() => {
54
+ root.render(createElement(TamaguiProvider, { config, defaultTheme: "light" }, element));
55
+ });
56
+ return runtime.lastHostProps("ScrollView") ?? {};
57
+ }
58
+
59
+ type AnyScrollView = React.ComponentType<Record<string, unknown>>;
60
+
61
+ function scrollProps(): Record<string, unknown> {
62
+ return {
63
+ testID: "probe",
64
+ scrollEventThrottle: 32,
65
+ onScroll: vi.fn(),
66
+ onContentSizeChange: vi.fn(),
67
+ };
68
+ }
69
+
70
+ describe("tamagui native ScrollView (upstream control)", () => {
71
+ it("lists onScroll in its native skip props", () => {
72
+ expect(runtime.skipProps.onScroll).toBe(1);
73
+ });
74
+
75
+ it("drops a consumer onScroll before the RN ScrollView while other handlers pass", () => {
76
+ const props = scrollProps();
77
+ const host = render(createElement(runtime.RawScrollView as AnyScrollView, props));
78
+ expect(host.onContentSizeChange).toBe(props.onContentSizeChange);
79
+ expect(host.onScroll).toBeUndefined();
80
+ });
81
+ });
82
+
83
+ describe("components ScrollView on native", () => {
84
+ it("hands the consumer onScroll to the RN ScrollView", () => {
85
+ const props = scrollProps();
86
+ const host = render(createElement(ScrollView as unknown as AnyScrollView, props));
87
+ expect(host.onScroll).toBe(props.onScroll);
88
+ expect(host.onContentSizeChange).toBe(props.onContentSizeChange);
89
+ expect(host.scrollEventThrottle).toBe(32);
90
+ expect(host.testID).toBe("probe");
91
+ });
92
+
93
+ it("gives the RN ScrollView the same props as tamagui's apart from onScroll", () => {
94
+ const shared = {
95
+ flex: 1,
96
+ minHeight: 0,
97
+ fullscreen: true,
98
+ horizontal: true,
99
+ contentContainerStyle: { paddingVertical: 4 },
100
+ keyboardShouldPersistTaps: "handled",
101
+ };
102
+ const raw = { ...render(createElement(runtime.RawScrollView as AnyScrollView, shared)) };
103
+ act(() => root.unmount());
104
+ const house = { ...render(createElement(ScrollView as unknown as AnyScrollView, shared)) };
105
+ delete house.onScroll;
106
+ expect(house).toEqual(raw);
107
+ });
108
+
109
+ it("forwards its ref to the RN ScrollView instance", () => {
110
+ const ref = createRef<unknown>();
111
+ render(createElement(ScrollView as unknown as AnyScrollView, { ref }));
112
+ expect(ref.current).toBe(runtime.hostInstance("ScrollView"));
113
+ });
114
+
115
+ it("keeps forwarding onScroll through a styled() extension", () => {
116
+ const Extended = styled(ScrollView, { name: "Extended" });
117
+ const props = scrollProps();
118
+ const host = render(createElement(Extended as unknown as AnyScrollView, props));
119
+ expect(host.onScroll).toBe(props.onScroll);
120
+ });
121
+ });
122
+
123
+ describe("catalog onScroll consumers", () => {
124
+ it("take the components ScrollView, or route native to the RN ScrollView", () => {
125
+ const src = join(import.meta.dirname, "..");
126
+ const offenders = sourceFiles(src)
127
+ .filter((file) => {
128
+ const code = readFileSync(file, "utf8");
129
+ return (
130
+ /\bonScroll\b/.test(code) &&
131
+ importsScrollView(code, "tamagui") &&
132
+ !importsScrollView(code, "react-native")
133
+ );
134
+ })
135
+ .map((file) => relative(src, file));
136
+ expect(offenders).toEqual([]);
137
+ });
138
+ });
139
+
140
+ function sourceFiles(dir: string): string[] {
141
+ const out: string[] = [];
142
+ for (const entry of readdirSync(dir, { withFileTypes: true })) {
143
+ const path = join(dir, entry.name);
144
+ if (entry.isDirectory()) out.push(...sourceFiles(path));
145
+ else if (/\.tsx?$/.test(entry.name) && !/\.(spec|test|stories)\./.test(entry.name)) {
146
+ out.push(path);
147
+ }
148
+ }
149
+ return out;
150
+ }
151
+
152
+ function importsScrollView(code: string, from: string): boolean {
153
+ const re = new RegExp(`import\\s+\\{([^}]*)\\}\\s+from\\s+["']${from}["']`, "g");
154
+ return [...code.matchAll(re)].some((match) =>
155
+ match[1]!.split(",").some((part) => /^ScrollView\b/.test(part.trim())),
156
+ );
157
+ }
@@ -0,0 +1,45 @@
1
+ import { forwardRef } from "react";
2
+ import {
3
+ ScrollView as RNScrollView,
4
+ type ScrollViewProps as RNScrollViewProps,
5
+ } from "react-native";
6
+ import { styled, type ScrollView as TamaguiScrollView } from "tamagui";
7
+
8
+ export type { ScrollViewProps } from "tamagui";
9
+
10
+ // tamagui 2.7.6 drops every key in helpers/webPropsToSkip.native (onScroll is
11
+ // one) before a non-HOC styled component reaches its host, so its own
12
+ // styled(RN ScrollView) never delivers onScroll (MPO-368). The handler rides
13
+ // past getSplitStyles under another name and is restored at the RN boundary.
14
+ // Drop this file once tamagui forwards onScroll on native; the upstream
15
+ // control in ScrollView.native.spec.tsx fails when it does.
16
+
17
+ type ScrollHandler = RNScrollViewProps["onScroll"];
18
+
19
+ const ScrollHost = forwardRef<RNScrollView, RNScrollViewProps & { scrollHandler?: ScrollHandler }>(
20
+ function ScrollHost({ scrollHandler, ...props }, ref) {
21
+ return <RNScrollView ref={ref} {...props} onScroll={scrollHandler} />;
22
+ },
23
+ );
24
+
25
+ const ScrollFrame = styled(
26
+ ScrollHost,
27
+ {
28
+ name: "ScrollView",
29
+ scrollEnabled: true,
30
+ variants: {
31
+ fullscreen: {
32
+ true: { position: "absolute", inset: 0 },
33
+ },
34
+ } as const,
35
+ },
36
+ {
37
+ accept: {
38
+ contentContainerStyle: "style",
39
+ } as const,
40
+ },
41
+ );
42
+
43
+ export const ScrollView = ScrollFrame.styleable(function ScrollView({ onScroll, ...props }, ref) {
44
+ return <ScrollFrame ref={ref} {...props} scrollHandler={onScroll} />;
45
+ }) as unknown as typeof TamaguiScrollView;
@@ -0,0 +1,2 @@
1
+ export { ScrollView } from "tamagui";
2
+ export type { ScrollViewProps } from "tamagui";
@@ -39,9 +39,9 @@
39
39
  * specificity `flex: 1` can turn the rule into a viewport-dependent gap
40
40
  * (the raw primitive was a `flex: 1` item, exactly that defect).
41
41
  *
42
- * Knob story: no knob channel maps to a 1px rule today. Separator WEIGHT is
43
- * an ADJUDICATION-CANDIDATE (MPO-21 G10, G0-clay R9) — until adjudicated the
44
- * thickness is the measured constant, and consumer `{...props}` stay the
42
+ * Knob story: no knob channel maps to a 1px rule, and none will. Clay ruled
43
+ * MPO-21 G10-A on 2026-09-26: there is no separator-weight knob, the rule is
44
+ * 1px and the quiet rule is opacity 0.5. Consumer `{...props}` stay the
45
45
  * explicit eject (STD-EJECT-LAST).
46
46
  */
47
47
  import type { GetProps } from "tamagui";
@@ -0,0 +1,173 @@
1
+ /**
2
+ * MPO-68 / MPO-299: what the native sheet lays out at a settled detent.
3
+ *
4
+ * The iOS simulator run on 965825866 dragged a sheet to a lower detent: it
5
+ * kept its full height and slid it below the screen, or under the keyboard,
6
+ * so the tail of a list inside it was unreachable.
7
+ */
8
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
9
+ import { act, cleanup } from "@testing-library/react";
10
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
11
+ import { Animated, PanResponder, type PanResponderCallbacks } from "react-native";
12
+ import { Text } from "tamagui";
13
+ import { resolveSheetDetents } from "./detents";
14
+ import type { SheetModalProps } from "./index";
15
+ import { SheetModal } from "./index.native";
16
+
17
+ const keyboard = vi.hoisted(() => ({ inset: 0 }));
18
+
19
+ vi.mock("react-native-web", async (importOriginal) => ({
20
+ ...(await importOriginal<typeof import("react-native")>()),
21
+ ActionSheetIOS: undefined,
22
+ Modal: ({ children }: { children: import("react").ReactNode }) => children,
23
+ useWindowDimensions: () => ({ width: 390, height: 844, scale: 3, fontScale: 1 }),
24
+ }));
25
+ vi.mock("../shared/useKeyboardInset", () => ({ useKeyboardInset: () => keyboard.inset }));
26
+
27
+ let pan: PanResponderCallbacks;
28
+ let springs: Array<{ toValue: number; done?: (result: { finished: boolean }) => void }>;
29
+
30
+ beforeEach(() => {
31
+ keyboard.inset = 0;
32
+ springs = [];
33
+ vi.spyOn(PanResponder, "create").mockImplementation((config) => {
34
+ pan = config;
35
+ return { panHandlers: {} } as never;
36
+ });
37
+ vi.spyOn(Animated, "spring").mockImplementation((_value, config) => ({
38
+ start: (done) => {
39
+ springs.push({ toValue: config.toValue as number, done });
40
+ },
41
+ stop: vi.fn(),
42
+ reset: vi.fn(),
43
+ }));
44
+ vi.spyOn(Animated, "timing").mockImplementation(() => ({
45
+ start: (done) => done?.({ finished: true }),
46
+ stop: vi.fn(),
47
+ reset: vi.fn(),
48
+ }));
49
+ });
50
+ afterEach(() => {
51
+ cleanup();
52
+ vi.restoreAllMocks();
53
+ });
54
+
55
+ function px(value: string) {
56
+ return Number.parseFloat(value);
57
+ }
58
+
59
+ function open(props: Partial<SheetModalProps> = {}) {
60
+ const view = renderWithProviders(
61
+ <SheetModal open onOpenChange={() => {}} scrollable {...props}>
62
+ <Text>row</Text>
63
+ </SheetModal>,
64
+ );
65
+ const frame = view.getByTestId("sheet-modal-frame");
66
+ const full = px(frame.style.maxHeight);
67
+ return { view, frame, full };
68
+ }
69
+
70
+ /** react-native-web keeps the onLayout handler on the node; call it the way a device layout would. */
71
+ function layout(element: HTMLElement, height: number) {
72
+ const handler = (element as unknown as Record<string, (event: unknown) => void>)
73
+ .__reactLayoutHandler;
74
+ act(() => handler({ nativeEvent: { layout: { x: 0, y: 0, width: 390, height } } }));
75
+ }
76
+
77
+ function drag(dy: number) {
78
+ act(() => {
79
+ pan.onPanResponderGrant?.({} as never, {} as never);
80
+ pan.onPanResponderMove?.({} as never, { dy } as never);
81
+ pan.onPanResponderRelease?.({} as never, { dy, vy: 0 } as never);
82
+ });
83
+ }
84
+
85
+ function settle() {
86
+ const last = springs[springs.length - 1];
87
+ act(() => last.done?.({ finished: true }));
88
+ return last;
89
+ }
90
+
91
+ describe("a native sheet at rest on a lower detent", () => {
92
+ it("is laid out at the detent height, not slid down at full height", () => {
93
+ const { frame, full } = open();
94
+ const [, lower] = resolveSheetDetents({ travel: full, scrollable: true });
95
+ expect(lower).toBeLessThan(full);
96
+ drag(full - lower);
97
+ expect(settle().toValue).toBe(full - lower);
98
+ expect(px(frame.style.maxHeight)).toBe(lower);
99
+ expect(frame.style.transform).toContain("translateY(0px)");
100
+ });
101
+
102
+ it("gives a filled body the detent as its definite height", () => {
103
+ const { frame, full } = open({ fill: true });
104
+ const [, lower] = resolveSheetDetents({ travel: full, scrollable: true });
105
+ drag(full - lower);
106
+ settle();
107
+ expect(px(frame.style.height)).toBe(lower);
108
+ expect(px(frame.style.maxHeight)).toBe(lower);
109
+ });
110
+
111
+ it("ends above the keyboard when the keyboard is up", () => {
112
+ keyboard.inset = 300;
113
+ const { frame, full } = open();
114
+ expect(frame.parentElement?.style.paddingBottom).toBe("300px");
115
+ const [, lower] = resolveSheetDetents({ travel: full, scrollable: true });
116
+ drag(full - lower);
117
+ settle();
118
+ expect(px(frame.style.maxHeight)).toBe(lower);
119
+ expect(frame.style.transform).toContain("translateY(0px)");
120
+ });
121
+
122
+ it("grows back to full height under a still top edge when a drag picks it up", () => {
123
+ const { frame, full } = open();
124
+ const [, lower] = resolveSheetDetents({ travel: full, scrollable: true });
125
+ drag(full - lower);
126
+ settle();
127
+ act(() => pan.onPanResponderGrant?.({} as never, {} as never));
128
+ expect(px(frame.style.maxHeight)).toBe(full);
129
+ expect(frame.style.transform).toContain(`translateY(${full - lower}px)`);
130
+ act(() => pan.onPanResponderRelease?.({} as never, { dy: -(full - lower), vy: 0 } as never));
131
+ expect(settle().toValue).toBe(0);
132
+ expect(px(frame.style.maxHeight)).toBe(full);
133
+ });
134
+
135
+ it("keeps its top edge when the keyboard moved the max height under it", () => {
136
+ const { view, frame, full } = open();
137
+ layout(frame, full);
138
+ const [, lower] = resolveSheetDetents({ travel: full, scrollable: true });
139
+ drag(full - lower);
140
+ settle();
141
+ keyboard.inset = 300;
142
+ view.rerender(
143
+ <SheetModal open onOpenChange={() => {}} scrollable>
144
+ <Text>row</Text>
145
+ </SheetModal>,
146
+ );
147
+ const lifted = 844 - 300 - 48;
148
+ expect(px(frame.style.maxHeight)).toBe(Math.min(lifted, lower));
149
+ act(() => pan.onPanResponderGrant?.({} as never, {} as never));
150
+ expect(px(frame.style.maxHeight)).toBe(lifted);
151
+ expect(frame.style.transform).toContain(`translateY(${lifted - lower}px)`);
152
+ });
153
+
154
+ it("keeps the drag when a scroll inside the sheet asks for the touch", () => {
155
+ open();
156
+ expect(pan.onPanResponderTerminationRequest?.({} as never, {} as never)).toBe(false);
157
+ });
158
+
159
+ it("forgets the rest height when the sheet closes and opens again", () => {
160
+ const { view, frame, full } = open();
161
+ const [, lower] = resolveSheetDetents({ travel: full, scrollable: true });
162
+ drag(full - lower);
163
+ settle();
164
+ const sheet = (next: boolean) => (
165
+ <SheetModal open={next} onOpenChange={() => {}} scrollable>
166
+ <Text>row</Text>
167
+ </SheetModal>
168
+ );
169
+ view.rerender(sheet(false));
170
+ view.rerender(sheet(true));
171
+ expect(px(frame.style.maxHeight)).toBe(full);
172
+ });
173
+ });
@@ -0,0 +1,63 @@
1
+ /**
2
+ * MPO-299: an owned ScrollView inside the native sheet never scrolled on
3
+ * the iOS simulator, while the same swipe scrolled the Combobox sheet.
4
+ *
5
+ * On native, tamagui turns a press or focus-visible pseudo into a JS
6
+ * responder claim (`onStartShouldSetResponder` returning true). A surface
7
+ * holding that claim takes every touch that starts on plain content inside
8
+ * it, and a responder ancestor stops the ScrollView's own pan.
9
+ */
10
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
11
+ import { cleanup } from "@testing-library/react";
12
+ import { afterEach, expect, it, vi } from "vitest";
13
+ import { Text } from "tamagui";
14
+ import { SheetModal } from "./index.native";
15
+
16
+ const stacks = vi.hoisted(() => new Map<string, Record<string, unknown>>());
17
+
18
+ vi.mock("react-native-web", async (importOriginal) => ({
19
+ ...(await importOriginal<typeof import("react-native")>()),
20
+ ActionSheetIOS: undefined,
21
+ Modal: ({ children }: { children: import("react").ReactNode }) => children,
22
+ }));
23
+ vi.mock("tamagui", async (importOriginal) => {
24
+ const actual = await importOriginal<typeof import("tamagui")>();
25
+ const React = await import("react");
26
+ const YStack = React.forwardRef((props: Record<string, unknown>, ref) => {
27
+ if (typeof props.testID === "string") stacks.set(props.testID, props);
28
+ return React.createElement(actual.YStack as never, { ...props, ref });
29
+ });
30
+ return { ...actual, YStack };
31
+ });
32
+
33
+ afterEach(() => {
34
+ cleanup();
35
+ stacks.clear();
36
+ });
37
+
38
+ const claimsResponder = [
39
+ "pressStyle",
40
+ "focusStyle",
41
+ "focusVisibleStyle",
42
+ "onPress",
43
+ "onPressIn",
44
+ "onPressOut",
45
+ "onLongPress",
46
+ ];
47
+
48
+ it("keeps every native sheet stack out of the touch responder", () => {
49
+ for (const fill of [false, true]) {
50
+ renderWithProviders(
51
+ <SheetModal open onOpenChange={() => {}} fill={fill} scrollable>
52
+ <Text>row</Text>
53
+ </SheetModal>,
54
+ );
55
+ for (const id of ["sheet-modal-surface", "sheet-modal-content"]) {
56
+ const stack = stacks.get(id);
57
+ expect(stack, id).toBeDefined();
58
+ for (const key of claimsResponder) expect(stack, `${id} ${key}`).not.toHaveProperty(key);
59
+ }
60
+ cleanup();
61
+ stacks.clear();
62
+ }
63
+ });