Button
Reusable button component
Example
import {useState} from 'react';
import {
  Button,
  createStyles,
  IButtonSize,
  IButtonTypes,
  SimpleIcon,
  useStyles,
  View,
} from '@lad-tech/mobydick-core';
export const ButtonWidget = () => {
  const [styles] = useStyles(style);
  const [counter, setCounter] = useState(99);
  const onChangeCounter = (value: number) => () => {
    setCounter(val => val + value);
  };
  return (
    <View style={styles.container}>
      <View style={styles.content}>
        <Button type={IButtonTypes.primary} text={'IButtonTypes.primary'} />
        <Button type={IButtonTypes.secondary} text={'IButtonTypes.secondary'} />
        <Button type={IButtonTypes.tertiary} text={'IButtonTypes.tertiary'} />
        <Button type={IButtonTypes.loading} text={'IButtonTypes.loading'} />
        <Button
          type={IButtonTypes.destructive}
          text={'IButtonTypes.destructive'}
        />
        <Button type={IButtonTypes.disabled} text={'IButtonTypes.disabled'} />
      </View>
      <View style={styles.content}>
        <Button size={IButtonSize.fixed} text={'IButtonSize.fixed'} />
        <Button size={IButtonSize.large} text={'IButtonSize.large'} />
        <Button size={IButtonSize.small} text={'IButtonSize.small'} />
      </View>
      <View style={styles.content}>
        <Button
          text={'leftIcon'}
          leftIcon={<SimpleIcon name={'icon-send'} />}
        />
        <Button
          text={'rightIcon'}
          rightIcon={<SimpleIcon name={'icon-send'} />}
        />
        <Button
          text={'both'}
          leftIcon={<SimpleIcon name={'icon-send'} />}
          rightIcon={<SimpleIcon name={'icon-send'} />}
        />
      </View>
      <View style={styles.content}>
        <Button text={'loading'} loading={true} />
        <Button text={'disabled'} disabled={true} />
        <Button text={'both'} disabled={true} loading={true} />
      </View>
      <View style={styles.content}>
        <Button
          text={'increment'}
          count={counter}
          onPress={onChangeCounter(1)}
        />
        <Button
          text={'decrement'}
          count={counter}
          onPress={onChangeCounter(-1)}
        />
      </View>
    </View>
  );
};
const style = createStyles(({spaces}) => ({
  container: {
    gap: spaces.Space4,
  },
  content: {
    alignItems: 'center',
    gap: spaces.Space4,
  },
}));
textProps?: TextProps;
Props
TouchableOpacity Props
Inherits TouchableOpacity Props.
type
| TYPE | 
|---|
| IButtonTypes | 
Predefined type for button
size
| TYPE | 
|---|
| IButtonSize | 
Predefined type for button
text
| TYPE | 
|---|
| string | 
Text of button
textStyle
| TYPE | 
|---|
| TextStyle | 
Custom styles for textInputContainer
textProps
| TYPE | 
|---|
| TextProps | 
Custom props for text inside button
font
| TYPE | 
|---|
| TypographyProp | 
Custom styles for textInputContainer
loading
| TYPE | 
|---|
| boolean | 
Loading preset of button
count
| TYPE | 
|---|
| number | 
Number of count
leftIcon
| TYPE | 
|---|
| ReactElement | 
any react component placed right
rightIcon
| TYPE | 
|---|
| ReactElement | 
any react component placed right