import React, { ComponentPropsWithoutRef, ComponentRef } from "react";
import { Switch as SwitchPrimitives } from "@base-ui/react/switch";
import { type VariantProps } from "class-variance-authority";
import { VoidFuncNoParam } from "../../../fd-toolbox/functions/internal-getter-setter-functions";
import { htmlTags } from "@base-repo/constants/html-element-names";
/**
 * Props of {@link SlideToggle}
 */
export interface SlideToggleProps {
    /** The text to display next to the toggle switch */
    text: string;
    /** If true, applies the primary styling variant */
    primary: boolean;
    /** The color of the toggle switch, applies when not primary */
    color: string;
    /** Event handler called when the toggle switch is clicked */
    onClick: VoidFuncNoParam;
}
/**
 * Using {@link https:/cva.style/docs/getting-started/variants class-variance-authority}
 */
declare const labelVariants: (props?: import("class-variance-authority/types").ClassProp) => string;
/**
 * Switch component for toggling between two states
 *
 * Based on {@link https:/ui.shadcn.com/docs/components/switch Switch}
 *
 * @example
 * ```tsx
    function MyComponent() {
        const [isFeatureEnabled, setIsFeatureEnabled] = useState(false);

        return (
            <SlideToggleSwitch
                checked={isFeatureEnabled}
                className="data-[state=checked]:bg-blue-500"
                onCheckedChange={setIsFeatureEnabled}
            />
        );
    }
 * ```
 */
export declare function SlideToggleSwitch({ className, ref, }: ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> & {
    ref?: React.Ref<ComponentRef<typeof SwitchPrimitives.Root>>;
}): React.JSX.Element;
export declare namespace SlideToggleSwitch {
    var displayName: string;
}
/**
 * Styled label component
 *
 * Based on {@link https:/ui.shadcn.com/docs/components/label Label}
 */
export declare function SlideToggleLabel({ className, ref, }: ComponentPropsWithoutRef<typeof htmlTags.label> & VariantProps<typeof labelVariants> & {
    ref?: React.Ref<HTMLLabelElement>;
}): React.JSX.Element;
export declare namespace SlideToggleLabel {
    var displayName: "Label";
}
/**
 * Composite toggle component with a switch and label
 *
 * @param SlideToggleProps {@link SlideToggleProps}
 *
 * @example
 * ```tsx
 * <SlideToggle text="Enable feature" primary={false} color="bg-blue-500" onClick={...}/>
 * ```
 */
export declare function SlideToggle({ text, primary, color, onClick }: SlideToggleProps): React.JSX.Element;
export {};
