Tag Component

Compact labels for categorizing and organizing content with semantic color variants.

Basic Usage

Tags are used to label, categorize, or organize items using keywords that describe them.

Default Tags

DefaultFeatureSuccessWarningErrorInfo
<Tag>Default</Tag>
<Tag variant="feature">Feature</Tag>
<Tag variant="success">Success</Tag>
<Tag variant="warning">Warning</Tag>
<Tag variant="error">Error</Tag>
<Tag variant="info">Info</Tag>

Sizes

Tag Sizes

Small TagMedium Tag
<Tag size="small" variant="feature">Small Tag</Tag>
<Tag size="medium" variant="feature">Medium Tag</Tag>

Real-World Examples

Changelog Tags

FEATUREUXDESIGN SYSTEMTRAININGBUGFIX

Status Tags

ActivePendingFailedProcessingDraft

Component Code

interface TagProps {
  children: React.ReactNode;
  variant?: 'default' | 'feature' | 'success' | 'warning' | 'error' | 'info';
  size?: 'small' | 'medium';
}

function Tag({ children, variant = 'default', size = 'medium' }: TagProps) {
  return (
    <span className={`circuit-tag circuit-tag--${variant} circuit-tag--${size}`}>
      {children}
    </span>
  );
}

CSS Implementation

Add this CSS to your app/styles/circuit.css file:

.circuit-tag {
  display: inline-flex;
  align-items: center;
  font: var(--font-body-small);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  border-radius: var(--sds-size-radius-50);
  border: 1px solid;
  transition: all 0.2s ease;
}

/* Sizes */
.circuit-tag--small {
  padding: var(--sds-size-space-25) var(--sds-size-space-100);
  font-size: 0.75rem;
}

.circuit-tag--medium {
  padding: var(--sds-size-space-50) var(--sds-size-space-150);
  font-size: 0.8rem;
}

/* Variants */
.circuit-tag--default {
  background: var(--surface-preview-background);
  color: var(--text-secondary);
  border-color: var(--border-default);
}

.circuit-tag--feature {
  background: var(--theme-info-bg);
  color: var(--theme-info-primary);
  border-color: var(--theme-info-border);
}

.circuit-tag--success {
  background: var(--theme-success-bg);
  color: var(--theme-success-primary);
  border-color: var(--theme-success-border);
}

.circuit-tag--warning {
  background: var(--theme-warning-bg);
  color: var(--theme-warning-primary);
  border-color: var(--theme-warning-border);
}

.circuit-tag--error {
  background: var(--theme-error-bg);
  color: var(--theme-error-primary);
  border-color: var(--theme-error-border);
}

.circuit-tag--info {
  background: var(--theme-info-bg);
  color: var(--theme-info-primary);
  border-color: var(--theme-info-border);
}

Design Guidelines

  • Use Sparingly: Too many tags can create visual clutter
  • Consistent Variants: Use semantic variants consistently across your app
  • Readable Text: Ensure good contrast between text and background
  • Grouping: Group related tags together with consistent spacing
  • Truncation: Keep tag text concise - truncate long labels