$color-red-1: #ffe3e3; $color-red-3: #ffa8a8; $color-red-6: #fa5252; $color-red-7: #f03e3e; $color-red-8: #e03131; $color-red-9: #c92a2a; $color-gray-1: #f1f3f5; $color-gray-2: #e9ecef; $color-gray-4: #ced4da; $color-gray-5: #adb5bd; $color-gray-6: #868e96; $color-gray-7: #495057; $color-gray-8: #343a40; $color-green-0: #ebfbee; $color-green-2: #b2f2bb; $color-green-4: #69db7c; $color-green-9: #2b8a3e; $color-blue-1: #d0ebff; $color-blue-2: #a5d8ff; $color-blue-4: #4dabf7; $color-blue-5: #339af0; $color-blue-6: #228be6; $color-blue-7: #1c7ed6; $color-blue-8: #1971c2; @mixin isMobile() { @at-root .excalidraw--mobile#{&} { @content; } } // the .ToolIcon_type_toggle.ToolIcon--checked selectors use both classes so // they keep outranking the :hover/:active rules below @mixin toolbarButtonColorStates { &.fillable { &.ToolIcon_type_toggle.ToolIcon--checked .ToolIcon__icon { --icon-fill-color: var(--color-on-primary-container); svg { fill: var(--icon-fill-color); } } } &.ToolIcon_type_toggle.ToolIcon--checked .ToolIcon__icon { background: var(--color-surface-primary-container); --keybinding-color: var(--color-on-primary-container); svg { color: var(--color-on-primary-container); } } .ToolIcon__keybinding { bottom: 4px; right: 4px; } .ToolIcon__icon { &:hover { background: var(--button-hover-bg); } &:active { background: var(--button-hover-bg); border: 1px solid var(--button-active-border); svg { color: var(--color-on-primary-container); } } &[aria-disabled="true"] { background: initial; border: none; svg { color: var(--color-disabled); } } } // disabled toggle buttons (e.g. non-forced tools while `props.activeTool` // is set) — greyed out, without hover/active affordances &.ToolIcon_type_toggle:disabled { cursor: default; --keybinding-color: var(--color-disabled); .ToolIcon__icon { svg { color: var(--color-disabled); } &:hover, &:active { background: initial; border: none; svg { color: var(--color-disabled); } } } } } @mixin outlineButtonStyles { display: flex; justify-content: center; align-items: center; padding: 0.625rem; width: var(--button-width, var(--default-button-size)); height: var(--button-height, var(--default-button-size)); box-sizing: border-box; border-width: 1px; border-style: solid; border-color: var(--button-border, var(--default-border-color)); border-radius: var(--border-radius-lg); cursor: pointer; background-color: var(--button-bg, var(--island-bg-color)); color: var(--button-color, var(--color-on-surface)); font-family: var(--ui-font); svg { width: var(--button-width, var(--lg-icon-size)); height: var(--button-height, var(--lg-icon-size)); } &:hover { background-color: var(--button-hover-bg, var(--island-bg-color)); border-color: var( --button-hover-border, var(--button-border, var(--default-border-color)) ); color: var( --button-hover-color, var(--button-color, var(--text-primary-color, inherit)) ); } &:active { background-color: var(--button-active-bg, var(--island-bg-color)); border-color: var(--button-active-border, var(--color-primary-darkest)); } &.active, &.ToolIcon--checked { background-color: var( --button-selected-bg, var(--color-surface-primary-container) ); border-color: var( --button-selected-border, var(--color-surface-primary-container) ); &:hover { background-color: var( --button-selected-hover-bg, var(--color-surface-primary-container) ); } svg { color: var(--button-color, var(--color-on-primary-container)); } } @include isMobile() { width: var(--mobile-action-button-size, var(--default-button-size)); height: var(--mobile-action-button-size, var(--default-button-size)); } } @mixin buttonNoHighlight { -webkit-tap-highlight-color: transparent; -webkit-touch-callout: none; user-select: none; } @mixin outlineButtonIconStyles { @include outlineButtonStyles; & { padding: 0; } svg { width: var(--default-icon-size); height: var(--default-icon-size); } } @mixin avatarStyles { width: var(--avatar-size, 1.5rem); height: var(--avatar-size, 1.5rem); position: relative; border-radius: 100%; outline-offset: 2px; display: flex; justify-content: center; align-items: center; cursor: pointer; font-size: 0.75rem; font-weight: 700; line-height: 1; color: var(--color-gray-90); flex: 0 0 auto; &:active { transform: scale(0.94); } &-img { width: 100%; height: 100%; border-radius: 100%; } &::before { content: ""; position: absolute; top: -3px; right: -3px; bottom: -3px; left: -3px; border-radius: 100%; } &.is-followed::before { border-color: var(--color-primary-hover); box-shadow: 0 0 0 1px var(--color-primary-hover); } &.is-current-user { cursor: auto; } } @mixin filledButtonOnCanvas { border: none; box-shadow: 0 0 0 1px var(--color-surface-lowest); background-color: var(--color-surface-low); &:active { box-shadow: 0 0 0 1px var(--color-brand-active); } @include isMobile() { width: var(--mobile-action-button-size, 2rem); height: var(--mobile-action-button-size, 2rem); } }