@penaprieto/design-system
Version:
Multi-brand React design system with design tokens from Figma
171 lines (145 loc) • 4 kB
CSS
/* Base Stepper */
.ds-stepper {
display: flex;
-webkit-font-smoothing: antialiased;
}
/* Horizontal */
.ds-stepper--horizontal {
flex-direction: row;
align-items: flex-start;
}
/* Vertical */
.ds-stepper--vertical {
flex-direction: column;
}
/* Item */
.ds-stepper__item {
display: flex;
flex: 1;
position: relative;
}
.ds-stepper--horizontal .ds-stepper__item {
flex-direction: column;
align-items: center;
}
.ds-stepper--vertical .ds-stepper__item {
flex-direction: row;
flex: none;
}
/* Step */
.ds-stepper__step {
display: flex;
align-items: flex-start;
gap: var(--size3, 12px);
position: relative;
z-index: 1;
}
.ds-stepper--horizontal .ds-stepper__step {
flex-direction: column;
align-items: center;
text-align: center;
}
.ds-stepper--vertical .ds-stepper__step {
flex-direction: row;
padding-bottom: var(--size5, 24px);
}
.ds-stepper__step--clickable {
cursor: pointer;
}
.ds-stepper__step--clickable:hover .ds-stepper__indicator {
transform: scale(1.1);
}
/* Indicator */
.ds-stepper__indicator {
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
border-radius: var(--br-full, 9999px);
flex-shrink: 0;
transition: all 0.2s ease-in-out;
font-family: var(--body-regular-fontFamily, var(--font-family, 'Satoshi', sans-serif));
font-size: var(--body-regular-fontSize, 16px);
font-weight: var(--body-regular-strong-fontWeight, 700);
line-height: 1;
}
/* Pending */
.ds-stepper__step--pending .ds-stepper__indicator {
background-color: var(--stepper-indicator-pending-bg);
border: 2px solid var(--stepper-indicator-pending-border);
color: var(--stepper-indicator-pending-text);
}
/* Current */
.ds-stepper__step--current .ds-stepper__indicator {
background-color: var(--stepper-indicator-current-bg);
border: 2px solid var(--stepper-indicator-current-bg);
color: var(--stepper-indicator-current-text);
}
/* Completed */
.ds-stepper__step--completed .ds-stepper__indicator {
background-color: var(--stepper-indicator-completed-bg);
border: 2px solid var(--stepper-indicator-completed-bg);
color: var(--stepper-indicator-completed-text);
}
/* Error */
.ds-stepper__step--error .ds-stepper__indicator {
background-color: var(--stepper-indicator-error-bg);
border: 2px solid var(--stepper-indicator-error-border);
color: var(--stepper-indicator-error-text);
}
/* Number */
.ds-stepper__number {
user-select: none;
}
/* Content */
.ds-stepper__content {
display: flex;
flex-direction: column;
gap: var(--size1, 4px);
}
.ds-stepper--horizontal .ds-stepper__content {
max-width: 150px;
}
/* Label */
.ds-stepper__label {
font-family: var(--body-regular-fontFamily, var(--font-family, 'Satoshi', sans-serif));
font-size: var(--body-regular-fontSize, 16px);
font-weight: var(--body-regular-strong-fontWeight, 700);
line-height: var(--body-regular-lineHeight, 150%);
color: var(--stepper-label-default);
}
.ds-stepper__step--pending .ds-stepper__label {
color: var(--stepper-label-pending);
}
/* Description */
.ds-stepper__description {
font-family: var(--body-small-fontFamily, var(--font-family, 'Satoshi', sans-serif));
font-size: var(--body-small-fontSize, 14px);
font-weight: var(--body-small-fontWeight, 400);
line-height: var(--body-small-lineHeight, 150%);
color: var(--stepper-label-pending);
}
/* Connector */
.ds-stepper__connector {
background-color: var(--stepper-connector-default);
transition: background-color 0.2s ease-in-out;
}
.ds-stepper--horizontal .ds-stepper__connector {
position: absolute;
top: 16px;
left: calc(50% + 16px);
right: calc(-50% + 16px);
height: 2px;
}
.ds-stepper--vertical .ds-stepper__connector {
position: absolute;
left: 15px;
top: 32px;
bottom: 0;
width: 2px;
}
.ds-stepper__step--completed ~ .ds-stepper__connector,
.ds-stepper__item:has(.ds-stepper__step--completed) .ds-stepper__connector {
background-color: var(--stepper-connector-completed);
}