Spaces:
Build error
Build error
import React from "react"; | |
import { StyledSwitchComponent } from "./styled-switch-component"; | |
interface SettingsSwitchProps { | |
testId?: string; | |
name?: string; | |
onToggle?: (value: boolean) => void; | |
defaultIsToggled?: boolean; | |
isToggled?: boolean; | |
isBeta?: boolean; | |
} | |
export function SettingsSwitch({ | |
children, | |
testId, | |
name, | |
onToggle, | |
defaultIsToggled, | |
isToggled: controlledIsToggled, | |
isBeta, | |
}: React.PropsWithChildren<SettingsSwitchProps>) { | |
const [isToggled, setIsToggled] = React.useState(defaultIsToggled ?? false); | |
const handleToggle = (value: boolean) => { | |
setIsToggled(value); | |
onToggle?.(value); | |
}; | |
return ( | |
<label className="flex items-center gap-2 w-fit cursor-pointer"> | |
<input | |
hidden | |
data-testid={testId} | |
name={name} | |
type="checkbox" | |
onChange={(e) => handleToggle(e.target.checked)} | |
checked={controlledIsToggled ?? isToggled} | |
defaultChecked={defaultIsToggled} | |
/> | |
<StyledSwitchComponent isToggled={controlledIsToggled ?? isToggled} /> | |
<div className="flex items-center gap-1"> | |
<span className="text-sm">{children}</span> | |
{isBeta && ( | |
<span className="text-[11px] leading-4 text-[#0D0F11] font-[500] tracking-tighter bg-primary px-1 rounded-full"> | |
Beta | |
</span> | |
)} | |
</div> | |
</label> | |
); | |
} | |