@massds/mayflower-react
Version:
React versions of Mayflower design system UI components
43 lines (42 loc) • 1.79 kB
TypeScript
/**
* ButtonWithIcon module.
* @module @massds/mayflower-react/ButtonWithIcon
* @requires module:@massds/mayflower-assets/scss/01-atoms/button-with-icon
* @requires module:@massds/mayflower-assets/scss/01-atoms/button-search
* @requires module:@massds/mayflower-assets/scss/01-atoms/svg-icons
* @requires module:@massds/mayflower-assets/scss/01-atoms/svg-loc-icons
*/
import React from 'react';
export interface ButtonWithIconProps {
/** id for the button */
id?: string;
/** button or link content rendered in a span */
children?: React.ReactElement | React.ReactNode;
/** When populated with a url, this component renders a <a> vs a <button> */
href?: string;
onClick?(...args: unknown[]): unknown;
setButtonRef?: ((...args: unknown[]) => unknown) | {
current?: React.ReactElement;
};
text?: string;
/** HTML `<button>` 'type' attribute */
type?: "submit" | "reset" | "button" | "";
/** Create a smaller button */
size?: "" | "small" | "large";
classes?: string[];
icon?: React.ReactElement;
expanded?: boolean;
capitalized?: boolean;
/** The aria-label property is used to provide the label to any assistive
* technologies. This is useful if the text value is not descriptive of the
* button's functionality. */
'aria-label'?: string;
/** Themes correspond to site color scheme i.e. sass variables */
theme?: "" | "c-primary" | "c-highlight" | "c-gray-dark" | "c-black" | "c-white";
/** Button usage */
usage?: "" | "secondary" | "tertiary" | "quaternary" | "quaternary-simple" | "alert";
/** Whether the button has a popup or not */
'aria-haspopup'?: boolean;
}
declare const ButtonWithIcon: (props: ButtonWithIconProps) => any;
export default ButtonWithIcon;