UNPKG

@neo4j-ndl/react

Version:

React implementation of Neo4j Design System

55 lines (54 loc) 2.19 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 React from 'react'; import { type PolymorphicForwardRefExoticComponent } from '../_common/types'; type SegmentedControlID = string | number; export interface SegmentedControlProps<T extends SegmentedControlID> { className?: string; /** Size of the selector */ size?: 'small' | 'large'; /** If selector items will include only icons (makes controls rectangular) */ hasOnlyIcons?: boolean; /** * onChange function is more generic to support union type of strings as input * to help useState in components that uses Switch group with type-safety */ onChange: (e: T) => void | ((e: React.SetStateAction<T>) => void); /** Currently selected option */ selected: T; children: React.ReactNode | string; /** If the component is in a floating state*/ isFloating?: boolean; } type SegmentedControlItemProps = { className?: string; children?: React.ReactNode; value: string; }; declare const SegmentedControl: (<T extends SegmentedControlID, U extends React.ElementType = "div">(props: SegmentedControlProps<T> & { as?: U | undefined; htmlAttributes?: import("../_common/types").HtmlAttributes<U> | undefined; className?: string; style?: React.CSSProperties; } & React.RefAttributes<unknown>) => React.ReactElement | null) & { Item: PolymorphicForwardRefExoticComponent<"button", SegmentedControlItemProps>; }; export { SegmentedControl };