import React from "react"; import { useTranslation } from "react-i18next"; import { I18nKey } from "#/i18n/declaration"; import { cn } from "#/utils/utils"; import { ToggleSwitchVisual } from "#/ui/toggle-switch"; interface SettingsSwitchProps { testId?: string; name?: string; onToggle?: (value: boolean) => void; defaultIsToggled?: boolean; isToggled?: boolean; isBeta?: boolean; isDisabled?: boolean; /** Whether the toggle sits before or after the label. Defaults to "left". */ togglePosition?: "left" | "right"; } export function SettingsSwitch({ children, testId, name, onToggle, defaultIsToggled, isToggled: controlledIsToggled, isBeta, isDisabled, togglePosition = "left", }: React.PropsWithChildren) { const { t } = useTranslation("openhands"); const [isToggled, setIsToggled] = React.useState(defaultIsToggled ?? false); const handleToggle = (value: boolean) => { if (isDisabled) return; setIsToggled(value); onToggle?.(value); }; const input = ( handleToggle(e.target.checked)} checked={controlledIsToggled ?? isToggled} disabled={isDisabled} /> ); const toggle = ( ); const label = children || isBeta ? (
{children} {isBeta && ( {t(I18nKey.BADGE$BETA)} )}
) : null; return ( ); }