UNPKG

@neo4j-ndl/react

Version:

React implementation of Neo4j Design System

99 lines (98 loc) 3.13 kB
/** * * Copyright (c) "Neo4j" * Neo4j Sweden AB [http://neo4j.com] * * This file is part of Neo4j. * * Neo4j is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ import type React from 'react'; import { type IconIndicatorType } from '../../_common/IconIndicatorWrapper'; import { type HtmlAttributes, type PolymorphicForwardRefExoticComponent } from '../../_common/types'; /** * SideNav */ type SideNavProps = { children?: React.ReactNode; className?: string; style?: React.CSSProperties; htmlAttributes?: HtmlAttributes<'nav'>; isExpanded?: boolean; shouldExpandOnHover?: boolean; pinButtonCallback?: () => void; expandedWidth?: React.CSSProperties['width']; }; /** * SideNavList */ type SideNavListProps = { children?: React.ReactNode; className?: string; style?: React.CSSProperties; }; /** * NavItem */ type BaseItemProps = { icon?: React.ReactNode; label?: string; isSelected?: boolean; badge?: ItemBadgeProps; }; type NavItemProps = BaseItemProps & { rightElement?: React.ReactNode; } & ({ as: 'button'; onClick?: HtmlAttributes<'button'>['onClick']; } | { as?: React.ElementType; } | { as: 'a'; href?: HtmlAttributes<'a'>['href']; target?: HtmlAttributes<'a'>['target']; }); /** * CategoryHeader */ type CategoryHeaderProps = { children?: React.ReactNode; className?: string; }; /** * ItemBadge */ type ItemBadgeProps = { number: number; type: IconIndicatorType; }; declare const SideNavigation: React.ForwardRefExoticComponent<SideNavProps & React.RefAttributes<HTMLDivElement>> & { CategoryHeader: ({ children, className }: CategoryHeaderProps) => import("react/jsx-runtime").JSX.Element; CategoryItem: React.ForwardRefExoticComponent<BaseItemProps & { children?: React.ReactNode; className?: string; style?: React.CSSProperties; htmlAttributes?: HtmlAttributes<"button">; /** * If true, the menu will be open. Otherwise, the menu will open and close * based on the user hovering the item. */ isMenuOpen?: boolean; } & React.RefAttributes<HTMLButtonElement>>; Divider: () => import("react/jsx-runtime").JSX.Element; ItemBadge: ({ number, type }: ItemBadgeProps) => import("react/jsx-runtime").JSX.Element; List: React.ForwardRefExoticComponent<SideNavListProps & React.RefAttributes<HTMLUListElement>>; NavItem: PolymorphicForwardRefExoticComponent<"button", NavItemProps>; }; export { SideNavigation };