@multiplatform.one/components 7.79.0 → 7.80.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 (268) hide show
  1. package/dist/cjs/appShell/AppShell.cjs +432 -0
  2. package/dist/cjs/appShell/AppShell.native.js +499 -0
  3. package/dist/cjs/appShell/AppShell.native.js.map +1 -0
  4. package/dist/cjs/appShell/index.cjs +1 -0
  5. package/dist/cjs/appShell/index.native.js +1 -0
  6. package/dist/cjs/appShell/index.native.js.map +1 -1
  7. package/dist/cjs/layouts/page.cjs +3 -0
  8. package/dist/cjs/layouts/page.native.js +3 -0
  9. package/dist/cjs/layouts/page.native.js.map +1 -1
  10. package/dist/cjs/layouts/screenScroll.cjs +55 -0
  11. package/dist/cjs/layouts/screenScroll.native.js +59 -0
  12. package/dist/cjs/layouts/screenScroll.native.js.map +1 -1
  13. package/dist/cjs/layouts/sidebar.cjs +46 -9
  14. package/dist/cjs/layouts/sidebar.native.js +49 -9
  15. package/dist/cjs/layouts/sidebar.native.js.map +1 -1
  16. package/dist/esm/Accordion/index.native.js.map +1 -1
  17. package/dist/esm/AnimateHeight/index.native.js.map +1 -1
  18. package/dist/esm/Avatar/getInitials.native.js.map +1 -1
  19. package/dist/esm/Avatar/index.native.js.map +1 -1
  20. package/dist/esm/Badge/index.native.js.map +1 -1
  21. package/dist/esm/Button.native.js.map +1 -1
  22. package/dist/esm/Carousel/index.native.js.map +1 -1
  23. package/dist/esm/Chip/index.native.js.map +1 -1
  24. package/dist/esm/Collapsible.native.js.map +1 -1
  25. package/dist/esm/ContextMenu/index.native.js.map +1 -1
  26. package/dist/esm/CopyField/CopyMenuButton.native.js.map +1 -1
  27. package/dist/esm/CopyField/index.native.js.map +1 -1
  28. package/dist/esm/Dialog.native.js.map +1 -1
  29. package/dist/esm/Diff/diff.native.js.map +1 -1
  30. package/dist/esm/Diff/index.native.js.map +1 -1
  31. package/dist/esm/DotIndicator/index.native.js.map +1 -1
  32. package/dist/esm/DropdownMenu/index.native.js.map +1 -1
  33. package/dist/esm/DropdownMenu/menuSettle.native.js.map +1 -1
  34. package/dist/esm/ElapsedProgress/index.native.js.map +1 -1
  35. package/dist/esm/ErrorBoundary/index.native.js.map +1 -1
  36. package/dist/esm/Heading.native.js.map +1 -1
  37. package/dist/esm/Kbd/index.native.js.map +1 -1
  38. package/dist/esm/Kbd/keys.native.js.map +1 -1
  39. package/dist/esm/Lightbox/MediaControl.native.js.map +1 -1
  40. package/dist/esm/Lightbox/index.gnome.native.js.map +1 -1
  41. package/dist/esm/Lightbox/shared.native.js.map +1 -1
  42. package/dist/esm/Lightbox/useLightbox.native.js.map +1 -1
  43. package/dist/esm/MachineLiteral/index.native.js.map +1 -1
  44. package/dist/esm/Material/index.native.js.map +1 -1
  45. package/dist/esm/Meter/index.native.js.map +1 -1
  46. package/dist/esm/Meter/meter.native.js.map +1 -1
  47. package/dist/esm/OverflowRow/index.native.js.map +1 -1
  48. package/dist/esm/Pagination.native.js.map +1 -1
  49. package/dist/esm/Popover.native.js.map +1 -1
  50. package/dist/esm/ProgressSteps/index.native.js.map +1 -1
  51. package/dist/esm/Quote/index.native.js.map +1 -1
  52. package/dist/esm/SchemeToggle/index.native.js.map +1 -1
  53. package/dist/esm/ScrollView/revealFocusedField.native.js.map +1 -1
  54. package/dist/esm/Separator/index.native.js.map +1 -1
  55. package/dist/esm/Sheet.native.js.map +1 -1
  56. package/dist/esm/SheetModal/SheetHeader.native.js.map +1 -1
  57. package/dist/esm/SheetModal/SheetNavigation.native.js.map +1 -1
  58. package/dist/esm/SheetModal/detents.native.js.map +1 -1
  59. package/dist/esm/SheetModal/useSheetFrameFocus.native.js.map +1 -1
  60. package/dist/esm/Skeleton/index.native.js.map +1 -1
  61. package/dist/esm/SkipLink/index.native.js.map +1 -1
  62. package/dist/esm/SortableList/SortableHandle.native.js.map +1 -1
  63. package/dist/esm/SortableList/index.native.js.map +1 -1
  64. package/dist/esm/SortableList/useSortableRows.native.js.map +1 -1
  65. package/dist/esm/SortableList/useUserOrder.native.js.map +1 -1
  66. package/dist/esm/Tabs/index.native.js.map +1 -1
  67. package/dist/esm/Text.native.js.map +1 -1
  68. package/dist/esm/ThemePresetPicker/index.native.js.map +1 -1
  69. package/dist/esm/Toast/index.native.js.map +1 -1
  70. package/dist/esm/Toast/store.native.js.map +1 -1
  71. package/dist/esm/Tooltip/nativePress.native.js.map +1 -1
  72. package/dist/esm/Tooltip/tooltipShared.native.js.map +1 -1
  73. package/dist/esm/TreeSelect/index.native.js.map +1 -1
  74. package/dist/esm/TreeSelect/treeSelectModel.native.js.map +1 -1
  75. package/dist/esm/Video/PlayerChrome.native.js.map +1 -1
  76. package/dist/esm/Video/VideoFrame.native.js.map +1 -1
  77. package/dist/esm/Video/types.native.js.map +1 -1
  78. package/dist/esm/Wheel/index.native.js.map +1 -1
  79. package/dist/esm/Wizard/index.native.js.map +1 -1
  80. package/dist/esm/actions/ActionBar.native.js.map +1 -1
  81. package/dist/esm/actions/DangerSection.native.js.map +1 -1
  82. package/dist/esm/actions/DestructiveAction.native.js.map +1 -1
  83. package/dist/esm/actions/HeaderActions.native.js.map +1 -1
  84. package/dist/esm/actions/StandardAction.native.js.map +1 -1
  85. package/dist/esm/actions/devWarn.native.js.map +1 -1
  86. package/dist/esm/actions/index.native.js.map +1 -1
  87. package/dist/esm/actions/severity.native.js.map +1 -1
  88. package/dist/esm/appShell/AppShell.mjs +406 -0
  89. package/dist/esm/appShell/AppShell.mjs.map +1 -0
  90. package/dist/esm/appShell/AppShell.native.js +470 -0
  91. package/dist/esm/appShell/AppShell.native.js.map +1 -0
  92. package/dist/esm/appShell/Dock.native.js.map +1 -1
  93. package/dist/esm/appShell/MpoTabHost.native.js.map +1 -1
  94. package/dist/esm/appShell/ScopeMenu.native.js.map +1 -1
  95. package/dist/esm/appShell/SettingsSplit.native.js.map +1 -1
  96. package/dist/esm/appShell/Springboard.native.js.map +1 -1
  97. package/dist/esm/appShell/SystemBar.native.js.map +1 -1
  98. package/dist/esm/appShell/TabBar.native.js.map +1 -1
  99. package/dist/esm/appShell/appTile.native.js.map +1 -1
  100. package/dist/esm/appShell/bottomChrome.native.js.map +1 -1
  101. package/dist/esm/appShell/index.mjs +1 -0
  102. package/dist/esm/appShell/index.mjs.map +1 -1
  103. package/dist/esm/appShell/index.native.js +1 -0
  104. package/dist/esm/appShell/index.native.js.map +1 -1
  105. package/dist/esm/charts/Axis.native.js.map +1 -1
  106. package/dist/esm/charts/BarChart.native.js.map +1 -1
  107. package/dist/esm/charts/ChartDataView.native.js.map +1 -1
  108. package/dist/esm/charts/ChartSurface.native.js.map +1 -1
  109. package/dist/esm/charts/LineChart.native.js.map +1 -1
  110. package/dist/esm/charts/PieChart.native.js.map +1 -1
  111. package/dist/esm/charts/Sparkline.native.js.map +1 -1
  112. package/dist/esm/charts/accessibility.native.js.map +1 -1
  113. package/dist/esm/charts/chartHeight.native.js.map +1 -1
  114. package/dist/esm/charts/composeChart.native.js.map +1 -1
  115. package/dist/esm/charts/index.native.js.map +1 -1
  116. package/dist/esm/charts/math.native.js.map +1 -1
  117. package/dist/esm/charts/series.native.js.map +1 -1
  118. package/dist/esm/charts/svg.native.js.map +1 -1
  119. package/dist/esm/charts/types.native.js.map +1 -1
  120. package/dist/esm/charts/useChartTheme.native.js.map +1 -1
  121. package/dist/esm/code/Code/index.native.js.map +1 -1
  122. package/dist/esm/code/CodeBlock/index.native.js.map +1 -1
  123. package/dist/esm/code/HighlightedCode/index.native.js.map +1 -1
  124. package/dist/esm/code/Highlighter/houseSyntaxTheme.native.js.map +1 -1
  125. package/dist/esm/code/Highlighter/index.native.js.map +1 -1
  126. package/dist/esm/code/Highlighter/namedGroupMatchAll.native.js.map +1 -1
  127. package/dist/esm/code/Pre/index.native.js.map +1 -1
  128. package/dist/esm/code/index.native.js.map +1 -1
  129. package/dist/esm/componentColors.native.js.map +1 -1
  130. package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
  131. package/dist/esm/feedback/NotifyHost.native.js.map +1 -1
  132. package/dist/esm/feedback/copy.native.js.map +1 -1
  133. package/dist/esm/feedback/index.native.js.map +1 -1
  134. package/dist/esm/feedback/notify.native.js.map +1 -1
  135. package/dist/esm/feedback/route.native.js.map +1 -1
  136. package/dist/esm/feedback/store.native.js.map +1 -1
  137. package/dist/esm/formLayouts/FormLayouts.native.js.map +1 -1
  138. package/dist/esm/formLayouts/PreferencePanel.native.js.map +1 -1
  139. package/dist/esm/formLayouts/index.native.js.map +1 -1
  140. package/dist/esm/hooks/index.native.js.map +1 -1
  141. package/dist/esm/hooks/useClipboard.native.js.map +1 -1
  142. package/dist/esm/hooks/useDocumentTitle.native.js.map +1 -1
  143. package/dist/esm/hooks/useHoldCue.native.js.map +1 -1
  144. package/dist/esm/icons/CheckRegular.native.js.map +1 -1
  145. package/dist/esm/icons/MinusRegular.native.js.map +1 -1
  146. package/dist/esm/icons/index.native.js.map +1 -1
  147. package/dist/esm/icons/lucide.native.js.map +1 -1
  148. package/dist/esm/icons/themed.native.js.map +1 -1
  149. package/dist/esm/images/Image/ImageFrame.native.js.map +1 -1
  150. package/dist/esm/images/Image/framing.native.js.map +1 -1
  151. package/dist/esm/images/Image/mediaRadius.native.js.map +1 -1
  152. package/dist/esm/images/Image/shared.native.js.map +1 -1
  153. package/dist/esm/images/Image/types.native.js.map +1 -1
  154. package/dist/esm/images/index.native.js.map +1 -1
  155. package/dist/esm/index.native.js.map +1 -1
  156. package/dist/esm/knobImmuneExports.native.js.map +1 -1
  157. package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -1
  158. package/dist/esm/layouts/Debug/index.native.js.map +1 -1
  159. package/dist/esm/layouts/EmptyState.native.js.map +1 -1
  160. package/dist/esm/layouts/IdentityPlate.native.js.map +1 -1
  161. package/dist/esm/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
  162. package/dist/esm/layouts/PageTemplates.native.js.map +1 -1
  163. package/dist/esm/layouts/PaneScaffold.native.js.map +1 -1
  164. package/dist/esm/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
  165. package/dist/esm/layouts/StatusDot.native.js.map +1 -1
  166. package/dist/esm/layouts/StatusGlyphStrip.native.js.map +1 -1
  167. package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
  168. package/dist/esm/layouts/attachments.native.js.map +1 -1
  169. package/dist/esm/layouts/bottomAccessory.native.js.map +1 -1
  170. package/dist/esm/layouts/breadcrumbs.native.js.map +1 -1
  171. package/dist/esm/layouts/index.native.js.map +1 -1
  172. package/dist/esm/layouts/page.mjs +4 -2
  173. package/dist/esm/layouts/page.mjs.map +1 -1
  174. package/dist/esm/layouts/page.native.js +4 -2
  175. package/dist/esm/layouts/page.native.js.map +1 -1
  176. package/dist/esm/layouts/pageHeadingScope.native.js.map +1 -1
  177. package/dist/esm/layouts/screenScroll.mjs +53 -1
  178. package/dist/esm/layouts/screenScroll.mjs.map +1 -1
  179. package/dist/esm/layouts/screenScroll.native.js +57 -1
  180. package/dist/esm/layouts/screenScroll.native.js.map +1 -1
  181. package/dist/esm/layouts/shellSidebarSlot.native.js.map +1 -1
  182. package/dist/esm/layouts/sidebar.mjs +45 -11
  183. package/dist/esm/layouts/sidebar.mjs.map +1 -1
  184. package/dist/esm/layouts/sidebar.native.js +48 -11
  185. package/dist/esm/layouts/sidebar.native.js.map +1 -1
  186. package/dist/esm/layouts/tags.native.js.map +1 -1
  187. package/dist/esm/layouts/timeline.native.js.map +1 -1
  188. package/dist/esm/layouts/toolbar.native.js.map +1 -1
  189. package/dist/esm/shared/actionScan.native.js.map +1 -1
  190. package/dist/esm/shared/i18n.native.js.map +1 -1
  191. package/dist/esm/shared/restoreRetries.native.js.map +1 -1
  192. package/dist/esm/shared/t.native.js.map +1 -1
  193. package/dist/esm/shared/textRidesText.native.js.map +1 -1
  194. package/dist/esm/shared/useReturnFocusOnClose.native.js.map +1 -1
  195. package/dist/esm/surfaces.native.js.map +1 -1
  196. package/dist/esm/tamagui.native.js.map +1 -1
  197. package/dist/esm/testSetup.native.js.map +1 -1
  198. package/dist/esm/utils/setTinted.native.js.map +1 -1
  199. package/dist/esm/utils/unwrapText.native.js.map +1 -1
  200. package/dist/esm/views/Calendar.native.js.map +1 -1
  201. package/dist/esm/views/Dashboard.native.js.map +1 -1
  202. package/dist/esm/views/Gantt.native.js.map +1 -1
  203. package/dist/esm/views/GanttDateGrip.native.js.map +1 -1
  204. package/dist/esm/views/ImageGrid.native.js.map +1 -1
  205. package/dist/esm/views/List.native.js.map +1 -1
  206. package/dist/esm/views/ListGroup.native.js.map +1 -1
  207. package/dist/esm/views/ListRow.native.js.map +1 -1
  208. package/dist/esm/views/Matrix.native.js.map +1 -1
  209. package/dist/esm/views/ReportBuilder.native.js.map +1 -1
  210. package/dist/esm/views/ShortcutCard.native.js.map +1 -1
  211. package/dist/esm/views/TreeView.native.js.map +1 -1
  212. package/dist/esm/views/calendarMath.native.js.map +1 -1
  213. package/dist/esm/views/ganttIntervals.native.js.map +1 -1
  214. package/dist/esm/views/ganttMath.native.js.map +1 -1
  215. package/dist/esm/views/index.native.js.map +1 -1
  216. package/dist/esm/views/kanbanDnd.native.js.map +1 -1
  217. package/dist/esm/views/matrixMath.native.js.map +1 -1
  218. package/dist/esm/views/sameNameScope.native.js.map +1 -1
  219. package/dist/esm/views/treeViewDnd.native.js.map +1 -1
  220. package/dist/esm/views/treeViewLayout.native.js.map +1 -1
  221. package/dist/esm/views/treeViewMotion.native.js.map +1 -1
  222. package/dist/esm/views/treeViewReveal.native.js.map +1 -1
  223. package/dist/esm/views/usePageFlowLoadMore.native.js.map +1 -1
  224. package/dist/esm/views/widgetChrome.native.js.map +1 -1
  225. package/dist/jsx/appShell/AppShell.mjs +406 -0
  226. package/dist/jsx/appShell/AppShell.mjs.map +1 -0
  227. package/dist/jsx/appShell/AppShell.native.js +499 -0
  228. package/dist/jsx/appShell/AppShell.native.js.map +1 -0
  229. package/dist/jsx/appShell/index.mjs +1 -0
  230. package/dist/jsx/appShell/index.mjs.map +1 -1
  231. package/dist/jsx/appShell/index.native.js +1 -0
  232. package/dist/jsx/appShell/index.native.js.map +1 -1
  233. package/dist/jsx/feedback/NotifyHost.native.js +1 -1
  234. package/dist/jsx/formLayouts/PreferencePanel.native.js +1 -1
  235. package/dist/jsx/index.native.js +1 -1
  236. package/dist/jsx/layouts/AsyncBoundary.native.js +1 -1
  237. package/dist/jsx/layouts/AsyncBoundary.native.js.map +1 -1
  238. package/dist/jsx/layouts/page.mjs +4 -2
  239. package/dist/jsx/layouts/page.mjs.map +1 -1
  240. package/dist/jsx/layouts/page.native.js +3 -0
  241. package/dist/jsx/layouts/page.native.js.map +1 -1
  242. package/dist/jsx/layouts/screenScroll.mjs +53 -1
  243. package/dist/jsx/layouts/screenScroll.mjs.map +1 -1
  244. package/dist/jsx/layouts/screenScroll.native.js +59 -0
  245. package/dist/jsx/layouts/screenScroll.native.js.map +1 -1
  246. package/dist/jsx/layouts/sidebar.mjs +45 -11
  247. package/dist/jsx/layouts/sidebar.mjs.map +1 -1
  248. package/dist/jsx/layouts/sidebar.native.js +49 -9
  249. package/dist/jsx/layouts/sidebar.native.js.map +1 -1
  250. package/package.json +9 -9
  251. package/src/appShell/AppShell.spec.tsx +259 -0
  252. package/src/appShell/AppShell.stories.tsx +112 -0
  253. package/src/appShell/AppShell.tsx +526 -0
  254. package/src/appShell/index.ts +1 -0
  255. package/src/layouts/Sidebar.spec.tsx +31 -0
  256. package/src/layouts/page.tsx +8 -0
  257. package/src/layouts/screenScroll.tsx +71 -0
  258. package/src/layouts/sidebar.tsx +83 -5
  259. package/types/appShell/AppShell.d.ts +47 -0
  260. package/types/appShell/AppShell.d.ts.map +1 -0
  261. package/types/appShell/index.d.ts +1 -0
  262. package/types/appShell/index.d.ts.map +1 -1
  263. package/types/layouts/page.d.ts +5 -0
  264. package/types/layouts/page.d.ts.map +1 -1
  265. package/types/layouts/screenScroll.d.ts +24 -0
  266. package/types/layouts/screenScroll.d.ts.map +1 -1
  267. package/types/layouts/sidebar.d.ts +31 -1
  268. package/types/layouts/sidebar.d.ts.map +1 -1
@@ -0,0 +1,406 @@
1
+ import { zIndex } from "@multiplatform.one/forms";
2
+ import { isWeb } from "@multiplatform.one/platform";
3
+ import { MIN_PRESS_TARGET, Surface, hairline, transitionProps, useLayoutSizeClass, useResolvedKnobs } from "@multiplatform.one/theme";
4
+ import { ListIcon } from "@phosphor-icons/react";
5
+ import { createElement, useEffect, useMemo, useState } from "react";
6
+ import { SizableText, XStack, YStack } from "tamagui";
7
+ import { componentColors } from "../componentColors.mjs";
8
+ import { DropdownMenu } from "../DropdownMenu/index.mjs";
9
+ import { PageBackButton, PageBarButton, READABLE_MAX_WIDTH } from "../layouts/page.mjs";
10
+ import { ShellScrollReportScope, useShellScrollReports } from "../layouts/screenScroll.mjs";
11
+ import { ShellSidebarSlotProvider, useShellSidebarSlotState } from "../layouts/shellSidebarSlot.mjs";
12
+ import { BottomAccessory } from "../layouts/bottomAccessory.mjs";
13
+ import { Sidebar } from "../layouts/sidebar.mjs";
14
+ import { useTranslation } from "../shared/i18n.mjs";
15
+ import { TabHost } from "./TabHost.mjs";
16
+ import { useBottomChromeInset, useFloatingBarMounted } from "./bottomChrome.mjs";
17
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
18
+ function underKey(path, key) {
19
+ if (key === "/") return path === "/";
20
+ return path === key || path.startsWith(`${key}/`);
21
+ }
22
+ function appShellRoute(destinations, path) {
23
+ const normal = path.length > 1 ? path.replace(/\/+$/, "") : path;
24
+ let destination;
25
+ for (const candidate of destinations) {
26
+ if (candidate.onPress || !underKey(normal, candidate.key)) continue;
27
+ if (!destination || candidate.key.length > destination.key.length) destination = candidate;
28
+ }
29
+ return {
30
+ destination,
31
+ pushed: Boolean(destination && normal !== destination.key)
32
+ };
33
+ }
34
+ function useDocumentScrolled(enabled) {
35
+ const [scrolled, setScrolled] = useState(false);
36
+ useEffect(() => {
37
+ if (!enabled || typeof document === "undefined") return;
38
+ const sync = () => setScrolled(window.scrollY > 1);
39
+ sync();
40
+ window.addEventListener("scroll", sync, {
41
+ passive: true
42
+ });
43
+ return () => window.removeEventListener("scroll", sync);
44
+ }, [enabled]);
45
+ return scrolled;
46
+ }
47
+ const sticky = edge => isWeb ? {
48
+ position: "sticky",
49
+ [edge]: 0,
50
+ zIndex: zIndex.stickyHeader
51
+ } : null;
52
+ function HomeControl({
53
+ title,
54
+ onPress,
55
+ children
56
+ }) {
57
+ return /* @__PURE__ */jsx(XStack, {
58
+ role: "link",
59
+ "aria-label": title,
60
+ alignItems: "center",
61
+ minHeight: MIN_PRESS_TARGET,
62
+ flexShrink: 1,
63
+ minWidth: 0,
64
+ gap: "$2",
65
+ cursor: "pointer",
66
+ onPress,
67
+ "data-testid": "app-shell-home",
68
+ children
69
+ });
70
+ }
71
+ function AppShellNavBar({
72
+ maxWidth,
73
+ leading,
74
+ trailing,
75
+ title,
76
+ showTitle,
77
+ scrolled
78
+ }) {
79
+ const {
80
+ knobProps
81
+ } = useResolvedKnobs({
82
+ component: "ScreenToolbar"
83
+ });
84
+ const [sides, setSides] = useState({
85
+ leading: 0,
86
+ trailing: 0
87
+ });
88
+ const measure = side => event => {
89
+ const width = Math.ceil(event.nativeEvent.layout.width);
90
+ setSides(prev => prev[side] === width ? prev : {
91
+ ...prev,
92
+ [side]: width
93
+ });
94
+ };
95
+ const motion = transitionProps(knobProps.motion.control);
96
+ const clearance = Math.max(sides.leading, sides.trailing);
97
+ return /* @__PURE__ */jsx(Surface, {
98
+ bar: true,
99
+ children: /* @__PURE__ */jsx(YStack, {
100
+ role: "banner",
101
+ "data-testid": "app-shell-bar",
102
+ "data-scroll-edge": scrolled ? "" : void 0,
103
+ backgroundColor: "$background",
104
+ flexShrink: 0,
105
+ ...hairline.bottom,
106
+ borderColor: scrolled ? componentColors.divider : "transparent",
107
+ ...motion,
108
+ ...sticky("top"),
109
+ children: /* @__PURE__ */jsxs(XStack, {
110
+ position: "relative",
111
+ width: "100%",
112
+ ...(maxWidth ? {
113
+ maxWidth,
114
+ alignSelf: "center"
115
+ } : null),
116
+ minHeight: MIN_PRESS_TARGET,
117
+ alignItems: "center",
118
+ flexWrap: "nowrap",
119
+ paddingHorizontal: knobProps.panelPadding.padding,
120
+ ...knobProps.gap,
121
+ children: [/* @__PURE__ */jsx(XStack, {
122
+ alignItems: "center",
123
+ flexShrink: 1e3,
124
+ minWidth: 0,
125
+ ...knobProps.gap,
126
+ onLayout: measure("leading"),
127
+ children: leading
128
+ }), /* @__PURE__ */jsx(XStack, {
129
+ flexGrow: 1
130
+ }), /* @__PURE__ */jsx(XStack, {
131
+ alignItems: "center",
132
+ flexShrink: 1,
133
+ minWidth: 0,
134
+ justifyContent: "flex-end",
135
+ ...knobProps.gap,
136
+ onLayout: measure("trailing"),
137
+ children: trailing
138
+ }), title ? /* @__PURE__ */jsx(XStack, {
139
+ position: "absolute",
140
+ top: 0,
141
+ bottom: 0,
142
+ left: clearance,
143
+ right: clearance,
144
+ alignItems: "center",
145
+ justifyContent: "center",
146
+ pointerEvents: "none",
147
+ "aria-hidden": !showTitle,
148
+ "data-testid": "app-shell-bar-title",
149
+ opacity: showTitle ? 1 : 0,
150
+ ...motion,
151
+ children: /* @__PURE__ */jsx(SizableText, {
152
+ ...knobProps.body,
153
+ fontWeight: "600",
154
+ color: "$color12",
155
+ numberOfLines: 1,
156
+ children: title
157
+ })
158
+ }) : null]
159
+ })
160
+ })
161
+ });
162
+ }
163
+ function StackedPanel({
164
+ panel
165
+ }) {
166
+ const {
167
+ knobProps
168
+ } = useResolvedKnobs();
169
+ return /* @__PURE__ */jsxs(YStack, {
170
+ paddingHorizontal: knobProps.panelPadding.padding,
171
+ ...knobProps.gap,
172
+ "data-testid": "app-shell-page-panel",
173
+ children: [/* @__PURE__ */jsx(SizableText, {
174
+ ...knobProps.body,
175
+ size: "$2",
176
+ textTransform: "uppercase",
177
+ color: knobProps.textAccentColor,
178
+ numberOfLines: 1,
179
+ children: panel.title
180
+ }), panel.content]
181
+ });
182
+ }
183
+ function AppShell({
184
+ destinations,
185
+ path,
186
+ onNavigate,
187
+ title,
188
+ logo,
189
+ onTitlePress,
190
+ actions,
191
+ onBack,
192
+ accessory,
193
+ ownChrome = [],
194
+ children,
195
+ testID = "app-shell"
196
+ }) {
197
+ const {
198
+ t
199
+ } = useTranslation();
200
+ const {
201
+ knobProps
202
+ } = useResolvedKnobs();
203
+ const compact = useLayoutSizeClass() === "compact";
204
+ const {
205
+ report,
206
+ reporter
207
+ } = useShellScrollReports();
208
+ const sidebarSlot = useShellSidebarSlotState();
209
+ const documentScrolled = useDocumentScrolled(isWeb);
210
+ const chromeInset = useBottomChromeInset();
211
+ const floatingBar = useFloatingBarMounted();
212
+ const {
213
+ destination,
214
+ pushed
215
+ } = appShellRoute(destinations, path);
216
+ const ownsChrome = ownChrome.some(prefix => underKey(path, prefix));
217
+ const go = item => item.onPress ? item.onPress() : onNavigate(item.key);
218
+ const goHome = onTitlePress ?? (() => destinations[0] && go(destinations[0]));
219
+ const tabs = useMemo(() => destinations.filter(item => (item.placement ?? "tab") === "tab"), [destinations]);
220
+ const more = useMemo(() => destinations.filter(item => item.placement === "more"), [destinations]);
221
+ if (ownsChrome) {
222
+ return /* @__PURE__ */jsx(YStack, {
223
+ flex: 1,
224
+ minHeight: 0,
225
+ backgroundColor: "$background",
226
+ ...(isWeb ? {
227
+ height: "100dvh"
228
+ } : null),
229
+ "data-testid": testID,
230
+ "data-chrome": "own",
231
+ children
232
+ });
233
+ }
234
+ const pageBar = Boolean(report?.ownTopBar);
235
+ const scrolled = isWeb ? documentScrolled : Boolean(report?.scrolled);
236
+ const largeTitle = report?.title ?? null;
237
+ const barTitle = largeTitle ?? destination?.label ?? null;
238
+ const showTitle = largeTitle ? Boolean(report?.collapsed) : Boolean(barTitle);
239
+ const back = pushed && onBack && destination && !pageBar ? /* @__PURE__ */jsx(PageBackButton, {
240
+ label: destination.label,
241
+ onPress: () => onBack(destination.key)
242
+ }) : null;
243
+ const showBar = compact ? !pageBar : Boolean(back);
244
+ const moreMenu = compact && more.length > 0 ? /* @__PURE__ */jsx(DropdownMenu, {
245
+ placement: "bottom-end",
246
+ items: more.map(item => ({
247
+ key: item.key,
248
+ label: item.label,
249
+ icon: createElement(item.icon),
250
+ onSelect: () => go(item)
251
+ })),
252
+ children: /* @__PURE__ */jsx(PageBarButton, {
253
+ edge: "end",
254
+ icon: ListIcon,
255
+ "aria-label": t("More"),
256
+ "data-testid": "app-shell-more"
257
+ })
258
+ }) : null;
259
+ const bar = showBar ? /* @__PURE__ */jsx(AppShellNavBar, {
260
+ leading: back ?? (compact && logo ? /* @__PURE__ */jsx(HomeControl, {
261
+ title,
262
+ onPress: goHome,
263
+ children: logo
264
+ }) : null),
265
+ trailing: compact ? /* @__PURE__ */jsxs(Fragment, {
266
+ children: [actions, moreMenu]
267
+ }) : null,
268
+ maxWidth: compact ? void 0 : READABLE_MAX_WIDTH,
269
+ title: barTitle,
270
+ showTitle,
271
+ scrolled
272
+ }) : null;
273
+ const content = /* @__PURE__ */jsx(YStack, {
274
+ role: "main",
275
+ flex: 1,
276
+ minWidth: 0,
277
+ ...(isWeb ? null : {
278
+ minHeight: 0
279
+ }),
280
+ "data-testid": "app-shell-content",
281
+ children: compact ? children : /* @__PURE__ */jsx(YStack, {
282
+ flex: 1,
283
+ width: "100%",
284
+ maxWidth: READABLE_MAX_WIDTH,
285
+ alignSelf: "center",
286
+ ...(isWeb ? null : {
287
+ minHeight: 0
288
+ }),
289
+ "data-testid": "app-shell-readable",
290
+ children
291
+ })
292
+ });
293
+ const showTabs = compact && Boolean(destination && tabs.includes(destination));
294
+ const tabItems = tabs.map(({
295
+ key,
296
+ label,
297
+ icon,
298
+ nativeIcon
299
+ }) => ({
300
+ key,
301
+ label,
302
+ icon,
303
+ nativeIcon
304
+ }));
305
+ const pageAccessory = accessory ? /* @__PURE__ */jsx(YStack, {
306
+ flexShrink: 0,
307
+ ...(isWeb || floatingBar ? null : {
308
+ paddingBottom: chromeInset
309
+ }),
310
+ children: /* @__PURE__ */jsx(BottomAccessory, {
311
+ children: accessory
312
+ })
313
+ }) : null;
314
+ const frame = compact ? /* @__PURE__ */jsxs(YStack, {
315
+ flex: 1,
316
+ backgroundColor: "$background",
317
+ ...(isWeb ? {
318
+ minHeight: "100dvh"
319
+ } : null),
320
+ "data-testid": testID,
321
+ "data-size": "compact",
322
+ children: [bar, tabItems.length > 0 ? /* @__PURE__ */jsxs(TabHost, {
323
+ items: tabItems,
324
+ activeKey: showTabs ? destination?.key : void 0,
325
+ onTabPress: key => {
326
+ const item = tabs.find(tab => tab.key === key);
327
+ if (item) go(item);
328
+ },
329
+ children: [content, pageAccessory]
330
+ }) : /* @__PURE__ */jsxs(Fragment, {
331
+ children: [content, pageAccessory]
332
+ })]
333
+ }) : /* @__PURE__ */jsxs(XStack, {
334
+ flex: 1,
335
+ backgroundColor: "$background",
336
+ ...(isWeb ? {
337
+ minHeight: "100dvh"
338
+ } : null),
339
+ "data-testid": testID,
340
+ "data-size": "regular",
341
+ children: [/* @__PURE__ */jsx(YStack, {
342
+ flexShrink: 0,
343
+ alignSelf: "stretch",
344
+ ...(isWeb ? {
345
+ position: "sticky",
346
+ top: 0,
347
+ height: "100dvh"
348
+ } : null),
349
+ "data-testid": "app-shell-sidebar",
350
+ children: /* @__PURE__ */jsx(Sidebar, {
351
+ material: true,
352
+ "aria-label": title,
353
+ header: /* @__PURE__ */jsx(XStack, {
354
+ paddingHorizontal: knobProps.panelPadding.padding,
355
+ alignItems: "center",
356
+ minHeight: MIN_PRESS_TARGET,
357
+ children: /* @__PURE__ */jsxs(HomeControl, {
358
+ title,
359
+ onPress: goHome,
360
+ children: [logo, /* @__PURE__ */jsx(SizableText, {
361
+ ...knobProps.heading,
362
+ fontWeight: "700",
363
+ color: "$color12",
364
+ numberOfLines: 1,
365
+ children: title
366
+ })]
367
+ })
368
+ }),
369
+ footer: actions ? /* @__PURE__ */jsx(XStack, {
370
+ paddingHorizontal: knobProps.panelPadding.padding,
371
+ alignItems: "center",
372
+ minHeight: MIN_PRESS_TARGET,
373
+ flexWrap: "wrap",
374
+ ...knobProps.gap,
375
+ "data-testid": "app-shell-sidebar-actions",
376
+ children: actions
377
+ }) : void 0,
378
+ sections: [{
379
+ items: destinations.map(item => ({
380
+ label: item.label,
381
+ value: item.key,
382
+ icon: createElement(item.icon),
383
+ active: item === destination,
384
+ onPress: () => go(item)
385
+ }))
386
+ }],
387
+ children: sidebarSlot.panel ? /* @__PURE__ */jsx(StackedPanel, {
388
+ panel: sidebarSlot.panel
389
+ }) : null
390
+ })
391
+ }), /* @__PURE__ */jsxs(YStack, {
392
+ flex: 1,
393
+ minWidth: 0,
394
+ children: [bar, content, pageAccessory]
395
+ })]
396
+ });
397
+ return /* @__PURE__ */jsx(ShellSidebarSlotProvider, {
398
+ value: compact ? null : sidebarSlot.value,
399
+ children: /* @__PURE__ */jsx(ShellScrollReportScope, {
400
+ reporter,
401
+ children: frame
402
+ })
403
+ });
404
+ }
405
+ export { AppShell, appShellRoute };
406
+ //# sourceMappingURL=AppShell.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["zIndex","isWeb","MIN_PRESS_TARGET","Surface","hairline","transitionProps","useLayoutSizeClass","useResolvedKnobs","ListIcon","createElement","useEffect","useMemo","useState","SizableText","XStack","YStack","componentColors","DropdownMenu","PageBackButton","PageBarButton","READABLE_MAX_WIDTH","ShellScrollReportScope","useShellScrollReports","ShellSidebarSlotProvider","useShellSidebarSlotState","BottomAccessory","Sidebar","useTranslation","TabHost","useBottomChromeInset","useFloatingBarMounted","Fragment","jsx","jsxs","underKey","path","key","startsWith","appShellRoute","destinations","normal","length","replace","destination","candidate","onPress","pushed","Boolean","useDocumentScrolled","enabled","scrolled","setScrolled","document","sync","window","scrollY","addEventListener","passive","removeEventListener","sticky","edge","position","stickyHeader","HomeControl","title","children","role","alignItems","minHeight","flexShrink","minWidth","gap","cursor","AppShellNavBar","maxWidth","leading","trailing","showTitle","knobProps","component","sides","setSides","measure","side","event","width","Math","ceil","nativeEvent","layout","prev","motion","control","clearance","max","bar","backgroundColor","bottom","borderColor","divider","alignSelf","flexWrap","paddingHorizontal","panelPadding","padding","onLayout","flexGrow","justifyContent","top","left","right","pointerEvents","opacity","body","fontWeight","color","numberOfLines","StackedPanel","panel","size","textTransform","textAccentColor","content","AppShell","onNavigate","logo","onTitlePress","actions","onBack","accessory","ownChrome","testID","t","compact","report","reporter","sidebarSlot","documentScrolled","chromeInset","floatingBar","ownsChrome","some","prefix","go","item","goHome","tabs","filter","placement","more","flex","height","pageBar","ownTopBar","largeTitle","barTitle","label","collapsed","back","showBar","moreMenu","items","map","icon","onSelect","showTabs","includes","tabItems","nativeIcon","pageAccessory","paddingBottom","frame","activeKey","onTabPress","find","tab","material","header","heading","footer","sections","value","active"],"sources":["../../../src/appShell/AppShell.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}