/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
import { WindowActionsEvent, WindowMoveEvent } from './events';
import { WebMcpProps } from '@progress/kendo-react-common';
import { windowStage } from './StageEnum.js';
/**
* Represents the props of the [KendoReact Window component](https://www.telerik.com/kendo-react-ui/components/dialogs/window).
*/
export interface WindowProps {
/**
* Defines the container to which the Window will be appended. If set to `null`, the Window will be rendered without React Portal.
*
* @default parent element
*
* @example
* ```jsx
*
* ```
*/
appendTo?: HTMLElement | null;
/**
* Focus the Window container automatically when mounted.
*
* @default true
*
* @example
* ```jsx
*
* ```
*
* @remarks
* This property is related to accessibility.
*/
autoFocus?: boolean;
/**
* @hidden
*/
children?: React.ReactNode;
/**
* Specifies if the Window will render the close button.
*
* @example
* ```jsx
*
* ```
*/
closeButton?: React.ComponentType;
/**
* Specifies if the Window stage will change on title double click.
*
* @default true
*
* @example
* ```jsx
*
* ```
*/
doubleClickStageChange?: boolean;
/**
* Specifies if the Window will be draggable ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/positioning-dragging#toc-dragging)).
*
* @default true
*
* @example
* ```jsx
*
* ```
*/
draggable?: boolean;
/**
* Specifies the height of the Window ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/dimensions-resizing#toc-dimensions)). When set to `null`, the window is automatically sized to fit its content.
*
* @example
* ```jsx
*
* ```
*/
height?: number | null;
/**
* Specifies the initial `left` value ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/positioning-dragging#toc-positioning)). The Window will be in an uncontrolled mode.
*
* @example
* ```jsx
*
* ```
*/
initialLeft?: number;
/**
* Specifies the initial `top` value ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/positioning-dragging#toc-positioning)). The component will be in an uncontrolled mode.
*
* @example
* ```jsx
*
* ```
*/
initialTop?: number;
/**
* Specifies the initial width of the Window ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/dimensions-resizing#toc-dimensions)). The component will be in an uncontrolled mode.
*
* @example
* ```jsx
*
* ```
*/
initialWidth?: number;
/**
* Specifies the initial height of the Window ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/dimensions-resizing#toc-dimensions)). The component will be in an uncontrolled mode.
*
* @example
* ```jsx
*
* ```
*/
initialHeight?: number | null;
/**
* Specifies the left coordinates of the Window.
*
* @example
* ```jsx
*
* ```
*/
left?: number;
/**
* Specifies if the Window will render the maximize button.
*
* @example
* ```jsx
*
* ```
*/
maximizeButton?: React.ComponentType;
/**
* Specifies the minimum height of the Window ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/dimensions-resizing#toc-resizing)).
*
* @default 100
*
* @example
* ```jsx
*
* ```
*/
minHeight?: number;
/**
* Specifies the minimum width of the Window ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/dimensions-resizing#toc-resizing)).
*
* @default 120
*
* @example
* ```jsx
*
* ```
*/
minWidth?: number;
/**
* Specifies if the Window will render the minimize button.
*
* @example
* ```jsx
*
* ```
*/
minimizeButton?: React.ComponentType;
/**
* Specifies if the Window will be modal by rendering an overlay under the component.
*
* @default false
*
* @example
* ```jsx
*
* ```
*/
modal?: boolean;
/**
* Specifies if the Window will be resizable ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/dimensions-resizing#toc-resizing)).
*
* @default true
*
* @example
* ```jsx
*
* ```
*/
resizable?: boolean;
/**
* Specifies if the Window will render the restore button.
*
* @example
* ```jsx
*
* ```
*/
restoreButton?: React.ComponentType;
/**
* Specifies if the Window content will update during resizing.
*
* @example
* ```jsx
*
* ```
*/
shouldUpdateOnDrag?: boolean;
/**
* Specifies the title of the Window ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/title)).
*
* @example
* ```jsx
*
* ```
*/
title?: React.ReactNode | string;
/**
* Specifies the top coordinates of the Window.
*
* @example
* ```jsx
*
* ```
*/
top?: number;
/**
* Specifies the width of the Window.
*
* @example
* ```jsx
*
* ```
*/
width?: number;
/**
* Controls the state of the Window ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/minimizing-fullscreen)).
*
* The supported values are:
* * `DEFAULT`
* * `MINIMIZED`
* * `FULLSCREEN`
*
* @example
* ```jsx
*
* ```
*/
stage?: windowStage | string;
/**
* Set styles to the Window element.
*
* @example
* ```jsx
*
* ```
*/
style?: React.CSSProperties;
/**
* Set styles to the Window overlay element rendered when the `modal` prop is enabled.
*
* @example
* ```jsx
*
* ```
*/
overlayStyle?: React.CSSProperties;
/**
* Sets a class of the Window DOM element.
*
* @example
* ```jsx
*
* ```
*/
className?: string;
/**
* Fires when the **Close** button in the title is clicked or when the `Esc` button is pressed.
*
* @example
* ```jsx
* console.log('Window closed', event)} />
* ```
*/
onClose?: (event: WindowActionsEvent) => void;
/**
* Fires when the Window is dragged.
*
* @example
* ```jsx
* console.log('Window moved', event)} />
* ```
*/
onMove?: (event: WindowMoveEvent) => void;
/**
* Fires when the `DEFAULT`, `FULLSCREEN`, or `MINIMIZED` state of the Window is changed.
*
* @example
* ```jsx
* console.log('Stage changed', event)} />
* ```
*/
onStageChange?: (event: WindowActionsEvent) => void;
/**
* Fires when the Window resizes.
*
* @example
* ```jsx
* console.log('Window resized', event)} />
* ```
*/
onResize?: (event: WindowMoveEvent) => void;
/**
* Sets the `id` attribute value of the wrapper element of the Window.
*
* @example
* ```jsx
*
* ```
*/
id?: string;
/**
* Enables Web MCP tool registration so AI agents can interact with this Window.
* Set to `true` to use the provider-level `dataName`, or pass a config object to override.
*
* Requires a `WebMcpProvider` ancestor from `@progress/kendo-react-webmcp`.
*/
webMcp?: boolean | WebMcpProps;
}