{{#component buttonComponentName
  class=class
  url=url
  external=external
  primary=primary
  destructive=destructive
  disabled=isDisabled
  loading=loading
  size=size
  outline=outline
  fullWidth=fullWidth
  submit=submit
  plain=plain
  accessibilityLabel=accessibilityLabel
  ariaControls=ariaControls
  ariaExpanded=ariaExpandedValue
  iconOnly=iconOnly
  onClick=onClick
  onFocus=onFocus
  onBlur=onBlur
  mouseUp=handleMouseUpByBlurring
}}
  <span class="Polaris-Button__Content">
    {{#if loading}}
      <span class="Polaris-Button__Spinner">
        {{polaris-spinner
          size="small"
          accessibilityLabel="Loading"
          color=spinnerColor
        }}
      </span>
    {{/if}}

    {{#if icon}}
      <span class="Polaris-Button__Icon">
        {{polaris-icon source=iconSource}}
      </span>
    {{/if}}

    {{!-- TODO: prevent rendering empty span here if block is empty. --}}
    {{#if (or hasBlock text)}}
      <span>
        {{#if hasBlock}}
          {{yield}}
        {{else}}
          {{text}}
        {{/if}}
      </span>
    {{/if}}

    {{#if disclosure}}
      <span class="Polaris-Button__Icon">
        {{polaris-icon source=disclosureIconSource}}
      </span>
    {{/if}}
  </span>
{{/component}}
