Skip to main content

Button

The Button component is a versatile, interactive element that supports multiple variants, sizes, icons, images, and loading states.

Features​

  • 🎨 Multiple color variants
  • πŸ“ Flexible sizing
  • πŸ–ΌοΈ Left/right icons and images
  • ⏳ Loading states
  • πŸ”˜ Circle button variant
  • 🎯 Outline variants
  • β™Ώ Accessibility support

Basic Usage​

import { Button } from '@tansuk/rott-ui';

<Button variant="primary" onPress={() => console.log('Pressed!')}>
Click Me
</Button>

Variants​

<Button variant="primary">Primary</Button>
<Button variant="secondary">Secondary</Button>
<Button variant="danger">Danger</Button>
<Button variant="success">Success</Button>
<Button variant="primary-outline">Primary Outline</Button>

Sizes​

<Button size="xs">Extra Small</Button>
<Button size="sm">Small</Button>
<Button size="md">Medium</Button>
<Button size="lg">Large</Button>
<Button size="xl">Extra Large</Button>
<Button size="full">Full Width</Button>

With Icons​

<Button 
variant="primary"
leftIcon={{ name: 'PLUS', width: 20, height: 20 }}
>
Add Item
</Button>

<Button
variant="primary"
rightIcon={{ name: 'ARROW_RIGHT', width: 20, height: 20 }}
>
Continue
</Button>

Loading States​

<Button
variant="primary"
isLoading={true}
loadingText="Processing..."
onPress={handleSubmit}
>
Submit
</Button>

Props​

PropTypeDefaultDescription
variantVariant'primary'Color variant
sizeSize | { width, height }'md'Button size
isLoadingbooleanfalseLoading state
loadingTextstring-Loading text
disabledbooleanfalseDisabled state
circlebooleanfalseCircular button
leftIconButtonIconProps-Left icon
rightIconButtonIconProps-Right icon
leftImageButtonImageProps-Left image
rightImageButtonImageProps-Right image
onPress() => void-Press handler

Examples​

Login Button​

<Button
size="full"
variant="primary"
fontSize="lg"
leftIcon={{ name: 'USER', width: 20, height: 20 }}
onPress={handleLogin}
>
Sign In
</Button>

Delete with Confirmation​

<Button
variant="danger"
leftIcon={{ name: 'REMOVE', width: 20, height: 20 }}
onPress={() => {
AlertDialog.show({
title: 'Confirm Delete',
text: 'Are you sure?',
buttons: [
{ text: 'Cancel', variant: 'secondary' },
{ text: 'Delete', variant: 'danger', onPress: handleDelete },
],
});
}}
>
Delete
</Button>