Open History to see the last commit
1import type { NativeStackNavigationOptions } from "@react-navigation/native-stack";
2import { Platform } from "react-native";
3
4import { brandTitleOffset, CompactBrandTitle } from "../../../components/CompactBrandTitle";
5import { WorkspaceConnectionTitle } from "../../home/WorkspaceConnectionTitle";
6
7function renderCompactBrandTitle() {
8 return <CompactBrandTitle allowFontScaling={Platform.OS === "ios"} />;
9}
10
11export function getCompactBrandHeaderOptions(
12 fallbackTitleStyle?: NativeStackNavigationOptions["headerTitleStyle"],
13): NativeStackNavigationOptions {
14 return {
15 headerTitle: renderCompactBrandTitle,
16 headerTitleStyle: fallbackTitleStyle,
17 title: "Threads",
18 unstable_headerLeftItems: undefined,
19 };
20}
21
22export function getConnectionAwareBrandHeaderOptions(opts: {
23 readonly headerWidth: number;
24 readonly trailingItemCount?: number;
25 readonly onOpenEnvironments: () => void;
26 readonly fallbackTitleStyle?: NativeStackNavigationOptions["headerTitleStyle"];
27}): NativeStackNavigationOptions {
28 const maxWidth = Math.max(0, opts.headerWidth - 64 - 44 * (opts.trailingItemCount ?? 1));
29
30 return {
31 ...getCompactBrandHeaderOptions(opts.fallbackTitleStyle),
32 headerTitle: () => (
33 <WorkspaceConnectionTitle
34 brand={<CompactBrandTitle />}
35 maxWidth={maxWidth}
36 onPress={opts.onOpenEnvironments}
37 statusOffset={brandTitleOffset()}
38 />
39 ),
40 };
41}