geeks-ui-framework
Version:
A modern, lightweight CSS framework with 15+ components for developers. Build beautiful interfaces with minimal effort.
324 lines (272 loc) • 6.12 kB
CSS
/* ===================================
BADGE COMPONENT
=================================== */
/* Base Badge */
.badge {
display: inline-block;
padding: 0.35em 0.65em;
font-size: 0.75em;
font-weight: 700;
line-height: 1;
color: var(--white);
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: 0.375rem;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}
.badge:empty {
display: none;
}
/* Badge Colors */
.badge-primary {
background-color: var(--primary-color);
color: var(--white);
}
.badge-secondary {
background-color: var(--secondary-color);
color: var(--white);
}
.badge-success {
background-color: var(--success-color);
color: var(--white);
}
.badge-warning {
background-color: var(--warning-color);
color: var(--text-color);
}
.badge-danger {
background-color: var(--danger-color);
color: var(--white);
}
.badge-info {
background-color: var(--info-color);
color: var(--white);
}
.badge-light {
background-color: var(--light-gray);
color: var(--text-color);
}
.badge-dark {
background-color: var(--dark-color);
color: var(--white);
}
/* Badge Outline Variants */
.badge-outline-primary {
color: var(--primary-color);
border: 1px solid var(--primary-color);
background-color: transparent;
}
.badge-outline-secondary {
color: var(--secondary-color);
border: 1px solid var(--secondary-color);
background-color: transparent;
}
.badge-outline-success {
color: var(--success-color);
border: 1px solid var(--success-color);
background-color: transparent;
}
.badge-outline-warning {
color: var(--warning-color);
border: 1px solid var(--warning-color);
background-color: transparent;
}
.badge-outline-danger {
color: var(--danger-color);
border: 1px solid var(--danger-color);
background-color: transparent;
}
.badge-outline-info {
color: var(--info-color);
border: 1px solid var(--info-color);
background-color: transparent;
}
.badge-outline-light {
color: var(--text-color);
border: 1px solid var(--border-color);
background-color: transparent;
}
.badge-outline-dark {
color: var(--dark-color);
border: 1px solid var(--dark-color);
background-color: transparent;
}
/* Badge Sizes */
.badge-sm {
padding: 0.25em 0.5em;
font-size: 0.625em;
}
.badge-lg {
padding: 0.5em 0.75em;
font-size: 0.875em;
}
/* Badge Shapes */
.badge-pill {
border-radius: 10rem;
}
.badge-square {
border-radius: 0;
}
.badge-circle {
border-radius: 50%;
width: 2em;
height: 2em;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0;
}
/* Badge Positioning */
.position-relative {
position: relative;
}
.badge-positioned {
position: absolute;
top: 0;
right: 0;
transform: translate(50%, -50%);
}
.badge-positioned.badge-circle {
top: -0.5em;
right: -0.5em;
transform: none;
}
/* Badge with Icons */
.badge-icon {
display: inline-flex;
align-items: center;
gap: 0.25em;
}
.badge-icon::before {
width: 1em;
height: 1em;
}
/* Badge Links */
a.badge {
text-decoration: none;
}
a.badge:hover,
a.badge:focus {
text-decoration: none;
filter: brightness(110%);
}
a.badge-primary:hover,
a.badge-primary:focus {
background-color: var(--primary-hover);
}
a.badge-secondary:hover,
a.badge-secondary:focus {
background-color: var(--secondary-hover);
}
a.badge-success:hover,
a.badge-success:focus {
background-color: var(--success-hover);
}
a.badge-warning:hover,
a.badge-warning:focus {
background-color: var(--warning-hover);
}
a.badge-danger:hover,
a.badge-danger:focus {
background-color: var(--danger-hover);
}
a.badge-info:hover,
a.badge-info:focus {
background-color: var(--info-hover);
}
/* Badge Close Button */
.badge-dismissible {
display: inline-flex;
align-items: center;
gap: 0.5em;
padding-right: 0.5em;
}
.badge-close {
background: none;
border: none;
color: inherit;
font-size: 1.2em;
line-height: 1;
cursor: pointer;
padding: 0;
margin-left: 0.25em;
opacity: 0.7;
transition: opacity 0.15s ease-in-out;
}
.badge-close:hover {
opacity: 1;
}
.badge-close::before {
content: '×';
}
/* Badge Dot Indicator */
.badge-dot {
width: 0.5em;
height: 0.5em;
border-radius: 50%;
padding: 0;
min-width: 0.5em;
}
.badge-dot.badge-sm {
width: 0.375em;
height: 0.375em;
min-width: 0.375em;
}
.badge-dot.badge-lg {
width: 0.75em;
height: 0.75em;
min-width: 0.75em;
}
/* Badge Animation */
.badge-pulse {
animation: badgePulse 2s infinite;
}
@keyframes badgePulse {
0% {
box-shadow: 0 0 0 0 currentColor;
opacity: 1;
}
70% {
box-shadow: 0 0 0 10px transparent;
opacity: 0.7;
}
100% {
box-shadow: 0 0 0 0 transparent;
opacity: 1;
}
}
/* Badge Notification */
.badge-notification {
position: absolute;
top: -0.5em;
right: -0.5em;
min-width: 1.5em;
height: 1.5em;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.75em;
font-weight: 700;
border: 2px solid var(--white);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}
/* Badge Group */
.badge-group {
display: inline-flex;
align-items: center;
gap: 0.25rem;
}
.badge-group .badge {
margin: 0;
}
/* Responsive Badge */
@media (max-width: 576px) {
.badge-sm-hide {
display: none;
}
.badge {
font-size: 0.625em;
padding: 0.25em 0.5em;
}
}