import { type HTMLAttributes } from 'react';
import { type VariantProps } from 'class-variance-authority';
import { type AccessibilityPreference, type ThemePreference } from '../../hooks';
declare const wrapperVariants: (props?: ({
variant?: "menu" | "split" | "compact" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
export type ThemeToggleVariant = 'menu' | 'compact' | 'split';
interface ThemeToggleBaseProps extends Omit, 'onChange'>, VariantProps {
/**
* Visual form factor.
* - `menu` (default) — single trigger that opens a dropdown with both
* Appearance and Accessibility controls. Best for headers / nav rails.
* - `compact` — segmented Appearance control only. Use when accessibility
* lives on a separate settings surface.
* - `split` — segmented Appearance control plus an inline Accessibility
* switch. Best for full-width settings panels.
*/
variant?: ThemeToggleVariant;
/** Hide the accessibility control. Ignored on `compact`, which never renders it. */
showAccessibility?: boolean;
/**
* Controlled escape hatch — when omitted the component reads/writes
* `useTheme()` directly so it can drop into any header with no wiring.
* Pass all four to opt into controlled mode.
*/
theme?: ThemePreference;
accessibility?: AccessibilityPreference;
onThemeChange?: (next: ThemePreference) => void;
onAccessibilityChange?: (next: AccessibilityPreference) => void;
}
export type ThemeToggleProps = ThemeToggleBaseProps;
/** Curated imperative handle for agent / external automation. */
export interface ThemeToggleHandle {
getCurrentTheme: () => ThemePreference;
getCurrentAccessibility: () => AccessibilityPreference;
setTheme: (next: ThemePreference) => void;
setAccessibility: (next: AccessibilityPreference) => void;
}
export declare const ThemeToggle: import("react").ForwardRefExoticComponent>;
export {};
//# sourceMappingURL=theme-toggle.d.ts.map