import type { ReactNode } from "react"; import { Switch as RNSwitch } from "react-native"; import { useColorVariable } from "../../core/useColorToken"; import { useControllableChecked } from "../../core/useControllableChecked"; import { AccentScope, type AccentScopeProps } from "../containers/AccentScope"; export interface SwitchProps { accent?: AccentScopeProps["accent"]; checked?: boolean; disabled?: boolean; onValueChange?: (value: boolean) => void; "aria-labelledby"?: string; testID?: string; } function SwitchInner({ checked, disabled, onValueChange, ...props }: SwitchProps): ReactNode { const [value, setValue] = useControllableChecked({ checked, onValueChange }); const trackBg = useColorVariable("--color-lowered"); const thumb = useColorVariable("--color-highlight"); const disabledTrackBg = useColorVariable( "--color-disabled-interactive-muted", ); const disabledThumb = useColorVariable("--color-disabled-muted"); const track = disabled ? disabledTrackBg : trackBg; const thumbColor = disabled ? disabledThumb : thumb; return ( ); } export function Switch({ accent, ...rest }: SwitchProps): ReactNode { return ( ); }