Component Library
A collection of reusable UI components for the Adfidence platform. Browse, preview, and copy code snippets.
Preview Background
Colors
Color Palette
Primary
800
#1F356F
500
#4586F7
600
#214DA5
50
#D3E4FD
100
#E4EFFE
Neutral
900
#050B19
800
#141930
700
#2C3554
600
#454D62
500
#656E85
400
#99A2B5
300
#D1D5E1
200
#E6E9EE
100
#F4F5F8
50
#F8F9FB
Secondary
Blue 500
#7A6FF6
Blue 100
#E4E2FC
Purple 500
#C153E8
Purple 100
#F3DDFA
Pink 500
#DC4CA2
Pink 100
#F8DBEC
Teal 500
#62BAAC
Teal 100
#E0F1EE
Coral 500
#FF8070
Coral 100
#FFE6E2
Violet 500
#731DD8
Violet 100
#D5BBF3
Semantic
Success 500
#00B16C
Success 100
#D9F3E9
Error 500
#DF3C32
Error 100
#FAE2E0
Warning 500
#E5A34F
Warning 100
#F9E4BB
Inputs
Input Types
HTML
<div class="input-wrapper">
<label class="input-label">Email</label>
<input type="email" class="input" placeholder="name@example.com">
</div>
<div class="input-wrapper">
<label class="input-label input-label--required">Password</label>
<input type="password" class="input" placeholder="Enter password">
</div>
<div class="input-wrapper">
<label class="input-label">Search</label>
<div class="input-group">
<svg class="input-icon">...</svg>
<input type="text" class="input" placeholder="Search...">
</div>
</div>
CSS
.input-wrapper {
display: flex;
flex-direction: column;
gap: var(--space-1);
}
.input-label {
font-size: var(--text-sm);
font-weight: var(--font-medium);
color: var(--color-neutral-700);
}
.input {
width: 100%;
padding: var(--space-2) var(--space-3);
border: 1px solid var(--color-neutral-300);
border-radius: var(--radius-md);
}
.input:focus {
outline: none;
border-color: var(--color-primary-500);
box-shadow: 0 0 0 3px var(--color-primary-100);
}
Input States
Try it
States
Default
Hover
Error
Success
Disabled
HTML
<input type="text" class="input" placeholder="Default input">
<input type="text" class="input input--error" value="Invalid">
<span class="input-error">This field is required</span>
<input type="text" class="input input--success" value="Valid">
<input type="text" class="input" disabled>
CSS
.input--error {
border-color: var(--color-error-500);
}
.input--error:focus {
box-shadow: 0 0 0 3px var(--color-error-100);
}
.input--success {
border-color: var(--color-success-500);
}
.input:disabled {
background: var(--color-neutral-100);
cursor: not-allowed;
}
Checkboxes
Checkbox States
Try it
States
Default
Hover
Checked
Indeterminate
Disabled
HTML
<label class="checkbox-wrapper">
<input type="checkbox" class="checkbox">
<span class="checkbox-label">Unchecked</span>
</label>
<label class="checkbox-wrapper">
<input type="checkbox" class="checkbox" checked>
<span class="checkbox-label">Checked</span>
</label>
CSS
.checkbox-wrapper {
display: flex;
align-items: center;
gap: var(--space-2);
cursor: pointer;
}
.checkbox {
width: 18px;
height: 18px;
appearance: none;
border: 1px solid var(--color-neutral-300);
border-radius: var(--radius-sm);
}
.checkbox:checked {
background: var(--color-primary-500);
border-color: var(--color-primary-500);
}
Toggles
Toggle States
Try it
States
Off
Hover
On
Disabled
HTML
<label class="toggle-wrapper">
<input type="checkbox" class="toggle">
<span class="toggle-label">Off</span>
</label>
<label class="toggle-wrapper">
<input type="checkbox" class="toggle" checked>
<span class="toggle-label">On</span>
</label>
CSS
.toggle {
position: relative;
width: 44px;
height: 24px;
appearance: none;
background: var(--color-neutral-300);
border-radius: var(--radius-full);
cursor: pointer;
}
.toggle::after {
content: '';
position: absolute;
top: 2px;
left: 2px;
width: 20px;
height: 20px;
background: white;
border-radius: 50%;
transition: transform 0.2s;
}
.toggle:checked {
background: var(--color-primary-500);
}
.toggle:checked::after {
transform: translateX(20px);
}
Badges & Tags
Badge Variants
Default
Primary
Success
Warning
Error
Info
HTML
<span class="badge badge--default">Default</span>
<span class="badge badge--primary">Primary</span>
<span class="badge badge--success">Success</span>
<span class="badge badge--warning">Warning</span>
<span class="badge badge--error">Error</span>
<span class="badge badge--info">Info</span>
CSS
.badge {
display: inline-flex;
align-items: center;
padding: var(--space-1) var(--space-2);
font-size: var(--text-xs);
font-weight: var(--font-medium);
border-radius: var(--radius-full);
}
.badge--primary {
background: var(--color-primary-100);
color: var(--color-primary-700);
}
.badge--success {
background: var(--color-success-100);
color: var(--color-success-700);
}
Badges with Dot
Active
Pending
Failed
HTML
<span class="badge badge--success">
<span class="badge__dot"></span>Active
</span>
CSS
.badge__dot {
width: 6px;
height: 6px;
border-radius: var(--radius-full);
background: currentColor;
}
Tags (Removable)
React
Design
Marketing
HTML
<span class="tag">
React
<button class="tag__remove">×</button>
</span>
CSS
.badge {
display: inline-flex;
align-items: center;
padding: var(--space-1) var(--space-2);
font-size: var(--text-xs);
font-weight: var(--font-medium);
border-radius: var(--radius-full);
}
.badge--primary {
background: var(--color-primary-100);
color: var(--color-primary-700);
}
.badge--success {
background: var(--color-success-100);
color: var(--color-success-700);
}
Avatars
Avatar Sizes
XS
SM
MD
LG
XL
HTML
<span class="avatar avatar--xs">XS</span>
<span class="avatar avatar--sm">SM</span>
<span class="avatar">MD</span>
<span class="avatar avatar--lg">LG</span>
<span class="avatar avatar--xl">XL</span>
CSS
.avatar {
display: inline-flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
border-radius: var(--radius-full);
background: var(--color-primary-100);
color: var(--color-primary-700);
}
.avatar-group .avatar {
margin-left: -8px;
border: 2px solid white;
}
Avatar with Status
JD
AB
CD
EF
HTML
<div class="avatar-wrapper">
<span class="avatar">JD</span>
<span class="avatar-status avatar-status--online"></span>
</div>
CSS
.avatar {
display: inline-flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
border-radius: var(--radius-full);
background: var(--color-primary-100);
color: var(--color-primary-700);
}
.avatar-group .avatar {
margin-left: -8px;
border: 2px solid white;
}
Avatar Group
A
B
C
D
+3
HTML
<div class="avatar-group">
<span class="avatar">A</span>
<span class="avatar">B</span>
<span class="avatar">C</span>
<span class="avatar">+3</span>
</div>
CSS
.avatar {
display: inline-flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
border-radius: var(--radius-full);
background: var(--color-primary-100);
color: var(--color-primary-700);
}
.avatar-group .avatar {
margin-left: -8px;
border: 2px solid white;
}
Tabs
Default Tabs
HTML
<div class="tabs">
<button class="tab tab--active">Overview</button>
<button class="tab">Analytics</button>
<button class="tab">Reports</button>
<button class="tab">Settings</button>
</div>
CSS
.tabs {
display: flex;
gap: var(--space-1);
border-bottom: 1px solid var(--color-neutral-200);
}
.tab {
padding: var(--space-3) var(--space-4);
font-weight: var(--font-medium);
color: var(--color-neutral-500);
background: none;
border: none;
cursor: pointer;
}
.tab--active {
color: var(--color-primary-600);
border-bottom: 2px solid var(--color-primary-500);
}
Pill Tabs
HTML
<div class="tabs tabs--pills">
<button class="tab tab--active">Platform View</button>
<button class="tab">Check View</button>
</div>
CSS
.tabs {
display: flex;
gap: var(--space-1);
border-bottom: 1px solid var(--color-neutral-200);
}
.tab {
padding: var(--space-3) var(--space-4);
font-weight: var(--font-medium);
color: var(--color-neutral-500);
background: none;
border: none;
cursor: pointer;
}
.tab--active {
color: var(--color-primary-600);
border-bottom: 2px solid var(--color-primary-500);
}
Pagination
Default Pagination
HTML
<nav class="pagination">
<button class="pagination__btn" disabled>←</button>
<button class="pagination__btn">1</button>
<button class="pagination__btn pagination__btn--active">2</button>
<button class="pagination__btn">3</button>
<span class="pagination__ellipsis">...</span>
<button class="pagination__btn">10</button>
<button class="pagination__btn">→</button>
</nav>
CSS
.pagination {
display: flex;
align-items: center;
gap: var(--space-1);
}
.pagination__btn {
min-width: 36px;
height: 36px;
border: 1px solid var(--color-neutral-200);
border-radius: var(--radius-md);
background: transparent;
}
.pagination__btn--active {
background: var(--color-primary-500);
color: white;
border-color: var(--color-primary-500);
}
Stepper
Horizontal Stepper
✓
Select Campaign
2
1st Review
3
3rd Review
4
Summary
HTML
<div class="stepper">
<div class="step step--completed">
<div class="step__indicator">✓</div>
<div class="step__content">
<div class="step__title">Step 1</div>
</div>
</div>
<div class="step step--active">
<div class="step__indicator">2</div>
<div class="step__content">
<div class="step__title">Step 2</div>
</div>
</div>
<!-- More steps... -->
</div>
CSS
.stepper {
display: flex;
align-items: flex-start;
}
.step {
display: flex;
flex-direction: column;
align-items: center;
flex: 1;
position: relative;
}
.step__indicator {
width: 32px;
height: 32px;
border-radius: 50%;
background: var(--color-neutral-100);
border: 2px solid var(--color-neutral-200);
}
.step--active .step__indicator {
background: var(--color-primary-500);
border-color: var(--color-primary-500);
color: white;
}
Cards
Default Card
Campaign Overview
Last updated 2 hours ago
This is the card body content. You can place any content here including text, images, or other components.
HTML
<div class="card">
<div class="card__header">
<div>
<h3 class="card__title">Card Title</h3>
<p class="card__subtitle">Subtitle text</p>
</div>
</div>
<div class="card__body">
<p>Card body content...</p>
</div>
<div class="card__footer">
<button class="btn btn--ghost btn--sm">Cancel</button>
<button class="btn btn--primary btn--sm">Save</button>
</div>
</div>
CSS
.card {
background: white;
border: 1px solid var(--color-neutral-200);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-sm);
}
.card__header {
padding: var(--space-4);
border-bottom: 1px solid var(--color-neutral-200);
}
.card__body {
padding: var(--space-4);
}
.card__footer {
padding: var(--space-4);
border-top: 1px solid var(--color-neutral-200);
background: var(--color-neutral-50);
}
Tables
Default Table
| Campaign | Platform | Status | Budget |
|---|---|---|---|
| Summer Sale 2024 | Meta | Active | $5,000 |
| Brand Awareness | Pending | $3,200 | |
| Holiday Promo | TikTok | Draft | $8,500 |
HTML
<div class="table-container">
<table class="table">
<thead>
<tr>
<th>Campaign</th>
<th>Platform</th>
<th>Status</th>
<th>Budget</th>
</tr>
</thead>
<tbody>
<tr>
<td>Summer Sale</td>
<td>Meta</td>
<td><span class="badge badge--success">Active</span></td>
<td>$5,000</td>
</tr>
</tbody>
</table>
</div>
CSS
.table {
width: 100%;
border-collapse: collapse;
}
.table th, .table td {
padding: var(--space-3) var(--space-4);
text-align: left;
}
.table th {
background: var(--color-neutral-50);
font-weight: var(--font-medium);
border-bottom: 1px solid var(--color-neutral-200);
}
.table tbody tr:hover {
background: var(--color-neutral-50);
}
Stats
Stat Cards
Total Revenue
$45,231
+12.5% from last month
Active Campaigns
24
-3 from last month
Conversion Rate
3.2%
+0.4% from last month
HTML
<div class="stat-card">
<div class="stat">
<span class="stat__label">Total Revenue</span>
<span class="stat__value">$45,231</span>
<span class="stat__change stat__change--positive">+12.5%</span>
</div>
</div>
CSS
.stat__value {
font-size: var(--text-3xl);
font-weight: var(--font-bold);
}
.stat__label {
font-size: var(--text-sm);
color: var(--color-neutral-500);
}
.stat__change--positive {
color: var(--color-success-600);
}
.stat__change--negative {
color: var(--color-error-600);
}
Progress
Progress Bars
Campaign Progress
65%
HTML
<div class="progress-wrapper">
<div class="progress-header">
<span class="progress-label">Progress</span>
<span class="progress-value">65%</span>
</div>
<div class="progress">
<div class="progress__bar" style="width: 65%;"></div>
</div>
</div>
CSS
.progress {
width: 100%;
height: 8px;
background: var(--color-neutral-200);
border-radius: var(--radius-full);
overflow: hidden;
}
.progress__bar {
height: 100%;
background: var(--color-primary-500);
transition: width 0.3s ease;
}
Status Indicators
Status Types
Online
Away
Busy
Offline
Live
HTML
<span class="status status--success">
<span class="status__dot"></span>Online
</span>
<span class="status status--success status--pulse">
<span class="status__dot"></span>Live
</span>
CSS
.status {
display: inline-flex;
align-items: center;
gap: var(--space-2);
}
.status__dot {
width: 8px;
height: 8px;
border-radius: 50%;
}
.status--success .status__dot {
background: var(--color-success-500);
}
.status--error .status__dot {
background: var(--color-error-500);
}
Alerts
Alert Types
Information
This is an informational message for the user.
Success
Your changes have been saved successfully.
Warning
Please review your settings before continuing.
Error
Something went wrong. Please try again.
HTML
<div class="alert alert--info">
<i data-lucide="info" class="alert__icon"></i>
<div class="alert__content">
<div class="alert__title">Information</div>
<div class="alert__description">Message here.</div>
</div>
</div>
<!-- Icon options: info, circle-check, triangle-alert, circle-x -->
CSS
.alert {
display: flex;
align-items: flex-start;
gap: var(--space-3);
padding: var(--space-4);
border-radius: var(--radius-lg);
}
.alert--success {
background: var(--color-success-50);
color: var(--color-success-700);
}
.alert--error {
background: var(--color-error-50);
color: var(--color-error-700);
}
Toasts
Toast Notifications
HTML
<!-- Toast Container (add to body) -->
<div class="toast-container">
<div class="toast toast--success">
<span class="toast__icon">...</span>
<span class="toast__content">Success message</span>
<button class="toast__close">×</button>
</div>
</div>
CSS
.toast {
display: flex;
align-items: center;
gap: var(--space-3);
padding: var(--space-3) var(--space-4);
background: var(--color-neutral-800);
color: white;
border-radius: var(--radius-lg);
box-shadow: var(--shadow-lg);
}
.toast--success { background: var(--color-success-600); }
.toast--error { background: var(--color-error-600); }
JS
// Show a toast notification
showToast('Your message here', 'success');
// Types: 'default', 'success', 'error', 'warning'
Modals
Modal Dialog
HTML
<div class="modal-backdrop modal-backdrop--visible" data-modal-backdrop="id"></div>
<div class="modal modal--visible" data-modal="id">
<div class="modal__header">
<h3 class="modal__title">Modal Title</h3>
<button class="modal__close" data-modal-close="id">×</button>
</div>
<div class="modal__body">
<p>Modal content here...</p>
</div>
<div class="modal__footer">
<button class="btn btn--ghost">Cancel</button>
<button class="btn btn--primary">Confirm</button>
</div>
</div>
CSS
.modal-backdrop {
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.5);
backdrop-filter: blur(4px);
}
.modal {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: white;
border-radius: var(--radius-xl);
box-shadow: var(--shadow-2xl);
}
JS
// Open modal via data attribute
// <button data-modal-trigger="modal-id">Open</button>
// Or close programmatically
closeModal('modal-id');
Tooltips
Tooltip Positions
Tooltip on top
Tooltip on bottom
HTML
<div class="tooltip-wrapper">
<button class="btn">Hover me</button>
<div class="tooltip">Tooltip text</div>
</div>
<!-- Bottom position -->
<div class="tooltip-wrapper">
<button class="btn">Hover me</button>
<div class="tooltip tooltip--bottom">Bottom tooltip</div>
</div>
CSS
.tooltip {
position: absolute;
padding: var(--space-2) var(--space-3);
background: var(--color-neutral-800);
color: white;
font-size: var(--text-sm);
border-radius: var(--radius-md);
white-space: nowrap;
}
.tooltip-wrapper:hover .tooltip {
opacity: 1;
visibility: visible;
}
Loaders
Spinners
HTML
<div class="spinner spinner--sm"></div>
<div class="spinner"></div>
<div class="spinner spinner--lg"></div>
<div class="spinner spinner--xl"></div>
CSS
.spinner {
width: 24px;
height: 24px;
border: 3px solid var(--color-neutral-200);
border-top-color: var(--color-primary-500);
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
.skeleton {
background: linear-gradient(90deg, #eee 25%, #f5f5f5 50%, #eee 75%);
background-size: 200% 100%;
animation: shimmer 1.5s infinite;
}
Dot Loader
HTML
<div class="loader-dots">
<div class="loader-dots__dot"></div>
<div class="loader-dots__dot"></div>
<div class="loader-dots__dot"></div>
</div>
CSS
.spinner {
width: 24px;
height: 24px;
border: 3px solid var(--color-neutral-200);
border-top-color: var(--color-primary-500);
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
.skeleton {
background: linear-gradient(90deg, #eee 25%, #f5f5f5 50%, #eee 75%);
background-size: 200% 100%;
animation: shimmer 1.5s infinite;
}
Skeleton Loader
HTML
<div class="skeleton skeleton--avatar"></div>
<div class="skeleton skeleton--text"></div>
<div class="skeleton skeleton--text"></div>
<div class="skeleton skeleton--button"></div>
CSS
.spinner {
width: 24px;
height: 24px;
border: 3px solid var(--color-neutral-200);
border-top-color: var(--color-primary-500);
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
.skeleton {
background: linear-gradient(90deg, #eee 25%, #f5f5f5 50%, #eee 75%);
background-size: 200% 100%;
animation: shimmer 1.5s infinite;
}