## Feature Examples

### Size
- description: Adjust the component size using the `size` prop. Choose from 3 sizes: - `medium` (default) - can be used in all common cases. - `small` - best for dense layouts. - `tiny` - should be used sparingly, for dense and narrow layouts.
- example:
```jsx
<StorybookComponents.Stack>
  <StorybookComponents.Stack flexDirection="column">
    <Badge uppercase={false} size="medium">
      Medium
    </Badge>
    <Badge uppercase={false} size="small">
      Small
    </Badge>
    <Badge uppercase={false} size="tiny">
      Tiny
    </Badge>
  </StorybookComponents.Stack>
</StorybookComponents.Stack>;
```

### Type
- description: Control the appearance of the badge according to its priority with the `type` prop. Choose from 3 styles: - `solid` (default) - `outlined` - `transparent`
- example:
```jsx
<StorybookComponents.Stack>
  <StorybookComponents.Stack flexDirection="column">
    <Badge uppercase={false} type="solid">
      Solid
    </Badge>
    <Badge uppercase={false} type="outlined">
      Outlined
    </Badge>
    <Badge uppercase={false} type="transparent">
      Transparent
    </Badge>
  </StorybookComponents.Stack>
</StorybookComponents.Stack>;
```

### Skin
- description: Control the appearance of badges with the `skin` prop. Choose from 13 skins: - `general` (default) - used for default statuses. - `standard`, `neutralStandard` - used for statuses that are relevant to current user task. - `danger`, `neutralDanger` - used for critical issues that require user action. - `success`, `neutralSuccess` - used for success or positive status. - `neutral`, `neutralLight` - used for completed or pending status, when no action is needed at the moment. - `warning`, `warningLight` - used for unresolved, but not critical issues. - `urgent` - used for unresolved and time sensitive issues that require user action. - `premium` - used for items or functions related to Premium Plans.
- example:
```jsx
<StorybookComponents.Stack>
  <StorybookComponents.Stack flexDirection="column">
    <Badge uppercase={false} skin="general">
      General
    </Badge>
    <Badge uppercase={false} skin="standard">
      Standard
    </Badge>
    <Badge uppercase={false} skin="danger">
      Danger
    </Badge>
    <Badge uppercase={false} skin="success">
      Success
    </Badge>
    <Badge uppercase={false} skin="neutral">
      Neutral
    </Badge>
    <Badge uppercase={false} skin="warning">
      Warning
    </Badge>
    <Badge uppercase={false} skin="urgent">
      Urgent
    </Badge>
    <Badge uppercase={false} skin="premium">
      Premium
    </Badge>
  </StorybookComponents.Stack>

  <StorybookComponents.Stack flexDirection="column" margin="54px 0">
    <Badge uppercase={false} skin="neutralStandard">
      Neutral Standard
    </Badge>
    <Badge uppercase={false} skin="neutralDanger">
      Neutral Danger
    </Badge>
    <Badge uppercase={false} skin="neutralSuccess">
      Neutral Success
    </Badge>
    <Badge uppercase={false} skin="neutralLight">
      Neutral Light
    </Badge>
    <Badge uppercase={false} skin="warningLight">
      Warning Light
    </Badge>
  </StorybookComponents.Stack>

  <StorybookComponents.Stack flexDirection="column">
    <Badge uppercase={false} skin="general" type="outlined">
      General
    </Badge>
    <Badge uppercase={false} skin="standard" type="outlined">
      Standard
    </Badge>
    <Badge uppercase={false} skin="danger" type="outlined">
      Danger
    </Badge>
    <Badge uppercase={false} skin="success" type="outlined">
      Success
    </Badge>
    <Badge uppercase={false} skin="neutral" type="outlined">
      Neutral
    </Badge>
    <Badge uppercase={false} skin="warning" type="outlined">
      Warning
    </Badge>
    <Badge uppercase={false} skin="urgent" type="outlined">
      Urgent
    </Badge>
    <Badge uppercase={false} skin="premium" type="outlined">
      Premium
    </Badge>
  </StorybookComponents.Stack>

  <StorybookComponents.Stack flexDirection="column" margin="54px 0">
    <Badge uppercase={false} skin="neutralStandard" type="outlined">
      Neutral Standard
    </Badge>
    <Badge uppercase={false} skin="neutralDanger" type="outlined">
      Neutral Danger
    </Badge>
    <Badge uppercase={false} skin="neutralSuccess" type="outlined">
      Neutral Success
    </Badge>
    <Badge uppercase={false} skin="neutralLight" type="outlined">
      Neutral Light
    </Badge>
    <Badge uppercase={false} skin="warningLight" type="outlined">
      Warning Light
    </Badge>
  </StorybookComponents.Stack>

  <StorybookComponents.Stack flexDirection="column">
    <Badge uppercase={false} skin="general" type="transparent">
      General
    </Badge>
    <Badge uppercase={false} skin="standard" type="transparent">
      Standard
    </Badge>
    <Badge uppercase={false} skin="danger" type="transparent">
      Danger
    </Badge>
    <Badge uppercase={false} skin="success" type="transparent">
      Success
    </Badge>
    <Badge uppercase={false} skin="neutral" type="transparent">
      Neutral
    </Badge>
    <Badge uppercase={false} skin="warning" type="transparent">
      Warning
    </Badge>
    <Badge uppercase={false} skin="urgent" type="transparent">
      Urgent
    </Badge>
    <Badge uppercase={false} skin="premium" type="transparent">
      Premium
    </Badge>
  </StorybookComponents.Stack>
</StorybookComponents.Stack>;
```

### Letter case
- description: Decide whether a badge is written in all uppercase letters or in sentence case with the `uppercase` prop. By default, badges are written in lowercase.
- example:
```jsx
<StorybookComponents.Stack>
  <StorybookComponents.Stack flexDirection="column">
    <Badge>Upper case</Badge>
    <Badge uppercase={false}>Lower case</Badge>
  </StorybookComponents.Stack>
</StorybookComponents.Stack>;
```

### Affix
- description: Add more context to a badge with affix icons: - `prefixIcon` - used to emphasize status message. - `suffixIcon` - used to emphasize statuses that trigger popovers.
- example:
```jsx
<StorybookComponents.Stack>
  <StorybookComponents.Stack flexDirection="column">
    <Badge uppercase={false} prefixIcon={<Icons.LockLockedSmall />}>
      Prefix icon
    </Badge>
    <Badge uppercase={false} suffixIcon={<Icons.ChevronDownSmall />}>
      Suffix icon
    </Badge>
  </StorybookComponents.Stack>
</StorybookComponents.Stack>;
```

## Common Use Case Examples

### Item status
- description: Use badges to communicate item status. Highlight items that require user attention.
- example:
```jsx
() => {
  const records = [
    {
      number: '#1439',
      total: '$105.55',
      status: (
        <Badge size="small" skin="neutralLight">
          Paid
        </Badge>
      ),
    },
    {
      number: '#4152',
      total: '$928.41',
      status: (
        <Badge size="small" skin="neutralLight">
          Paid
        </Badge>
      ),
    },
    {
      number: '#9261',
      total: '$710.68',
      status: (
        <Badge size="small" skin="neutralLight">
          Paid
        </Badge>
      ),
    },
    {
      number: '#9359',
      total: '$219.78',
      status: (
        <Badge size="small" skin="danger">
          Overdue
        </Badge>
      ),
    },
    {
      number: '#5560',
      total: '$782.01',
      status: (
        <Badge size="small" skin="urgent">
          Partially paid
        </Badge>
      ),
    },
    {
      number: '#6690',
      total: '$406.27',
      status: (
        <Badge size="small" skin="neutralLight">
          Paid
        </Badge>
      ),
    },
    {
      number: '#5948',
      total: '$475.22',
      status: (
        <Badge size="small" skin="success">
          Sent
        </Badge>
      ),
    },
  ];

  const secondaryAction = [
    {
      icon: <Icons.DuplicateSmall />,
      text: 'Duplicate',
      onClick: () => {},
    },
    {
      icon: <Icons.DeleteSmall />,
      text: 'Delete',
      onClick: () => {},
    },
  ];

  const columns = [
    {
      title: 'Number',
      render: (row) => row.number,
      width: '30%',
    },
    {
      title: 'Total',
      render: (row) => row.total,
      width: '30%',
    },
    {
      title: 'Status',
      render: (row) => row.status,
      width: '30%',
    },
    {
      title: '',
      render: (row) => (
        <TableActionCell size="small" secondaryActions={secondaryAction} />
      ),
      width: '10%',
    },
  ];

  return (
    <Card>
      <Table data={records} columns={columns} showSelection>
        <TableToolbar>
          <TableToolbar.ItemGroup position="start">
            <TableToolbar.Item>
              <TableToolbar.Label>7 invoices</TableToolbar.Label>
            </TableToolbar.Item>
          </TableToolbar.ItemGroup>
        </TableToolbar>
        <Table.Content />
      </Table>
    </Card>
  );
};
```

### Promote
- description: Use badges to draw more attention to new or recommended features and tools.
- example:
```jsx
<Card>
  <MarketingLayout
    title="Get listed on Google Search"
    description="Continue with your SEO setup checklist and connect to Google Search Console."
    actions={<Button size="small">Go for It</Button>}
    size="tiny"
    badge={<Badge size="small">Recommended</Badge>}
    image={
      <Box width="100%" align="right">
        <Image
          width="120px"
          src="PromotionalPromoteMarketingHomeSEO.svg"
          transparent
        />
      </Box>
    }
  />
</Card>;
```
