Skip to content
Vy logo
  • Identitet
  • Spor
  • Resources
Components

IconButton

Icon Button is a round button with no text and one icon only.

FigmaGitHub

Examples

Different variants

<Flex gap={1} flexWrap="wrap" alignItems="center">
  <IconButton 
    variant="primary" 
    icon={<EditOutline24Icon />}
    aria-label="primary button" 
  />
  <IconButton 
    variant="secondary" 
    icon={<EditOutline24Icon />}
    aria-label="secondary button" 
  />
  <IconButton 
    variant="tertiary" 
    icon={<EditOutline24Icon />}
    aria-label="tertiary button" 
  />
  <IconButton 
    variant="ghost" 
    icon={<EditOutline24Icon />}
    aria-label="ghost button" 
  />
  <IconButton 
    variant="floating" 
    icon={<EditOutline24Icon />}
    aria-label="floating button" 
  />
</Flex>

Different sizes

<Flex gap={1} flexWrap="wrap" alignItems="center">
  <IconButton 
    variant="primary" 
    size="xs"
    icon={<EditOutline18Icon />}
    aria-label="extra small button" 
  />
  <IconButton 
    variant="primary" 
    size="sm"
    icon={<EditOutline18Icon />}
    aria-label="small button" 
  />
  <IconButton 
    variant="primary" 
    size="md"
    icon={<EditOutline24Icon />}
    aria-label="medium button" 
  />
  <IconButton 
    variant="primary" 
    size="lg"
    icon={<EditOutline30Icon />}
    aria-label="large button" 
  />
</Flex>

Loading icon buttons

<Flex gap={1} flexWrap="wrap" alignItems="center">
  <IconButton 
    variant="primary" 
    loading
    size="xs"
    icon={<EditOutline18Icon />}
    aria-label="extra small button" 
  />
  <IconButton 
    variant="tertiary" 
    loading
    size="sm"
    icon={<EditOutline18Icon />}
    aria-label="small button" 
  />
  <IconButton 
    variant="primary" 
    loading
    size="md"
    icon={<EditOutline24Icon />}
    aria-label="medium button" 
  />
  <IconButton 
    variant="tertiary" 
    loading
    size="lg"
    icon={<EditOutline30Icon />}
    aria-label="large button" 
  />
</Flex>

Guidelines

Icon Button is a round button with no text and one icon only. This button reacts to touches by filling with color.

Remember to include a good descriptive text for screen reader users!

Code

<IconButton />

import { IconButton } from "@vygruppen/spor-react";

Props

Name
Type
Required?
Description
variant"primary" | "secondary" | "tertiary" | "ghost" | "floating"
size"xs" | "sm" | "md" | "lg"Default "md"
iconReact.ReactNode
aria-labelstringA descriptive text
disabledboolean
waitingboolean
downloadstring[]link to a downloadable resource
hrefstring[]Use this combined with as="a" and download prop