@penaprieto/design-system
Version:
Multi-brand React design system with design tokens from Figma
99 lines (86 loc) • 1.95 kB
CSS
/* Base Carousel */
.ds-carousel {
position: relative;
width: 100%;
overflow: hidden;
-webkit-font-smoothing: antialiased;
}
/* Viewport */
.ds-carousel__viewport {
position: relative;
width: 100%;
overflow: hidden;
}
/* Track */
.ds-carousel__track {
display: flex;
width: 100%;
}
/* Slide */
.ds-carousel__slide {
flex: 0 0 100%;
width: 100%;
}
/* Controls */
.ds-carousel__control {
position: absolute;
top: 50%;
transform: translateY(-50%);
z-index: 10;
display: flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
padding: 0;
background-color: var(--semantic-bg-surface-default);
border: 1px solid var(--semantic-border-default-default);
border-radius: var(--br-full, 9999px);
box-shadow: var(--semantic-elevation-elevation1);
cursor: pointer;
transition: all 0.2s ease-in-out;
}
.ds-carousel__control:hover:not(:disabled) {
background-color: var(--dropdown-bg-hover);
box-shadow: var(--semantic-elevation-elevation2);
}
.ds-carousel__control:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.ds-carousel__control--prev {
left: var(--size3, 12px);
}
.ds-carousel__control--next {
right: var(--size3, 12px);
}
/* Indicators */
.ds-carousel__indicators {
position: absolute;
bottom: var(--size3, 12px);
left: 50%;
transform: translateX(-50%);
z-index: 10;
display: flex;
gap: var(--size2, 8px);
padding: var(--size2, 8px) var(--size3, 12px);
background-color: rgba(0, 0, 0, 0.5);
border-radius: var(--br-full, 9999px);
}
.ds-carousel__indicator {
width: 8px;
height: 8px;
padding: 0;
background-color: rgba(255, 255, 255, 0.5);
border: none;
border-radius: var(--br-full, 9999px);
cursor: pointer;
transition: all 0.2s ease-in-out;
}
.ds-carousel__indicator:hover {
background-color: rgba(255, 255, 255, 0.8);
}
.ds-carousel__indicator--active {
width: 24px;
background-color: rgba(255, 255, 255, 1);
}