Skip to main content

Athena UI

Buttons

Button styles, icon buttons, grouped actions, and loading states.

New Page
Core Set

Action Hierarchy

Use one primary action per task area, then place secondary, neutral, and destructive actions after it.

Best Practice

Button Copy

  • Use verbs: Save, Export, Invite, Revoke.
  • Avoid vague labels such as OK when the action has risk.
  • Keep destructive actions visibly different and confirm them where needed.
Icon Buttons

Named Controls

Icon-only buttons need a clear accessible name because the icon is decorative to assistive technology.

States

Loading And Disabled

Use disabled states only for genuinely unavailable actions, and pair loading spinners with text.

Groups

Toolbars

Group related commands with a named toolbar so keyboard and screen reader users understand the set.

HTML
<section class="row g-4">
      <div class="col-xl-8">
        <article class="athena-card p-4 h-100">
          <span class="badge text-bg-primary mb-3">Core Set</span>
          <h2 class="h4">Action Hierarchy</h2>
          <p class="text-secondary">Use one primary action per task area, then place secondary, neutral, and destructive actions after it.</p>
          <div class="d-flex flex-wrap gap-2" aria-label="Button hierarchy examples">
            <button class="btn btn-primary" type="button">Save Changes</button>
            <button class="btn btn-outline-primary" type="button">Preview</button>
            <button class="btn btn-outline-secondary" type="button">Cancel</button>
            <button class="btn btn-danger" type="button">Delete Record</button>
          </div>
        </article>
      </div>
      <div class="col-xl-4">
        <article class="athena-card p-4 h-100">
          <span class="badge text-bg-success mb-3">Best Practice</span>
          <h2 class="h5">Button Copy</h2>
          <ul class="athena-check-list mb-0">
            <li><i class="bi bi-check2" aria-hidden="true"></i><span>Use verbs: Save, Export, Invite, Revoke.</span></li>
            <li><i class="bi bi-check2" aria-hidden="true"></i><span>Avoid vague labels such as OK when the action has risk.</span></li>
            <li><i class="bi bi-check2" aria-hidden="true"></i><span>Keep destructive actions visibly different and confirm them where needed.</span></li>
          </ul>
        </article>
      </div>
      <div class="col-lg-4">
        <article class="athena-card p-4 h-100">
          <span class="badge text-bg-info mb-3">Icon Buttons</span>
          <h2 class="h5">Named Controls</h2>
          <p class="text-secondary">Icon-only buttons need a clear accessible name because the icon is decorative to assistive technology.</p>
          <div class="d-flex flex-wrap gap-2" aria-label="Icon button examples">
            <button class="btn btn-icon btn-outline-primary" type="button" aria-label="Edit record"><i class="bi bi-pencil" aria-hidden="true"></i></button>
            <button class="btn btn-icon btn-outline-secondary" type="button" aria-label="Duplicate record"><i class="bi bi-copy" aria-hidden="true"></i></button>
            <button class="btn btn-icon btn-outline-danger" type="button" aria-label="Delete record"><i class="bi bi-trash" aria-hidden="true"></i></button>
          </div>
        </article>
      </div>
      <div class="col-lg-4">
        <article class="athena-card p-4 h-100">
          <span class="badge text-bg-warning mb-3">States</span>
          <h2 class="h5">Loading And Disabled</h2>
          <p class="text-secondary">Use disabled states only for genuinely unavailable actions, and pair loading spinners with text.</p>
          <div class="d-grid gap-2">
            <button class="btn btn-primary" type="button" disabled><span class="spinner-border spinner-border-sm me-2" aria-hidden="true"></span>Saving</button>
            <button class="btn btn-outline-secondary" type="button" disabled aria-disabled="true">Unavailable Until Complete</button>
          </div>
        </article>
      </div>
      <div class="col-lg-4">
        <article class="athena-card p-4 h-100">
          <span class="badge text-bg-secondary mb-3">Groups</span>
          <h2 class="h5">Toolbars</h2>
          <p class="text-secondary">Group related commands with a named toolbar so keyboard and screen reader users understand the set.</p>
          <div class="btn-toolbar gap-2" role="toolbar" aria-label="Record actions">
            <div class="btn-group" role="group" aria-label="Edit actions">
              <button class="btn btn-outline-secondary" type="button">Undo</button>
              <button class="btn btn-outline-secondary" type="button">Redo</button>
            </div>
            <div class="btn-group" role="group" aria-label="Publish actions">
              <button class="btn btn-primary" type="button">Publish</button>
            </div>
          </div>
        </article>
      </div>
    </section>