/**
 * Copyright (c) Adaptavist, Inc.
 */
import { ComponentPropsWithoutRef } from 'react';
import { GenericProps } from '../../utilities';
export type ISidebar = GenericProps & ComponentPropsWithoutRef<'div'> & {
    /**
     * Prop to control the height of the Sidebar.
     *
     * Default is `0`.
     */
    height?: string;
    /**
     * Prop to control displaying an icon at the top of the sidebar.
     *
     * Default is `undefined`.
     */
    icon?: React.ReactNode;
    /**
     * Prop to control the function to run on close of the sidebar.
     *
     * Default is `an empty object`.
     */
    onClose?: () => void;
    /**
     * Prop to set if the Sidebar is hidden automatically on smaller devices.
     *
     * Use this to show and hide when needed.
     *
     * If set to true, the collapsed menu will render.
     * If set to false, the collapsed menu will not render.
     *
     * Default is `false`.
     */
    showCollapsedMenu?: boolean;
    /**
     * Prop to control the width of the Sidebar.
     *
     * Default is `0`.
     */
    width?: number;
};
export type ISidebarContent = GenericProps & {
    contents?: {
        /**
         * Prop to control the contents of a section of the sidebar.
         *
         * Default is `an empty object`.
         */
        contents: ISidebarNavContent[];
        /**
         * Prop to add a subtitle to a content section of the Sidebar.
         *
         * Default is `an empty string`.
         */
        subTitle?: string;
    };
    position?: 'top';
};
export interface ISidebarNavContent {
    /**
     * Prop to control if a Sidebar item is active or not.
     *
     * If set to true, the Sidebar item will be active.
     * If set to false, the Sidebar item will not be active.
     *
     * Default is `false`.
     */
    active?: boolean;
    /**
     * Prop to assign an ariaLabel to the Sidebar item.
     *
     * If no `ariaLabel` is provided, the `title` is used.
     *
     * Default is the Sidebar's `title`.
     */
    ariaLabel?: string;
    /**
     * Prop to control if a Sidebar item is disabled or not.
     *
     * If set to true, the Sidebar item will be disabled.
     * If set to false, the Sidebar item will not be disabled.
     *
     * Default is `false`.
     */
    disabled?: boolean;
    /**
     * Prop to control the icon displayed for a Sidebar item.
     *
     * Default is `undefined`.
     */
    icon?: React.ReactNode;
    /**
     * Prop to control the function to run on click of a Sidebar item.
     *
     * Default is `an empty object`.
     */
    onClick: () => void;
    /**
     * Prop to control the title used for a Sidebar item.
     *
     * Default is `an empty string`.
     */
    title: string;
}
export type ISidebarItem = Pick<ISidebarNavContent, 'active' | 'disabled'> & GenericProps;
