@ozen-ui/kit
Version:
React component library
239 lines (201 loc) • 8.43 kB
CSS
.IconButton {
--icon-button-bg-color: var(--color-background-action);
--icon-button-hover-bg-color: var(--color-background-action-hover);
--icon-button-active-bg-color: var(--color-background-action-pressed);
--icon-button-font-color: var(--color-content-action-on);
block-size: var(--icon-button-size);
inline-size: var(--icon-button-size);
padding: 0;
box-sizing: border-box;
display: inline-flex;
flex-shrink: 0;
align-items: center;
justify-content: center;
cursor: pointer;
border: none;
color: var(--icon-button-font-color);
background-color: var(--icon-button-bg-color);
opacity: 1;
border-radius: var(--icon-button-border-radius);
transition:
background-color var(--transition-default),
box-shadow var(--transition-default),
opacity var(--transition-default);
-webkit-tap-highlight-color: transparent;
position: relative;
}
.IconButton_size_2xs {
--icon-button-size: 32px;
--icon-button-border-radius: var(--border-radius-m);
}
.IconButton_size_2xs.IconButton_compressed:not(.IconButton_variant_function) {
--icon-button-size: 24px;
}
.IconButton_size_xs {
--icon-button-size: 40px;
--icon-button-border-radius: var(--border-radius-m);
}
.IconButton_size_xs.IconButton_compressed:not(.IconButton_variant_function) {
--icon-button-size: 28px;
}
.IconButton_size_s {
--icon-button-size: 48px;
--icon-button-border-radius: var(--border-radius-l);
}
.IconButton_size_s.IconButton_compressed:not(.IconButton_variant_function) {
--icon-button-size: 32px;
}
.IconButton_size_m {
--icon-button-size: 56px;
--icon-button-border-radius: var(--border-radius-l);
}
.IconButton_size_m.IconButton_compressed:not(.IconButton_variant_function) {
--icon-button-size: 40px;
}
.IconButton_size_l {
--icon-button-size: 64px;
--icon-button-border-radius: var(--border-radius-l);
}
.IconButton_size_l.IconButton_compressed:not(.IconButton_variant_function) {
--icon-button-size: 48px;
}
.IconButton_variant_contained.IconButton_color_primary {
--icon-button-bg-color: var(--color-background-action);
--icon-button-hover-bg-color: var(--color-background-action-hover);
--icon-button-active-bg-color: var(--color-background-action-pressed);
--icon-button-font-color: var(--color-content-action-on);
}
.IconButton_variant_contained.IconButton_color_secondary {
--icon-button-bg-color: var(--color-background-tertiary);
--icon-button-hover-bg-color: var(--color-background-tertiary-hover);
--icon-button-active-bg-color: var(--color-background-tertiary-pressed);
--icon-button-font-color: var(--color-content-primary);
}
.IconButton_variant_outlined {
--icon-button-border-color: var(--color-border-main);
border: 1px solid var(--icon-button-border-color);
}
.IconButton_variant_outlined.IconButton_color_primary {
--icon-button-bg-color: transparent;
--icon-button-hover-bg-color: var(--color-background-action-light-hover);
--icon-button-active-bg-color: var(--color-background-action-light-pressed);
--icon-button-font-color: var(--color-content-action);
--icon-button-border-color: var(--color-border-action);
}
.IconButton_variant_outlined.IconButton_color_secondary {
--icon-button-bg-color: transparent;
--icon-button-hover-bg-color: var(--color-background-primary-hover);
--icon-button-active-bg-color: var(--color-background-primary-pressed);
--icon-button-font-color: var(--color-content-primary);
--icon-button-border-color: var(--color-border-main);
}
.IconButton_variant_ghost.IconButton_color_primary {
--icon-button-bg-color: transparent;
--icon-button-hover-bg-color: var(--color-background-action-light-hover);
--icon-button-active-bg-color: var(--color-background-action-light-pressed);
--icon-button-font-color: var(--color-content-action);
}
.IconButton_variant_ghost.IconButton_color_secondary {
--icon-button-bg-color: transparent;
--icon-button-hover-bg-color: var(--color-background-primary-hover);
--icon-button-active-bg-color: var(--color-background-primary-pressed);
--icon-button-font-color: var(--color-content-primary);
}
.IconButton_variant_function {
--icon-button-size: auto;
--icon-button-border-radius: var(--border-radius-xs);
}
.IconButton_variant_function:hover {
opacity: 0.8;
}
.IconButton_variant_function:active {
opacity: 0.6;
}
.IconButton_variant_function.IconButton_color_primary,
.IconButton_variant_function.IconButton_color_secondary {
--icon-button-bg-color: transparent;
--icon-button-hover-bg-color: transparent;
--icon-button-active-bg-color: transparent;
}
.IconButton_variant_function.IconButton_color_primary {
--icon-button-font-color: var(--color-content-action);
}
.IconButton_variant_function.IconButton_color_secondary {
--icon-button-font-color: var(--color-content-primary);
}
.IconButton_variant_floating {
--icon-button-bg-color: var(--color-background-main);
--icon-button-hover-bg-color: var(--color-background-main-hover);
--icon-button-active-bg-color: var(--color-background-main-pressed);
--icon-button-font-color: var(--color-content-primary);
}
.IconButton_variant_floating::after {
content: '';
inset: 0;
position: absolute;
inline-size: 100%;
border-radius: inherit;
box-shadow: 0 8px 32px rgb(0 0 0 / 8%);
}
.IconButton_variant_contained.IconButton_rounded,
.IconButton_variant_outlined.IconButton_rounded,
.IconButton_variant_ghost.IconButton_rounded,
.IconButton_variant_floating.IconButton_rounded {
border-radius: 50%;
}
.IconButton_variant_contained.IconButton_disabled,
.IconButton_variant_contained.IconButton_loading,
.IconButton_variant_outlined.IconButton_disabled,
.IconButton_variant_outlined.IconButton_loading,
.IconButton_variant_ghost.IconButton_disabled,
.IconButton_variant_ghost.IconButton_loading,
.IconButton_variant_function.IconButton_disabled,
.IconButton_variant_function.IconButton_loading,
.IconButton_variant_floating.IconButton_disabled,
.IconButton_variant_floating.IconButton_loading {
--icon-button-font-color: var(--color-content-disabled);
}
.IconButton_variant_contained.IconButton_disabled svg, .IconButton_variant_contained.IconButton_loading svg, .IconButton_variant_outlined.IconButton_disabled svg, .IconButton_variant_outlined.IconButton_loading svg, .IconButton_variant_ghost.IconButton_disabled svg, .IconButton_variant_ghost.IconButton_loading svg, .IconButton_variant_function.IconButton_disabled svg, .IconButton_variant_function.IconButton_loading svg, .IconButton_variant_floating.IconButton_disabled svg, .IconButton_variant_floating.IconButton_loading svg {
color: currentcolor;
}
.IconButton_variant_contained.IconButton_disabled,
.IconButton_variant_contained.IconButton_loading,
.IconButton_variant_floating.IconButton_disabled,
.IconButton_variant_floating.IconButton_loading {
--icon-button-hover-bg-color: var(--color-background-disabled);
--icon-button-active-bg-color: var(--color-background-disabled);
}
.IconButton_variant_outlined.IconButton_disabled,
.IconButton_variant_outlined.IconButton_loading {
--icon-button-bg-color: transparent;
--icon-button-hover-bg-color: transparent;
--icon-button-active-bg-color: transparent;
--icon-button-border-color: var(--color-border-disabled);
}
.IconButton_variant_ghost.IconButton_disabled,
.IconButton_variant_ghost.IconButton_loading,
.IconButton_variant_function.IconButton_disabled,
.IconButton_variant_function.IconButton_loading {
--icon-button-bg-color: transparent;
--icon-button-hover-bg-color: transparent;
--icon-button-active-bg-color: transparent;
}
.IconButton:focus {
outline: 0;
/* the bug in outline property before chrome version 94 — doesn't repeat radius of an element */
box-shadow: var(--shadow-outline-focused);
}
.IconButton:focus:not(:focus-visible) {
box-shadow: none;
}
.IconButton:hover {
background-color: var(--icon-button-hover-bg-color);
}
.IconButton:active {
background-color: var(--icon-button-active-bg-color);
}
.IconButton_disabled,
.IconButton_loading {
pointer-events: none;
cursor: auto;
}