@multiplatform.one/components 7.81.2 → 7.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/dist/cjs/Accordion/index.native.js +1 -1
  2. package/dist/cjs/Accordion/index.native.js.map +1 -1
  3. package/dist/cjs/Alert/index.native.js.map +1 -1
  4. package/dist/cjs/AnimateHeight/index.native.js.map +1 -1
  5. package/dist/cjs/Avatar/getInitials.native.js.map +1 -1
  6. package/dist/cjs/Avatar/index.native.js.map +1 -1
  7. package/dist/cjs/Badge/index.native.js.map +1 -1
  8. package/dist/cjs/Button.native.js.map +1 -1
  9. package/dist/cjs/Card.native.js.map +1 -1
  10. package/dist/cjs/CardFooter.native.js.map +1 -1
  11. package/dist/cjs/CardHeader.native.js.map +1 -1
  12. package/dist/cjs/Carousel/index.native.js +3 -3
  13. package/dist/cjs/Carousel/index.native.js.map +1 -1
  14. package/dist/cjs/CheckGlyph/MenuCheckColumn.native.js.map +1 -1
  15. package/dist/cjs/CheckGlyph/index.native.js.map +1 -1
  16. package/dist/cjs/Chip/index.native.js.map +1 -1
  17. package/dist/cjs/Collapsible.native.js.map +1 -1
  18. package/dist/cjs/ContextMenu/index.native.js.map +1 -1
  19. package/dist/cjs/CopyField/CopyMenuButton.native.js +1 -1
  20. package/dist/cjs/CopyField/CopyMenuButton.native.js.map +1 -1
  21. package/dist/cjs/CopyField/index.native.js.map +1 -1
  22. package/dist/cjs/Dialog.native.js.map +1 -1
  23. package/dist/cjs/Diff/diff.native.js.map +1 -1
  24. package/dist/cjs/Diff/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/DropdownMenu/menuSettle.native.js.map +1 -1
  28. package/dist/cjs/ElapsedProgress/index.native.js.map +1 -1
  29. package/dist/cjs/ErrorBoundary/index.native.js.map +1 -1
  30. package/dist/cjs/Heading.native.js.map +1 -1
  31. package/dist/cjs/Kbd/index.native.js.map +1 -1
  32. package/dist/cjs/Kbd/keys.native.js.map +1 -1
  33. package/dist/cjs/Lightbox/MediaControl.native.js.map +1 -1
  34. package/dist/cjs/Lightbox/index.gnome.native.js.map +1 -1
  35. package/dist/cjs/Lightbox/index.native.js +1 -1
  36. package/dist/cjs/Lightbox/shared.native.js.map +1 -1
  37. package/dist/cjs/Lightbox/useLightbox.native.js.map +1 -1
  38. package/dist/cjs/MachineLiteral/index.native.js.map +1 -1
  39. package/dist/cjs/Material/index.native.js.map +1 -1
  40. package/dist/cjs/Meter/index.native.js +1 -1
  41. package/dist/cjs/Meter/index.native.js.map +1 -1
  42. package/dist/cjs/Meter/meter.native.js.map +1 -1
  43. package/dist/cjs/OverflowRow/index.native.js +1 -1
  44. package/dist/cjs/OverflowRow/index.native.js.map +1 -1
  45. package/dist/cjs/Pagination.native.js +1 -1
  46. package/dist/cjs/Pagination.native.js.map +1 -1
  47. package/dist/cjs/Popover.native.js +1 -1
  48. package/dist/cjs/Popover.native.js.map +1 -1
  49. package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
  50. package/dist/cjs/Quote/index.native.js.map +1 -1
  51. package/dist/cjs/SchemeToggle/index.native.js +1 -1
  52. package/dist/cjs/SchemeToggle/index.native.js.map +1 -1
  53. package/dist/cjs/ScrollView/revealFocusedField.native.js.map +1 -1
  54. package/dist/cjs/Separator/index.native.js.map +1 -1
  55. package/dist/cjs/Sheet.native.js.map +1 -1
  56. package/dist/cjs/SheetModal/SheetHeader.native.js.map +1 -1
  57. package/dist/cjs/SheetModal/SheetNavigation.native.js.map +1 -1
  58. package/dist/cjs/SheetModal/detents.native.js.map +1 -1
  59. package/dist/cjs/SheetModal/useSheetFrameFocus.native.js.map +1 -1
  60. package/dist/cjs/Skeleton/index.native.js.map +1 -1
  61. package/dist/cjs/SkipLink/index.native.js.map +1 -1
  62. package/dist/cjs/SortableList/SortableHandle.native.js.map +1 -1
  63. package/dist/cjs/SortableList/index.native.js.map +1 -1
  64. package/dist/cjs/SortableList/useSortableRows.native.js.map +1 -1
  65. package/dist/cjs/SortableList/useUserOrder.native.js.map +1 -1
  66. package/dist/cjs/Tabs/index.native.js +1 -1
  67. package/dist/cjs/Tabs/index.native.js.map +1 -1
  68. package/dist/cjs/Text.native.js.map +1 -1
  69. package/dist/cjs/ThemePresetPicker/index.native.js +2 -2
  70. package/dist/cjs/ThemePresetPicker/index.native.js.map +1 -1
  71. package/dist/cjs/Toast/index.native.js.map +1 -1
  72. package/dist/cjs/Toast/store.native.js.map +1 -1
  73. package/dist/cjs/Tooltip/nativePress.native.js.map +1 -1
  74. package/dist/cjs/Tooltip/tooltipShared.native.js.map +1 -1
  75. package/dist/cjs/TreeSelect/index.native.js +2 -2
  76. package/dist/cjs/TreeSelect/index.native.js.map +1 -1
  77. package/dist/cjs/TreeSelect/treeSelectModel.native.js.map +1 -1
  78. package/dist/cjs/Video/PlayerChrome.native.js.map +1 -1
  79. package/dist/cjs/Video/VideoFrame.native.js.map +1 -1
  80. package/dist/cjs/Video/types.native.js.map +1 -1
  81. package/dist/cjs/Wheel/index.native.js.map +1 -1
  82. package/dist/cjs/Wizard/index.native.js +2 -2
  83. package/dist/cjs/Wizard/index.native.js.map +1 -1
  84. package/dist/cjs/actions/ActionBar.native.js.map +1 -1
  85. package/dist/cjs/actions/DangerSection.native.js.map +1 -1
  86. package/dist/cjs/actions/DestructiveAction.native.js.map +1 -1
  87. package/dist/cjs/actions/HeaderActions.native.js +2 -2
  88. package/dist/cjs/actions/HeaderActions.native.js.map +1 -1
  89. package/dist/cjs/actions/StandardAction.native.js +1 -1
  90. package/dist/cjs/actions/StandardAction.native.js.map +1 -1
  91. package/dist/cjs/actions/devWarn.native.js.map +1 -1
  92. package/dist/cjs/actions/index.native.js.map +1 -1
  93. package/dist/cjs/actions/severity.native.js.map +1 -1
  94. package/dist/cjs/appShell/AppShell.native.js +1 -1
  95. package/dist/cjs/appShell/AppShell.native.js.map +1 -1
  96. package/dist/cjs/appShell/Dock.native.js.map +1 -1
  97. package/dist/cjs/appShell/MpoTabHost.native.js.map +1 -1
  98. package/dist/cjs/appShell/ScopeMenu.native.js +1 -1
  99. package/dist/cjs/appShell/ScopeMenu.native.js.map +1 -1
  100. package/dist/cjs/appShell/SettingsSplit.native.js +1 -1
  101. package/dist/cjs/appShell/SettingsSplit.native.js.map +1 -1
  102. package/dist/cjs/appShell/Springboard.native.js +1 -1
  103. package/dist/cjs/appShell/Springboard.native.js.map +1 -1
  104. package/dist/cjs/appShell/SystemBar.native.js.map +1 -1
  105. package/dist/cjs/appShell/TabBar.native.js +1 -1
  106. package/dist/cjs/appShell/TabBar.native.js.map +1 -1
  107. package/dist/cjs/appShell/appTile.native.js +1 -1
  108. package/dist/cjs/appShell/appTile.native.js.map +1 -1
  109. package/dist/cjs/appShell/bottomChrome.native.js.map +1 -1
  110. package/dist/cjs/appShell/index.native.js.map +1 -1
  111. package/dist/cjs/charts/Axis.native.js.map +1 -1
  112. package/dist/cjs/charts/BarChart.native.js.map +1 -1
  113. package/dist/cjs/charts/ChartDataView.native.js +2 -2
  114. package/dist/cjs/charts/ChartDataView.native.js.map +1 -1
  115. package/dist/cjs/charts/ChartSurface.native.js.map +1 -1
  116. package/dist/cjs/charts/LineChart.native.js.map +1 -1
  117. package/dist/cjs/charts/PieChart.native.js.map +1 -1
  118. package/dist/cjs/charts/Sparkline.native.js.map +1 -1
  119. package/dist/cjs/charts/accessibility.native.js.map +1 -1
  120. package/dist/cjs/charts/chartHeight.native.js.map +1 -1
  121. package/dist/cjs/charts/composeChart.native.js.map +1 -1
  122. package/dist/cjs/charts/index.native.js.map +1 -1
  123. package/dist/cjs/charts/math.native.js.map +1 -1
  124. package/dist/cjs/charts/series.native.js.map +1 -1
  125. package/dist/cjs/charts/svg.native.js.map +1 -1
  126. package/dist/cjs/charts/types.native.js.map +1 -1
  127. package/dist/cjs/charts/useChartTheme.native.js.map +1 -1
  128. package/dist/cjs/code/Code/index.native.js.map +1 -1
  129. package/dist/cjs/code/CodeBlock/index.cjs +38 -31
  130. package/dist/cjs/code/CodeBlock/index.native.js +45 -38
  131. package/dist/cjs/code/CodeBlock/index.native.js.map +1 -1
  132. package/dist/cjs/code/HighlightedCode/index.native.js.map +1 -1
  133. package/dist/cjs/code/Highlighter/houseSyntaxTheme.native.js.map +1 -1
  134. package/dist/cjs/code/Highlighter/index.native.js.map +1 -1
  135. package/dist/cjs/code/Highlighter/namedGroupMatchAll.native.js.map +1 -1
  136. package/dist/cjs/code/LogView.native.js.map +1 -1
  137. package/dist/cjs/code/Pre/index.native.js.map +1 -1
  138. package/dist/cjs/code/index.native.js +5 -5
  139. package/dist/cjs/code/index.native.js.map +1 -1
  140. package/dist/cjs/componentColors.native.js.map +1 -1
  141. package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -1
  142. package/dist/cjs/feedback/NotifyHost.native.js +2 -2
  143. package/dist/cjs/feedback/NotifyHost.native.js.map +1 -1
  144. package/dist/cjs/feedback/copy.native.js.map +1 -1
  145. package/dist/cjs/feedback/index.native.js.map +1 -1
  146. package/dist/cjs/feedback/notify.native.js.map +1 -1
  147. package/dist/cjs/feedback/route.native.js.map +1 -1
  148. package/dist/cjs/feedback/store.native.js.map +1 -1
  149. package/dist/cjs/formLayouts/FormLayouts.native.js +1 -1
  150. package/dist/cjs/formLayouts/FormLayouts.native.js.map +1 -1
  151. package/dist/cjs/formLayouts/PreferencePanel.native.js +2 -2
  152. package/dist/cjs/formLayouts/PreferencePanel.native.js.map +1 -1
  153. package/dist/cjs/formLayouts/index.native.js.map +1 -1
  154. package/dist/cjs/hooks/index.native.js +1 -1
  155. package/dist/cjs/hooks/index.native.js.map +1 -1
  156. package/dist/cjs/hooks/useClipboard.native.js.map +1 -1
  157. package/dist/cjs/hooks/useDocumentTitle.native.js.map +1 -1
  158. package/dist/cjs/hooks/useHoldCue.native.js.map +1 -1
  159. package/dist/cjs/icons/CheckRegular.native.js.map +1 -1
  160. package/dist/cjs/icons/MinusRegular.native.js.map +1 -1
  161. package/dist/cjs/icons/index.native.js.map +1 -1
  162. package/dist/cjs/icons/lucide.native.js.map +1 -1
  163. package/dist/cjs/icons/themed.native.js.map +1 -1
  164. package/dist/cjs/images/Image/ImageFrame.native.js +1 -1
  165. package/dist/cjs/images/Image/ImageFrame.native.js.map +1 -1
  166. package/dist/cjs/images/Image/framing.native.js.map +1 -1
  167. package/dist/cjs/images/Image/index.native.js +1 -1
  168. package/dist/cjs/images/Image/mediaRadius.native.js.map +1 -1
  169. package/dist/cjs/images/Image/shared.native.js +1 -1
  170. package/dist/cjs/images/Image/shared.native.js.map +1 -1
  171. package/dist/cjs/images/Image/types.native.js.map +1 -1
  172. package/dist/cjs/images/index.native.js.map +1 -1
  173. package/dist/cjs/index.native.js +39 -39
  174. package/dist/cjs/index.native.js.map +1 -1
  175. package/dist/cjs/knobImmuneExports.native.js.map +1 -1
  176. package/dist/cjs/layouts/AsyncBoundary.native.js +2 -2
  177. package/dist/cjs/layouts/AsyncBoundary.native.js.map +1 -1
  178. package/dist/cjs/layouts/Debug/index.native.js.map +1 -1
  179. package/dist/cjs/layouts/EmptyState.cjs +9 -43
  180. package/dist/cjs/layouts/EmptyState.native.js +9 -45
  181. package/dist/cjs/layouts/EmptyState.native.js.map +1 -1
  182. package/dist/cjs/layouts/IdentityPlate.native.js.map +1 -1
  183. package/dist/cjs/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
  184. package/dist/cjs/layouts/PageTemplates.native.js.map +1 -1
  185. package/dist/cjs/layouts/PaneScaffold.native.js.map +1 -1
  186. package/dist/cjs/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
  187. package/dist/cjs/layouts/StatusDot.native.js.map +1 -1
  188. package/dist/cjs/layouts/StatusGlyphStrip.native.js +1 -1
  189. package/dist/cjs/layouts/StatusGlyphStrip.native.js.map +1 -1
  190. package/dist/cjs/layouts/ViewSwitcher.native.js.map +1 -1
  191. package/dist/cjs/layouts/attachments.native.js +1 -1
  192. package/dist/cjs/layouts/attachments.native.js.map +1 -1
  193. package/dist/cjs/layouts/barTitleSpan.cjs +54 -0
  194. package/dist/cjs/layouts/barTitleSpan.native.js +78 -0
  195. package/dist/cjs/layouts/barTitleSpan.native.js.map +1 -0
  196. package/dist/cjs/layouts/bottomAccessory.native.js.map +1 -1
  197. package/dist/cjs/layouts/breadcrumbs.native.js.map +1 -1
  198. package/dist/cjs/layouts/index.native.js +3 -3
  199. package/dist/cjs/layouts/index.native.js.map +1 -1
  200. package/dist/cjs/layouts/page.cjs +130 -41
  201. package/dist/cjs/layouts/page.native.js +145 -47
  202. package/dist/cjs/layouts/page.native.js.map +1 -1
  203. package/dist/cjs/layouts/pageHeadingScope.native.js.map +1 -1
  204. package/dist/cjs/layouts/screenScroll.native.js.map +1 -1
  205. package/dist/cjs/layouts/shellSidebarSlot.native.js.map +1 -1
  206. package/dist/cjs/layouts/sidebar.native.js +1 -1
  207. package/dist/cjs/layouts/sidebar.native.js.map +1 -1
  208. package/dist/cjs/layouts/tags.native.js +2 -2
  209. package/dist/cjs/layouts/tags.native.js.map +1 -1
  210. package/dist/cjs/layouts/timeline.native.js +2 -2
  211. package/dist/cjs/layouts/timeline.native.js.map +1 -1
  212. package/dist/cjs/layouts/toolbar.native.js +1 -1
  213. package/dist/cjs/layouts/toolbar.native.js.map +1 -1
  214. package/dist/cjs/shared/actionScan.native.js.map +1 -1
  215. package/dist/cjs/shared/i18n.native.js.map +1 -1
  216. package/dist/cjs/shared/restoreRetries.native.js.map +1 -1
  217. package/dist/cjs/shared/t.native.js.map +1 -1
  218. package/dist/cjs/shared/textRidesText.native.js.map +1 -1
  219. package/dist/cjs/shared/useReturnFocusOnClose.native.js.map +1 -1
  220. package/dist/cjs/surfaces.native.js +1 -1
  221. package/dist/cjs/surfaces.native.js.map +1 -1
  222. package/dist/cjs/tamagui.native.js +1 -1
  223. package/dist/cjs/tamagui.native.js.map +1 -1
  224. package/dist/cjs/testSetup.native.js.map +1 -1
  225. package/dist/cjs/utils/setTinted.native.js.map +1 -1
  226. package/dist/cjs/utils/unwrapText.native.js.map +1 -1
  227. package/dist/cjs/views/Calendar.native.js +1 -1
  228. package/dist/cjs/views/Calendar.native.js.map +1 -1
  229. package/dist/cjs/views/Dashboard.native.js +2 -2
  230. package/dist/cjs/views/Dashboard.native.js.map +1 -1
  231. package/dist/cjs/views/Gantt.native.js +2 -2
  232. package/dist/cjs/views/Gantt.native.js.map +1 -1
  233. package/dist/cjs/views/GanttDateGrip.native.js.map +1 -1
  234. package/dist/cjs/views/ImageGrid.native.js +2 -2
  235. package/dist/cjs/views/ImageGrid.native.js.map +1 -1
  236. package/dist/cjs/views/Kanban.native.js +1 -1
  237. package/dist/cjs/views/List.native.js.map +1 -1
  238. package/dist/cjs/views/ListGroup.native.js.map +1 -1
  239. package/dist/cjs/views/ListRow.native.js.map +1 -1
  240. package/dist/cjs/views/Matrix.native.js +2 -2
  241. package/dist/cjs/views/Matrix.native.js.map +1 -1
  242. package/dist/cjs/views/ReportBuilder.native.js +2 -2
  243. package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
  244. package/dist/cjs/views/ShortcutCard.native.js.map +1 -1
  245. package/dist/cjs/views/TreeView.native.js.map +1 -1
  246. package/dist/cjs/views/calendarMath.native.js.map +1 -1
  247. package/dist/cjs/views/ganttIntervals.native.js.map +1 -1
  248. package/dist/cjs/views/ganttMath.native.js.map +1 -1
  249. package/dist/cjs/views/index.native.js +1 -1
  250. package/dist/cjs/views/index.native.js.map +1 -1
  251. package/dist/cjs/views/kanbanDnd.native.js.map +1 -1
  252. package/dist/cjs/views/matrixMath.native.js.map +1 -1
  253. package/dist/cjs/views/sameNameScope.native.js.map +1 -1
  254. package/dist/cjs/views/treeViewDnd.native.js.map +1 -1
  255. package/dist/cjs/views/treeViewLayout.native.js.map +1 -1
  256. package/dist/cjs/views/treeViewMotion.native.js.map +1 -1
  257. package/dist/cjs/views/treeViewReveal.native.js.map +1 -1
  258. package/dist/cjs/views/usePageFlowLoadMore.native.js.map +1 -1
  259. package/dist/cjs/views/widgetChrome.native.js.map +1 -1
  260. package/dist/esm/code/CodeBlock/index.mjs +39 -32
  261. package/dist/esm/code/CodeBlock/index.mjs.map +1 -1
  262. package/dist/esm/code/CodeBlock/index.native.js +39 -32
  263. package/dist/esm/code/CodeBlock/index.native.js.map +1 -1
  264. package/dist/esm/layouts/EmptyState.mjs +9 -43
  265. package/dist/esm/layouts/EmptyState.mjs.map +1 -1
  266. package/dist/esm/layouts/EmptyState.native.js +9 -45
  267. package/dist/esm/layouts/EmptyState.native.js.map +1 -1
  268. package/dist/esm/layouts/barTitleSpan.mjs +27 -0
  269. package/dist/esm/layouts/barTitleSpan.mjs.map +1 -0
  270. package/dist/esm/layouts/barTitleSpan.native.js +48 -0
  271. package/dist/esm/layouts/barTitleSpan.native.js.map +1 -0
  272. package/dist/esm/layouts/page.mjs +132 -43
  273. package/dist/esm/layouts/page.mjs.map +1 -1
  274. package/dist/esm/layouts/page.native.js +145 -47
  275. package/dist/esm/layouts/page.native.js.map +1 -1
  276. package/dist/jsx/code/CodeBlock/index.mjs +39 -32
  277. package/dist/jsx/code/CodeBlock/index.mjs.map +1 -1
  278. package/dist/jsx/code/CodeBlock/index.native.js +38 -31
  279. package/dist/jsx/code/CodeBlock/index.native.js.map +1 -1
  280. package/dist/jsx/layouts/EmptyState.mjs +9 -43
  281. package/dist/jsx/layouts/EmptyState.mjs.map +1 -1
  282. package/dist/jsx/layouts/EmptyState.native.js +9 -45
  283. package/dist/jsx/layouts/EmptyState.native.js.map +1 -1
  284. package/dist/jsx/layouts/barTitleSpan.mjs +27 -0
  285. package/dist/jsx/layouts/barTitleSpan.mjs.map +1 -0
  286. package/dist/jsx/layouts/barTitleSpan.native.js +78 -0
  287. package/dist/jsx/layouts/barTitleSpan.native.js.map +1 -0
  288. package/dist/jsx/layouts/page.mjs +132 -43
  289. package/dist/jsx/layouts/page.mjs.map +1 -1
  290. package/dist/jsx/layouts/page.native.js +143 -45
  291. package/dist/jsx/layouts/page.native.js.map +1 -1
  292. package/package.json +9 -9
  293. package/src/code/CodeBlock/CodeBlock.copy.spec.tsx +13 -0
  294. package/src/code/CodeBlock/index.tsx +46 -30
  295. package/src/layouts/EmptyState.spec.tsx +2 -0
  296. package/src/layouts/EmptyState.tsx +6 -39
  297. package/src/layouts/PageHeader.stories.tsx +238 -38
  298. package/src/layouts/barTitleSpan.spec.ts +35 -0
  299. package/src/layouts/barTitleSpan.ts +44 -0
  300. package/src/layouts/glyphCentre.spec.tsx +218 -0
  301. package/src/layouts/navBar.spec.tsx +58 -2
  302. package/src/layouts/page.tsx +126 -34
  303. package/types/code/CodeBlock/index.d.ts.map +1 -1
  304. package/types/layouts/EmptyState.d.ts.map +1 -1
  305. package/types/layouts/barTitleSpan.d.ts +29 -0
  306. package/types/layouts/barTitleSpan.d.ts.map +1 -0
  307. package/types/layouts/page.d.ts +6 -1
  308. package/types/layouts/page.d.ts.map +1 -1
@@ -40,6 +40,7 @@ var import_theme = require("@multiplatform.one/theme");
40
40
  var import_forms = require("@multiplatform.one/forms");
41
41
  var import_react = require("@phosphor-icons/react");
42
42
  var import_react2 = require("react");
43
+ var import_barTitleSpan = require("./barTitleSpan.cjs");
43
44
  var import_tamagui = require("tamagui");
44
45
  var import_bottomChrome = require("../appShell/bottomChrome.cjs");
45
46
  var import_componentColors = require("../componentColors.cjs");
@@ -455,6 +456,94 @@ function PageSection({
455
456
  }) : children]
456
457
  });
457
458
  }
459
+ function useBarTitleSpan() {
460
+ const none = {
461
+ x: 0,
462
+ width: 0
463
+ };
464
+ const [box, setBox] = (0, import_react2.useState)({
465
+ row: 0,
466
+ leading: none,
467
+ trailing: none,
468
+ title: 0
469
+ });
470
+ const set = (key, value) => setBox(prev => JSON.stringify(prev[key]) === JSON.stringify(value) ? prev : {
471
+ ...prev,
472
+ [key]: value
473
+ });
474
+ const extent = event => {
475
+ const {
476
+ x,
477
+ width
478
+ } = event.nativeEvent.layout;
479
+ return {
480
+ x,
481
+ width
482
+ };
483
+ };
484
+ return {
485
+ span: (0, import_barTitleSpan.barTitleSpan)({
486
+ row: box.row,
487
+ title: box.title,
488
+ ...(0, import_barTitleSpan.sideExtents)(box.row, box.leading, box.trailing)
489
+ }),
490
+ measureRow: event => set("row", Math.floor(extent(event).width)),
491
+ measureLeading: event => set("leading", extent(event)),
492
+ measureTrailing: event => set("trailing", extent(event)),
493
+ measureTitle: event => set("title", Math.ceil(extent(event).width))
494
+ };
495
+ }
496
+ function BarTitle({
497
+ title,
498
+ span,
499
+ onTitleWidth,
500
+ shown = true,
501
+ ...rest
502
+ }) {
503
+ const {
504
+ knobProps
505
+ } = (0, import_theme.useResolvedKnobs)({
506
+ component: "ScreenToolbar"
507
+ });
508
+ const text = {
509
+ ...knobProps.body,
510
+ fontWeight: "600",
511
+ color: "$color12",
512
+ numberOfLines: 1
513
+ };
514
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
515
+ children: [shown ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
516
+ position: "absolute",
517
+ top: 0,
518
+ left: 0,
519
+ opacity: 0,
520
+ pointerEvents: "none",
521
+ "aria-hidden": true,
522
+ onLayout: onTitleWidth,
523
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.SizableText, {
524
+ ...text,
525
+ children: title
526
+ })
527
+ }) : null, /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
528
+ position: "absolute",
529
+ top: 0,
530
+ bottom: 0,
531
+ left: span.left,
532
+ right: span.right,
533
+ alignItems: "center",
534
+ justifyContent: "center",
535
+ pointerEvents: "none",
536
+ "aria-hidden": !shown,
537
+ "data-bar-title": "",
538
+ opacity: shown ? 1 : 0,
539
+ ...rest,
540
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.SizableText, {
541
+ ...text,
542
+ children: title
543
+ })
544
+ })]
545
+ });
546
+ }
458
547
  function ScreenToolbar(props) {
459
548
  const slot = (0, import_screenScroll.useTopBarSlot)();
460
549
  return slot ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(PinnedTopBar, {
@@ -467,6 +556,7 @@ function ScreenToolbar(props) {
467
556
  function InlineToolbar({
468
557
  leading,
469
558
  trailing,
559
+ title,
470
560
  children,
471
561
  ...rest
472
562
  }) {
@@ -475,6 +565,7 @@ function InlineToolbar({
475
565
  } = (0, import_theme.useResolvedKnobs)({
476
566
  component: "ScreenToolbar"
477
567
  });
568
+ const titleSpan = useBarTitleSpan();
478
569
  const insetToken = (0, import_pageHeadingScope.usePageChromeInset)();
479
570
  const bleed = insetToken ? {
480
571
  marginHorizontal: negateSpaceToken(insetToken)
@@ -486,8 +577,12 @@ function InlineToolbar({
486
577
  "data-testid": "screen-toolbar",
487
578
  justifyContent: "space-between",
488
579
  alignItems: "center",
489
- flexWrap: oneRow ? "nowrap" : "wrap",
580
+ flexWrap: oneRow || title ? "nowrap" : "wrap",
490
581
  minHeight: import_theme.MIN_PRESS_TARGET,
582
+ ...(title ? {
583
+ position: "relative",
584
+ onLayout: titleSpan.measureRow
585
+ } : null),
491
586
  ...bleed,
492
587
  ...(insetToken ? {
493
588
  paddingHorizontal: insetToken
@@ -500,6 +595,9 @@ function InlineToolbar({
500
595
  flexWrap: "wrap",
501
596
  flexShrink: oneRow ? 1e3 : 1,
502
597
  minWidth: 0,
598
+ ...(title ? {
599
+ onLayout: titleSpan.measureLeading
600
+ } : null),
503
601
  children: leading
504
602
  }), children, /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.IconButtonGroup, {
505
603
  ...knobProps.gap,
@@ -507,14 +605,22 @@ function InlineToolbar({
507
605
  flexShrink: 1,
508
606
  minWidth: 0,
509
607
  justifyContent: "flex-end",
608
+ ...(title ? {
609
+ onLayout: titleSpan.measureTrailing
610
+ } : null),
510
611
  children: trailing
511
- })]
612
+ }), title ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(BarTitle, {
613
+ title,
614
+ span: titleSpan.span,
615
+ onTitleWidth: titleSpan.measureTitle
616
+ }) : null]
512
617
  })
513
618
  });
514
619
  }
515
620
  function PinnedTopBar({
516
621
  leading,
517
622
  trailing,
623
+ title: inlineTitle,
518
624
  children,
519
625
  slot,
520
626
  ...rest
@@ -527,21 +633,11 @@ function PinnedTopBar({
527
633
  const {
528
634
  scrolled,
529
635
  collapsed,
530
- title
636
+ title: largeTitle
531
637
  } = (0, import_screenScroll.useScreenScroll)();
532
- const [sides, setSides] = (0, import_react2.useState)({
533
- leading: 0,
534
- trailing: 0
535
- });
536
- const measureSide = side => event => {
537
- const width = Math.ceil(event.nativeEvent.layout.width);
538
- setSides(prev => prev[side] === width ? prev : {
539
- ...prev,
540
- [side]: width
541
- });
542
- };
638
+ const titleSpan = useBarTitleSpan();
543
639
  const motion = (0, import_theme.transitionProps)(knobProps.motion.control);
544
- const clearance = Math.max(sides.leading, sides.trailing);
640
+ const title = inlineTitle ?? largeTitle;
545
641
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_theme.Surface, {
546
642
  bar: true,
547
643
  children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
@@ -564,6 +660,7 @@ function PinnedTopBar({
564
660
  alignItems: "center",
565
661
  flexWrap: "nowrap",
566
662
  position: "relative",
663
+ onLayout: titleSpan.measureRow,
567
664
  paddingHorizontal: slot.inset ?? knobProps.panelPadding.padding,
568
665
  ...knobProps.gap,
569
666
  ...rest,
@@ -572,7 +669,7 @@ function PinnedTopBar({
572
669
  alignItems: "center",
573
670
  flexShrink: 1e3,
574
671
  minWidth: 0,
575
- onLayout: measureSide("leading"),
672
+ onLayout: titleSpan.measureLeading,
576
673
  children: leading
577
674
  }), children, /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
578
675
  flexGrow: 1
@@ -581,28 +678,14 @@ function PinnedTopBar({
581
678
  flexShrink: 1,
582
679
  minWidth: 0,
583
680
  justifyContent: "flex-end",
584
- onLayout: measureSide("trailing"),
681
+ onLayout: titleSpan.measureTrailing,
585
682
  children: trailing
586
- }), title ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
587
- position: "absolute",
588
- top: 0,
589
- bottom: 0,
590
- left: clearance,
591
- right: clearance,
592
- alignItems: "center",
593
- justifyContent: "center",
594
- pointerEvents: "none",
595
- "aria-hidden": !collapsed,
596
- "data-bar-title": "",
597
- opacity: collapsed ? 1 : 0,
598
- ...motion,
599
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.SizableText, {
600
- ...knobProps.body,
601
- fontWeight: "600",
602
- color: "$color12",
603
- numberOfLines: 1,
604
- children: title
605
- })
683
+ }), title ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(BarTitle, {
684
+ title,
685
+ span: titleSpan.span,
686
+ onTitleWidth: titleSpan.measureTitle,
687
+ shown: Boolean(inlineTitle) || collapsed,
688
+ ...motion
606
689
  }) : null]
607
690
  })
608
691
  })
@@ -621,16 +704,22 @@ function useTopBarControl() {
621
704
  };
622
705
  }
623
706
  const CARET_OPTICAL_INSET = 72 / 256;
624
- function backCaret(Caret) {
707
+ const CARET_INK_OFFSET = 8 / 256;
708
+ function backCaret(Caret, inkSign) {
625
709
  return function BackCaret({
626
710
  size = 22,
627
711
  color,
628
712
  weight,
629
713
  ...stroke
630
714
  }) {
715
+ const plated = (0, import_forms.useGlyphOnPlate)();
631
716
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
632
717
  "data-back-caret": "",
633
- marginInlineStart: -Math.round(size * CARET_OPTICAL_INSET),
718
+ ...(plated ? {
719
+ x: inkSign * size * CARET_INK_OFFSET
720
+ } : {
721
+ marginInlineStart: -Math.round(size * CARET_OPTICAL_INSET)
722
+ }),
634
723
  children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Caret, {
635
724
  size,
636
725
  color,
@@ -640,8 +729,8 @@ function backCaret(Caret) {
640
729
  });
641
730
  };
642
731
  }
643
- const BackCaretLeft = backCaret(import_react.CaretLeftIcon);
644
- const BackCaretRight = backCaret(import_react.CaretRightIcon);
732
+ const BackCaretLeft = backCaret(import_react.CaretLeftIcon, 1);
733
+ const BackCaretRight = backCaret(import_react.CaretRightIcon, -1);
645
734
  function PageBackButton({
646
735
  label,
647
736
  ...props
@@ -43,13 +43,14 @@ var import_theme = require("@multiplatform.one/theme");
43
43
  var import_forms = require("@multiplatform.one/forms");
44
44
  var import_react = require("@phosphor-icons/react");
45
45
  var import_react2 = require("react");
46
+ var import_barTitleSpan = require("./barTitleSpan.native.js");
46
47
  var import_tamagui = require("tamagui");
47
48
  var import_bottomChrome = require("../appShell/bottomChrome.native.js");
48
49
  var import_componentColors = require("../componentColors.native.js");
49
50
  var import_useDirection = require("../hooks/useDirection.native.js");
50
51
  var import_i18n = require("../shared/i18n.native.js");
51
- var import_ScrollView = require("../ScrollView");
52
- var import_KeyboardAvoidingWrapper = require("./KeyboardAvoidingWrapper");
52
+ var import_ScrollView = require("../ScrollView/index.native.js");
53
+ var import_KeyboardAvoidingWrapper = require("./KeyboardAvoidingWrapper/index.native.js");
53
54
  var import_bottomAccessory = require("./bottomAccessory.native.js");
54
55
  var import_screenScroll = require("./screenScroll.native.js");
55
56
  var import_pageHeadingScope = require("./pageHeadingScope.native.js");
@@ -476,6 +477,107 @@ function PageSection(param) {
476
477
  }) : children]
477
478
  });
478
479
  }
480
+ function useBarTitleSpan() {
481
+ var none = {
482
+ x: 0,
483
+ width: 0
484
+ };
485
+ var [box, setBox] = (0, import_react2.useState)({
486
+ row: 0,
487
+ leading: none,
488
+ trailing: none,
489
+ title: 0
490
+ });
491
+ var set = function set2(key, value) {
492
+ return setBox(function (prev) {
493
+ return JSON.stringify(prev[key]) === JSON.stringify(value) ? prev : {
494
+ ...prev,
495
+ [key]: value
496
+ };
497
+ });
498
+ };
499
+ var extent = function extent2(event) {
500
+ var {
501
+ x,
502
+ width
503
+ } = event.nativeEvent.layout;
504
+ return {
505
+ x,
506
+ width
507
+ };
508
+ };
509
+ return {
510
+ span: (0, import_barTitleSpan.barTitleSpan)({
511
+ row: box.row,
512
+ title: box.title,
513
+ ...(0, import_barTitleSpan.sideExtents)(box.row, box.leading, box.trailing)
514
+ }),
515
+ measureRow: function measureRow(event) {
516
+ return set("row", Math.floor(extent(event).width));
517
+ },
518
+ measureLeading: function measureLeading(event) {
519
+ return set("leading", extent(event));
520
+ },
521
+ measureTrailing: function measureTrailing(event) {
522
+ return set("trailing", extent(event));
523
+ },
524
+ measureTitle: function measureTitle(event) {
525
+ return set("title", Math.ceil(extent(event).width));
526
+ }
527
+ };
528
+ }
529
+ function BarTitle(param) {
530
+ var {
531
+ title,
532
+ span,
533
+ onTitleWidth,
534
+ shown = true,
535
+ ...rest
536
+ } = param;
537
+ var {
538
+ knobProps
539
+ } = (0, import_theme.useResolvedKnobs)({
540
+ component: "ScreenToolbar"
541
+ });
542
+ var text = {
543
+ ...knobProps.body,
544
+ fontWeight: "600",
545
+ color: "$color12",
546
+ numberOfLines: 1
547
+ };
548
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
549
+ children: [shown ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
550
+ position: "absolute",
551
+ top: 0,
552
+ left: 0,
553
+ opacity: 0,
554
+ pointerEvents: "none",
555
+ "aria-hidden": true,
556
+ onLayout: onTitleWidth,
557
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.SizableText, {
558
+ ...text,
559
+ children: title
560
+ })
561
+ }) : null, /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
562
+ position: "absolute",
563
+ top: 0,
564
+ bottom: 0,
565
+ left: span.left,
566
+ right: span.right,
567
+ alignItems: "center",
568
+ justifyContent: "center",
569
+ pointerEvents: "none",
570
+ "aria-hidden": !shown,
571
+ "data-bar-title": "",
572
+ opacity: shown ? 1 : 0,
573
+ ...rest,
574
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.SizableText, {
575
+ ...text,
576
+ children: title
577
+ })
578
+ })]
579
+ });
580
+ }
479
581
  function ScreenToolbar(props) {
480
582
  var slot = (0, import_screenScroll.useTopBarSlot)();
481
583
  return slot ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(PinnedTopBar, {
@@ -489,6 +591,7 @@ function InlineToolbar(param) {
489
591
  var {
490
592
  leading,
491
593
  trailing,
594
+ title,
492
595
  children,
493
596
  ...rest
494
597
  } = param;
@@ -497,6 +600,7 @@ function InlineToolbar(param) {
497
600
  } = (0, import_theme.useResolvedKnobs)({
498
601
  component: "ScreenToolbar"
499
602
  });
603
+ var titleSpan = useBarTitleSpan();
500
604
  var insetToken = (0, import_pageHeadingScope.usePageChromeInset)();
501
605
  var bleed = insetToken ? {
502
606
  marginHorizontal: negateSpaceToken(insetToken)
@@ -508,8 +612,12 @@ function InlineToolbar(param) {
508
612
  "data-testid": "screen-toolbar",
509
613
  justifyContent: "space-between",
510
614
  alignItems: "center",
511
- flexWrap: oneRow ? "nowrap" : "wrap",
615
+ flexWrap: oneRow || title ? "nowrap" : "wrap",
512
616
  minHeight: import_theme.MIN_PRESS_TARGET,
617
+ ...(title ? {
618
+ position: "relative",
619
+ onLayout: titleSpan.measureRow
620
+ } : null),
513
621
  ...bleed,
514
622
  ...(insetToken ? {
515
623
  paddingHorizontal: insetToken
@@ -523,6 +631,9 @@ function InlineToolbar(param) {
523
631
  // Shrink weight, not a size: the back label gives way before the actions wrap.
524
632
  flexShrink: oneRow ? 1e3 : 1,
525
633
  minWidth: 0,
634
+ ...(title ? {
635
+ onLayout: titleSpan.measureLeading
636
+ } : null),
526
637
  children: leading
527
638
  }), children, /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.IconButtonGroup, {
528
639
  ...knobProps.gap,
@@ -530,8 +641,15 @@ function InlineToolbar(param) {
530
641
  flexShrink: 1,
531
642
  minWidth: 0,
532
643
  justifyContent: "flex-end",
644
+ ...(title ? {
645
+ onLayout: titleSpan.measureTrailing
646
+ } : null),
533
647
  children: trailing
534
- })]
648
+ }), title ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(BarTitle, {
649
+ title,
650
+ span: titleSpan.span,
651
+ onTitleWidth: titleSpan.measureTitle
652
+ }) : null]
535
653
  })
536
654
  });
537
655
  }
@@ -539,6 +657,7 @@ function PinnedTopBar(param) {
539
657
  var {
540
658
  leading,
541
659
  trailing,
660
+ title: inlineTitle,
542
661
  children,
543
662
  slot,
544
663
  ...rest
@@ -552,25 +671,11 @@ function PinnedTopBar(param) {
552
671
  var {
553
672
  scrolled,
554
673
  collapsed,
555
- title
674
+ title: largeTitle
556
675
  } = (0, import_screenScroll.useScreenScroll)();
557
- var [sides, setSides] = (0, import_react2.useState)({
558
- leading: 0,
559
- trailing: 0
560
- });
561
- var measureSide = function measureSide2(side) {
562
- return function (event) {
563
- var width = Math.ceil(event.nativeEvent.layout.width);
564
- setSides(function (prev) {
565
- return prev[side] === width ? prev : {
566
- ...prev,
567
- [side]: width
568
- };
569
- });
570
- };
571
- };
676
+ var titleSpan = useBarTitleSpan();
572
677
  var motion = (0, import_theme.transitionProps)(knobProps.motion.control);
573
- var clearance = Math.max(sides.leading, sides.trailing);
678
+ var title = inlineTitle !== null && inlineTitle !== void 0 ? inlineTitle : largeTitle;
574
679
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_theme.Surface, {
575
680
  bar: true,
576
681
  children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
@@ -594,6 +699,7 @@ function PinnedTopBar(param) {
594
699
  flexWrap: "nowrap",
595
700
  // The collapsed title is placed against this row, not the page.
596
701
  position: "relative",
702
+ onLayout: titleSpan.measureRow,
597
703
  paddingHorizontal: (_slot_inset = slot.inset) !== null && _slot_inset !== void 0 ? _slot_inset : knobProps.panelPadding.padding,
598
704
  ...knobProps.gap,
599
705
  ...rest,
@@ -602,7 +708,7 @@ function PinnedTopBar(param) {
602
708
  alignItems: "center",
603
709
  flexShrink: 1e3,
604
710
  minWidth: 0,
605
- onLayout: measureSide("leading"),
711
+ onLayout: titleSpan.measureLeading,
606
712
  children: leading
607
713
  }), children,
608
714
  /* Pushes the actions to the trailing edge (LC-102: no space-between)
@@ -615,28 +721,14 @@ function PinnedTopBar(param) {
615
721
  flexShrink: 1,
616
722
  minWidth: 0,
617
723
  justifyContent: "flex-end",
618
- onLayout: measureSide("trailing"),
724
+ onLayout: titleSpan.measureTrailing,
619
725
  children: trailing
620
- }), title ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
621
- position: "absolute",
622
- top: 0,
623
- bottom: 0,
624
- left: clearance,
625
- right: clearance,
626
- alignItems: "center",
627
- justifyContent: "center",
628
- pointerEvents: "none",
629
- "aria-hidden": !collapsed,
630
- "data-bar-title": "",
631
- opacity: collapsed ? 1 : 0,
632
- ...motion,
633
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.SizableText, {
634
- ...knobProps.body,
635
- fontWeight: "600",
636
- color: "$color12",
637
- numberOfLines: 1,
638
- children: title
639
- })
726
+ }), title ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(BarTitle, {
727
+ title,
728
+ span: titleSpan.span,
729
+ onTitleWidth: titleSpan.measureTitle,
730
+ shown: Boolean(inlineTitle) || collapsed,
731
+ ...motion
640
732
  }) : null]
641
733
  })
642
734
  })
@@ -655,7 +747,8 @@ function useTopBarControl() {
655
747
  };
656
748
  }
657
749
  var CARET_OPTICAL_INSET = 72 / 256;
658
- function backCaret(Caret) {
750
+ var CARET_INK_OFFSET = 8 / 256;
751
+ function backCaret(Caret, inkSign) {
659
752
  return function BackCaret(param) {
660
753
  var {
661
754
  size = 22,
@@ -663,9 +756,14 @@ function backCaret(Caret) {
663
756
  weight,
664
757
  ...stroke
665
758
  } = param;
759
+ var plated = (0, import_forms.useGlyphOnPlate)();
666
760
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
667
761
  "data-back-caret": "",
668
- marginInlineStart: -Math.round(size * CARET_OPTICAL_INSET),
762
+ ...(plated ? {
763
+ x: inkSign * size * CARET_INK_OFFSET
764
+ } : {
765
+ marginInlineStart: -Math.round(size * CARET_OPTICAL_INSET)
766
+ }),
669
767
  children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Caret, {
670
768
  size,
671
769
  color,
@@ -675,8 +773,8 @@ function backCaret(Caret) {
675
773
  });
676
774
  };
677
775
  }
678
- var BackCaretLeft = backCaret(import_react.CaretLeftIcon);
679
- var BackCaretRight = backCaret(import_react.CaretRightIcon);
776
+ var BackCaretLeft = backCaret(import_react.CaretLeftIcon, 1);
777
+ var BackCaretRight = backCaret(import_react.CaretRightIcon, -1);
680
778
  function PageBackButton(param) {
681
779
  var {
682
780
  label,