import { useId } from "react"; import type { HTMLProps } from "../../shared/types"; import { cn } from "../../shared/utils/cn"; import { Typography } from "../typography/Typography"; import { invariant } from "../../shared/utils/invariant"; type ToggleTextProps = | { onText: string; offText: string } | { onText?: undefined; offText?: undefined }; export type ToggleProps = HTMLProps<"input"> & { label?: React.ReactNode; labelClassName?: string; } & ToggleTextProps; export const Toggle = ({ className, labelClassName, label, id: propId, disabled, checked, onChange, onText, offText, ...props }: ToggleProps) => { invariant( (onText == null && offText == null) || onText != null || offText != null, "Both onText and offText must be either defined or undefined" ); const generatedId = useId(); const id = propId ?? generatedId; return (