import { ReactNode, ButtonHTMLAttributes } from 'react';
import { Theme } from '../../../models/Theme';
/**
* Size variants for the fullscreen button
*/
export type FullscreenButtonSize = 'small' | 'medium' | 'large';
/**
* Props interface for the FullscreenButton component
* Extends standard HTML button attributes for maximum flexibility
*/
export interface FullscreenButtonProps extends Omit, 'onClick' | 'onKeyDown'> {
/**
* Whether the element is currently in fullscreen mode
* @default false
*/
isFullscreen?: boolean;
/**
* Callback function triggered when the fullscreen state should toggle
*/
onToggle?: (() => void) | ((event?: any) => void);
/**
* Theme configuration for styling
*/
theme: Theme;
/**
* Whether the button is disabled
* @default false
*/
disabled?: boolean;
/**
* Size variant of the button
* @default 'medium'
*/
size?: FullscreenButtonSize;
/**
* Custom CSS class name
*/
className?: string;
/**
* Custom aria-label for accessibility
* If not provided, defaults to "Enter fullscreen" or "Exit fullscreen"
*/
ariaLabel?: string;
/**
* Custom title attribute for tooltip
* If not provided, defaults to appropriate fullscreen action with keyboard hint
*/
title?: string;
/**
* Test ID for testing purposes
* @default 'fullscreen-button'
*/
testId?: string;
/**
* Custom children to override default icons
* If not provided, will use MaximizeIcon or MinimizeIcon based on isFullscreen
*/
children?: ReactNode;
}
/**
* Styled component props for internal use
*/
export interface FullscreenButtonStyleProps {
theme: Theme;
$size: FullscreenButtonSize;
$isFullscreen: boolean;
}
//# sourceMappingURL=fullscreen-button.model.d.ts.map