Button
Buttons are interactive elements that trigger actions or events when activated by users. Our button system provides six base button types designed for different use cases and interaction patterns.
Main Button
Section titled “Main Button”The main button component with three visual variants for different emphasis levels.
<button class="tng-button">Button</button><a class="tng-button" href="#">Button</a>Schemes
Section titled “Schemes”The default scheme is primary.
<button class="tng-button is-primary">Primary</button><button class="tng-button is-secondary">Secondary</button><button class="tng-button is-tertiary">Tertiary</button><button class="tng-button is-tertiary is-ghost"> Tertiary Ghost</button>The default size is lg.
<button class="tng-button is-sm">Small</button><button class="tng-button is-md">Medium</button><button class="tng-button is-lg">Large</button>States
Section titled “States”<button class="tng-button is-primary" disabled>Primary</button><button class="tng-button is-secondary" disabled>Secondary</button><button class="tng-button is-tertiary" disabled>Tertiary</button><button class="tng-button is-tertiary is-ghost" disabled> Tertiary Ghost</button><button class="tng-button is-primary"> <i class="tng-icon icon-download" aria-hidden="true"></i> <span>Download</span></button><button class="tng-button is-secondary"> <span>Save</span> <i class="tng-icon icon-bookmark" aria-hidden="true"></i></button><button class="tng-button is-tertiary"> <i class="tng-icon icon-external-link" aria-hidden="true"></i> <span>External Link</span></button>Accent Button
Section titled “Accent Button”High-contrast conversion buttons for critical actions and call-to-actions.
Schemes
Section titled “Schemes”<button class="tng-accent-button">Default</button><button class="tng-accent-button is-bz4x">BZ4X</button>The default size is lg.
<button class="tng-accent-button is-sm">Small</button><button class="tng-accent-button is-md">Medium</button><button class="tng-accent-button is-lg">Large</button>States
Section titled “States”<button class="tng-accent-button" disabled>Default</button><button class="tng-accent-button is-bz4x" disabled>BZ4X</button>Icon Button
Section titled “Icon Button”Schemes
Section titled “Schemes”<button class="tng-icon-button" aria-label="Download"> <i class="tng-icon icon-download" aria-hidden="true"></i></button><button class="tng-icon-button is-outlined" aria-label="Bookmark"> <i class="tng-icon icon-bookmark" aria-hidden="true"></i></button><button class="tng-icon-button is-ghost" aria-label="External link"> <i class="tng-icon icon-external-link" aria-hidden="true"></i></button>The default size is sm.
<button class="tng-icon-button is-sm" aria-label="Search"> <i class="tng-icon icon-search" aria-hidden="true"></i></button><button class="tng-icon-button is-md" aria-label="Calendar"> <i class="tng-icon icon-calendar" aria-hidden="true"></i></button><button class="tng-icon-button is-lg" aria-label="Confirm"> <i class="tng-icon icon-check" aria-hidden="true"></i></button>States
Section titled “States”<button class="tng-icon-button" disabled aria-label="Download"> <i class="tng-icon icon-download" aria-hidden="true"></i></button><button class="tng-icon-button is-outlined" disabled aria-label="External link"> <i class="tng-icon icon-external-link" aria-hidden="true"></i></button><button class="tng-icon-button is-ghost" disabled aria-label="External link"> <i class="tng-icon icon-external-link" aria-hidden="true"></i></button>Pill Button
Section titled “Pill Button”Rounded buttons perfect for filters, tags, and selection interfaces.
The default size is lg.
<button class="tng-pill-button is-sm">Small</button><button class="tng-pill-button is-md">Medium</button><button class="tng-pill-button is-lg">Large</button>States
Section titled “States”<button class="tng-pill-button is-selected">Selected</button><button class="tng-pill-button" disabled>Disabled</button>On overlay
Section titled “On overlay”<button class="tng-pill-button on-overlay">Rested</button><button class="tng-pill-button on-overlay is-selected"> Selected</button><button class="tng-pill-button on-overlay is-cta">CTA</button><button class="tng-pill-button on-overlay" disabled>Disabled</button><button class="tng-pill-button"> <i class="tng-icon icon-ui-spinner" aria-hidden="true"></i> <span>Loading</span></button><button class="tng-pill-button"> <span>Popular</span> <i class="tng-icon icon-arrow-right" aria-hidden="true"></i></button>Social Button
Section titled “Social Button”Icon-only buttons for social media actions and sharing.
The default size is sm.
<button class="tng-social-button is-sm" aria-label="Share on Facebook"> <i class="tng-icon icon-facebook" aria-hidden="true"></i></button><button class="tng-social-button is-lg" aria-label="Share on YouTube"> <i class="tng-icon icon-youtube" aria-hidden="true"></i></button>States
Section titled “States”<button class="tng-social-button" disabled aria-label="Share on YouTube"> <i class="tng-icon icon-youtube" aria-hidden="true"></i></button>Overflow
Section titled “Overflow”You can set overflow limitation on a button just like any other element by using the overflow utility class.
<button class="tng-button"> <div class="tng-overflow-ellipsis">…</div></button>Accessibility
Section titled “Accessibility”Semantic markup
Section titled “Semantic markup”- Use
<button>for actions (submit, toggle, open dialog). Use<a>for navigation. Both can be styled with.tng-button, but only<button>responds to Space and has implicitrole="button". - Never use
<a href="#">as a button substitute — screen readers announce it as a link.
Icon-only buttons
Section titled “Icon-only buttons”Icon buttons (.tng-icon-button, .tng-social-button) must include an accessible label. Prefer aria-label over .sr-only (learn why).
<button class="tng-icon-button" aria-label="Download"> <i class="tng-icon icon-download" aria-hidden="true"></i></button>States
Section titled “States”- Disabled — prefer the native
disabledattribute. It removes the button from tab order and communicates the state automatically. - Focusable disabled — if a disabled button must remain focusable (e.g. to show a tooltip), use
aria-disabled="true"instead and prevent the click in JavaScript. - Toggle buttons — use
aria-pressed="true"/"false"for on/off toggles. Usearia-expandedwhen the button controls a collapsible region.
Touch targets
Section titled “Touch targets”All button variants use the tng-touch-target utility to meet the WCAG 2.5.8 minimum target size of 44×44 CSS pixels.