import * as React from 'react'; import { SxProps, Theme } from '@mui/material/styles'; import { SlotComponentProps } from '@mui/base/utils'; import { PickersActionBar, PickersActionBarProps } from '../PickersActionBar'; import { BaseToolbarProps, ExportedBaseToolbarProps } from '../internals/models/props/toolbar'; import { BaseTabsProps, ExportedBaseTabsProps } from '../internals/models/props/tabs'; import { UsePickerLayoutPropsResponseLayoutProps } from '../internals/hooks/usePicker/usePickerLayoutProps'; import { PickersLayoutClasses } from './pickersLayoutClasses'; import { DateOrTimeViewWithMeridiem, WrapperVariant } from '../internals/models/common'; import { PickersShortcutsProps } from '../PickersShortcuts'; import { ExportedPickersShortcutProps, PickersShortcuts } from '../PickersShortcuts/PickersShortcuts'; import { PickerValidDate } from '../models'; export interface ExportedPickersLayoutSlots { /** * Custom component for the action bar, it is placed below the picker views. * @default PickersActionBar */ actionBar?: React.ElementType; /** * Custom component for the shortcuts. * @default PickersShortcuts */ shortcuts?: React.JSXElementConstructor>; /** * Custom component for wrapping the layout. * It wraps the toolbar, views, action bar, and shortcuts. */ layout?: React.JSXElementConstructor & React.RefAttributes>; } interface PickersLayoutActionBarOwnerState extends PickersLayoutProps { wrapperVariant: WrapperVariant; } interface PickersShortcutsOwnerState extends PickersShortcutsProps { wrapperVariant: WrapperVariant; } export interface ExportedPickersLayoutSlotProps { /** * Props passed down to the action bar component. */ actionBar?: SlotComponentProps>; /** * Props passed down to the shortcuts component. */ shortcuts?: SlotComponentProps>; /** * Props passed down to the layoutRoot component. */ layout?: Partial>; } export interface PickersLayoutSlots extends ExportedPickersLayoutSlots { /** * Tabs enabling toggling between views. */ tabs?: React.ElementType>; /** * Custom component for the toolbar. * It is placed above the picker views. */ toolbar?: React.JSXElementConstructor>; } export interface PickersLayoutSlotProps extends ExportedPickersLayoutSlotProps { /** * Props passed down to the tabs component. */ tabs?: ExportedBaseTabsProps; /** * Props passed down to the toolbar component. */ toolbar?: ExportedBaseToolbarProps; } export interface PickersLayoutProps extends Omit, 'value'> { value?: TValue; className?: string; children?: React.ReactNode; /** * The system prop that allows defining system overrides as well as additional CSS styles. */ sx?: SxProps; /** * Ref to pass to the root element */ ref?: React.Ref; /** * Override or extend the styles applied to the component. */ classes?: Partial; /** * Overridable component slots. * @default {} */ slots?: PickersLayoutSlots; /** * The props used for each component slot. * @default {} */ slotProps?: PickersLayoutSlotProps; /** * `true` if the application is in right-to-left direction. */ isRtl: boolean; } export interface SubComponents { toolbar: React.ReactElement | null; content: React.ReactNode; tabs: React.ReactElement | null; actionBar: React.ReactElement; shortcuts: React.ReactElement> | null; } export {};