Skip to content

Button

Primary action component for the DGA design system.

Source: src/styles/components/button.scss
Demo: index.html (Buttons section)
JavaScript required: No


Overview

Buttons use the base class dga-btn plus a variant and optional size modifier.

html
<button class="dga-btn dga-btn-primary dga-btn-md">Primary action</button>

Preview


Base class

ClassRequired
dga-btnYes

Always use a <button> element (or <a> styled as button for navigation).


Variants

ClassUse case
dga-btn-primaryMain action (Saudi green)
dga-btn-primary-outlineSecondary emphasis, outline
dga-btn-neutralDark neutral action
dga-btn-secondary-solidSecondary filled
dga-btn-secondary-outlineSecondary outline
dga-btn-subtleLow emphasis
dga-btn-transparentMinimal, on colored backgrounds
dga-btn-ghostGhost style (green text)
dga-btn-destructiveDelete / dangerous actions
dga-btn-destructive-outlineDestructive outline
dga-btn-successSuccess action
dga-btn-warningWarning action
dga-btn-infoInfo action
html
<div class="dga-d-flex dga-flex-wrap dga-gap-3 dga-align-items-center">
  <button class="dga-btn dga-btn-primary dga-btn-md">Primary</button>
  <button class="dga-btn dga-btn-primary-outline dga-btn-md">Primary outline</button>
  <button class="dga-btn dga-btn-neutral dga-btn-md">Neutral</button>
  <button class="dga-btn dga-btn-secondary-solid dga-btn-md">Secondary solid</button>
  <button class="dga-btn dga-btn-secondary-outline dga-btn-md">Secondary outline</button>
  <button class="dga-btn dga-btn-subtle dga-btn-md">Subtle</button>
  <button class="dga-btn dga-btn-ghost dga-btn-md">Ghost</button>
  <button class="dga-btn dga-btn-destructive dga-btn-md">Destructive</button>
  <button class="dga-btn dga-btn-destructive-outline dga-btn-md">Destructive outline</button>
  <button class="dga-btn dga-btn-success dga-btn-md">Success</button>
  <button class="dga-btn dga-btn-warning dga-btn-md">Warning</button>
  <button class="dga-btn dga-btn-info dga-btn-md">Info</button>
</div>

Preview


Sizes

ClassHeightFont size
dga-btn-sm24px12px
dga-btn-md32px14px (default)
dga-btn-lg40px16px

If no size class is set, medium (md) applies.

html
<div class="dga-d-flex dga-gap-3 dga-align-items-center">
  <button class="dga-btn dga-btn-primary dga-btn-sm">Small</button>
  <button class="dga-btn dga-btn-primary dga-btn-md">Medium</button>
  <button class="dga-btn dga-btn-primary dga-btn-lg">Large</button>
</div>

Preview


Icons

ClassPurpose
dga-btn__iconIcon inside button
dga-btn-icon-onlyIcon-only button (square)
dga-btn-icon-leftIcon on left (LTR)
dga-btn-icon-rightIcon on right (LTR)
html
<!-- Text + icon -->
<button class="dga-btn dga-btn-primary dga-btn-md">
  Primary action
  <img class="dga-btn__icon" src="arrow.svg" alt="" />
</button>

<!-- Icon only -->
<button class="dga-btn dga-btn-primary dga-btn-md dga-btn-icon-only" aria-label="Next">
  <img class="dga-btn__icon" src="arrow.svg" alt="" />
</button>

Always provide aria-label on icon-only buttons.


Modifiers

ClassEffect
dga-btn-blockFull width
dga-btn-pillPill border radius
dga-btn-disabledDisabled style
disabled attributeNative disabled state
html
<div class="dga-d-flex dga-flex-col dga-gap-3">
  <button class="dga-btn dga-btn-primary dga-btn-md dga-btn-block">Full width</button>
  <button class="dga-btn dga-btn-primary dga-btn-md dga-btn-pill">Pill button</button>
  <button class="dga-btn dga-btn-primary dga-btn-md" disabled>Disabled</button>
</div>

Preview


Button groups

html
<div class="dga-btn-group">
  <button class="dga-btn dga-btn-secondary-outline dga-btn-md">Left</button>
  <button class="dga-btn dga-btn-secondary-outline dga-btn-md">Right</button>
</div>

Preview


Full example

html
<div class="dga-d-flex dga-flex-col dga-gap-3 dga-align-items-start">
  <button class="dga-btn dga-btn-primary dga-btn-md">Primary action</button>
  <button class="dga-btn dga-btn-neutral dga-btn-md">Neutral</button>
  <button class="dga-btn dga-btn-subtle dga-btn-md">Subtle action</button>
</div>

Preview


Accessibility

  • Use <button type="button"> for actions, type="submit" for forms.
  • Icon-only buttons need aria-label.
  • Disabled buttons: disabled attribute or dga-btn-disabled.
  • Focus styles are built in (:focus-visible).

Do / Don't

DoDon't
dga-btn dga-btn-primary dga-btn-mddga-btn-large (invalid — use dga-btn-lg)
<button class="dga-btn"><div class="dga-btn">
aria-label on icon-onlyIcon-only without label

MIT Licensed — Wael Alghamdi