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; }