import { TabProps as MuiTabProps, TabsProps as MuiTabsProps } from '@mui/material';
import { Color, Gradient } from '../../types';
import { BoxProps } from '@mui/system';
import { ReactNode } from 'react';
export type Orientation = 'horizontal' | 'vertical';
export type TabsVariant = 'scrollable' | 'fullWidth' | 'standard';
export interface TabsWrapperProps extends Omit<MuiTabsProps, 'textColor' | 'color' | 'indicatorColor'> {
    children?: ReactNode;
    actions?: ReactNode[];
    fullWidth?: boolean;
    orientation?: Orientation;
    indicatorColor?: Color;
    color?: Color;
}
export interface TabProps extends Omit<MuiTabProps, 'color' | 'selectedColor'> {
    selectedColor?: Color;
    color?: Color;
}
export interface NavPillsProps extends TabsWrapperProps {
    /**
     * @default 0
     * Index of the default active pill
     */
    active?: number;
    /**
     * Handle tab change event manually
     * Overrides the default onChange implementation
     * @param {object} event The event source of the callback.
     * @param {number} value We default to the index of the child (number)
     */
    onChange?: (event: React.SyntheticEvent, value: number) => void;
    /**
     * The content of the component
     */
    tabs: {
        /**
         * 	The label element.
         */
        label?: ReactNode;
        /**
         * The icon to display in a tab.
         */
        icon?: string | React.ReactElement;
        /**
         * Tha Tab content
         */
        content?: React.ReactNode;
        /**
         * Custom tab properties that apply to the current Tab element
         */
        props?: Omit<TabProps, 'icon' | 'label'>;
    }[];
    /**
     * Custom tab properties that apply to all the Tab elements
     */
    tabProps?: Omit<TabProps, 'icon' | 'label'>;
    /**
     * Custom tab panel properties that apply to all the TabPanel elements
     */
    tabPanelProps?: Omit<TabPanelProps, 'active' | 'index'>;
    /**
       * @default "scrollable"
       * Determines additional display behavior of the tabs:
          - scrollable will invoke scrolling properties and allow for horizontally scrolling (or swiping) of the tab bar.
          - fullWidth will make the tabs grow to use all the available space, which should be used for small views, like on mobile.
          - standard will render the default state.
       */
    variant?: 'scrollable' | 'fullWidth' | 'standard';
    /**
     * The component orientation (layout flow direction)
     * @default "horizontal"
     */
    orientation?: 'horizontal' | 'vertical';
    /**
     * @default "primary"
     * Determines the color of the indicator.
     */
    indicatorColor?: Color;
    /**
     * @default "primary"
     * Determines the color of the selected Tab.
     */
    selectedColor?: Color;
    /**
     * Indicates the background color of the selected Tab and the indicator color
     * Precedes 'indicatorColor' and 'selectedColor' properties
     */
    color?: Color;
    /**
     * Indicates the gradient background available for most of the colors of the selected Tab and the indicator color
     */
    colorGradient?: Gradient;
    /**
     * @default false
     * If true, tab text is capitalized.
     */
    capitalize?: boolean;
    /**
     * @default false
     * If true, it maximize width to 100%
     * Default value sets width to 'fit-content'
     */
    fullWidth?: boolean;
    /**
     * A list of additional action components
     * e.g. a [<Button />, <Button />]
     */
    actions?: string[] | React.ReactElement[];
}
export interface TabPanelProps extends BoxProps {
    children?: ReactNode;
    active: number;
    index: number;
}
export interface OrientationWrapperProps {
    children?: ReactNode;
    actions?: ReactNode[];
    orientation?: Orientation;
}
