Button

Clickable action element

A versatile and powerful button element that supports various styles, sizes, and interaction states. Built with accessibility and performance in mind.

VersionLicenseDownloadsBundle Size (minified)Bundle Size (minified + gzip)

Overview

This comprehensive documentation provides detailed instructions on how to leverage the powerful Button component in your React projects. The Button component is a core element of the abaabil.button library, designed to elevate your user interface design.

import Button from 'abaabil.button';

Key Features

Discover why Abaabil's Button component stands out:

  • Highly customizable with support for icons, action icons, and various styles
  • Built-in accessibility features for inclusive design
  • Responsive and mobile-friendly out of the box
  • Performance-optimized for smooth user experiences
  • Seamless integration with React and Tailwind CSS projects

Importing the Button Component

Easily import the Button component from the abaabil.button package to get started quickly.

Basic Usage

The Button component is designed for flexibility. Customize it by setting properties such as icon, actionIcon, disabled, and more to create the perfect button for your needs.

Advanced Customization

Take your buttons to the next level with advanced customization options:

  • Custom color schemes to match your brand
  • Animated hover and click effects
  • Integration with form validation states
  • Loading states for asynchronous actions

Performance Optimization

Abaabil's Button component is engineered for optimal performance:

  • Minimized re-renders using React.memo and useMemo
  • Efficient DOM updates through virtual DOM diffing
  • Lazy-loaded icons for faster initial page loads

Properties

The Button component offers a wide range of customizable properties:

as

Type: button | a

Description: Renders component as button or anchor.

Default: button

icon

Type: string

Description: Icon ID to display before text.

children

Type: ReactNode

Description: Button content.

actionIcon

Type: string

Description: Icon ID to display after text.

className

Type: string

Description: Additional CSS classes to apply to the Button.

disabled

Type: boolean

Description: Disables the button.

Default: false

isPressed

Type: boolean

Description: Sets aria-pressed state.

ariaLabel

Type: string

Description: Accessibility label for icon-only buttons.

Other Properties

Description: The Button component forwards all other props to the underlying element.

Accessibility

Abaabil's Button component prioritizes accessibility:

  • Uses semantic HTML elements (<button> or <a>)
  • Provides proper ARIA attributes (aria-label, aria-pressed, aria-disabled)
  • Supports keyboard interactions
  • Ensures proper text contrast in different states (normal, hover, focus, active, disabled)
  • Screen reader-friendly with descriptive ARIA labels
  • Color contrast ratios that meet WCAG 2.1 standards

Styling

The Button component comes with a robust set of styling options:

  • Base classes: max-w-full inline-flex items-center justify-center font-bold tracking-default h-default text-default px-default rounded-default
  • Enabled state: bg-stable text-on-stable hover:bg-stable-hover focus:bg-stable-focus active:bg-stable-active
  • Disabled state: bg-stable-disabled text-on-stable-disabled
  • You can customize the appearance using the className prop and your own CSS.
  • Easy integration with popular CSS-in-JS solutions like styled-components or emotion

Best Practices

Follow these best practices to get the most out of the Button component:

  • Use clear and concise button text
  • Ensure sufficient touch target size for mobile users
  • Provide visual feedback for all interaction states
  • Use appropriate button variants for different actions (e.g., primary, secondary, danger)

Comparison with Competitors

See how Abaabil's Button component stacks up against the competition:

Case Studies

Learn how leading companies have leveraged Abaabil's Button component:

  • E-commerce giant boosts conversion rates by 15% with customized call-to-action buttons
  • SaaS platform improves user engagement through accessible and responsive button designs
  • Mobile app reduces load times by 30% using Abaabil's performance-optimized buttons

Notes

Additional notes about the Button component:

  • The component uses React's forwardRef to allow ref forwarding.
  • Icons are rendered using a separate Icon component from abaabil.icon. Ensure this dependency is available in your project.
  • The component uses the classnames library for conditional class application and class merging.