/**
 * A two-state button that can be toggled on or off.
 * Use for enabling/disabling features or switching between states.
 * @category Form Inputs
 * @useCases toolbar button, formatting toggle, view toggle, filter toggle
 * @keywords toggle, button, pressed, on, off, state
 * @related UiSwitch, UiButton, UiCheckbox
 */
export interface UiToggleProps {
  /**
   * The controlled pressed state of the toggle. Use with v-model.
   */
  modelValue?: boolean;
  /**
   * The pressed state when initially rendered (uncontrolled mode).
   * Use when you do not need to control its state.
   */
  defaultValue?: boolean;
  /**
   * Controlled visual active state. Useful when another component, such as a dropdown,
   * owns the active/open state.
   */
  active?: boolean;
  /**
   * Whether the toggle is disabled.
   * @default false
   */
  disabled?: boolean;
  /**
   * The visual style variant.
   * @default 'default'
   */
  variant?: 'default' | 'outline' | 'soft';
  /**
   * The size of the toggle.
   * @default 'default'
   */
  size?: 'default' | 'sm' | 'lg';
  /**
   * Optional icon rendered before the default slot.
   */
  leftIcon?: string;
  /**
   * Optional icon rendered after the default slot.
   */
  rightIcon?: string;
}
