IconButton
Basic Usage with Paragon Icon
Any Paragon component or export may be added to the code example.
() => {const variants = ["brand", "primary", "secondary", "success", "warning", "danger", "light", "dark", "black"];return (<div className="d-flex flex-wrap">{variants.map((variant) => (<IconButton key={variant} src={Close} iconAs={Icon} alt="Close" onClick={() => {}} variant={variant} className="mr-2" />))}</div>);}
With tooltips
Any Paragon component or export may be added to the code example.
() => {const variants = ["brand", "primary", "secondary", "success", "warning", "danger", "light", "dark", "black"];return (<div className="d-flex">{variants.map((variant) => (<IconButtonWithTooltipkey={variant}tooltipPlacement='top'tooltipContent={<div>a nice tooltip of {variant}!</div>}src={Close}iconAs={Icon}alt="Close"onClick={() => {}}variant={variant}className="mr-2"/>))}</div>);}
Active State
Any Paragon component or export may be added to the code example.
() => {const variants = ["brand", "primary", "secondary", "success", "warning", "danger", "light", "dark", "black"];return (<div className="d-flex">{variants.map((variant) => (<IconButtonisActivekey={variant}src={Close}iconAs={Icon}alt="Close"onClick={() => {}}variant={variant}className="mr-2 mb-2"/>))}</div>);}
isActive=true with inverted colors
Any Paragon component or export may be added to the code example.
() => {const variants = ["brand", "primary", "secondary", "success", "warning", "danger", "light", "dark", "black"];return (<div className="d-flex">{variants.map((variant) => (<IconButtoninvertColorsisActivekey={variant}src={Close}iconAs={Icon}alt="Close"onClick={() => {}}variant={variant}className="mr-2"/>))}</div>);}
Inverted Colors
Any Paragon component or export may be added to the code example.
<div className="d-flex"><div className="p-1 bg-brand"><IconButtonsrc={MenuIcon}iconAs={Icon}alt="Menu"onClick={() => console.log("You clicked the menu button")}variant="brand"invertColors/></div><div className="p-1 bg-primary"><IconButtonsrc={MenuIcon}iconAs={Icon}alt="Menu"onClick={() => console.log("You clicked the menu button")}variant="primary"invertColors/></div><div className="p-1 bg-secondary"><IconButtonsrc={MenuIcon}iconAs={Icon}alt="Menu"onClick={() => console.log("You clicked the menu button")}variant="secondary"invertColors/></div><div className="p-1 bg-success"><IconButtonsrc={MenuIcon}iconAs={Icon}alt="Menu"onClick={() => console.log("You clicked the menu button")}variant="success"invertColors/></div><div className="p-1 bg-warning"><IconButtonsrc={MenuIcon}iconAs={Icon}alt="Menu"onClick={() => console.log("You clicked the menu button")}variant="warning"invertColors/></div><div className="p-1 bg-danger"><IconButtonsrc={MenuIcon}iconAs={Icon}alt="Menu"onClick={() => console.log("You clicked the menu button")}variant="danger"invertColors/></div><div className="p-1 bg-light"><IconButtonsrc={MenuIcon}iconAs={Icon}alt="Menu"onClick={() => console.log("You clicked the menu button")}variant="light"invertColors/></div><div className="p-1" style={{ background: "black" }}><IconButtonsrc={MenuIcon}iconAs={Icon}alt="Menu"onClick={() => console.log("You clicked the menu button")}variant="black"invertColors/></div></div>
Sizes
Any Paragon component or export may be added to the code example.
<><div className="mb-1">Small<IconButtonsrc={MenuIcon}iconAs={Icon}alt="Menu"onClick={() => {}}variant="primary"size="sm"/></div><div className="mb-1">Inline:<IconButtonsrc={MenuIcon}iconAs={Icon}alt="Menu"onClick={() => {}}variant="primary"size="inline"/></div><div className="x-small mb-1">An <strong>inline</strong> Icon Button inherits font size!For example, applying className="x-small" will make the Icon Button look like this:<IconButtonsrc={Favorite}iconAs={Icon}alt="Favorite"onClick={() => {}}variant="primary"size="inline"/>. The Icon Button will also wrap with the text as long as it is not a direct child of a flex box.</div></>
Props API#
- className
string
A custom class name.
- iconAs
elementType
Component that renders the icon, currently defaults to
FontAwesomeIcon
, but is going to be deprecated soon, please use Paragon's icons instead. - src
element
|func
DefaultnullAn icon component to render. Example import of a Paragon icon component:
import { Check } from '@edx/paragon/dist/icon';
- alt
string
RequiredAlt text for your icon. For best practice, avoid using alt text to describe the image in the
IconButton
. Instead, we recommend describing the function of the button. - invertColors
bool
DefaultfalseChanges icon styles for dark background
- icon
shape
{prefix:string
,iconName:string
,icon:}array
,Accepts a React fontawesome icon. https://fontawesome.com/how-to-use/on-the-web/using-with/react
- iconClassNames
string
Extra class names that will be added to the icon
- onClick
func
Default() => {}Click handler for the button
- variant
enum
'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'light' | 'dark' | 'black' | 'brand'Default'primary'Type of button (uses Bootstrap options)
- size
enum
'sm' | 'md' | 'inline'Default'md'size of button to render
- isActive
bool
Defaultfalsewhether to show the
IconButton
in an active state, whose styling is distinct from default state
- tooltipPlacement
string
Default'top'tooltip placement can be top, left, right etc, per https://popper.js.org/docs/v2/constructors/#options
- tooltipContent
node
Requiredany valid JSX or text to be rendered as tooltip contents
- variant
enum
'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'light' | 'dark' | 'black' | 'brand'Default'primary'Type of button (uses Bootstrap options)
- invertColors
bool
DefaultfalseChanges icon styles for dark background
Usage Insights#
IconButton
Project Name | Paragon Version | Instance Count | |
---|---|---|---|
frontend-app-admin-portal | 20.26.3 | 8 | |
frontend-app-authn | 20.36.2 | 4 | |
frontend-app-communications | 20.30.1 | 3 | |
frontend-app-course-authoring | 20.32.0 | 5 | |
frontend-app-discussions | 20.15.0 | 11 | |
frontend-app-gradebook | 19.25.4 | 1 | |
frontend-app-learner-dashboard | 20.32.0 | 3 | |
frontend-app-learner-portal-enterprise | 20.36.0 | 1 | |
frontend-app-learner-record | 20.32.0 | 1 | |
frontend-app-learning | 20.28.4 | 5 | |
frontend-app-library-authoring | 20.30.1 | 3 | |
frontend-app-ora-grading | 20.30.0 | 5 | |
frontend-app-profile | 20.32.0 | 1 | |
frontend-lib-content-components | 20.34.0 | 16 | |
prospectus | 20.32.3 | 6 |
IconButtonWithTooltip
Project Name | Paragon Version | Instance Count | |
---|---|---|---|
frontend-app-support-tools | 20.26.0 | 1 | |
frontend-lib-content-components | 20.34.0 | 5 |