diff --git a/apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx b/apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx
index b4e32a06f55b68360c1d419ba25b45d04224de3b..cf90cd42a0adb97a9fe0da4a4f3f245c6939032a 100644
--- a/apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx
+++ b/apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx
@@ -10,7 +10,7 @@ import { useCallback, useState } from "react";
import { Platform, Alert, Pressable, View } from "react-native";
import Animated, { FadeIn, FadeOut, LinearTransition } from "react-native-reanimated";
-import { AppText as Text, AppTextInput as TextInput } from "../../components/AppText";
+import { AppText as Text } from "../../components/AppText";
import { EnvironmentMachineSymbol } from "../../components/EnvironmentMachineSymbol";
import { MaterialButton } from "../../components/MaterialButton";
import { MaterialIconButton } from "../../components/MaterialIconButton";
@@ -18,6 +18,7 @@ import { ThemedSwitch } from "../../components/ThemedSwitch";
import { cn } from "../../lib/cn";
import type { ConnectedEnvironmentSummary } from "../../state/remote-runtime-types";
import { serverEnvironment } from "../../state/server";
+import { ConnectionFormField } from "./ConnectionFormField";
import { ConnectionStatusDot } from "./ConnectionStatusDot";
function connectionStatusLabel(environment: ConnectedEnvironmentSummary): string | null {
@@ -152,34 +153,24 @@ export function ConnectionEnvironmentRow(props: {
) : (
<>
-
-
- Label
-
-
-
+
-
-
- URL
-
-
-
+
>
)}
diff --git a/apps/mobile/src/features/connection/ConnectionFormField.tsx b/apps/mobile/src/features/connection/ConnectionFormField.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..0d5e21148e54d034c74ef54afa871ab4567b5e8f
--- /dev/null
+++ b/apps/mobile/src/features/connection/ConnectionFormField.tsx
@@ -0,0 +1,25 @@
+import { View } from "react-native";
+
+import { AppText, AppTextInput, type AppTextInputProps } from "../../components/AppText";
+import { cn } from "../../lib/cn";
+
+type ConnectionFormFieldProps = Omit & {
+ readonly label: string;
+ readonly className?: string;
+};
+
+/** Labeled connection input with a native wrapper retained inside form sheets. */
+export function ConnectionFormField({ label, className, ...inputProps }: ConnectionFormFieldProps) {
+ return (
+
+
+ {label}
+
+
+
+ );
+}
diff --git a/apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx b/apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx
index ea4f1cf69712ad0da448b9fb04e3c0d448b6bcd6..6c0d60beb5f596c0ea3a0a25cd5f7f9bb8b11abb 100644
--- a/apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx
+++ b/apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx
@@ -13,8 +13,9 @@ import { Alert, Linking, Platform, View } from "react-native";
import { useSafeAreaInsets } from "react-native-safe-area-context";
import { useUniwindTheme } from "../../lib/useUniwindTheme";
import { SettingsScreen } from "../settings/components/SettingsScreen";
-import { AppText as Text, AppTextInput as TextInput } from "../../components/AppText";
+import { AppText as Text } from "../../components/AppText";
import { ErrorBanner } from "../../components/ErrorBanner";
+import { ConnectionFormField } from "./ConnectionFormField";
import { ConnectionSheetButton } from "./ConnectionSheetButton";
import { buildPairingUrl, extractPairingUrlFromQrPayload, parsePairingUrl } from "./pairing";
import { useRemoteConnections } from "../../state/use-remote-environment-registry";
@@ -262,34 +263,24 @@ export function ConnectionsNewRouteScreen({
)
) : (
-
-
- Host
-
-
-
+
-
-
- Pairing code
-
-
-
+
{pairingConnectionError ? : null}