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} - - + ); }