raft-ui
Version:
React UI components for Raft.
2,034 lines • 57.8 kB
CSS
.r-float-button {
--r-float-button-size: 32px;
--r-float-button-width: var(--r-float-button-size);
--r-float-button-padding-x: 0px;
--r-float-button-border-radius: 9999px;
--r-float-button-border-width: 2px;
--r-float-button-border-style: solid;
--r-float-button-border-color: var(--line-strong);
--r-float-button-bg: var(--layer-panel);
--r-float-button-bg-hover: var(--layer-panel);
--r-float-button-text-color: var(--foreground-strong);
--r-float-button-text-hover-color: var(--r-float-button-text-color);
--r-float-button-text-disabled-color: var(--r-float-button-text-color);
--r-float-button-box-shadow: var(--theme-shadow-md);
--r-float-button-shadow-hover: var(--theme-shadow-lg);
--r-float-button-shadow-active: var(--theme-shadow-sm);
--r-float-button-transform-hover: translate(-1px, -1px);
--r-float-button-transform-active: translate(0, 0);
--r-float-button-outline: 2px solid var(--line-strong);
--r-float-button-outline-offset: 2px;
--r-float-button-font-size: 12px;
--r-float-button-font-weight: 700;
--r-float-button-desc-font-size: 10px;
--r-float-button-icon-size: 16px;
--r-float-button-opacity-disabled: .4;
&.r-float-button--xs {
--r-float-button-size: 24px;
--r-float-button-icon-size: 12px;
--r-float-button-font-size: 11px;
--r-float-button-desc-font-size: 8px;
--r-float-button-padding-x: 8px;
}
&.r-float-button--sm {
--r-float-button-size: 28px;
--r-float-button-icon-size: 14px;
--r-float-button-font-size: 12px;
--r-float-button-desc-font-size: 9px;
--r-float-button-padding-x: 10px;
}
&.r-float-button--md {
--r-float-button-size: 32px;
--r-float-button-icon-size: 16px;
--r-float-button-font-size: 12px;
--r-float-button-desc-font-size: 10px;
--r-float-button-padding-x: 12px;
}
&.r-float-button--lg {
--r-float-button-size: 36px;
--r-float-button-icon-size: 18px;
--r-float-button-font-size: 14px;
--r-float-button-desc-font-size: 11px;
--r-float-button-padding-x: 14px;
}
&.r-float-button--with-text {
--r-float-button-width: auto;
}
&.r-float-button--circle {
--r-float-button-border-radius: 9999px;
}
&.r-float-button--pill {
--r-float-button-border-radius: 9999px;
--r-float-button-width: auto;
padding-left: var(--r-float-button-padding-x);
padding-right: var(--r-float-button-padding-x);
}
&.r-float-button--square {
--r-float-button-border-radius: 0px;
}
&.r-float-button--default {
--r-float-button-border-color: var(--line-strong);
--r-float-button-bg: var(--layer-panel);
--r-float-button-bg-hover: var(--layer-panel);
--r-float-button-text-color: var(--foreground-strong);
}
&.r-float-button--primary {
--r-float-button-border-color: var(--line-strong);
--r-float-button-bg: var(--color-brutal-yellow, var(--primary-400));
--r-float-button-bg-hover: var(--color-brutal-yellow, var(--primary-400));
--r-float-button-text-color: var(--foreground-strong);
}
&.r-float-button--accent {
--r-float-button-border-color: var(--line-strong);
--r-float-button-bg: var(--color-brutal-pink, var(--accent-400));
--r-float-button-bg-hover: var(--color-brutal-pink, var(--accent-400));
--r-float-button-text-color: var(--foreground-strong);
}
&.r-float-button--outline {
--r-float-button-border-color: var(--line-strong);
--r-float-button-bg: var(--layer-panel);
--r-float-button-bg-hover: var(--layer-panel);
--r-float-button-text-color: var(--foreground-strong);
}
&.r-float-button--ghost {
--r-float-button-border-color: transparent;
--r-float-button-bg: transparent;
--r-float-button-text-color: var(--foreground-strong);
--r-float-button-box-shadow: none;
--r-float-button-bg-hover: var(--fill-muted);
--r-float-button-shadow-hover: var(--theme-shadow-sm);
}
&.r-float-button--warning {
--r-float-button-border-color: var(--line-strong);
--r-float-button-bg: var(--color-brutal-orange, var(--warning));
--r-float-button-bg-hover: var(--color-brutal-orange, var(--warning));
--r-float-button-text-color: var(--foreground-strong);
}
&.r-float-button--danger {
--r-float-button-border-color: var(--line-strong);
--r-float-button-bg: var(--color-brutal-red, var(--danger));
--r-float-button-bg-hover: var(--color-brutal-red, var(--danger));
--r-float-button-text-color: var(--foreground-strong);
}
&.r-float-button--elegant, :where([data-theme="elegant"]) & {
--r-float-button-border-width: 1px;
--r-float-button-font-weight: 500;
--r-float-button-border-color: var(--line-muted);
--r-float-button-bg: var(--layer-panel);
--r-float-button-bg-hover: var(--fill-muted);
--r-float-button-text-color: var(--foreground);
--r-float-button-text-hover-color: var(--foreground);
--r-float-button-box-shadow: var(--theme-shadow-md);
--r-float-button-transform-hover: none;
--r-float-button-transform-active: scale(.97);
--r-float-button-shadow-hover: var(--theme-shadow-md);
--r-float-button-shadow-active: var(--theme-shadow-md);
--r-float-button-outline: 2px solid color-mix(in oklch, var(--primary-400) 80%, transparent);
--r-float-button-outline-offset: 2px;
}
&.r-float-button--elegant.r-float-button--square.r-float-button--xs, :where([data-theme="elegant"]) &.r-float-button--square.r-float-button--xs, &.r-float-button--elegant.r-float-button--square.r-float-button--sm, :where([data-theme="elegant"]) &.r-float-button--square.r-float-button--sm {
--r-float-button-border-radius: 4px;
}
&.r-float-button--elegant.r-float-button--square.r-float-button--md, :where([data-theme="elegant"]) &.r-float-button--square.r-float-button--md {
--r-float-button-border-radius: 6px;
}
&.r-float-button--elegant.r-float-button--square.r-float-button--lg, :where([data-theme="elegant"]) &.r-float-button--square.r-float-button--lg {
--r-float-button-border-radius: 8px;
}
&.r-float-button--elegant.r-float-button--default, :where([data-theme="elegant"]) &.r-float-button--default {
--r-float-button-border-color: var(--line-muted);
--r-float-button-bg: var(--layer-panel);
--r-float-button-bg-hover: var(--fill-muted);
--r-float-button-text-color: var(--foreground);
}
&.r-float-button--elegant.r-float-button--primary, :where([data-theme="elegant"]) &.r-float-button--primary {
--r-float-button-border-color: transparent;
--r-float-button-bg: var(--primary-400);
--r-float-button-bg-hover: var(--primary-500);
--r-float-button-text-color: var(--primary-950);
}
&.r-float-button--elegant.r-float-button--accent, :where([data-theme="elegant"]) &.r-float-button--accent {
--r-float-button-border-color: transparent;
--r-float-button-bg: var(--accent-400);
--r-float-button-bg-hover: var(--accent-500);
--r-float-button-text-color: var(--accent-950);
}
&.r-float-button--elegant.r-float-button--outline, :where([data-theme="elegant"]) &.r-float-button--outline {
--r-float-button-border-color: var(--line-strong);
--r-float-button-bg: var(--layer-panel);
--r-float-button-bg-hover: var(--fill-muted);
--r-float-button-text-color: var(--foreground);
}
&.r-float-button--elegant.r-float-button--ghost, :where([data-theme="elegant"]) &.r-float-button--ghost {
--r-float-button-border-color: transparent;
--r-float-button-bg: transparent;
--r-float-button-bg-hover: var(--fill-muted);
--r-float-button-text-color: var(--foreground);
--r-float-button-box-shadow: none;
--r-float-button-shadow-hover: var(--theme-shadow-sm);
}
&.r-float-button--elegant.r-float-button--warning, :where([data-theme="elegant"]) &.r-float-button--warning {
--r-float-button-border-color: transparent;
--r-float-button-bg: var(--warning);
--r-float-button-bg-hover: var(--warning);
--r-float-button-text-color: var(--warning-foreground);
}
&.r-float-button--elegant.r-float-button--danger, :where([data-theme="elegant"]) &.r-float-button--danger {
--r-float-button-border-color: transparent;
--r-float-button-bg: var(--danger);
--r-float-button-bg-hover: var(--danger-hover);
--r-float-button-text-color: var(--danger-foreground);
}
}
.r-float-button {
user-select: none;
cursor: pointer;
box-sizing: border-box;
width: var(--r-float-button-width, var(--r-float-button-size));
min-width: var(--r-float-button-size);
height: var(--r-float-button-size);
border-radius: var(--r-float-button-border-radius);
border-width: var(--r-float-button-border-width);
border-style: var(--r-float-button-border-style);
border-color: var(--r-float-button-border-color);
background-color: var(--r-float-button-bg);
color: var(--r-float-button-text-color);
box-shadow: var(--r-float-button-box-shadow);
font-size: var(--r-float-button-font-size);
font-weight: var(--r-float-button-font-weight);
outline: none;
flex-shrink: 0;
justify-content: center;
align-items: center;
padding: 0;
transition: transform .15s cubic-bezier(.4, 0, .2, 1), box-shadow .15s cubic-bezier(.4, 0, .2, 1), background-color .15s cubic-bezier(.4, 0, .2, 1), border-color .15s cubic-bezier(.4, 0, .2, 1), color .15s cubic-bezier(.4, 0, .2, 1);
display: inline-flex;
position: relative;
@media (prefers-reduced-motion: reduce) {
transition: none;
}
&.r-float-button--with-text, &.r-float-button--pill {
padding-left: var(--r-float-button-padding-x);
padding-right: var(--r-float-button-padding-x);
}
&:hover:not(:disabled) {
background-color: var(--r-float-button-bg-hover);
color: var(--r-float-button-text-hover-color);
box-shadow: var(--r-float-button-shadow-hover);
transform: var(--r-float-button-transform-hover);
}
&:active:not(:disabled) {
box-shadow: var(--r-float-button-shadow-active);
transform: var(--r-float-button-transform-active);
}
&:focus-visible {
outline: var(--r-float-button-outline);
outline-offset: var(--r-float-button-outline-offset);
}
&:disabled {
pointer-events: none;
opacity: var(--r-float-button-opacity-disabled);
cursor: not-allowed;
color: var(--r-float-button-text-disabled-color);
}
& svg {
pointer-events: none;
width: var(--r-float-button-icon-size);
height: var(--r-float-button-icon-size);
flex-shrink: 0;
}
& > .r-float-button__content {
white-space: nowrap;
justify-content: center;
align-items: center;
gap: 6px;
display: inline-flex;
&.r-float-button__content--with-desc {
flex-direction: column;
gap: 2px;
}
}
&.r-float-button--square.r-float-button--with-desc {
padding-top: 2px;
padding-bottom: 2px;
}
& .r-float-button__text {
white-space: nowrap;
align-items: center;
line-height: 1;
display: inline-flex;
}
& .r-float-button__desc {
font-size: var(--r-float-button-desc-font-size);
text-align: center;
text-overflow: ellipsis;
white-space: nowrap;
line-height: 1.25;
overflow: hidden;
}
}
.r-float-button-group {
--r-float-button-group-gap: 10px;
user-select: none;
box-sizing: border-box;
align-items: center;
gap: var(--r-float-button-group-gap);
display: inline-flex;
&.r-float-button-group--vertical {
flex-direction: column;
}
&.r-float-button-group--horizontal {
flex-direction: row;
}
&.r-float-button-group--attached {
--r-float-button-group-gap: 0px;
gap: 0;
}
&.r-float-button-group--attached.r-float-button-group--vertical > .r-float-button:not(:last-child) {
border-bottom-width: 0;
}
&.r-float-button-group--attached.r-float-button-group--vertical > .r-float-button:not(:first-child):not(:last-child) {
border-radius: 0;
}
&.r-float-button-group--attached.r-float-button-group--horizontal > .r-float-button:not(:last-child) {
border-right-width: 0;
}
&.r-float-button-group--attached.r-float-button-group--horizontal > .r-float-button:not(:first-child):not(:last-child) {
border-radius: 0;
}
&.r-float-button-group--attached.r-float-button-group--vertical.r-float-button-group--circle > .r-float-button:first-child:not(:last-child) {
border-radius: 9999px 9999px 0 0;
}
&.r-float-button-group--attached.r-float-button-group--vertical.r-float-button-group--circle > .r-float-button:last-child:not(:first-child) {
border-radius: 0 0 9999px 9999px;
}
&.r-float-button-group--attached.r-float-button-group--horizontal.r-float-button-group--circle > .r-float-button:first-child:not(:last-child) {
border-radius: 9999px 0 0 9999px;
}
&.r-float-button-group--attached.r-float-button-group--horizontal.r-float-button-group--circle > .r-float-button:last-child:not(:first-child) {
border-radius: 0 9999px 9999px 0;
}
&.r-float-button-group--attached.r-float-button-group--square:not(.r-float-button-group--elegant):not([data-theme="elegant"] *) > .r-float-button {
border-radius: 0;
}
&.r-float-button-group--attached.r-float-button-group--vertical.r-float-button-group--square.r-float-button-group--elegant > .r-float-button:first-child:not(:last-child), :where([data-theme="elegant"]) &.r-float-button-group--attached.r-float-button-group--vertical.r-float-button-group--square > .r-float-button:first-child:not(:last-child) {
border-radius: 6px 6px 0 0;
}
&.r-float-button-group--attached.r-float-button-group--vertical.r-float-button-group--square.r-float-button-group--elegant > .r-float-button:last-child:not(:first-child), :where([data-theme="elegant"]) &.r-float-button-group--attached.r-float-button-group--vertical.r-float-button-group--square > .r-float-button:last-child:not(:first-child) {
border-radius: 0 0 6px 6px;
}
&.r-float-button-group--attached.r-float-button-group--horizontal.r-float-button-group--square.r-float-button-group--elegant > .r-float-button:first-child:not(:last-child), :where([data-theme="elegant"]) &.r-float-button-group--attached.r-float-button-group--horizontal.r-float-button-group--square > .r-float-button:first-child:not(:last-child) {
border-radius: 6px 0 0 6px;
}
&.r-float-button-group--attached.r-float-button-group--horizontal.r-float-button-group--square.r-float-button-group--elegant > .r-float-button:last-child:not(:first-child), :where([data-theme="elegant"]) &.r-float-button-group--attached.r-float-button-group--horizontal.r-float-button-group--square > .r-float-button:last-child:not(:first-child) {
border-radius: 0 6px 6px 0;
}
}
.r-timeline {
--r-timeline-icon-size: var(--r-timeline-custom-icon-size, 14px);
--r-timeline-title-font-size: 14px;
--r-timeline-content-font-size: 14px;
--r-timeline-time-font-size: 12px;
--r-timeline-line-height: 1.5;
--r-timeline-item-inner-gap: 4px;
--r-timeline-title-font-family: var(--font-heading);
--r-timeline-title-font-weight: 700;
--r-timeline-gap: 12px;
--r-timeline-item-gap: 20px;
--r-timeline-horizontal-item-gap: 40px;
--r-timeline-line-width: 2px;
--r-timeline-line-color: var(--line-strong);
--r-timeline-marker-border-width: 2px;
--r-timeline-marker-radius: 9999px;
--r-timeline-marker-fill: 100%;
--r-timeline-marker-border-color: var(--line-strong);
--r-timeline-axis-offset: calc((var(--r-timeline-title-font-size) * var(--r-timeline-line-height) - var(--r-timeline-icon-size)) /
2);
&.r-timeline--lg {
--r-timeline-icon-size: var(--r-timeline-custom-icon-size, 16px);
--r-timeline-title-font-size: 16px;
--r-timeline-content-font-size: 15px;
}
&.r-timeline--sm {
--r-timeline-icon-size: var(--r-timeline-custom-icon-size, 12px);
--r-timeline-title-font-size: 12px;
--r-timeline-content-font-size: 12px;
--r-timeline-item-gap: 16px;
--r-timeline-line-height: 16px;
--r-timeline-item-inner-gap: 2px;
--r-timeline-axis-offset: calc((16px - var(--r-timeline-icon-size)) / 2);
}
&.r-timeline--horizontal {
--r-timeline-axis-offset: 0px;
}
&.r-timeline--elegant, :where([data-theme="elegant"]) & {
--r-timeline-icon-size: var(--r-timeline-custom-icon-size, 12px);
--r-timeline-title-font-family: var(--font-sans);
--r-timeline-title-font-weight: 500;
--r-timeline-line-color: var(--line-muted);
--r-timeline-marker-fill: 0%;
--r-timeline-marker-border-color: initial;
}
&.r-timeline--elegant.r-timeline--lg, :where([data-theme="elegant"]) &.r-timeline--lg {
--r-timeline-icon-size: var(--r-timeline-custom-icon-size, 14px);
}
}
.r-timeline-item {
--r-timeline-item-color: var(--foreground-hint);
--r-timeline-item-fill: var(--layer-panel);
&.r-timeline-item--information {
--r-timeline-item-color: var(--info-strong);
--r-timeline-item-fill: var(--info);
}
&.r-timeline-item--success {
--r-timeline-item-color: var(--success-strong);
--r-timeline-item-fill: var(--success);
}
&.r-timeline-item--warning {
--r-timeline-item-color: var(--warning-strong);
--r-timeline-item-fill: var(--warning);
}
&.r-timeline-item--danger {
--r-timeline-item-color: var(--danger-strong);
--r-timeline-item-fill: var(--danger);
}
&.r-timeline-item--accent {
--r-timeline-item-color: var(--accent-strong);
--r-timeline-item-fill: var(--accent-400);
}
&.r-timeline-item--color {
--r-timeline-item-color: var(--r-timeline-custom-color);
--r-timeline-item-fill: var(--r-timeline-custom-color);
}
}
.r-timeline {
line-height: var(--r-timeline-line-height);
flex-direction: column;
margin: 0;
padding: 0;
list-style: none;
display: flex;
}
.r-timeline-item {
gap: var(--r-timeline-gap);
margin: 0;
padding: 0;
display: flex;
}
.r-timeline-item__axis {
padding-top: var(--r-timeline-axis-offset);
width: var(--r-timeline-icon-size);
flex-direction: column;
flex: none;
align-items: center;
display: flex;
}
.r-timeline-item__marker {
background: color-mix(in oklch,
var(--r-timeline-item-fill) var(--r-timeline-marker-fill),
transparent);
border: var(--r-timeline-marker-border-width) solid
var(--r-timeline-marker-border-color, var(--r-timeline-item-color));
border-radius: var(--r-timeline-marker-radius);
box-sizing: border-box;
height: var(--r-timeline-icon-size);
width: var(--r-timeline-icon-size);
flex: none;
}
.r-timeline-item__icon {
color: var(--r-timeline-item-color);
font-size: var(--r-timeline-icon-size);
height: var(--r-timeline-icon-size);
width: var(--r-timeline-icon-size);
flex: none;
justify-content: center;
align-items: center;
display: flex;
& svg {
width: 1em;
height: 1em;
}
}
.r-timeline-item__line {
border-inline-start: var(--r-timeline-line-width) solid var(--r-timeline-line-color);
margin-bottom: calc(var(--r-timeline-axis-offset) * -1);
flex: 1;
}
.r-timeline-item--dashed > .r-timeline-item__axis > .r-timeline-item__line {
border-style: dashed;
}
.r-timeline-item:last-child > .r-timeline-item__axis > .r-timeline-item__line {
visibility: hidden;
}
.r-timeline-item__body {
min-width: 0;
padding-bottom: var(--r-timeline-item-gap);
flex: 1;
}
.r-timeline-item:last-child > .r-timeline-item__body {
padding-bottom: 0;
}
.r-timeline-title {
color: var(--foreground-strong);
font-family: var(--r-timeline-title-font-family);
font-size: var(--r-timeline-title-font-size);
font-weight: var(--r-timeline-title-font-weight);
margin-bottom: var(--r-timeline-item-inner-gap);
}
.r-timeline-content {
color: var(--foreground-muted);
font-size: var(--r-timeline-content-font-size);
}
.r-timeline-time {
color: var(--foreground-hint);
font-size: var(--r-timeline-time-font-size);
margin-top: var(--r-timeline-item-inner-gap);
}
.r-timeline--right > .r-timeline-item {
text-align: end;
flex-direction: row-reverse;
}
.r-timeline--horizontal {
flex-direction: row;
}
.r-timeline--horizontal > .r-timeline-item {
flex-direction: column;
flex: none;
& > .r-timeline-item__axis {
height: var(--r-timeline-icon-size);
flex-direction: row;
width: auto;
padding-top: 0;
}
& > .r-timeline-item__axis > .r-timeline-item__line {
border-inline-start: 0;
border-top: var(--r-timeline-line-width) solid var(--r-timeline-line-color);
margin-bottom: 0;
}
&.r-timeline-item--dashed > .r-timeline-item__axis > .r-timeline-item__line {
border-top-style: dashed;
}
& > .r-timeline-item__body {
padding-bottom: 0;
padding-inline-end: var(--r-timeline-horizontal-item-gap);
}
}
.r-steps {
--r-steps-indicator-size: 28px;
--r-steps-indicator-font-size: 14px;
--r-steps-icon-size: 14px;
--r-steps-title-font-size: 15px;
--r-steps-description-font-size: 14px;
--r-steps-line-height: 1.5;
--r-steps-gap: 10px;
--r-steps-connector-gap: 12px;
--r-steps-connector-min-width: 16px;
--r-steps-vertical-item-gap: 20px;
--r-steps-indicator-font-family: var(--font-heading);
--r-steps-indicator-font-weight: 700;
--r-steps-indicator-border-width: 2px;
--r-steps-indicator-radius: 0px;
--r-steps-title-font-family: var(--font-heading);
--r-steps-title-font-weight: 700;
--r-steps-connector-width: 2px;
--r-steps-connector-color: var(--line-strong);
--r-steps-connector-color-finish: var(--line-strong);
--r-steps-focus-radius: 0px;
--r-steps-focus-outline: 2px solid var(--line-strong);
--r-steps-duration: .16s;
--r-steps-easing: ease-out;
--r-steps-indicator-color-wait: var(--task-status-closed);
--r-steps-indicator-color-process: var(--task-status-in-progress);
--r-steps-indicator-color-finish: var(--task-status-done);
--r-steps-indicator-color-error: var(--color-brutal-red-400);
--r-steps-indicator-border-color-wait: var(--line-strong);
--r-steps-indicator-border-color-process: var(--line-strong);
--r-steps-indicator-border-color-finish: var(--line-strong);
--r-steps-indicator-border-color-error: var(--line-strong);
--r-steps-indicator-border-color-hover: var(--line-strong);
--r-steps-indicator-text-color-wait: var(--foreground-strong);
--r-steps-indicator-text-color-process: var(--foreground-strong);
--r-steps-indicator-text-color-finish: var(--foreground-strong);
--r-steps-indicator-text-color-error: var(--foreground-strong);
--r-steps-indicator-shadow-process: var(--theme-shadow-sm);
--r-steps-indicator-shadow-hover: var(--theme-shadow-sm);
--r-steps-title-color-wait: var(--foreground-muted);
--r-steps-title-color-process: var(--foreground-strong);
--r-steps-title-color-finish: var(--foreground-strong);
--r-steps-title-color-error: var(--danger-strong);
--r-steps-title-color-hover: var(--foreground-strong);
--r-steps-title-color-disabled: var(--foreground-disabled);
--r-steps-river-width: 12px;
--r-steps-river-radius: 0px;
--r-steps-river-border-width: 2px;
--r-steps-river-border-color: var(--line-strong);
--r-steps-river-bed-color: var(--warning-soft);
--r-steps-river-pebble-color: var(--warning-muted);
--r-steps-river-water-color: var(--info);
--r-steps-river-water-deep-color: var(--info-hover);
--r-steps-river-glint-color: var(--info-soft);
--r-steps-river-error-color: var(--danger);
--r-steps-river-flow-duration: 1.6s;
--r-steps-river-rise-duration: 2.4s;
--r-steps-river-overlap-start: 0px;
--r-steps-river-overlap-end: 0px;
--r-steps-traveler-size: 40px;
--r-steps-traveler-advance-duration: 40s;
--r-steps-traveler-advance: .7;
--r-steps-traveler-advance-end: .92;
--r-steps-traveler-arrive-duration: 1.2s;
--r-steps-traveler-rest-duration: 1s;
--r-steps-traveler-reach: 56px;
&.r-steps--sm {
--r-steps-indicator-size: 22px;
--r-steps-indicator-font-size: 12px;
--r-steps-icon-size: 12px;
--r-steps-title-font-size: 14px;
--r-steps-description-font-size: 13px;
--r-steps-river-width: 10px;
}
&.r-steps--elegant, :where([data-theme="elegant"]) & {
--r-steps-indicator-font-family: var(--font-sans);
--r-steps-indicator-font-weight: 500;
--r-steps-indicator-border-width: 1px;
--r-steps-indicator-radius: 9999px;
--r-steps-title-font-family: var(--font-sans);
--r-steps-title-font-weight: 500;
--r-steps-connector-width: 1px;
--r-steps-connector-color: var(--line-muted);
--r-steps-connector-color-finish: color-mix(in oklch,
var(--task-status-done-strong) 35%,
transparent);
--r-steps-focus-radius: 6px;
--r-steps-focus-outline: 2px solid color-mix(in oklch, var(--primary-400) 80%, transparent);
--r-steps-duration: .2s;
--r-steps-indicator-color-wait: transparent;
--r-steps-indicator-color-process: var(--task-status-in-progress-soft);
--r-steps-indicator-color-finish: var(--task-status-done-soft);
--r-steps-indicator-color-error: var(--danger-soft);
--r-steps-indicator-border-color-wait: var(--task-status-closed-strong);
--r-steps-title-color-wait: var(--task-status-closed-strong);
--r-steps-indicator-border-color-process: var(--task-status-in-progress-strong);
--r-steps-indicator-border-color-finish: color-mix(in oklch,
var(--task-status-done-strong) 35%,
transparent);
--r-steps-indicator-border-color-error: color-mix(in oklch,
var(--danger-strong) 35%,
transparent);
--r-steps-indicator-border-color-hover: var(--task-status-closed-strong);
--r-steps-indicator-text-color-wait: var(--task-status-closed-strong);
--r-steps-indicator-text-color-process: var(--task-status-in-progress-strong);
--r-steps-indicator-text-color-finish: var(--task-status-done-strong);
--r-steps-indicator-text-color-error: var(--danger-strong);
--r-steps-indicator-shadow-process: none;
--r-steps-indicator-shadow-hover: none;
--r-steps-title-color-hover: var(--primary-strong);
--r-steps-river-width: 8px;
--r-steps-river-radius: 9999px;
--r-steps-river-border-width: 0px;
--r-steps-river-bed-color: var(--task-status-closed-soft);
--r-steps-river-pebble-color: color-mix(in oklch,
var(--task-status-closed-strong) 25%,
transparent);
--r-steps-river-water-color: var(--info-muted);
--r-steps-river-water-deep-color: var(--info);
--r-steps-river-glint-color: oklch(100% 0 0 / .7);
--r-steps-river-error-color: var(--danger-muted);
}
}
.r-step {
--r-step-indicator-color: var(--r-steps-indicator-color-wait);
--r-step-indicator-border-color: var(--r-steps-indicator-border-color-wait);
--r-step-indicator-text-color: var(--r-steps-indicator-text-color-wait);
--r-step-indicator-shadow: none;
--r-step-title-color: var(--r-steps-title-color-wait);
--r-step-description-color: var(--foreground-hint);
--r-step-connector-color: var(--r-steps-connector-color);
&.r-step--process {
--r-step-indicator-color: var(--r-steps-indicator-color-process);
--r-step-indicator-border-color: var(--r-steps-indicator-border-color-process);
--r-step-indicator-text-color: var(--r-steps-indicator-text-color-process);
--r-step-indicator-shadow: var(--r-steps-indicator-shadow-process);
--r-step-title-color: var(--r-steps-title-color-process);
--r-step-description-color: var(--foreground-muted);
}
&.r-step--finish {
--r-step-indicator-color: var(--r-steps-indicator-color-finish);
--r-step-indicator-border-color: var(--r-steps-indicator-border-color-finish);
--r-step-indicator-text-color: var(--r-steps-indicator-text-color-finish);
--r-step-title-color: var(--r-steps-title-color-finish);
--r-step-connector-color: var(--r-steps-connector-color-finish);
}
&.r-step--error {
--r-step-indicator-color: var(--r-steps-indicator-color-error);
--r-step-indicator-border-color: var(--r-steps-indicator-border-color-error);
--r-step-indicator-text-color: var(--r-steps-indicator-text-color-error);
--r-step-title-color: var(--r-steps-title-color-error);
--r-step-description-color: var(--foreground-muted);
}
@media (hover: hover) {
&.r-step--clickable:hover {
--r-step-title-color: var(--r-steps-title-color-hover);
}
&.r-step--clickable.r-step--wait:hover {
--r-step-indicator-border-color: var(--r-steps-indicator-border-color-hover);
}
&.r-step--clickable:not(.r-step--process):hover {
--r-step-indicator-shadow: var(--r-steps-indicator-shadow-hover);
}
}
&.r-step--disabled {
--r-step-title-color: var(--r-steps-title-color-disabled);
}
}
.r-steps {
line-height: var(--r-steps-line-height);
margin: 0;
padding: 0;
list-style: none;
display: flex;
}
.r-step {
min-width: 0;
margin: 0;
padding: 0;
display: flex;
position: relative;
}
.r-step__main {
gap: var(--r-steps-gap);
display: flex;
position: relative;
}
.r-step__indicator {
background: var(--r-step-indicator-color);
border: var(--r-steps-indicator-border-width) solid var(--r-step-indicator-border-color);
border-radius: var(--r-steps-indicator-radius);
box-shadow: var(--r-step-indicator-shadow);
box-sizing: border-box;
color: var(--r-step-indicator-text-color);
font-family: var(--r-steps-indicator-font-family);
font-size: var(--r-steps-indicator-font-size);
font-variant-numeric: tabular-nums;
font-weight: var(--r-steps-indicator-font-weight);
height: var(--r-steps-indicator-size);
transition: background-color var(--r-steps-duration) var(--r-steps-easing),
border-color var(--r-steps-duration) var(--r-steps-easing),
box-shadow var(--r-steps-duration) var(--r-steps-easing),
color var(--r-steps-duration) var(--r-steps-easing);
width: var(--r-steps-indicator-size);
flex: none;
justify-content: center;
align-items: center;
line-height: 1;
display: flex;
& > svg {
height: var(--r-steps-icon-size);
width: var(--r-steps-icon-size);
flex: none;
}
}
.r-step__content {
min-width: 0;
padding-top: calc((var(--r-steps-indicator-size) - var(--r-steps-title-font-size) * var(--r-steps-line-height)) /
2);
}
.r-step__title {
color: var(--r-step-title-color);
font-family: var(--r-steps-title-font-family);
font-size: var(--r-steps-title-font-size);
font-weight: var(--r-steps-title-font-weight);
transition: color var(--r-steps-duration) var(--r-steps-easing);
white-space: nowrap;
display: block;
}
.r-step__description {
color: var(--r-step-description-color);
font-size: var(--r-steps-description-font-size);
margin-top: 2px;
}
.r-step__status {
clip-path: inset(50%);
white-space: nowrap;
width: 1px;
height: 1px;
position: absolute;
overflow: hidden;
}
.r-step__button {
appearance: none;
cursor: pointer;
line-height: inherit;
text-align: start;
background: none;
border: 0;
margin: 0;
padding: 0;
&:after {
border-radius: var(--r-steps-focus-radius);
content: "";
position: absolute;
inset: -4px;
}
&:focus-visible {
outline: none;
}
&:focus-visible:after {
outline: var(--r-steps-focus-outline);
}
&:disabled {
cursor: not-allowed;
}
}
.r-step__connector {
border-color: var(--r-step-connector-color);
transition: border-color var(--r-steps-duration) var(--r-steps-easing);
border-style: solid;
border-width: 0;
}
.r-step:last-child > .r-step__connector {
display: none;
}
.r-steps--horizontal > .r-step {
grid-template-columns: var(--r-steps-indicator-size) auto minmax(var(--r-steps-connector-min-width),
1fr);
flex: 1 1 0;
align-content: start;
display: grid;
&:last-child {
grid-template-columns: var(--r-steps-indicator-size) auto;
flex: none;
}
& > .r-step__main, & > .r-step__main > .r-step__content {
display: contents;
}
& > .r-step__main > .r-step__indicator {
grid-area: 1 / 1;
}
& > .r-step__main > .r-step__content > .r-step__title {
grid-area: 1 / 2;
align-self: center;
margin-inline-start: var(--r-steps-gap);
}
& > .r-step__main > .r-step__content > .r-step__description {
grid-area: 2 / 2 / auto / -1;
margin-inline-start: var(--r-steps-gap);
}
& > .r-step__connector {
border-top-width: var(--r-steps-connector-width);
margin-inline: var(--r-steps-connector-gap);
grid-area: 1 / 3;
align-self: center;
}
}
@media (width < 40rem) {
.r-steps--horizontal > .r-step {
--r-steps-connector-gap: 6px;
--r-steps-connector-min-width: 8px;
grid-template-columns: var(--r-steps-indicator-size) minmax(0, 1fr);
&:last-child {
grid-template-columns: var(--r-steps-indicator-size) minmax(0, 1fr);
flex: 1 1 0;
}
& > .r-step__main > .r-step__content {
padding-inline-end: var(--r-steps-connector-gap);
grid-area: 2 / 1 / auto / -1;
padding-top: 6px;
display: block;
}
& > .r-step__main > .r-step__content > .r-step__title, & > .r-step__main > .r-step__content > .r-step__description {
margin-inline-start: 0;
}
& > .r-step__main > .r-step__content > .r-step__title {
overflow-wrap: anywhere;
white-space: normal;
}
& > .r-step__connector {
grid-column: 2;
}
}
}
.r-steps--vertical {
flex-direction: column;
}
.r-steps--vertical > .r-step {
padding-bottom: var(--r-steps-vertical-item-gap);
&:last-child {
padding-bottom: 0;
}
& > .r-step__connector {
border-inline-start-width: var(--r-steps-connector-width);
bottom: 4px;
inset-inline-start: calc((var(--r-steps-indicator-size) - var(--r-steps-connector-width)) / 2);
top: calc(var(--r-steps-indicator-size) + 4px);
position: absolute;
}
& > .r-step__main > .r-step__content > .r-step__title {
white-space: normal;
}
}
.r-step__indicator--custom {
box-shadow: none;
background: none;
border: 0;
border-radius: 0;
transition: none;
position: relative;
overflow: visible;
& > svg {
width: 100%;
height: 100%;
}
}
.r-steps--river > .r-step {
--r-step-river-fill: 0;
--r-step-river-water-color: var(--r-steps-river-water-color);
--r-step-river-water-deep-color: var(--r-steps-river-water-deep-color);
--r-step-river-glint-color: var(--r-steps-river-glint-color);
&.r-step--finish {
--r-step-river-fill: 1;
}
}
.r-steps--river > .r-step > .r-step__connector {
background-color: var(--r-steps-river-bed-color);
background-image: radial-gradient(circle at center,
var(--r-steps-river-pebble-color) 1px,
transparent 1.5px);
border: var(--r-steps-river-border-width) solid var(--r-steps-river-border-color);
border-radius: var(--r-steps-river-radius);
box-sizing: border-box;
background-size: 9px 5px;
overflow: hidden;
&:before {
background-color: var(--r-step-river-water-color);
content: "";
clip-path: inset(0 calc(100% - var(--r-step-river-fill) * 100%) 0 0);
transition: clip-path var(--r-steps-river-rise-duration) var(--r-steps-easing);
background-repeat: repeat;
position: absolute;
inset: 0;
}
}
.r-steps--river.r-steps--horizontal > .r-step > .r-step__connector {
border-top-width: var(--r-steps-river-border-width);
height: var(--r-steps-river-width);
position: relative;
&:before {
background-image: linear-gradient(90deg,
transparent 0 10px,
var(--r-step-river-glint-color) 10px 18px,
transparent 18px),
linear-gradient(90deg,
transparent 0 22px,
var(--r-step-river-glint-color) 22px 26px,
transparent 26px),
linear-gradient(transparent 45%, var(--r-step-river-water-deep-color));
background-position: 0 30%, 0 75%, 0 0;
background-repeat: repeat-x, repeat-x, no-repeat;
background-size: 32px 2px, 40px 1px, 100% 100%;
mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 10' preserveAspectRatio='none'%3E%3Cpath d='M0 2.5Q4 0.5 8 2.5T16 2.5V10H0Z'/%3E%3C/svg%3E");
mask-size: 16px 100%;
mask-repeat: repeat-x;
}
}
@media (width >= 40rem) {
.r-steps--river.r-steps--horizontal > .r-step:not(:last-child) {
flex: auto;
}
}
.r-steps--river.r-steps--horizontal > .r-step--finish > .r-step__connector:before {
mask-image: none;
}
.r-steps--river.r-steps--vertical > .r-step > .r-step__connector {
border-block-width: 0;
border-inline-start-width: var(--r-steps-river-border-width);
bottom: calc(-1 * var(--r-steps-river-overlap-end));
top: calc(var(--r-steps-indicator-size) - var(--r-steps-river-overlap-start));
width: var(--r-steps-river-width);
inset-inline-start: calc((var(--r-steps-indicator-size) - var(--r-steps-river-width)) / 2);
&:before {
background-image: linear-gradient(180deg,
transparent 0 10px,
var(--r-step-river-glint-color) 10px 18px,
transparent 18px),
linear-gradient(180deg,
transparent 0 22px,
var(--r-step-river-glint-color) 22px 26px,
transparent 26px),
linear-gradient(90deg, transparent 45%, var(--r-step-river-water-deep-color));
clip-path: inset(0 0 calc(100% - var(--r-step-river-fill) * 100%) 0);
background-position: 30% 0, 75% 0, 0 0;
background-repeat: repeat-y, repeat-y, no-repeat;
background-size: 2px 32px, 1px 40px, 100% 100%;
}
}
@media (prefers-reduced-motion: no-preference) {
.r-steps--river.r-steps--horizontal > :is(.r-step--finish, .r-step--process) > .r-step__connector:before {
animation: r-steps-river-flow var(--r-steps-river-flow-duration) linear infinite;
}
.r-steps--river.r-steps--vertical > :is(.r-step--finish, .r-step--process) > .r-step__connector:before {
animation: r-steps-river-fall var(--r-steps-river-flow-duration) linear infinite;
}
.r-steps--river.r-steps--horizontal > .r-step--process > .r-step__connector:before {
animation: r-steps-river-flow var(--r-steps-river-flow-duration) linear infinite,
r-steps-river-rise var(--r-steps-river-rise-duration) var(--r-steps-easing) infinite;
}
.r-steps--river.r-steps--vertical > .r-step--process > .r-step__connector:before {
animation: r-steps-river-fall var(--r-steps-river-flow-duration) linear infinite,
r-steps-river-rise-down var(--r-steps-river-rise-duration) var(--r-steps-easing) infinite;
}
.r-steps--river.r-steps--horizontal > .r-step:dir(rtl) > .r-step__connector:before {
animation-direction: reverse;
}
.r-steps--river.r-steps--horizontal > .r-step--process:dir(rtl) > .r-step__connector:before {
animation-name: r-steps-river-flow, r-steps-river-rise-rtl;
animation-direction: reverse, normal;
}
}
@media (prefers-reduced-motion: reduce) {
.r-steps--river > .r-step--process {
--r-step-river-fill: .5;
}
}
.r-steps--river > .r-step--error {
--r-step-river-fill: .5;
--r-step-river-water-color: var(--r-steps-river-error-color);
--r-step-river-water-deep-color: var(--r-steps-river-error-color);
--r-step-river-glint-color: transparent;
}
.r-steps--river.r-steps--horizontal > .r-step:dir(rtl) > .r-step__connector:before {
clip-path: inset(0 0 0 calc(100% - var(--r-step-river-fill) * 100%));
}
@keyframes r-steps-river-flow {
to {
background-position: 64px 30%, 40px 75%, 0 0;
mask-position: 32px 0;
}
}
@keyframes r-steps-river-fall {
to {
background-position: 30% 64px, 75% 40px, 0 0;
}
}
@keyframes r-steps-river-rise {
from {
clip-path: inset(0 100% 0 0);
opacity: 1;
}
80% {
clip-path: inset(0);
opacity: 1;
}
to {
clip-path: inset(0);
opacity: 0;
}
}
@keyframes r-steps-river-rise-rtl {
from {
clip-path: inset(0 0 0 100%);
opacity: 1;
}
80% {
clip-path: inset(0);
opacity: 1;
}
to {
clip-path: inset(0);
opacity: 0;
}
}
@keyframes r-steps-river-rise-down {
from {
clip-path: inset(0 0 100%);
opacity: 1;
}
80% {
clip-path: inset(0);
opacity: 1;
}
to {
clip-path: inset(0);
opacity: 0;
}
}
@property --r-step-traveler-pos {
syntax: "<number>";
inherits: true;
initial-value: 0;
}
.r-steps--traveler > .r-step {
--r-step-traveler-pos: 0;
&:is([data-traveler="arrive"], [data-traveler="rest"]) {
--r-step-traveler-pos: 1;
}
&[data-traveler="arrive"] {
transition: --r-step-traveler-pos var(--r-steps-traveler-arrive-duration) var(--r-steps-easing);
}
}
.r-steps--river.r-steps--traveler > .r-step > .r-step__connector:before, .r-steps--river.r-steps--traveler.r-steps--horizontal > .r-step:dir(rtl) > .r-step__connector:before {
clip-path: none;
mask-image: none;
}
@media (prefers-reduced-motion: no-preference) {
.r-steps--river.r-steps--traveler.r-steps--horizontal > :is(.r-step--finish, .r-step--process) > .r-step__connector:before {
animation: r-steps-river-flow var(--r-steps-river-flow-duration) linear infinite reverse;
}
.r-steps--river.r-steps--traveler.r-steps--horizontal > :is(.r-step--finish, .r-step--process):dir(rtl) > .r-step__connector:before {
animation: r-steps-river-flow var(--r-steps-river-flow-duration) linear infinite;
}
.r-steps--river.r-steps--traveler.r-steps--vertical > :is(.r-step--finish, .r-step--process) > .r-step__connector:before {
animation: r-steps-river-fall var(--r-steps-river-flow-duration) linear infinite reverse;
}
.r-steps--traveler > .r-step[data-traveler="live"]:is(.r-step--process, .r-step--error) {
animation: r-steps-traveler-advance var(--r-steps-traveler-advance-duration) linear forwards;
}
.r-steps--traveler > .r-step--error[data-traveler="live"] {
animation-play-state: paused;
}
}
@media (prefers-reduced-motion: reduce) {
.r-steps--traveler {
--r-steps-traveler-arrive-duration: 0s;
--r-steps-traveler-rest-duration: 0s;
}
.r-steps--traveler > .r-step[data-traveler="live"]:is(.r-step--process, .r-step--error) {
--r-step-traveler-pos: .5;
}
}
@keyframes r-steps-traveler-advance {
from {
--r-step-traveler-pos: 0;
animation-timing-function: cubic-bezier(.25, .7, .35, 1);
}
10% {
--r-step-traveler-pos: var(--r-steps-traveler-advance);
animation-timing-function: cubic-bezier(.2, .5, .4, 1);
}
to {
--r-step-traveler-pos: var(--r-steps-traveler-advance-end);
}
}
.r-steps--river.r-steps--traveler.r-steps--horizontal > .r-step, .r-steps--river.r-steps--traveler.r-steps--horizontal > .r-step:last-child {
grid-template-columns: minmax(var(--r-steps-connector-min-width), 1fr)
var(--r-steps-indicator-size);
flex: 1 1 0;
& > .r-step__main > .r-step__indicator {
grid-area: 1 / 2;
}
& > .r-step__main > .r-step__content {
padding-inline-end: 0;
text-align: end;
grid-area: 2 / 2;
justify-self: end;
width: max-content;
max-width: 14rem;
padding-top: 6px;
display: block;
}
& > .r-step__main > .r-step__content > .r-step__title, & > .r-step__main > .r-step__content > .r-step__description {
margin-inline-start: 0;
}
& > .r-step__main > .r-step__content > .r-step__title {
white-space: normal;
}
& > .r-step__connector {
grid-area: 1 / 1;
display: block;
}
}
.r-steps--river.r-steps--traveler.r-steps--horizontal > .r-step:first-child {
grid-template-columns: var(--r-steps-indicator-size);
flex: none;
padding-inline-start: calc(var(--r-steps-traveler-size) * .9);
& > .r-step__main > .r-step__indicator, & > .r-step__main > .r-step__content {
grid-column: 1;
}
& > .r-step__main > .r-step__content {
text-align: start;
justify-self: start;
}
& > .r-step__connector {
display: none;
}
}
.r-steps--river.r-steps--traveler.r-steps--vertical > .r-step {
padding-bottom: 0;
padding-top: var(--r-steps-traveler-reach);
& > .r-step__connector {
height: calc(var(--r-steps-traveler-reach) + var(--r-steps-river-overlap-start) +
var(--r-steps-river-overlap-end));
bottom: auto;
top: calc(-1 * var(--r-steps-river-overlap-start));
display: block;
}
&:first-child {
padding-top: calc(var(--r-steps-traveler-size) * .9);
}
&:first-child > .r-step__connector {
display: none;
}
}
.r-step__traveler {
pointer-events: none;
z-index: 1;
position: absolute;
}
.r-step__traveler-body {
height: var(--r-steps-traveler-size);
transition: opacity var(--r-steps-duration) var(--r-steps-easing);
width: var(--r-steps-traveler-size);
position: absolute;
@starting-style {
opacity: 0;
}
}
.r-steps--traveler.r-steps--horizontal > .r-step > .r-step__traveler {
height: 0;
inset-inline: var(--r-steps-connector-gap);
top: calc(var(--r-steps-indicator-size) / 2);
grid-area: 1 / 1;
& > .r-step__traveler-body {
inset-inline-start: calc(var(--r-step-traveler-pos) * 100%);
translate: calc(-30% - var(--r-step-traveler-pos) * 40%) -50%;
top: 0;
}
&:dir(rtl) > .r-step__traveler-body {
scale: -1 1;
translate: calc(30% + var(--r-step-traveler-pos) * 40%) -50%;
}
}
.r-steps--traveler.r-steps--vertical > .r-step > .r-step__traveler {
height: calc(var(--r-steps-traveler-reach) + var(--r-steps-river-overlap-start));
inset-inline-start: calc((var(--r-steps-indicator-size) - var(--r-steps-river-width)) / 2);
top: calc(-1 * var(--r-steps-river-overlap-start));
width: var(--r-steps-river-width);
& > .r-step__traveler-body {
inset-inline-start: 50%;
top: calc(var(--r-step-traveler-pos) * 100%);
rotate: 90deg;
translate: -50% calc(-30% - var(--r-step-traveler-pos) * 40%);
}
&:dir(rtl) > .r-step__traveler-body {
translate: 50% calc(-30% - var(--r-step-traveler-pos) * 40%);
}
}
.r-steps--traveler.r-steps--horizontal > .r-step:first-child > .r-step__traveler {
inset-inline: calc(var(--r-steps-traveler-size) * -.6) 100%;
}
.r-steps--traveler.r-steps--vertical > .r-step:first-child > .r-step__traveler {
height: calc(var(--r-steps-traveler-size) * .6);
top: calc(var(--r-steps-traveler-size) * .3);
}
@media (prefers-reduced-motion: reduce) {
.r-step__indicator, .r-step__title, .r-step__connector, .r-step__connector:before, .r-steps--traveler > .r-step, .r-step__traveler-body {
transition: none;
}
}
.r-island-indicator {
overflow: visible;
}
.r-island-indicator * {
transform-box: view-box;
}
.r-island-indicator--wait {
filter: saturate(.45);
}
.r-island-indicator__flag {
transform-origin: 30.7px 11px;
}
.r-island-indicator__ring {
opacity: .8;
transform-origin: 24px 29px;
}
@media (prefers-reduced-motion: no-preference) {
.r-island-indicator__flag {
animation: 1.6s ease-in-out infinite alternate r-island-indicator-wave;
}
.r-island-indicator__ring {
animation: 1.8s ease-out infinite r-island-indicator-ring;
}
}
@keyframes r-island-indicator-wave {
from {
transform: skewY(-4deg) scaleX(.94);
}
to {
transform: skewY(3deg) scaleX(1);
}
}
@keyframes r-island-indicator-ring {
from {
opacity: .9;
transform: scale(.9);
}
to {
opacity: 0;
transform: scale(1.12);
}
}
.r-otter-indicator {
overflow: visible;
}
.r-otter-indicator * {
transform-box: view-box;
}
.r-otter-indicator__body {
transform-origin: 24px 28px;
}
.r-otter-indicator__arm {
transform-origin: 29px 27px;
}
.r-otter-indicator__ripple {
opacity: 0;
transform-origin: 6px 30.5px;
}
.r-otter-indicator__z {
opacity: 0;
}
.r-otter-indicator__parcel--adrift {
transform-origin: 6px 25px;
}
@media (prefers-reduced-motion: no-preference) {
.r-otter-indicator__wave {
animation: 1.2s linear infinite r-otter-indicator-wave;
}
.r-otter-indicator__wave--back {
animation-duration: 2s;
}
.r-otter-indicator--process .r-otter-indicator__body {
animation: 1.8s ease-in-out infinite alternate r-otter-indicator-bob;
}
.r-otter-indicator--process .r-otter-indicator__arm {
animation: .9s ease-in-out infinite alternate r-otter-indicator-paddle;
}
.r-otter-indicator--process .r-otter-indicator__ripple {
animation: 1.8s ease-out infinite r-otter-indicator-ripple;
}
.r-otter-indicator--process .r-otter-indicator__ripple--late {
animation-delay: .9s;
}
.r-otter-indicator--finish .r-otter-indicator__wave {
animation-duration: 3s;
}
.r-otter-indicator--finish .r-otter-indicator__body {
animation: 3.2s ease-in-out infinite alternate r-otter-indicator-bob;
}
.r-otter-indicator--wait .r-otter-indicator__body {
animation: 2.4s ease-in-out infinite alternate r-otter-indicator-breathe;
}
.r-otter-indicator--wait .r-otter-indicator__z {
animation: 2.4s ease-out infinite r-otter-indicator-z;
}
.r-otter-indicator--wait .r-otter-indicator__z--late {
animation-delay: 1.2s;
}
.r-otter-indicator--error .r-otter-indicator__body {
animation: .18s linear infinite alternate r-otter-indicator-shiver;
}
.r-otter-indicator--error .r-otter-indicator__parcel--adrift {
animation: 2s ease-in-out infinite alternate r-otter-indicator-drift;
}
}
.r-otter-traveler__stroke {
transform-origin: 29px 23px;
}
.r-otter-traveler__kick {
transform-origin: 13px 27px;
}
.r-otter-traveler__spray {
opacity: 0;
transform-origin: 36px 14px;
}
@media (prefers-reduced-motion: no-preference) {
.r-otter-traveler.r-otter-indicator--process .r-otter-indicator__body {
animation: .9s ease-in-out infinite r-otter-traveler-surge;
}
.r-otter-traveler__stroke {
animation: .9s ease-in-out infinite r-otter-traveler-stroke;
}
.r-otter-traveler__kick {
animation: .45s ease-in-out infinite alternate r-otter-traveler-kick;
}
.r-otter-traveler__spray {
animation: .9s ease-out infinite r-otter-traveler-spray;
}
}
@keyframes r-otter-traveler-stroke {
from {
transform: rotate(-75deg);
}
55% {
transform: rotate(40deg);
}
to {
transform: rotate(-75deg);
}
}
@keyframes r-otter-traveler-kick {
from {
transform: rotate(-25deg);
}
to {
transform: rotate(20deg);
}
}
@keyframes r-otter-traveler-spray {
0%, 45% {
opacity: 0;
transform: translate(-1px, 1px) scale(.6);
}
60% {
opacity: .95;
}
to {
opacity: 0;
transform: translate(2px, -2.5px) scale(1);
}
}
@keyframes r-otter-traveler-surge {
0%, 100% {
transform: translateX(0) rotate(-1deg);
}
55% {
transform: translateX(1.2px) rotate(1.5deg);
}
}
@media (prefers-reduced-motion: reduce) {
.r-otter-indicator__z {
opacity: 1;
}
}
@keyframes r-otter-indicator-bob {
from {
transform: translateY(-.6px) rotate(-3deg);
}
to {
transform: translateY(1.2px) rotate(2deg);
}
}
@keyframes r-otter-indicator-paddle {
from {
transform: rotate(-35deg);
}
to {
transform: rotate(30deg);
}
}
@keyframes r-otter-indicator-wave {
to {
transform: translateX(-12px);
}
}
@keyframes r-otter-indicator-ripple {
from {
opacity: .8;
transform: scale(.4);
}
to {
opacity: 0;
transform: scale(1.6);
}
}
@keyframes r-otter-indicator-breathe {
from {
transform: scale(1);
}
to {
transform: scale(1.02, 1.05);
}
}
@keyframes r-otter-indicator-z {
from {
opacity: 0;
transform: translate(0);
}
30% {
opacity: 1;
}
to {
opacity: 0;
transform: translate(4px, -7px);
}
}
@keyframes r-otter-indicator-shiver {
from {
transform: translateX(-.4px);
}
to {
transform: translateX(.4px);
}
}
@keyframes r-otter-indicator-drift {
from {
transform: translate(0) rotate(-18deg);
}
to {
transform: translate(-1.5px, 1.2px) rotate(-8deg);
}
}
.r-combobox-select {
min-width: 0;
position: relative;
}
.r-combobox-select__control {
box-sizing: border-box;
border: 1px solid var(--line-muted);
background: var(--layer-panel);
min-width: 0;
color: var(--foreground-strong);
box-shadow: 0 1px 1px color-mix(in oklch, var(--ink) 5%, transparent);
border-radius: .375rem;
outline: 0;
align-items: center;
gap: .5rem;
padding: .375rem .5rem;
transition: background-color .15s, border-color .15s, box-shadow .15s;
display: flex;
}
.r-combobox-select__control:focus-within {
box-shadow: 0 0 0 1px var(--primary-400);
}
.r-combobox-select__input {
box-sizing: border-box;
width: 100%;
min-width: 3rem;
color: inherit;
font: inherit;
background: none;
border: 0;
outline: 0;
flex: 1;
padding: 0;
}
.r-combobox-select__input::placeholder {
color: var(--foreground-placeholder);
}
.r-combobox-select__chips {
border: 0;
flex-wrap: wrap;
flex: 1;
align-items: center;
gap: .25rem;
min-width: 0;
min-height: 2.25rem;
padding: .25rem .5rem;
display: flex;
}
.r-combobox-select__chip {
background: var(--fill-muted);
max-width: 100%;
min-height: 1.5rem;
color: var(--foreground-strong);
border-radius: .25rem;
align-items: center;
gap: .25rem;
padding: .125rem .375rem .125rem .5rem;
font-size: .75rem;
line-height: 1.25rem;
display: inline-flex;
overflow: hidden;
}
.r-combobox-select__control:not(:focus-within) .r-combobox-select__chip[data-overflow] {
display: none;
}
.r-combobox-select__text {
text-overflow: ellipsis;
white-space: nowrap;
min-width: 0;
overflow: hidden;
}
.r-combobox-select__actions {
flex: none;
align-items: center;
gap: .125rem;
display: inline-flex;
}
.r-combobox-select__action, .r-combobox-select__remove {
width: 1.5rem;
height: 1.5rem;
color: inherit;
background: none;
border: 0;
outline: 0;
flex: none;
justify-content: center;
align-items: center;
padding: 0;
transition: color .15s, background-color .15s;
display: inline-flex;
}
.r-combobox-select__remove {
width: 1.125rem;
height: 1.125rem;
}
.r-combobox-select__action > svg, .r-combobox-select__remove > svg {
pointer-events: none;
width: .875rem;
height: .875rem;
}
.r-combobox-select__action:hover, .r-combobox-select__remove:hover {
background: var(--ink-4);
color: var(--foreground);
}
.r-combobox-select__positioner {
z-index: 50;
isolation: isolate;
outline: 0;
}
.r-combobox-select__popup {
box-sizing: border-box;
width: var(--anchor-width, max-content);
min-width: 13.75rem;
max-width: var(--available-width);
max-height: min(var(--available-height), 24rem);
background: var(--layer-popover);
color: var(--foreground-strong);
box-shadow: var(--theme-shadow-lg);
border: 0;
border-radius: .375rem;
outline: 0;
overflow: hidden;
}
.r-combobox-select__list {
overscroll-behavior: contain;
max-height: 16rem;
padding-block: .25rem;
scroll-padding-block: .25rem;
overflow-y: auto;
}
.r-combobox-select__option {
box-sizing: border-box;
cursor: default;
user-select: none;
width: 100%;
min-height: 2rem;
color: var(--foreground-muted);
outline: 0;
justify-content: space-between;
align-items: center;
gap: .5rem;
padding: .375rem .75rem;
font-size: .875rem;
line-height: 1.5rem;
transition: background-color .12s, color .12s;
display: flex;
overflow: hidden;
}
.r-combobox-select__option:hover, .r-combobox-select__option[data-highlighted] {
background: var(--ink-4);
color: var(--foreground);
}
.r-combobox-select__option[data-disabled] {
pointer-events: none;
color: var(--foreground-disabled);
}
.r-combobox-select__option > svg {
pointer-events: none;
flex: none;
width: .875rem;
height: .875rem;
}
.r-combobox-select__indicator {
flex: none;
justify-content: center;
align-items: center;
margin-inline-start: auto;
display: inline-flex;
}
.r-combobox-select__indicator > svg {
width: .875rem;
height: .875rem;
}
.r-combobox-select__group-label {
color: var(--foreground-strong);
padding: .5rem .75rem .25rem;
font-size: .6875rem;
font-weight: 600;
line-height: 1;
}
.r-combobox-select__message {
color: var(--foreground-muted);
text-align: center;
padding: 1rem .75rem;
font-size: .875rem;
line-height: 1.25rem;
}
.r-combobox-select__overflow {
color: var(--foreground-muted);
font-size: .75rem;
}
.r-combobox-select__spinner {
width: .875rem;
height: .875rem;
animation: .7s linear infinite r-combobox-select-spin;
}
.r-combobox-select--sm.r-combobox-select__control {
min-height: 1.75rem;
padding-block: .125rem;
font-size: .75rem;
}
.r-combobox-select--sm .r-combobox-select__chips {
min-height: 1.5rem;
padding-block: .125rem;
}
.r-combobox-select--lg.r-combobox-select__control {
padding-block: .625rem;
font-size: .9375rem;
}
.r-combobox-select__control[data-status="error"] {
border-color: var(--danger);
}
.r-combobox-select__control[data-status="warning"] {
border-color: var(--warning);
}
.r-combobox-select--brutal.r-combobox-select__control {
border: 2px solid var(--line-strong);
box-shadow: var(--theme-shadow-sm);
border-radius: 0;
font-weight: 600;
}
.r-combobox-select--brutal.r-combobox-select__popup {
border: 2px solid var(--line-strong);
box-shadow: var(--theme-shadow-lg);
border-radius: 0;
}
.r-combobox-select--brutal .r-combobox-select__option {
border-bottom: 1px solid var(--ink-10);
color: var(--foreground-strong);
font-weight: 600;
}
.r-combobox-select--brutal .r-combobox-select__option:hover, .r-combobox-select--brutal .r-combobox-select__option[data-highlighted] {
background: color-mix(in oklch, var(--color-brutal-yellow) 30%, transparent);
}
.r-combobox-select--brutal .r-combobox-select__option[data-disabled] {
color: var(--foreground-disabled);
cursor: not-allowed;
background: none;
}
.r-combobox-select--brutal .r-combobox-select__chip {
border: 1px solid var(--line-strong);
background: var(--color-brutal-yellow);
border-radius: 0;
font-weight: 700;
}
@keyframes r-combobox-select-spin {
to {
transform: rotate(360deg);
}
}
@media (prefers-reduced-motion: reduce) {
.r-combobox-select *, .r-combobox-select__positioner {
transition-duration: .01ms !important;
animation-duration: .01ms !important;
}
}