import * as React from 'react'; import { Button } from 'shared/components/Button'; import { PageGrid, PageGridCol, PageGridRow } from 'shared/components/PageGrid/page-grid'; export const frontmatter = { seo: { title: 'BDS Secondary Button Component Showcase', description: 'Interactive showcase of the Brand Design System Secondary Button component with all states and variants.', }, }; export default function ButtonShowcaseSecondary() { const [clickCount, setClickCount] = React.useState(0); const handleClick = () => { setClickCount((prev) => prev + 1); }; return (

BDS Secondary Button

Brand Design System

The Secondary button is an outline-style button used for secondary actions. It features a transparent background with a green stroke/border, providing visual hierarchy below the Primary button while maintaining brand consistency.

{/* Basic Usage */}

Basic Usage

Secondary Variant
{clickCount > 0 && (

Button clicked {clickCount} time{clickCount !== 1 ? 's' : ''}

)}
{/* Primary vs Secondary Comparison */}

Primary vs Secondary

Visual Hierarchy

Use Primary for main actions and Secondary for supporting actions to create clear visual hierarchy.

{/* States */}

Button States

Interactive States
Enabled State

Default outline style with green border and text.

Disabled State

Gray border and text indicate non-interactive state.

Hover & Focus States

Hover over the buttons or use Tab to focus them. Notice the light green background fill and darker green border on hover/focus.

{/* Black Color Variant */}

Black Color Variant

Color Theme

Secondary buttons can use a black color theme with black text and border instead of green.

{/* Black Variant States */}

Black Variant States

Interactive States
Enabled State

Black border and text with transparent background.

Disabled State

Same disabled styling as green variant.

Hover & Focus States

Hover over the buttons or use Tab to focus them. Notice the subtle black background fill on hover.

{/* Green vs Black Comparison */}

Green vs Black Comparison

Color Themes

Compare the green (default) and black color themes side by side.

{/* Without Icon */}

Without Icon

Icon Control

Secondary buttons can also be rendered without the arrow icon.

{/* Button Types */}

Button Types

Form Integration

Secondary buttons can be used for form actions like cancel or reset.

{ e.preventDefault(); alert('Form submitted!'); }} className="d-flex flex-wrap" >
{/* Responsive Behavior */}

Responsive Behavior

Breakpoint Adjustments

Button padding adjusts automatically across breakpoints. Resize your browser window to see the changes:

{/* Accessibility */}

Accessibility Features

WCAG Compliance
Keyboard Navigation
  • Tab to focus buttons
  • Enter or Space to activate
  • Focus indicator: 2px black outline (additional to green border)
  • Disabled buttons are not focusable
Screen Reader Support
  • Button labels are announced
  • Disabled state communicated via aria-disabled
  • Icons are hidden from screen readers (aria-hidden)
  • Semantic button element used
Color Contrast
  • Enabled: Green 400 (#0DAA3E) on White = 4.52:1 (AA for large text)
  • Hover: Green 500 (#078139) on Green 100 (#EAFCF1) = 4.87:1 (AA)
  • Disabled: Gray 400 (#A2A2A4) on White = reduced contrast (acceptable for disabled state)
{/* Code Examples */}

Code Examples

Implementation
            {`import { Button } from 'shared/components/Button';

// Basic secondary button (green theme - default)


// Black color theme


// Disabled state


// Without icon


// Primary + Secondary pairing

`}
          
{/* Design Specifications */}

Design Specifications

Visual Details
Typography
  • Font: Booton, sans-serif
  • Size: 16px
  • Weight: 400
  • Line Height: 23.2px
  • Letter Spacing: 0px
Spacing & Layout
  • Border Radius: 100px (fully rounded)
  • Border Width: 2px solid
  • Icon Size: 15px × 14px
  • Icon Gap: 16px (default), 22px (hover/focus desktop), 21px (hover/focus mobile)
  • Max Height: 40px
State Colors - Green Theme
{/* Header */}
State
Text Color
Background
Border
{/* Rows */}
Enabled
#0DAA3E (Green 400)
Transparent
2px #0DAA3E (Green 400)
Hover
#078139 (Green 500)
#EAFCF1 (Green 100)
2px #078139 (Green 500)
Focus
#078139 (Green 500)
#EAFCF1 (Green 100)
2px #078139 + 2px #141414 outline
Active
#0DAA3E (Green 400)
Transparent
2px #0DAA3E (Green 400)
Disabled
#A2A2A4 (Gray 400)
Transparent
2px #A2A2A4 (Gray 400)
State Colors - Black Theme
{/* Header */}
State
Text Color
Background
Border
{/* Rows */}
Enabled
#141414 (Neutral Black)
Transparent
2px #141414 (Neutral Black)
Hover
#141414 (Neutral Black)
rgba(20, 20, 20, 0.15) (15% Black)
2px #141414 (Neutral Black)
Focus
#141414 (Neutral Black)
rgba(20, 20, 20, 0.15) (15% Black)
2px #141414 + 2px #141414 outline
Active
#141414 (Neutral Black)
Transparent
2px #141414 (Neutral Black)
Disabled
#A2A2A4 (Gray 400)
Transparent
2px #A2A2A4 (Gray 400)
{/* Key Differences from Primary */}

Key Differences from Primary

Comparison
{/* Header */}
Aspect
Primary
Secondary
{/* Rows */}
Background (Enabled)
Green 300 (#21E46B)
Transparent
Background (Hover)
Green 200 (#70EE97)
Green 100 (#EAFCF1)
Border (Enabled)
None
2px Green 400
Text Color (Enabled)
Black (#141414)
Green 400 (#0DAA3E)
Disabled Background
Gray 200 (#E0E0E1)
Transparent
Arrow Icon
✅ Shared
✅ Shared
); }