import React, { forwardRef, ForwardRefExoticComponent } from "react"; import classNames from "classnames"; import { Box, BoxProps } from "../Box"; import { bem } from "../../utilities/bem"; import { ICON_STYLE_PREFIX, Icon, ICON_TYPE } from "../Icon"; import { STATUS_VARIANT } from "../../types"; import { Badge, BADGE_SIZE } from "../Badge"; const cn = "Reference"; export interface ReferenceProps { as?: any; disabled?: boolean; icon?: ICON_TYPE; iconPrefix?: ICON_STYLE_PREFIX; badgeVariant?: STATUS_VARIANT; badgeLabel?: string; /** * Used to disable interactive (i.e. hover) styles when the `Reference` * is not a link or button */ noLink?: boolean; [key: string]: any; } export type ReferenceWithReferenceGroup = ForwardRefExoticComponent & { Group: (props: BoxProps) => JSX.Element; }; const ReferenceGroup = ({ className, ...rest }: BoxProps) => ( ); export const Reference = forwardRef( ( { as: Component = "a", disabled, className, icon, iconPrefix, badgeVariant, badgeLabel, children, target, noLink, ...rest }, ref, ) => ( {icon && ( )} {children} {badgeLabel && ( {badgeLabel} )} ), ) as ReferenceWithReferenceGroup; Reference.Group = ReferenceGroup;