Skip to main content

Components

Reusable UI components and patterns for the design system.

Buttons

Bootstrap's button classes cover variant, hierarchy, and size. Each choice should be deliberate — buttons communicate affordance and priority at a glance.

Hierarchy

There is exactly one .btn-primary per view. Standard actions use .btn-default (alias of .btn-outline-secondary).

  • Default action

    Use for all standard actions. In this system, .btn-default maps to .btn-outline-secondary.

  • Primary CTA

    Reserved for the single primary call to action per view.

  • Image-overlay CTA

    Reserved for specially created CTA components where the background is a darkened image.

  • Destructive action

    Use btn-danger-x (.btn-outline-danger.border-2) and pair it with .fa-solid.fa-exclamation.me-1. Do not use filled .btn-danger.

  • The .btn classes are designed for <button> elements, but they can also be used on <a> or <input> elements when needed.

  • When an <a> element with button styling triggers in-page functionality rather than navigation, add role="button" so assistive technologies announce the correct purpose.

Size

  • All standard UI contexts — forms, modals, cards, toolbars.

  • Dense UI where space is constrained — tables, inline actions, tight toolbars. Not for emphasis.

  • Primary CTA in a hero or empty state only — where the button is the focal point of the layout.

Unused

  • Not used in this system

    .btn-secondary ships with Bootstrap but is not used in this design system.

  • Active state in some elements

    .btn-info active styling is baked into tab and navigation components. Do not apply it directly to standalone buttons.

  • Do not use .btn-link. If the action navigates, use an <a> element.

Forms

Text Input

Checkboxes

Select

Radio Buttons


Cards

Card Title

This is a basic card with a title, text, and footer.

Learn More
Info Card

Card with an info border for active or interactive emphasis.

Header
With Header

Card with a separate header section.


Accordions

Note: When accordion labels act as section titles, use an appropriate heading level for each .accordion-header to preserve document structure.

This is the body content for the first accordion item.

This is the body content for the second accordion item.

This is the body content for the third accordion item.

Two-Column Accordion Layout

For larger collections of accordion items, use .accordion-two-column to create a responsive two-column layout at the md breakpoint. Wrap items in a .row, then wrap each .accordion-item inside a .col-md-6 div. Bootstrap's gutter provides horizontal gap (default 1.5rem), and custom row-gap: 0.5rem provides vertical gap.

Content for item 1.

Content for item 2.

Content for item 3.

Content for item 4.

Lists

List Group

  • Item 1
  • Item 2
  • Item 3

Tables

Column 1 Column 2 Column 3
Data 1 Data 2 Data 3
Data 4 Data 5 Data 6
Data 7 Data 8 Data 9

Icons (FontAwesome)

FontAwesome icons can be used in various sizes and styles:

Larger Icons


Badges & Pills

Badges

Primary (CTA) Info Secondary Success Danger

Pills

Primary CTA Pill Info Pill Secondary Pill Success Pill

Pagination