import { AnyVirtualDOM, ChildrenLike, VirtualDOM } from '@youwol/rx-vdom';
import { BehaviorSubject } from 'rxjs';
/**
* Type definition for an element in the side navigation.
*/
export type SideNavElement = {
/**
* Icon in the side-bar.
*/
icon: string;
/**
* Content when the side-bar is expanded.
*/
content: AnyVirtualDOM;
};
/**
* Type definition for the arguments to create a {@link SideNavLayout}.
*/
export type SideNavArguments = {
/**
* An object mapping keys to side navigation elements.
*/
sideNavElements: {
[k: string]: SideNavElement;
};
/**
* The main content of the layout.
*/
content: AnyVirtualDOM;
};
/**
* Function to create a {@link SideNavLayout}.
*
* @param params Arguments
*/
export declare function sideNav(params: SideNavArguments): SideNavLayout;
/**
* Class representing a side navigation layout.
*
* It features:
* - A main content area.
* - A side navigation bar on the right:
* - When collapsed, it includes the icons of the multiple elements declared in the side-bar in a vertical layout.
* - When an element is expanded, it displays the associated content.
*
*
* const sideNavClass = 'h-100 bg-light p-2 px-5'
* const sideNavHome = {
* icon: 'fas fa-home',
* content: { tag: 'div', innerText: 'Home', class: sideNavClass },
* }
* const sideNavAbout = {
* icon: 'fas fa-info',
* content: { tag: 'div', innerText: 'About', class: sideNavClass },
* }
* const sideNavContact = {
* icon: 'fas fa-envelope',
* content: { tag: 'div', innerText: 'Contact', class: sideNavClass },
* }
* const sideNav = {
* home: sideNavHome,
* about: sideNavAbout,
* contact: sideNavContact,
* }
* const sideNavLayout = Views.Layouts.sideNav({
* sideNavElements: sideNav,
* content: { tag: 'div', innerText: 'Main content', class:'p-2' },
* })
* display(sideNavLayout)
*
*
*/
export declare class SideNavLayout implements VirtualDOM<'div'> {
readonly tag = "div";
readonly class = "d-flex";
readonly style: import("@youwol/rx-vdom").CSSAttribute;
readonly children: ChildrenLike;
readonly sideNavElements: SideNavElement[];
readonly content: AnyVirtualDOM;
readonly selected$: BehaviorSubject;
/**
* Creates an instance of SideNavLayout.
*
* @param params Arguments
*/
constructor(params: SideNavArguments);
private menuBar;
}