Skip to content

Chips

Interactive chip elements for various use cases like filtering, selection, and tags.

Basic Usage

Basic Chip
vue
<spr-chips label="Basic Chip" />

With Icons

Regular Icon
Bold Icon
Fill Icon
vue
<template>
  <spr-chips
    :active="activeIcon.isIconActive1"
    label="Regular Icon"
    icon="ph:airplane-landing"
    @update="(e) => handleUpdate('isIconActive1', e)"
  />
  <spr-chips
    :active="activeIcon.isIconActive2"
    label="Bold Icon"
    icon="ph:airplane-landing"
    icon-weight="bold"
    @update="(e) => handleUpdate('isIconActive2', e)"
  />
  <spr-chips
    :active="activeIcon.isIconActive3"
    label="Fill Icon"
    icon="ph:airplane-landing"
    icon-weight="fill"
    @update="(e) => handleUpdate('isIconActive3', e)"
  />
</template>

<script lang="ts" setup>
import { ref } from 'vue';
import { PhAirplane } from '@phosphor-icons/vue';

const activeIcon = ref({
  isIconActive1: false,
  isIconActive2: false,
  isIconActive3: false,
});

const handleUpdate = (key, value) => {
  activeIcon.value[key] = value;

  console.log(`Chip is now ${value ? 'active' : 'inactive'}`);
};
</script>

With Avatar

Avatar
Avatar
Avatar
Avatar
vue
<template>
  <spr-chips
    label="Avatar"
    :avatar-url="'https://media.sproutsocial.com/uploads/2022/06/profile-picture.jpeg'"
    :avatar-variant="'image'"
  />
  <spr-chips
    label="Avatar"
    :avatar-variant="'client'"
  />
  <spr-chips
    label="Avatar"
    :avatar-variant="'user'"
  />
</template>

With Badge

Brand Badge
1
Danger Badge
2
Disabled Badge
3
vue
<template>
  <spr-chips
    :active="activeIcon.isBadgeActive1"
    label="Brand Badge"
    badge
    badge-text="1"
    badge-variant="brand"
    @update="(e) => handleUpdate('isBadgeActive1', e)"
  />
  <spr-chips
    :active="activeIcon.isBadgeActive2"
    label="Danger Badge"
    badge
    badge-text="2"
    badge-variant="danger"
    @update="(e) => handleUpdate('isBadgeActive2', e)"
  />
  <spr-chips
    :active="activeIcon.isBadgeActive3"
    label="Disabled Badge"
    badge
    badge-text="3"
    badge-variant="disabled"
    @update="(e) => handleUpdate('isBadgeActive3', e)"
  />
</template>

<script lang="ts" setup>
import { ref } from 'vue';

const activeIcon = ref({
  isBadgeActive1: true,
  isBadgeActive2: true,
  isBadgeActive3: true,
});

const handleUpdate = (key, value) => {
  activeIcon.value[key] = value;

  console.log(`Chip is now ${value ? 'active' : 'inactive'}`);
};
</script>

Interactive States

Toggleable
Closable
Disabled
vue
<template>
  <spr-chips :active="isToggleActive5" label="Toggleable" @update="(e) => handleUpdate('isToggleActive5', e)" />
  <spr-chips
    :active="isToggleActive6"
    label="Closable"
    closable
    @close="handleClose"
    :visible="visible"
    @update="(e) => handleUpdate('isToggleActive6', e)"
  />
  <spr-chips disabled label="Disabled" />
</template>

<script lang="ts" setup>
import { ref } from 'vue';

const activeIcon = ref({
  isToggleActive5: true,
  isToggleActive6: true,
});

const handleClose = () => {
  console.log('Chip closed');
};

const handleUpdate = (key, value) => {
  activeIcon.value[key] = value;

  console.log(`Chip is now ${value ? 'active' : 'inactive'}`);
};
</script>

Days Chips

Special variant for weekday selection.

S
M
T
W
T
F
S
vue
<template>
  <div class="spr-flex spr-items-center spr-gap-1">
    <spr-chips
      v-for="day in days"
      :key="day"
      :day="day"
      :active="activeDays[day]"
      @update="(value) => updateDayActive(day, value)"
      @click="handleDayClick(day)"
      variant="day"
    />
  </div>
</template>

<script lang="ts" setup>
import { ref } from 'vue';

const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
const activeDays = ref({
  Sunday: false,
  Monday: false,
  Tuesday: false,
  Wednesday: false,
  Thursday: false,
  Friday: false,
  Saturday: false,
});

const updateDayActive = (day, value) => {
  activeDays.value[day] = value;
  console.log(`Day ${day} is now ${value ? 'active' : 'inactive'}`);
};

const handleDayClick = (day) => {
  console.log(`Clicked on ${day}`);
};
</script>

API Reference

NameDescriptionTypeDefault
labelchip text contentstring''
sizechip size'sm' | 'md' | 'lg''md'
activewhether the chip is activebooleanfalse
disableddisable the chipbooleanfalse
closableshow close buttonbooleanfalse
iconleading iconstring''
iconWeighticon weight style'regular' | 'bold' | 'thin' | 'light' | 'fill' | 'duotone''regular'
badgeshow badgebooleanfalse
badgeTextbadge contentstring'0'
badgeVariantbadge style variant'brand' | 'danger' | 'success''brand'
visiblebadge Visibilitybooleantrue
dayday of the week'Sunday' | 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday'required
@updateemitted when active state changesfunction-
@closeemitted when close button is clickedfunction-