diff --git a/apps/mobile/src/features/settings/SettingsServerControlsRouteScreen.tsx b/apps/mobile/src/features/settings/SettingsServerControlsRouteScreen.tsx
index 6e7cef0de93dc3ee34de115aca829da3ca9b9ace..090467a8cd9095d294aa3eec93564f40e67a4be4 100644
--- a/apps/mobile/src/features/settings/SettingsServerControlsRouteScreen.tsx
+++ b/apps/mobile/src/features/settings/SettingsServerControlsRouteScreen.tsx
@@ -22,6 +22,7 @@ import {
SettingsEnvironmentFilterHeader,
} from "./components/SettingsEnvironmentFilterHeader";
import { SettingsSection } from "./components/SettingsSection";
+import { SettingsControlRow } from "./components/SettingsControlRow";
import { SettingsSwitchRow } from "./components/SettingsSwitchRow";
import { SettingsProjectOverridesSection } from "./components/SettingsProjectOverridesSection";
import { useSettingsEnvironmentFilter } from "./settings-environment-filter";
@@ -454,21 +455,21 @@ function FanoutSwitchRow(props: {
}
return (
-
-
-
- {props.label}
- {props.subtitle}
-
+
props.onValueChange(true)}
>
Mixed ยท Set on
-
+
);
}
diff --git a/apps/mobile/src/features/settings/components/SettingsControlRow.tsx b/apps/mobile/src/features/settings/components/SettingsControlRow.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..6f442af1b2fcd148bf496588a694bb997c762e94
--- /dev/null
+++ b/apps/mobile/src/features/settings/components/SettingsControlRow.tsx
@@ -0,0 +1,39 @@
+import type { ComponentProps, ReactNode } from "react";
+import { Platform, View } from "react-native";
+
+import { SymbolView } from "../../../components/AppSymbol";
+import { AppText as Text } from "../../../components/AppText";
+import { cn } from "../../../lib/cn";
+
+export function SettingsControlRow(props: {
+ readonly disabled?: boolean;
+ readonly icon: ComponentProps["name"];
+ readonly label: string;
+ readonly subtitle?: string;
+ readonly children: ReactNode;
+}) {
+ return (
+
+
+
+ {props.label}
+ {props.subtitle ? (
+ {props.subtitle}
+ ) : null}
+
+ {props.children}
+
+ );
+}
diff --git a/apps/mobile/src/features/settings/components/SettingsSwitchRow.tsx b/apps/mobile/src/features/settings/components/SettingsSwitchRow.tsx
index 99bf0114f39f04309d21a764aabb1471d1db4cba..49fb98e49976ac9a1671385dd0299ccd6f97e59b 100644
--- a/apps/mobile/src/features/settings/components/SettingsSwitchRow.tsx
+++ b/apps/mobile/src/features/settings/components/SettingsSwitchRow.tsx
@@ -1,55 +1,27 @@
-import { cn } from "../../../lib/cn";
import type { ComponentProps } from "react";
-import { Platform, View } from "react-native";
-import { SymbolView } from "../../../components/AppSymbol";
-import { AppText as Text } from "../../../components/AppText";
import { ThemedSwitch } from "../../../components/ThemedSwitch";
+import { SettingsControlRow } from "./SettingsControlRow";
-type SymbolName = ComponentProps["name"];
-
-export function SettingsSwitchRow(props: {
- readonly disabled?: boolean;
- readonly icon: SymbolName;
- readonly label: string;
- readonly subtitle?: string;
- readonly value: boolean;
- readonly onValueChange: (value: boolean) => void;
-}) {
+export function SettingsSwitchRow(
+ props: Omit, "children"> & {
+ readonly value: boolean;
+ readonly onValueChange: (value: boolean) => void;
+ },
+) {
return (
-
-
-
-
- {props.label}
-
- {props.subtitle ? (
- {props.subtitle}
- ) : null}
-
-
+
);
}