raft-ui
Version:
React UI components for Raft.
1,316 lines (1,121 loc) • 33.4 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: 8px;
--r-float-button-border-width: 1.5px;
--r-float-button-border-style: solid;
--r-float-button-border-color: var(--line-strong);
--r-float-button-bg: var(--layer-card);
--r-float-button-bg-hover: var(--layer-card);
--r-float-button-press: var(--fill-pressed);
--r-float-button-text-color: var(--foreground);
--r-float-button-text-hover-color: var(--foreground);
--r-float-button-text-disabled-color: var(--foreground-disabled);
--r-float-button-box-shadow: none;
--r-float-button-shadow-hover: none;
--r-float-button-shadow-active: none;
--r-float-button-transform-hover: none;
--r-float-button-transform-active: none;
--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: 1;
&.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--pill {
--r-float-button-width: auto;
padding-left: var(--r-float-button-padding-x);
padding-right: var(--r-float-button-padding-x);
}
&.r-float-button--primary, &.r-float-button--accent {
--r-float-button-border-color: var(--sticker-ink);
--r-float-button-bg: var(--accent-400);
--r-float-button-bg-hover: var(--accent-400);
--r-float-button-press: var(--sticker-pressed);
--r-float-button-text-color: var(--sticker-ink);
--r-float-button-text-hover-color: var(--sticker-ink);
}
&.r-float-button--warning {
--r-float-button-border-color: var(--sticker-ink);
--r-float-button-bg: var(--warning);
--r-float-button-bg-hover: var(--warning);
--r-float-button-press: var(--sticker-pressed);
--r-float-button-text-color: var(--sticker-ink);
--r-float-button-text-hover-color: var(--sticker-ink);
}
&.r-float-button--danger {
--r-float-button-border-color: var(--sticker-ink);
--r-float-button-bg: var(--danger);
--r-float-button-bg-hover: var(--danger);
--r-float-button-press: var(--sticker-pressed);
--r-float-button-text-color: var(--sticker-ink);
--r-float-button-text-hover-color: var(--sticker-ink);
}
&.r-float-button--ghost {
--r-float-button-border-color: transparent;
--r-float-button-bg: transparent;
--r-float-button-bg-hover: var(--fill-pressed);
--r-float-button-press: transparent;
}
}
.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);
}
&:is(:hover, :active):not(:disabled) {
background-image: linear-gradient(var(--r-float-button-press), var(--r-float-button-press));
}
&:disabled {
pointer-events: none;
opacity: var(--r-float-button-opacity-disabled);
cursor: not-allowed;
border-color: var(--line-muted);
background-color: var(--fill-muted);
color: var(--r-float-button-text-disabled-color);
background-image: none;
}
&.r-float-button--ghost:disabled {
background-color: #0000;
border-color: #0000;
}
& 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), &.r-float-button-group--attached.r-float-button-group--square > .r-float-button {
border-radius: 0;
}
&.r-float-button-group--attached.r-float-button-group--vertical > .r-float-button:first-child:not(:last-child) {
border-radius: 8px 8px 0 0;
}
&.r-float-button-group--attached.r-float-button-group--vertical > .r-float-button:last-child:not(:first-child) {
border-radius: 0 0 8px 8px;
}
&.r-float-button-group--attached.r-float-button-group--horizontal > .r-float-button:first-child:not(:last-child) {
border-radius: 8px 0 0 8px;
}
&.r-float-button-group--attached.r-float-button-group--horizontal > .r-float-button:last-child:not(:first-child) {
border-radius: 0 8px 8px 0;
}
}
.r-timeline {
--r-timeline-icon-size: var(--r-timeline-custom-icon-size, 9px);
--r-timeline-title-font-size: 14px;
--r-timeline-content-font-size: 12px;
--r-timeline-time-font-size: 12px;
--r-timeline-line-height: 20px;
--r-timeline-item-inner-gap: 2px;
--r-timeline-title-font-family: var(--font-sans);
--r-timeline-title-font-weight: 400;
--r-timeline-gap: 12px;
--r-timeline-item-gap: 12px;
--r-timeline-horizontal-item-gap: 40px;
--r-timeline-line-width: 1px;
--r-timeline-line-color: var(--line-muted);
--r-timeline-marker-border-width: 1.5px;
--r-timeline-marker-radius: 2px;
--r-timeline-marker-fill: 100%;
--r-timeline-marker-border-color: var(--sticker-ink);
--r-timeline-axis-offset: calc((20px - var(--r-timeline-icon-size)) / 2);
&.r-timeline--lg {
--r-timeline-title-font-size: 16px;
--r-timeline-line-height: 24px;
--r-timeline-axis-offset: calc((24px - var(--r-timeline-icon-size)) / 2);
}
&.r-timeline--horizontal {
--r-timeline-axis-offset: 0px;
}
}
.r-timeline-item {
--r-timeline-item-color: var(--foreground-hint);
--r-timeline-item-fill: var(--presence-offline);
&.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(--task-status-in-review-strong);
--r-timeline-item-fill: var(--task-status-in-review);
}
&.r-timeline-item--color {
--r-timeline-item-color: var(--r-timeline-custom-color);
--r-timeline-item-fill: var(--r-timeline-custom-color);
}
&[data-icon] {
--r-timeline-icon-size: var(--r-timeline-custom-icon-size, 14px);
--r-timeline-axis-offset: calc((var(--r-timeline-line-height) - var(--r-timeline-icon-size)) / 2);
}
}
.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(2px - var(--r-timeline-axis-offset));
flex: 1;
margin-top: 2px;
}
.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);
overflow-wrap: anywhere;
}
.r-timeline-content {
color: var(--foreground-hint);
font-family: var(--font-mono);
font-size: var(--r-timeline-content-font-size);
overflow-wrap: anywhere;
line-height: 16px;
}
.r-timeline-time {
color: var(--foreground-hint);
font-family: var(--font-mono);
font-size: var(--r-timeline-time-font-size);
margin-top: var(--r-timeline-item-inner-gap);
white-space: nowrap;
}
.r-timeline--left > .r-timeline-item > .r-timeline-item__body {
column-gap: var(--r-timeline-gap);
grid-template-columns: minmax(0, 1fr) auto;
display: grid;
& > * {
grid-column: 1;
}
& > .r-timeline-time {
grid-area: 1 / 2;
margin-top: 0;
}
}
.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-top: 0;
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: 20px;
--r-steps-indicator-font-size: 12px;
--r-steps-icon-size: 14px;
--r-steps-title-font-size: 13px;
--r-steps-description-font-size: 12px;
--r-steps-line-height: calc(18 / 13);
--r-steps-gap: 8px;
--r-steps-connector-gap: 8px;
--r-steps-connector-min-width: 16px;
--r-steps-vertical-item-gap: 16px;
--r-steps-indicator-font-family: var(--font-mono);
--r-steps-indicator-font-weight: 700;
--r-steps-indicator-border-width: 1px;
--r-steps-indicator-radius: var(--radius-sticker, 4px);
--r-steps-title-font-family: var(--font-sans);
--r-steps-title-font-weight: 600;
--r-steps-connector-width: 1px;
--r-steps-connector-color: var(--line-seam);
--r-steps-connector-color-finish: var(--line-seam);
--r-steps-focus-radius: var(--radius-sticker, 4px);
--r-steps-focus-outline: 2px solid var(--line-strong);
--r-steps-duration: .16s;
--r-steps-easing: ease-out;
--r-steps-indicator-color-wait: var(--layer-card);
--r-steps-indicator-color-process: var(--primary-400);
--r-steps-indicator-color-finish: var(--foreground);
--r-steps-indicator-color-error: var(--warning);
--r-steps-indicator-border-color-wait: var(--line-seam);
--r-steps-indicator-border-color-process: var(--sticker-ink);
--r-steps-indicator-border-color-finish: var(--foreground);
--r-steps-indicator-border-color-error: var(--sticker-ink);
--r-steps-indicator-border-color-hover: var(--line-strong);
--r-steps-indicator-text-color-wait: var(--foreground-hint);
--r-steps-indicator-text-color-process: var(--sticker-ink);
--r-steps-indicator-text-color-finish: var(--layer-canvas);
--r-steps-indicator-text-color-error: var(--sticker-ink);
--r-steps-indicator-shadow-process: none;
--r-steps-indicator-shadow-hover: none;
--r-steps-title-color-wait: var(--foreground-hint);
--r-steps-title-color-process: var(--foreground);
--r-steps-title-color-finish: var(--foreground-muted);
--r-steps-title-color-error: var(--foreground);
--r-steps-title-color-hover: var(--foreground);
--r-steps-title-color-disabled: var(--foreground-disabled);
}
.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 > .r-step:is(.r-step--process, .r-step--finish, .r-step--error) {
--r-steps-indicator-border-width: 1.5px;
}
.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
calc(var(--r-steps-connector-min-width) + 2 * var(--r-steps-connector-gap));
flex: none;
align-content: start;
display: grid;
&:last-child {
grid-template-columns: var(--r-steps-indicator-size) auto;
}
& > .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 {
flex-wrap: wrap;
row-gap: 8px;
}
}
@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);
flex: 1 1 0;
&:last-child {
grid-template-columns: var(--r-steps-indicator-size) minmax(0, 1fr);
}
& > .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;
}
}
@media (prefers-reduced-motion: reduce) {
.r-step__indicator, .r-step__title, .r-step__connector {
transition: none;
}
}
.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;
}
}
@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: 1.5px solid var(--line-strong);
background: var(--layer-card);
min-width: 0;
min-height: 44px;
color: var(--foreground);
box-shadow: none;
border-radius: 8px;
outline: 0;
align-items: center;
gap: .5rem;
padding: 0 6px 0 12px;
font-size: 16px;
line-height: 24px;
transition: box-shadow 90ms ease-out;
display: flex;
}
.r-combobox-select__control:focus-within {
box-shadow: var(--theme-focus-ring);
}
.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: 6px;
min-width: 0;
min-height: 28px;
margin-inline-start: -6px;
padding: 6px 0;
display: flex;
}
.r-combobox-select__chips .r-combobox-select__input {
min-height: 28px;
padding: 0 4px;
}
.r-combobox-select__chip {
background: var(--fill-muted);
max-width: 100%;
min-height: 28px;
color: var(--foreground);
border-radius: 6px;
align-items: center;
gap: 6px;
padding: 0 2px 0 8px;
font-size: 13px;
font-weight: 600;
line-height: 18px;
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 {
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: 22px;
height: 22px;
color: var(--foreground-hint);
border-radius: 4px;
}
.r-combobox-select__action {
width: 32px;
height: 32px;
color: var(--foreground-hint);
border-radius: 8px;
}
.r-combobox-select__action > svg, .r-combobox-select__remove > svg {
pointer-events: none;
}
.r-combobox-select__action > svg {
width: 16px;
height: 16px;
}
.r-combobox-select__remove > svg {
width: .875rem;
height: .875rem;
}
.r-combobox-select__action:hover, .r-combobox-select__remove:hover {
background: var(--fill-pressed);
color: var(--foreground);
}
.r-combobox-select__action:focus-visible, .r-combobox-select__remove:focus-visible {
box-shadow: var(--theme-focus-ring);
}
.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);
box-shadow: 0 0 0 1px var(--line-seam),
var(--theme-shadow-float);
border: 0;
border-radius: 10px;
outline: 0;
overflow: hidden;
}
.r-combobox-select__list {
overscroll-behavior: contain;
max-height: 16rem;
padding: 6px;
scroll-padding-block: 6px;
overflow-y: auto;
}
.r-combobox-select__option {
box-sizing: border-box;
cursor: default;
user-select: none;
width: 100%;
min-height: 36px;
color: var(--foreground);
border-radius: 8px;
outline: 0;
justify-content: space-between;
align-items: center;
gap: 10px;
padding: 0 10px;
font-size: 14px;
font-weight: 500;
line-height: 20px;
transition: background-color .12s, color .12s;
display: flex;
overflow: hidden;
}
.r-combobox-select__option:hover, .r-combobox-select__option[data-highlighted] {
background: var(--primary-soft);
color: var(--foreground);
}
.r-combobox-select__option[data-selected] {
font-weight: 700;
}
.r-combobox-select__option[data-disabled] {
pointer-events: none;
color: var(--foreground-disabled);
background: none;
}
.r-combobox-select__option > svg {
pointer-events: none;
width: 16px;
height: 16px;
color: var(--foreground-icon);
flex: none;
}
.r-combobox-select__indicator {
color: var(--foreground);
flex: none;
justify-content: center;
align-items: center;
margin-inline-start: auto;
display: inline-flex;
}
.r-combobox-select__indicator > svg {
width: 16px;
height: 16px;
}
.r-combobox-select__group-label {
color: var(--foreground-hint);
padding: 8px 10px 4px;
font-size: 12px;
font-weight: 700;
line-height: 16px;
}
.r-combobox-select__message {
color: var(--foreground-hint);
text-align: start;
padding: 14px 16px;
font-size: 14px;
line-height: 20px;
}
.r-combobox-select__overflow {
color: var(--foreground-hint);
font-family: var(--mono-font, ui-monospace, monospace);
font-size: 12px;
line-height: 16px;
}
.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;
font-size: 13px;
line-height: 18px;
}
.r-combobox-select--sm .r-combobox-select__chips {
min-height: 1.5rem;
padding: 1px 0;
}
.r-combobox-select--sm .r-combobox-select__chip {
min-height: 1.375rem;
}
.r-combobox-select--sm .r-combobox-select__action {
width: 1.5rem;
height: 1.5rem;
}
.r-combobox-select--lg.r-combobox-select__control {
min-height: 52px;
}
.r-combobox-select__control[data-status="error"], .r-combobox-select__control[data-invalid] {
border-color: var(--danger-strong);
}
.r-combobox-select__control[data-status="warning"] {
border-color: var(--warning-strong);
}
.r-combobox-select__control[data-disabled] {
border-color: var(--line-muted);
background: var(--fill-muted);
color: var(--foreground-disabled);
}
@keyframes r-combobox-select-spin {
to {
transform: rotate(360deg);
}
}
@media (prefers-reduced-motion: reduce) {
.r-combobox-select *, .r-combobox-select__positioner {
transition-duration: .01ms ;
animation-duration: .01ms ;
}
}