import * as React from 'react'; import { LinkBase } from './Link.base'; import { IStyle, ITheme } from '../../Styling'; import { IRefObject, IStyleFunctionOrObject } from '../../Utilities'; import { IKeytipProps } from '../../Keytip'; /** * {@docCategory Link} */ export interface ILink { /** Sets focus to the link. */ focus(): void; } /** * {@docCategory Link} */ export interface ILinkHTMLAttributes extends React.HTMLAttributes { type?: string; download?: any; href?: string; hrefLang?: string; media?: string; rel?: string; target?: string; autoFocus?: boolean; disabled?: boolean; form?: string; formAction?: string; formEncType?: string; formMethod?: string; formNoValidate?: boolean; formTarget?: string; name?: string; value?: string | string[] | number; [index: string]: any; } /** * {@docCategory Link} */ export interface ILinkProps extends ILinkHTMLAttributes { /** * Optional callback to access the ILink interface. Use this instead of ref for accessing * the public methods and properties of the component. */ componentRef?: IRefObject; /** * Whether the link is disabled */ disabled?: boolean; /** * Call to provide customized styling that will layer on top of the variant rules. */ styles?: IStyleFunctionOrObject; /** * Theme (provided through customization.) */ theme?: ITheme; /** * A component that should be used as the root element of the link returned from the Link component. */ as?: string | React.ComponentClass | React.FunctionComponent; /** * Optional keytip for this Link */ keytipProps?: IKeytipProps; /** * Whether the link is styled with an underline or not. * Should be used when the link is placed alongside other text content. */ underline?: boolean; } /** * {@docCategory Link} */ export interface ILinkStyleProps { className?: string; isButton?: boolean; isDisabled?: boolean; isUnderlined?: boolean; theme: ITheme; } /** * {@docCategory Link} */ export interface ILinkStyles { root: IStyle; }