Theme

npm_versionnpm Paragon package page

This component utilizes Button from React-Bootstrap and extends it with an ability to add icons before and after button label, see below for usage example.
See React-Bootstrap for additional documentation.

Core Buttons

Any Paragon component or export may be added to the code example.

Core Buttons (Inverse Pallete)

Any Paragon component or export may be added to the code example.

Utility Buttons

Any Paragon component or export may be added to the code example.

Size

Any Paragon component or export may be added to the code example.

When to use the inline size

Use inline size buttons for when a button sits with a line of text.

Any Paragon component or export may be added to the code example.

Block Buttons

Any Paragon component or export may be added to the code example.

Disabled

Any Paragon component or export may be added to the code example.

With empty href

For link to be disabled, it must have href defined with some value.

Any Paragon component or export may be added to the code example.

With Icons before or after

Any Paragon component or export may be added to the code example.

Stateful buttons

To implement loading state using a Button component, the StatefulButton component is available for use.
This specialized component is designed to seamlessly manage and display boot states, providing a more efficient and user-friendly experience.


Button.Deprecated

(Deprecated) basic usage

Any Paragon component or export may be added to the code example.

(Deprecated) color variants

Any Paragon component or export may be added to the code example.

(Deprecated) outline variants

Any Paragon component or export may be added to the code example.

(Deprecated) inverse variants

Any Paragon component or export may be added to the code example.

Any Paragon component or export may be added to the code example.

Theme Variables (SCSS)#

$btn-padding-y: $input-btn-padding-y !default;
$btn-padding-x: $input-btn-padding-x !default;
$btn-font-family: $input-btn-font-family !default;
$btn-font-size: $input-btn-font-size !default;
$btn-line-height: $input-btn-line-height !default;
$btn-padding-y-sm: $input-btn-padding-y-sm !default;
$btn-padding-x-sm: $input-btn-padding-x-sm !default;
$btn-font-size-sm: $input-btn-font-size-sm !default;
$btn-line-height-sm: $input-btn-line-height-sm !default;
$btn-padding-y-lg: $input-btn-padding-y-lg !default;
$btn-padding-x-lg: $input-btn-padding-x-lg !default;
$btn-font-size-lg: $input-btn-font-size-lg !default;
$btn-line-height-lg: $input-btn-line-height-lg !default;
$btn-border-width: $input-btn-border-width !default;
$btn-font-weight: $font-weight-normal !default;
$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;
$btn-focus-width: 2px !default;
$btn-focus-gap: $btn-focus-width !default;
$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;
$btn-disabled-opacity: .65 !default;
$btn-active-box-shadow: none;
$btn-tertiary-color: $gray-700 !default;
$btn-tertiary-bg: transparent !default;
$btn-tertiary-hover-bg: $light-500 !default;
$btn-tertiary-active-bg: $light-500 !default;
$btn-inverse-tertiary-color: $white !default;
$btn-inverse-tertiary-bg: transparent !default;
$btn-inverse-tertiary-hover-bg: rgba(255, 255, 255, .1) !default;
$btn-inverse-tertiary-active-bg: rgba(255, 255, 255, .1) !default;
$btn-link-disabled-color: theme-color("gray", "light-text") !default;
$btn-block-spacing-y: .5rem !default;
$btn-border-radius: $border-radius !default;
$btn-border-radius-lg: $border-radius-lg !default;
$btn-border-radius-sm: $border-radius-sm !default;
$btn-transition: null;
$btn-focus-border-gap: $btn-focus-width + $btn-focus-gap !default;
$btn-focus-distance-to-border: $btn-focus-border-gap + $btn-border-width !default;
$btn-focus-border-radius: calc(#{$btn-border-radius} + #{$btn-focus-border-gap}) !default;
$btn-focus-border-radius-lg: $btn-focus-border-radius !default;
$btn-focus-border-radius-sm: $btn-border-radius !default;

Props API#

Button Props API

This is a pass through component from React-Bootstrap, see original props documentation here.

  • className string

    Specifies class name to apply to the button

  • disabled bool

    Disables the Button, preventing mouse events, even if the underlying component is an <a> element

    Defaultfalse
  • children node

    Specifies the text that is displayed within the button.

  • onClick func

    A function that would specify what the button should do when the onClick event is triggered. For example, the button could launch a Modal. The default is an empty function.

  • onKeyDown func

    A function that would specify what the button should do when the onKeyDown event is triggered. For example, this could handle using the Escape key to trigger the button's action. The default is an empty function.

  • type string

    Used to set the type attribute on the button tag. The default type is button.

  • variant string

    Specifies variant to use. Can be on of the base variants: primary, secondary, success, danger, warning, info, dark, light, link

    as well as one of the customized variants (= base variant prefixed with inverse-, outline- or inverse-outline-)

  • iconBefore PropTypes.elementType as Requireable<React.ComponentType>

    An icon component to render. Example import of a Paragon icon component: import { Check } from '@openedx/paragon/icons';

  • iconAfter PropTypes.elementType as Requireable<React.ComponentType>

    An icon component to render. Example import of a Paragon icon component: import { Check } from '@openedx/paragon/icons';

Usage Insights#

Button

Project NameParagon VersionInstance Count
edx-ora221.13.12
edx-platform2.6.440
frontend-app-account22.9.021
frontend-app-admin-portal21.13.1161
frontend-app-authn22.10.05
frontend-app-communications22.7.06
frontend-app-course-authoring22.8.1205
teams22.8.13
frontend-app-discussions22.7.024
frontend-app-ecommerce20.46.33
frontend-app-enterprise-public-catalog21.13.17
frontend-app-gradebook22.8.19
frontend-app-learner-dashboard22.9.022
frontend-app-learner-portal-enterprise21.13.168
frontend-app-learner-portal-programs21.13.12
frontend-app-learner-record22.10.012
frontend-app-learning22.8.145
frontend-app-library-authoring21.11.330
frontend-app-ora-grading21.11.317
frontend-app-payment22.9.03
frontend-app-profile22.10.03
frontend-app-publisher21.13.11
frontend-app-support-tools21.13.148
frontend-component-header-edx21.13.16
frontend-component-header22.10.02
catalog-search21.13.15
frontend-learner-portal-base12.2.01
frontend-lib-special-exams22.7.023
frontend-platform22.8.11
prospectus20.46.235
studio-frontend3.4.814