import React, { forwardRef } from "react"; import { BodyShort } from "../../typography/BodyShort"; import { cl } from "../../utils/helpers"; import { useToggleGroupContext } from "../ToggleGroup.context"; import { useToggleItem } from "./useToggleItem"; type BaseProps = Omit, "children"> & { /** * Value for state-handling. */ value: string; }; type ChildrenProps = { /** * @deprecated Use `label` and/or `icon` as replacement. */ children: React.ReactNode; label?: never; icon?: never; }; type LabelProps = { children?: never; /** * Item label. */ label: React.ReactNode; /** * Item Icon. */ icon?: React.ReactNode; }; type IconProps = { children?: never; /** * Item label. */ label?: React.ReactNode; /** * Item Icon. */ icon: React.ReactNode; }; export type ToggleGroupItemProps = BaseProps & (ChildrenProps | LabelProps | IconProps); const ToggleItem = forwardRef( ( { className, children, icon, label, value, onClick, onFocus, onKeyDown, ...rest }, forwardedRef, ) => { const itemCtx = useToggleItem( { value, onClick, onFocus, disabled: false, onKeyDown }, forwardedRef, ); const ctx = useToggleGroupContext(); return ( ); }, ); export default ToggleItem;