Skip to main content

IconButton

IconButtons are buttons that only consists of an icon. They are useful for actions on places where space is rare and an icon on it's own is really descriptive.

Import

// Tree shakable import
import { IconButton } from '@bojagi/pablo';
// Or direct import
import { IconButton } from '@bojagi/pablo/IconButton';

Examples

Sized IconButton

You can display IconButtons in different sizes. By default they have the size medium. They can also be small and large.

Live Editor
<Flex gap={1}>
  <IconButton onClick="You clicked me!">
    <Trash2 />
  </IconButton>
  <IconButton size="small" onClick="You clicked me!">
    <Trash2 />
  </IconButton>
  <IconButton size="large" onClick="You clicked me!">
    <Trash2 />
  </IconButton>
</Flex>
Result
Loading...

Active Icon buttons

IconButtons can also be used to toggle certain functionality (e.g. bold text mode in rich text inputs). For this you can use the boolean active prop.

Live Editor
() => {
  const [active, setActive] = React.useState(props.active);
  return (
    <IconButton active={active} onClick={() => setActive(!active)}>
      <Italic />
    </IconButton>
  );;
}
Result
Loading...

Colored IconButton

To give IconButtons a different color, just use the color prop. Colors can be brand, plain, negative or positive. The default color is plain.

Live Editor
() => {
  const [active, setActive] = React.useState(props.active);
  return (
    <Flex gap={1}>
      <IconButton color="brand" active={active} onClick={() => setActive(!active)}>
        <Crop />
      </IconButton>
      <IconButton color="positive" active={active} onClick={() => setActive(!active)}>
        <CheckCircle />
      </IconButton>
      <IconButton color="negative" active={active} onClick={() => setActive(!active)}>
        <Trash2 />
      </IconButton>
    </Flex>
  );
}
Result
Loading...

Props

NameTypeDefault ValueRequiredDescription

Box props

NameTypeDefault ValueRequiredDescription