Various button styles and sizes for actions and navigation.

Button Variants

Button Sizes

Theme Color Buttons

Theme Color Outline Buttons

Outline Buttons

Button States

Block Buttons

Button Groups - Basic

Horizontal (default)

Vertical

No-Wrap (prevents line breaks)

Button Groups - Gap Sizes

Semantic Gap Classes

gap-xs (4px)

gap-sm (8px)

gap-md (12px)

gap-base (16px)

gap-lg (24px)

gap-xl (32px)

Vertical Alignment

Use semantic gap classes (gap-sm, gap-md, gap-lg, gap-xl) to control vertical spacing between buttons.

Start gap-sm

Center gap-md

End gap-lg

Stretch gap-xl

Responsive Direction

Horizontal → Vertical at md (768px)

Resize window to see change

Vertical → Horizontal at lg (992px)

Starts vertical, becomes horizontal on large screens

Class Reference

  • --sm-vertical / --sm-horizontal at 576px
  • --md-vertical / --md-horizontal at 768px
  • --lg-vertical / --lg-horizontal at 992px
  • --xl-vertical / --xl-horizontal at 1200px

Split Buttons

Primary action + dropdown toggle combined into a single control

Sizes

Upward Placement

Use data-placement="top-end" to open the menu upward. Floating UI will auto-flip if there's not enough space.

Custom Icons (no rotation)

Omit pa-btn-split__chevron from the icon for static icons that don't rotate on open.

Items with Actions

Menu items can include inline action buttons for quick operations like delete.

Remove Alice Cooper?

Remove Bob Dylan?

Remove Charlie Parker?

Export the whole dashboard? placement: bottom

Roll back the database to the previous snapshot? This cannot be undone. placement: start

Send invitations to all selected members? placement: end

Overflow Toolbar (.pa-overflow)

A .pa-overflow row auto-appends a dedicated [⋮] "more" trigger; when the row runs out of horizontal space, overflowing children collapse into that menu, and pop back out as room returns. A .pa-btn-split child collapses as an atomic labeled group — its primary action and its own menu items stay together, nothing foreign mixes in.

Drag the resize handle in the bottom-right of the box below to shrink the bar. Lowest data-pa-actions-priority (default 0) drops first; ties broken by DOM order. Pin "Publish" with data-pa-actions-priority="10", and keep the split button visible longest with data-pa-actions-priority="20". Drag all the way in and even the split button collapses into the [⋮] menu — it lands as an atomic RUN group (its primary plus its own options), not scattered loose.

Drop direction

Default data-pa-actions-overflow-from="end" collapses the rightmost child first. Set data-pa-actions-overflow-from="start" on the .pa-overflow container to collapse the leftmost child first instead.

In card headers

In a card header, use the card-flavored alias .pa-card__actions--overflow on the .pa-card__actions slot itself — the buttons and split button become its direct children (no inner wrapper). It auto-inits like a standalone .pa-overflow, appending its own [⋮] more-menu, and the header title yields before the actions collapse. Laid out three-up (pc-col-lg-1-3) so each card is already narrow — resize the browser window to watch each toolbar consume and spit out action buttons live, each collapsing at its own breakpoint.

Quarterly Performance & Customer Engagement Analytics Dashboard

Card body. The actions bar in the header carries the overflow behavior — narrow the window to watch Configure, Filter, and Refresh fold into the dedicated [⋮] more-menu in that order (lowest priority first; Export is pinned, and the Add-widget split button survives longest).

Database Migration Tasks — Production Environment Schema Updates

No pinning here — siblings collapse in default order (rightmost first: Rollback → Backup → Validate). The Deploy split button survives longest, dropping into the [⋮] more-menu as an atomic labeled group.

Team Members & Permissions Management — Enterprise Console

Six siblings here — Invite is pinned with priority 5, so it survives the first wave of collapses but still folds away before Add user. The title yields first (truncating to a min-width floor) so the action bar keeps its buttons; only when the header is genuinely tiny does the split button fold its own primary action into the [⋮] more-menu as a labeled group, leaving just the toggle.

How it works

  • .pa-overflow is the row; it provides min-width: 0; overflow: hidden; flex-shrink: 1. Works standalone in any flex context; in a card header use the alias .pa-card__actions--overflow on the actions slot itself. Both auto-init — no JS wiring needed.
  • overflow.js appends a dedicated [⋮] "more" trigger and, on resize, walks the lowest-priority children (data-pa-actions-priority, default 0) into that trigger's menu until the row fits; higher-priority children survive longer.
  • A .pa-btn-split child collapses atomically — its primary action and its own menu items drop into the more-menu together under a section label, nothing foreign mixes in. Give it a high priority (e.g. 20) so it stays visible longest.
  • Plain items get their class swapped to pa-btn-split__item while collapsed; the original classList is stashed on the element and restored on the way back out.
  • Drop direction is controlled by data-pa-actions-overflow-from on the container: "end" (default — rightmost first) or "start" (leftmost first).
  • Click handlers survive — the DOM node moves but is preserved.

Text Truncation

Give the button a fixed width (.wr-*) and put .text-truncate on an inner <span> to truncate long text with ellipsis

Buttons with Text Icons

Buttons with icons are automatically left-aligned with fixed-width icon container:

Icon Only Buttons

Icon-only button sizes (XS → XL):

Various colors - default size:

Compact (XS) - perfect for table actions:

With ripple and loading states (click to test):

Fixed Width Buttons

Use minwr-* + maxwr-* to constrain width. Add text-truncate on an inner span for ellipsis:

Different Widths (minwr-8 to minwr-20)

Button Text Alignment

Control text alignment within fixed-width buttons. Note the varied text lengths to show the effect:

Inline Start Aligned

Inline End Aligned

Center Aligned

Justified

Font Awesome Icons

Font Awesome icons with varied text lengths to show alignment:

Inline Start Aligned

Inline End Aligned

Center Aligned

Justified

Ripple Effect Buttons

Click buttons to see ripple animation effect:

Loading State Buttons

Click buttons to simulate loading states:

Usage Guide

Ripple Effect

Add pa-btn--ripple class and data-ripple attribute to any button for click animation feedback.

Loading States

Use pa-btn--loading class to show spinner. JavaScript can toggle this class during async operations.

Best Practices

  • Fast Sites: Always show loading feedback, even for quick operations (200-500ms minimum)
  • User Confidence: Ripple effects confirm button clicks were registered
  • Prevent Double-clicks: Disable buttons during loading to prevent duplicate submissions
  • Accessibility: Loading states are announced to screen readers

CSS Classes Reference

Button Base

  • pa-btn - Base button styling

Button Variants (Colors)

  • pa-btn--primary - Primary accent color
  • pa-btn--secondary - Secondary/neutral color
  • pa-btn--success - Success/green color
  • pa-btn--warning - Warning/yellow color
  • pa-btn--danger - Danger/red color
  • pa-btn--info - Info/blue color
  • pa-btn--light - Light background
  • pa-btn--dark - Dark background

Outline Variants

  • pa-btn--outline-primary - Outline primary
  • pa-btn--outline-secondary - Outline secondary
  • pa-btn--outline-success - Outline success
  • pa-btn--outline-warning - Outline warning
  • pa-btn--outline-danger - Outline danger
  • pa-btn--outline-info - Outline info
  • pa-btn--color-{1-9} - Theme color slots
  • pa-btn--outline-color-{1-9} - Outline theme color slots

Button Sizes

  • pa-btn--xs - Extra small button
  • pa-btn--sm - Small button
  • pa-btn--lg - Large button
  • pa-btn--xl - Extra large button

Button States & Modifiers

  • pa-btn--loading - Loading state with spinner
  • pa-btn--ripple - Enable ripple click effect
  • pa-btn--block - Full width block button
  • pa-btn--icon-only - Square icon-only button

Content Alignment

Every button centers its content by default (one model for text-only, icon+label, and icon-only alike). These modifiers are the switch to change it:

  • pa-btn--align-start - Inline-start align content (RTL: right)
  • pa-btn--align-end - Inline-end align content (RTL: left)
  • pa-btn--align-center - Center-align content (the default; explicit)
  • pa-btn--align-justify - Space-between content

Button Elements

  • pa-btn__icon - Icon container (natural width; spaced from the label by the button's gap, so it sits at the padding edge like a text label)
  • pa-btn__label - Text wrapper (used by --align-center to flex-fill)
  • pa-btn__spinner - Loading spinner element

Button Groups

  • pa-btn-group - Container for grouped buttons
  • pa-btn-group--vertical - Vertical stacking
  • pa-btn-group--nowrap - Prevent wrapping

Button Group Alignment (vertical only)

  • pa-btn-group--center - Center-align buttons
  • pa-btn-group--end - End-align buttons
  • pa-btn-group--stretch - Full width buttons

Responsive Button Groups

  • pa-btn-group--sm-vertical - Vertical at 576px+
  • pa-btn-group--sm-horizontal - Horizontal at 576px+
  • pa-btn-group--md-vertical - Vertical at 768px+
  • pa-btn-group--md-horizontal - Horizontal at 768px+
  • pa-btn-group--lg-vertical - Vertical at 992px+
  • pa-btn-group--lg-horizontal - Horizontal at 992px+
  • pa-btn-group--xl-vertical - Vertical at 1200px+
  • pa-btn-group--xl-horizontal - Horizontal at 1200px+

Split Buttons

  • pa-btn-split - Container for split button
  • pa-btn-split__toggle - Toggle button (fixed square width)
  • pa-btn-split__chevron - On the icon to opt-in to 180deg rotation on open (omit for static icons)
  • pa-btn-split__menu - Dropdown menu panel (outer, overflow hidden)
  • pa-btn-split__menu-inner - Inner wrapper for menu items (padding, flex layout)
  • pa-btn-split__menu--open - Show dropdown menu
  • pa-btn-split__item - Menu item button
  • pa-btn-split__item--danger - Destructive action styling
  • pa-btn-split__item-icon - Leading icon inside a menu item (fixed column so labels align)
  • pa-btn-split__item-row - Menu row wrapping an item + a trailing action button (e.g. delete)
  • data-placement="top-end" - Open menu upward (on container)

Overflow Toolbar

  • pa-overflow - Progressive-collapse flex row; auto-appends a [⋮] "more" trigger and walks overflowing children into it
  • pa-card__actions--overflow - Card-header alias of pa-overflow on the pa-card__actions slot
  • pa-overflow__trigger - The auto-created [⋮] button (retheming hook; ships as a standard pa-btn--secondary)
  • data-pa-overflow-trigger="ghost" - Make the trigger chromeless instead of bordered (on the container)
  • data-pa-actions-priority - Drop order per child (default 0; higher survives longer)
  • data-pa-actions-overflow-from - end (default, rightmost first) or start (leftmost first)
  • data-pa-overflow-label - Override the section label for a collapsed split-button group
  • pa-btn-split--in-overflow / pa-btn-split__group-label - Applied by overflow.js when a split button collapses as an atomic labeled group (not authored by hand)
Type / for commands, : to search a category, or just start typing

Settings

Press Ctrl+K to preview the palette.
Body text size. All elements scale proportionally.
👤

John Doe

Administrator
  • 📊 Dashboard
  • 📝 Forms
  • 📋 Tables
  • 📊 Data Grid