A flexible button component with multiple style variants, sizes, and icon support for creating interactive links and actions.
Usage
{{ include('dripyard_base:button', {
text: 'Learn More',
href: '/learn-more',
style: 'primary',
size: 'medium',
prefix_icon: 'arrow-right',
target: true
}, with_context = false) }}
Props
| Property | Type | Options | Required | Description |
|---|---|---|---|---|
text |
string | - | Yes | Button text content |
href |
string | - | Yes | Link destination URL |
style |
string | default, primary |
No | Button color variant |
size |
string | xs, small, medium, large |
No | Button size variant |
target |
boolean | true, false |
No | Open link in new window |
prefix_icon |
string | - | No | Icon displayed before text |
suffix_icon |
string | - | No | Icon displayed after text |
Style Variants
- Default: Gray styling for secondary actions
- Primary: Primary color for main call-to-action buttons
- Dark: Dark styling for alternative visual emphasis
Size Variants
- XS: Extra small button (25px height, 12px font)
- Small: Compact button (35px height, 12px font)
- Medium: Default size (48px height, 16px font)
- Large: Prominent button (56px height, 20px font)
CSS Custom Properties
Background Colors
--button-color-bg- Default background color--button-color-bg-hover- Hover state background--button-color-bg-active- Active state background--button-color-bg-icon- Icon container background
Text Colors
--button-text-color- Default text color--button-text-color-hover- Hover state text color--button-text-color-active- Active state text color
Border Properties
--button-border-color- Border color--button-border-radius- Corner rounding--button-border-width- Border thickness
Typography
--button-font-size- Text size--button-font-weight- Text weight
Layout
--button-height- Button height--button-padding-block- Vertical padding--button-padding-inline- Horizontal padding
Accessibility Features
- Semantic links: Uses
<a>elements with proper href attributes - Focus indicators: Clear focus states with customizable focus ring colors
- Keyboard navigation: Standard link keyboard interaction
- Screen readers: Proper text content and icon labeling
Icon Integration
- Flexible positioning: Icons can be placed before (prefix) or after (suffix) text
- Size adaptation: Icon size automatically adjusts based on button size (16px for small/medium, 24px for large)
- Visual effects: Icons translate 2px on hover for interactive feedback
- Icon containers: Icons are wrapped in circular containers with background styling
Interactive States
- Hover: Background color change and icon translation
- Active: Slight scale increase (1.05) and color changes
- Disabled: Reduced opacity and disabled cursor
- Transitions: Smooth 0.2s transitions for color changes and 0.1s for scale
Global Library Integration
The button CSS is a dependency of the theme's global library, ensuring button styles are available site-wide.
Related Components
- Icon Component: Provides icons for prefix and suffix display