@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
@@ -6,6 +6,12 @@
6
6
  * resolved size class rides a context down, so an inner scaffold reflows with
7
7
  * the outer one instead of splitting inside a stacked column.
8
8
  *
9
+ * The seam runs on one axis. `orientation="horizontal"` (the default) puts the
10
+ * panes side by side; `orientation="vertical"` puts `secondary` under
11
+ * `primary` (a console under a source pane, an editor under a page). The sash,
12
+ * its clamps, keyboard handling and the controlled-fraction contract are the
13
+ * same code with the axis swapped; only the dimension it reads changes.
14
+ *
9
15
  * Devs declare pane roles; the scaffold picks 1 vs 2 columns from the
10
16
  * canonical layout size class (`expanded` @ 860 = two-pane budget).
11
17
  *
@@ -64,10 +70,17 @@ const DEFAULT_MAX_FRACTION = 0.8;
64
70
  // ── PaneScaffold ──────────────────────────────────────────────────────────
65
71
 
66
72
  export type PaneRole = "primary" | "secondary";
73
+ export type PaneOrientation = "horizontal" | "vertical";
67
74
 
68
75
  export interface PaneScaffoldProps extends Omit<XStackProps, "children"> {
69
76
  primary: ReactNode;
70
77
  secondary?: ReactNode;
78
+ /**
79
+ * Axis of the seam. `horizontal` (default) sets the panes side by side;
80
+ * `vertical` docks `secondary` under `primary`. A vertical scaffold splits
81
+ * the height its parent gives it, so the parent must be bounded.
82
+ */
83
+ orientation?: PaneOrientation;
71
84
  /**
72
85
  * Which pane to show when `narrowLayout` is `swap`. Default: `primary`.
73
86
  * List-detail on compact typically flips to `secondary` once an item is
@@ -122,6 +135,7 @@ const PaneSizeClassContext = createContext<LayoutSizeClass | null>(null);
122
135
  export function PaneScaffold({
123
136
  primary,
124
137
  secondary,
138
+ orientation = "horizontal",
125
139
  activePane: activePaneProp,
126
140
  narrowLayout: narrowLayoutProp,
127
141
  maxPanes: maxPanesProp,
@@ -150,6 +164,7 @@ export function PaneScaffold({
150
164
  // secondary by default leaves that content unreachable on a phone.
151
165
  const narrowLayout = narrowLayoutProp ?? (activePaneProp === undefined ? "stack" : "swap");
152
166
  const stacked = !split && hasSecondary && narrowLayout === "stack";
167
+ const vertical = orientation === "vertical";
153
168
  const [primaryFlex, secondaryFlex] = paneFlex;
154
169
 
155
170
  // flexBasis auto, not the flex:1 shorthand's 0%: react-native-web resets
@@ -170,6 +185,7 @@ export function PaneScaffold({
170
185
  data-testid="pane-scaffold"
171
186
  data-panes="2"
172
187
  data-pane-layout="stack"
188
+ data-orientation={orientation}
173
189
  data-size-class={sizeClass}
174
190
  data-sash="false"
175
191
  {...rest}
@@ -212,6 +228,7 @@ export function PaneScaffold({
212
228
  data-testid="pane-scaffold"
213
229
  data-panes="1"
214
230
  data-pane-layout="single"
231
+ data-orientation={orientation}
215
232
  data-size-class={sizeClass}
216
233
  {...rest}
217
234
  >
@@ -221,6 +238,7 @@ export function PaneScaffold({
221
238
  } else {
222
239
  content = (
223
240
  <XStack
241
+ flexDirection={vertical ? "column" : "row"}
224
242
  flexGrow={1}
225
243
  flexShrink={1}
226
244
  flexBasis="auto"
@@ -233,12 +251,14 @@ export function PaneScaffold({
233
251
  data-testid="pane-scaffold"
234
252
  data-panes="2"
235
253
  data-pane-layout="split"
254
+ data-orientation={orientation}
236
255
  data-size-class={sizeClass}
237
256
  data-sash={resizable ? "true" : "false"}
238
257
  {...rest}
239
258
  >
240
259
  {resizable ? (
241
260
  <ResizablePanes
261
+ vertical={vertical}
242
262
  primary={primary}
243
263
  secondary={secondary}
244
264
  primaryFlex={primaryFlex}
@@ -254,7 +274,7 @@ export function PaneScaffold({
254
274
  flex={primaryFlex}
255
275
  minWidth={0}
256
276
  minHeight={0}
257
- {...(gapped ? undefined : paneHairlineEnd)}
277
+ {...(gapped ? undefined : vertical ? paneHairlineBottom : paneHairlineEnd)}
258
278
  data-testid="pane-primary"
259
279
  >
260
280
  {primary}
@@ -287,7 +307,21 @@ function clampFraction(value: number, min: number, max: number): number {
287
307
  return Math.min(max, Math.max(min, value));
288
308
  }
289
309
 
310
+ function axisSize(
311
+ vertical: boolean,
312
+ rect: { width?: number; height?: number } | null | undefined,
313
+ ): number {
314
+ return (vertical ? rect?.height : rect?.width) ?? 0;
315
+ }
316
+
317
+ function pointerPos(vertical: boolean, e: any): number {
318
+ return vertical
319
+ ? (e.clientY ?? e.nativeEvent?.pageY ?? 0)
320
+ : (e.clientX ?? e.nativeEvent?.pageX ?? 0);
321
+ }
322
+
290
323
  function ResizablePanes({
324
+ vertical,
291
325
  primary,
292
326
  secondary,
293
327
  primaryFlex,
@@ -297,6 +331,7 @@ function ResizablePanes({
297
331
  fraction: fractionProp,
298
332
  onFractionChange,
299
333
  }: {
334
+ vertical: boolean;
300
335
  primary: ReactNode;
301
336
  secondary: ReactNode;
302
337
  primaryFlex: number;
@@ -308,23 +343,24 @@ function ResizablePanes({
308
343
  }) {
309
344
  const sashId = useId();
310
345
  const rtl = useDirection() === "rtl";
311
- const dirSign = rtl ? -1 : 1;
346
+ // RTL mirrors the inline axis only; a vertical seam has no mirror.
347
+ const dirSign = !vertical && rtl ? -1 : 1;
312
348
  const defaultFraction = primaryFlex / Math.max(primaryFlex + secondaryFlex, 1);
313
349
  const [uncontrolled, setUncontrolled] = useState(defaultFraction);
314
350
  const fraction = clampFraction(fractionProp ?? uncontrolled, minFraction, maxFraction);
315
351
  const [hot, setHot] = useState(false);
316
352
  const [kbFocus, setKbFocus] = useState(false);
317
353
  const [dragging, setDragging] = useState(false);
318
- const widthRef = useRef(0);
354
+ const sizeRef = useRef(0);
319
355
  const rowRef = useRef<any>(null);
320
- const dragRef = useRef<{ startX: number; startFraction: number; moved: boolean } | null>(null);
356
+ const dragRef = useRef<{ start: number; startFraction: number; moved: boolean } | null>(null);
321
357
  const lastTapRef = useRef(0);
358
+ const resizeCursor = vertical ? "row-resize" : "col-resize";
322
359
 
323
- const measureWidth = () => {
324
- const node = rowRef.current;
325
- const rect = node?.getBoundingClientRect?.();
326
- if (rect?.width) widthRef.current = rect.width;
327
- };
360
+ const measureSize = useCallback(() => {
361
+ const size = axisSize(vertical, rowRef.current?.getBoundingClientRect?.());
362
+ if (size) sizeRef.current = size;
363
+ }, [vertical]);
328
364
 
329
365
  ensureKeyboardModalityTracking();
330
366
 
@@ -356,22 +392,16 @@ function ResizablePanes({
356
392
  const prevUserSelect = document.body.style.userSelect;
357
393
  const prevCursor = document.documentElement.style.cursor;
358
394
  document.body.style.userSelect = "none";
359
- document.documentElement.style.cursor = "col-resize";
395
+ document.documentElement.style.cursor = resizeCursor;
360
396
 
361
397
  const onMove = (e: PointerEvent) => {
362
398
  const session = dragRef.current;
363
- let width = widthRef.current;
364
- if (width <= 0) {
365
- const rect = rowRef.current?.getBoundingClientRect?.();
366
- if (rect?.width) {
367
- width = rect.width;
368
- widthRef.current = width;
369
- }
370
- }
371
- if (!session || width <= 0) return;
372
- const dx = (e.clientX - session.startX) * dirSign;
373
- if (Math.abs(dx) > 2) session.moved = true;
374
- commit(session.startFraction + dx / width);
399
+ if (sizeRef.current <= 0) measureSize();
400
+ const size = sizeRef.current;
401
+ if (!session || size <= 0) return;
402
+ const delta = (pointerPos(vertical, e) - session.start) * dirSign;
403
+ if (Math.abs(delta) > 2) session.moved = true;
404
+ commit(session.startFraction + delta / size);
375
405
  };
376
406
  window.addEventListener("pointermove", onMove);
377
407
  window.addEventListener("pointerup", finishDrag);
@@ -383,7 +413,7 @@ function ResizablePanes({
383
413
  window.removeEventListener("pointerup", finishDrag);
384
414
  window.removeEventListener("pointercancel", finishDrag);
385
415
  };
386
- }, [commit, dirSign, dragging, finishDrag]);
416
+ }, [commit, dirSign, dragging, finishDrag, measureSize, resizeCursor, vertical]);
387
417
 
388
418
  const onSashPointerDown = (e: any) => {
389
419
  if (e.button != null && e.button !== 0) return;
@@ -394,9 +424,9 @@ function ResizablePanes({
394
424
  } catch {
395
425
  /* native / no capture */
396
426
  }
397
- measureWidth();
427
+ measureSize();
398
428
  dragRef.current = {
399
- startX: e.clientX ?? e.nativeEvent?.pageX ?? 0,
429
+ start: pointerPos(vertical, e),
400
430
  startFraction: fraction,
401
431
  moved: false,
402
432
  };
@@ -406,21 +436,23 @@ function ResizablePanes({
406
436
 
407
437
  const onSashPointerMove = (e: any) => {
408
438
  if (!dragRef.current || isWeb) return;
409
- const width = widthRef.current;
410
- if (width <= 0) return;
411
- const x = e.clientX ?? e.nativeEvent?.pageX ?? 0;
412
- const dx = (x - dragRef.current.startX) * dirSign;
413
- if (Math.abs(dx) > 2) dragRef.current.moved = true;
414
- commit(dragRef.current.startFraction + dx / width);
439
+ const size = sizeRef.current;
440
+ if (size <= 0) return;
441
+ const delta = (pointerPos(vertical, e) - dragRef.current.start) * dirSign;
442
+ if (Math.abs(delta) > 2) dragRef.current.moved = true;
443
+ commit(dragRef.current.startFraction + delta / size);
415
444
  };
416
445
 
446
+ const keyBack = vertical ? "ArrowUp" : "ArrowLeft";
447
+ const keyForward = vertical ? "ArrowDown" : "ArrowRight";
448
+
417
449
  const onSashKeyDown = (e: any) => {
418
450
  const key = e.key as string;
419
451
  const step = e.shiftKey ? FRACTION_STEP_LARGE : FRACTION_STEP;
420
- if (key === "ArrowLeft") {
452
+ if (key === keyBack) {
421
453
  e.preventDefault?.();
422
454
  commit(fraction - step * dirSign);
423
- } else if (key === "ArrowRight") {
455
+ } else if (key === keyForward) {
424
456
  e.preventDefault?.();
425
457
  commit(fraction + step * dirSign);
426
458
  } else if (key === "Home") {
@@ -437,10 +469,12 @@ function ResizablePanes({
437
469
 
438
470
  const percent = Math.round(fraction * 100);
439
471
  const lineHot = hot || dragging || kbFocus;
472
+ const sashOverhang = -(SASH_VISUAL - hairlineWidth) / 2;
440
473
 
441
474
  return (
442
475
  <XStack
443
476
  ref={rowRef}
477
+ flexDirection={vertical ? "column" : "row"}
444
478
  flexGrow={1}
445
479
  flexShrink={1}
446
480
  flexBasis="auto"
@@ -449,7 +483,7 @@ function ResizablePanes({
449
483
  width="100%"
450
484
  alignItems="stretch"
451
485
  onLayout={(e) => {
452
- widthRef.current = e.nativeEvent.layout.width;
486
+ sizeRef.current = axisSize(vertical, e.nativeEvent.layout);
453
487
  }}
454
488
  >
455
489
  <YStack
@@ -463,7 +497,7 @@ function ResizablePanes({
463
497
  {primary}
464
498
  </YStack>
465
499
  <YStack
466
- width={hairlineWidth}
500
+ {...(vertical ? { height: hairlineWidth } : { width: hairlineWidth })}
467
501
  flexGrow={0}
468
502
  flexShrink={0}
469
503
  alignSelf="stretch"
@@ -472,16 +506,26 @@ function ResizablePanes({
472
506
  >
473
507
  <YStack
474
508
  position="absolute"
475
- top={0}
476
- bottom={0}
477
- width={SASH_VISUAL}
478
- left={-(SASH_VISUAL - hairlineWidth) / 2}
479
- alignItems="center"
480
- cursor="col-resize"
509
+ {...(vertical
510
+ ? {
511
+ left: 0,
512
+ right: 0,
513
+ height: SASH_VISUAL,
514
+ top: sashOverhang,
515
+ justifyContent: "center" as const,
516
+ }
517
+ : {
518
+ top: 0,
519
+ bottom: 0,
520
+ width: SASH_VISUAL,
521
+ left: sashOverhang,
522
+ alignItems: "center" as const,
523
+ })}
524
+ cursor={resizeCursor}
481
525
  userSelect="none"
482
526
  tabIndex={0}
483
527
  role="separator"
484
- aria-orientation="vertical"
528
+ aria-orientation={vertical ? "horizontal" : "vertical"}
485
529
  aria-controls={sashId}
486
530
  aria-valuemin={Math.round(minFraction * 100)}
487
531
  aria-valuemax={Math.round(maxFraction * 100)}
@@ -508,12 +552,21 @@ function ResizablePanes({
508
552
  onBlur={() => setKbFocus(false)}
509
553
  onKeyDown={onSashKeyDown}
510
554
  >
511
- <YStack
512
- flex={1}
513
- width={lineHot ? 2 : hairlineWidth}
514
- backgroundColor={lineHot ? "$accentBackground" : "$borderColor"}
515
- {...(lineHot ? undefined : hairline.vline)}
516
- />
555
+ {vertical ? (
556
+ <YStack
557
+ alignSelf="stretch"
558
+ height={lineHot ? 2 : hairlineWidth}
559
+ backgroundColor={lineHot ? "$accentBackground" : "$borderColor"}
560
+ {...(lineHot ? undefined : hairline.line)}
561
+ />
562
+ ) : (
563
+ <YStack
564
+ flex={1}
565
+ width={lineHot ? 2 : hairlineWidth}
566
+ backgroundColor={lineHot ? "$accentBackground" : "$borderColor"}
567
+ {...(lineHot ? undefined : hairline.vline)}
568
+ />
569
+ )}
517
570
  </YStack>
518
571
  </YStack>
519
572
  <YStack
@@ -0,0 +1,74 @@
1
+ /**
2
+ * @vitest-environment jsdom
3
+ */
4
+
5
+ import { cleanup, screen } from "@testing-library/react";
6
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
7
+ import { Preset, type Knobs } from "@multiplatform.one/theme";
8
+ import { afterEach, describe, expect, it } from "vitest";
9
+ import { Attachments, type AttachmentItem } from "./attachments";
10
+
11
+ afterEach(cleanup);
12
+
13
+ const items: AttachmentItem[] = [
14
+ { id: "a", fileName: "restore-log.txt", fileUrl: "/a.txt", fileSize: 12_000 },
15
+ { id: "b", fileName: "topology.txt", fileUrl: "/b.txt", fileSize: 812_000 },
16
+ ];
17
+
18
+ function rowAtoms(overrides: Partial<Knobs>) {
19
+ renderWithProviders(
20
+ <Preset overrides={overrides}>
21
+ <Attachments items={items} />
22
+ </Preset>,
23
+ );
24
+ return screen
25
+ .getAllByRole("listitem")
26
+ .map((row) => (row.getAttribute("class") ?? "").split(/\s+/));
27
+ }
28
+
29
+ describe("Attachments rows are a CONTAINER-CAP stack (DG-RAD-04, MPO-56)", () => {
30
+ it("caps the outer corners at the row padding at full", () => {
31
+ const [first, last] = rowAtoms({ borderRadius: "full", space: "medium" });
32
+ expect(first).toEqual(
33
+ expect.arrayContaining(["_borderStartStartRadius-18px", "_borderStartEndRadius-18px"]),
34
+ );
35
+ expect(last).toEqual(
36
+ expect.arrayContaining(["_borderEndStartRadius-18px", "_borderEndEndRadius-18px"]),
37
+ );
38
+ });
39
+
40
+ it("caps large at 13 under space small, where 16 would exceed the padding", () => {
41
+ const [first] = rowAtoms({ borderRadius: "large", space: "small" });
42
+ expect(first).toEqual(
43
+ expect.arrayContaining(["_borderStartStartRadius-13px", "_borderStartEndRadius-13px"]),
44
+ );
45
+ });
46
+
47
+ it("declares each row a StackedRow cap with the stops it resolved", () => {
48
+ renderWithProviders(
49
+ <Preset overrides={{ borderRadius: "large", space: "small" }}>
50
+ <Attachments items={items} />
51
+ </Preset>,
52
+ );
53
+ const declared = screen.getAllByRole("listitem").map((row) => ({
54
+ container: row.getAttribute("data-constraint-container"),
55
+ position: row.getAttribute("data-stack-position"),
56
+ radius: row.getAttribute("data-radius-knob"),
57
+ space: row.getAttribute("data-space-knob"),
58
+ }));
59
+ expect(declared).toEqual([
60
+ { container: "StackedRow", position: "first", radius: "large", space: "small" },
61
+ { container: "StackedRow", position: "last", radius: "large", space: "small" },
62
+ ]);
63
+ });
64
+
65
+ it("squares every corner at none", () => {
66
+ for (const row of rowAtoms({ borderRadius: "none" })) {
67
+ const corners = row.filter((a) =>
68
+ /^_border(Start|End)(Start|End)Radius-(\d+px|t-radius-\d+)$/.test(a),
69
+ );
70
+ expect(corners).toHaveLength(4);
71
+ expect(corners.filter((a) => !/-(0px|t-radius-0)$/.test(a))).toEqual([]);
72
+ }
73
+ });
74
+ });
@@ -11,6 +11,7 @@ import {
11
11
  } from "@phosphor-icons/react";
12
12
  import { downloadFile } from "@multiplatform.one/platform";
13
13
  import {
14
+ containerCapProps,
14
15
  ensureFocusVisibleRing,
15
16
  ensureKeyboardModalityTracking,
16
17
  getGroupPosition,
@@ -335,7 +336,7 @@ function AttachmentRow({
335
336
  const ext = getFileExtension(attachment);
336
337
  const iconSize = compact ? 14 : 16;
337
338
  const position = getGroupPosition(index, count);
338
- const corners = stackRadiusProps(position, knobProps.borderRadius.borderRadius);
339
+ const corners = stackRadiusProps(position, knobProps.containerRadius.borderRadius);
339
340
 
340
341
  const actions = {
341
342
  onPreview: () => onPreview(attachment),
@@ -419,6 +420,7 @@ function AttachmentRow({
419
420
  <XStack
420
421
  role="listitem"
421
422
  data-stack-position={position}
423
+ {...containerCapProps("StackedRow", knobProps.borderRadius.borderRadius, knobProps.space)}
422
424
  alignItems="center"
423
425
  paddingVertical="$2"
424
426
  paddingHorizontal={rowPad}
@@ -161,3 +161,23 @@ describe("density unpinned (LC-76)", () => {
161
161
  expect(screen.getByTestId("inner-section").getAttribute("data-density")).toBe("compact");
162
162
  });
163
163
  });
164
+
165
+ describe("PageSection surface declares its container cap (DG-RAD-04)", () => {
166
+ it("the painted surface carries the knob stops its radius resolved from", () => {
167
+ renderWithProviders(
168
+ <Preset overrides={{ borderRadius: "full", space: "small" }}>
169
+ <PageSection surface title="Details" data-testid="details">
170
+ <></>
171
+ </PageSection>
172
+ </Preset>,
173
+ );
174
+ const surface = document.querySelector('[data-constraint-container="PageSection"]');
175
+ expect(surface?.getAttribute("data-radius-knob")).toBe("full");
176
+ expect(surface?.getAttribute("data-space-knob")).toBe("small");
177
+ });
178
+
179
+ it("a section without a surface makes no claim", () => {
180
+ renderWithProviders(<PageSection title="Plain" />);
181
+ expect(document.querySelector("[data-constraint-container]")).toBeNull();
182
+ });
183
+ });
@@ -19,6 +19,7 @@ import {
19
19
  MIN_PRESS_TARGET,
20
20
  Preset,
21
21
  Surface,
22
+ containerCapProps,
22
23
  hairline,
23
24
  layoutBreakpoints,
24
25
  resolvePageTitleScale,
@@ -396,6 +397,7 @@ export function PageSection({
396
397
  ...knobProps.surface,
397
398
  ...knobProps.containerRadius,
398
399
  ...knobProps.panelPadding,
400
+ ...containerCapProps("PageSection", knobProps.borderRadius.borderRadius, knobProps.space),
399
401
  } as Partial<YStackProps>)
400
402
  : {};
401
403
 
@@ -8,6 +8,7 @@ import {
8
8
  useReadableTextOn,
9
9
  useResolvedKnobs,
10
10
  wasKeyboardFocus,
11
+ transitionProps,
11
12
  } from "@multiplatform.one/theme";
12
13
  import type React from "react";
13
14
  import { Fragment, useId, useState } from "react";
@@ -168,9 +169,7 @@ export function Sidebar({
168
169
  cursor={pressable ? "pointer" : "default"}
169
170
  userSelect="none"
170
171
  onPress={item.onPress}
171
- {...(knobProps.transition
172
- ? { transition: knobProps.transition }
173
- : undefined)}
172
+ {...transitionProps(knobProps.transition)}
174
173
  {...(pressable
175
174
  ? {
176
175
  role: "button" as const,
@@ -76,3 +76,41 @@ describe("Timeline entry radius knob (SB-M-301)", () => {
76
76
  expect(fullRadiusClass).not.toBe(noneRadiusClass);
77
77
  });
78
78
  });
79
+
80
+ describe("Timeline comment card is CONTAINER-CAP on its own padding (DG-RAD-04, MPO-56)", () => {
81
+ const cardRadius = (borderRadius: "none" | "medium" | "large" | "full", compact = false) => {
82
+ renderWithProviders(
83
+ <Preset overrides={{ borderRadius }}>
84
+ <Timeline entries={entries} compact={compact} />
85
+ </Preset>,
86
+ );
87
+ const found = entryRowRadiusClass();
88
+ cleanup();
89
+ return found;
90
+ };
91
+
92
+ it("takes the token while it fits the $3 padding", () => {
93
+ expect(cardRadius("none")).toBe("_btlr-0px");
94
+ expect(cardRadius("medium")).toBe("_btlr-9px");
95
+ });
96
+
97
+ it("caps large and full at the 13px padding", () => {
98
+ expect(cardRadius("large")).toBe("_btlr-13px");
99
+ expect(cardRadius("full")).toBe("_btlr-13px");
100
+ });
101
+
102
+ it("caps at the compact $2 padding when compact", () => {
103
+ expect(cardRadius("medium", true)).toBe("_btlr-7px");
104
+ });
105
+
106
+ it("declares an OwnInset cap for the constraint audit", () => {
107
+ renderWithProviders(
108
+ <Preset overrides={{ borderRadius: "full" }}>
109
+ <Timeline entries={entries} />
110
+ </Preset>,
111
+ );
112
+ const card = screen.getByText("Looks good!").closest("[data-constraint-container]");
113
+ expect(card?.getAttribute("data-constraint-container")).toBe("OwnInset");
114
+ expect(card?.getAttribute("data-radius-knob")).toBe("full");
115
+ });
116
+ });
@@ -13,12 +13,15 @@ import {
13
13
  import { useDirection } from "../hooks/useDirection";
14
14
  import {
15
15
  MIN_PRESS_TARGET,
16
+ containerCapProps,
16
17
  ensureFocusVisibleRing,
17
18
  formatAbsoluteDateTime,
18
19
  formatRelativeTimestamp,
19
20
  getGroupPosition,
20
21
  pressTargetHitSlop,
21
22
  pressTargetStyle,
23
+ radiusStopFromToken,
24
+ resolveRadiusClass,
22
25
  stackRadiusProps,
23
26
  useResolvedKnobs,
24
27
  } from "@multiplatform.one/theme";
@@ -37,6 +40,7 @@ import {
37
40
  XStack,
38
41
  YStack,
39
42
  type YStackProps,
43
+ getTokenValue,
40
44
  isWeb,
41
45
  } from "tamagui";
42
46
  import { Avatar } from "../Avatar";
@@ -556,6 +560,15 @@ export function Timeline({
556
560
  // Twin of the live avatar/badge column — spine centers on this well.
557
561
  const columnPx = compact ? 20 : sz === "$5" ? 34 : 24;
558
562
  const rowPad = compact ? 8 : sz === "$5" ? 16 : 12;
563
+ // DG-RAD-04: the comment card is a padded content container, so it caps
564
+ // at its own padding, not at the panelPadding knob it does not use.
565
+ const commentPad = compact ? "$2" : "$3";
566
+ const commentPadPx = getTokenValue(commentPad as Parameters<typeof getTokenValue>[0], "space");
567
+ const commentStop = radiusStopFromToken(radiusToken);
568
+ const commentRadius =
569
+ commentStop && typeof commentPadPx === "number"
570
+ ? resolveRadiusClass("CONTAINER-CAP", commentStop, { paddingPx: commentPadPx })
571
+ : radiusToken;
559
572
 
560
573
  const emptyIconSize = compact
561
574
  ? sz === "$3"
@@ -818,7 +831,9 @@ export function Timeline({
818
831
  gap="$1"
819
832
  backgroundColor={componentColors.surface.background}
820
833
  {...knobProps.borderRadius}
821
- padding={compact ? "$2" : "$3"}
834
+ borderRadius={commentRadius}
835
+ {...containerCapProps("OwnInset", radiusToken, knobProps.space)}
836
+ padding={commentPad}
822
837
  >
823
838
  <XStack gap="$2" alignItems="center" flexWrap="wrap">
824
839
  <Text fontSize={nameFontSize} fontWeight="400" color={componentColors.text.primary}>