wix-style-react
Version:
wix-style-react
282 lines (237 loc) • 6.38 kB
CSS
@st-import [
--wds-thumbnail-border-radius,
--wds-color-border-standard-secondary,
--wds-color-border-standard-secondary-hover,
--wds-color-border-standard-secondary-active,
--wds-color-border-standard-secondary-disabled,
--wds-color-fill-standard-primary,
--wds-color-fill-standard-primary-disabled,
--wds-color-fill-standard-tertiary,
--wds-color-blue-250,
--wds-space-100,
--wds-space-250,
--wds-space-300,
] from '@wix/design-system-tokens/all.st.css';
:import {
-st-from: "../common/Focusable/Focusable.st.css";
-st-default: Focusable;
}
:import {
-st-from: '../Foundation/stylable/colors.st.css';
-st-named: B00-24, B10-18, THEME-COLOR-10, THEME-COLOR-20, D50, D80, D10-30, F00;
}
:import {
-st-from: "../Foundation/stylable/spacing.st.css";
-st-named: spacing06;
}
:import {
-st-from: "../Text/Text.st.css";
-st-default: Text;
}
:vars {
borderRadius: var(--wds-thumbnail-border-radius, 6px);
}
.root {
-st-extends: Focusable;
-st-states: disabled;
}
.root:not(:disabled) {
cursor: pointer;
}
.root:disabled {
cursor: not-allowed;
}
.thumbnail {
-st-states: selected, disabled, size(enum(tiny, small, medium)), hasBackground, hasChildren, contentAlignment(enum(top, center)), newColorsBranding, textPosition(enum(outside, inside)), noPadding;
position: relative;
display: flex;
margin: 0 auto;
padding: var(--wds-space-300, 18px);
flex-direction: column;
align-items: center;
width: 100%;
height: 100%;
background: transparent;
border: 0;
border-radius: value(borderRadius);
box-sizing: border-box;
outline: none;
}
.thumbnail:textPosition(outside) {
position: relative;
display: flex;
padding: 0;
}
.thumbnail:textPosition(inside):size(tiny) {
padding: var(--wds-space-250, 15px);
}
.thumbnail:textPosition(inside):noPadding{
padding: 0;
}
.thumbnail::after {
pointer-events: none;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
box-shadow: 0 0 0 1px var(--wds-color-border-standard-secondary, value(B00-24)) inset;
border-radius: value(borderRadius);
content: ' ';
}
.thumbnail:newColorsBranding:not(:disabled):not(:selected):not(:hover)::after {
box-shadow: 0 0 0 1px var(--wds-color-border-standard-secondary, value(B10-18)) inset;
}
.thumbnail:hover::after {
box-shadow: 0 0 0 1px var(--wds-color-border-standard-secondary-hover, value(THEME-COLOR-20)) inset;
}
.thumbnail:focus-visible::before {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
box-shadow: 0 0 0 3px var(--wds-color-blue-250, value(F00));
border-radius: value(borderRadius);
content: ' ';
}
.thumbnail:contentAlignment(center) {
justify-content: center;
}
.thumbnail:contentAlignment(top) {
justify-content: flex-start;
}
.thumbnail:selected::after {
box-shadow: 0 0 0 2px var(--wds-color-border-standard-secondary-active, value(THEME-COLOR-10)) inset;
}
.thumbnail:selected:disabled::after {
box-shadow: 0 0 0 2px var(--wds-color-border-standard-secondary-disabled, value(D10-30)) inset;
}
.thumbnail:disabled::after {
box-shadow: 0 0 0 1px var(--wds-color-border-standard-secondary-disabled, value(D10-30)) inset;
cursor: default;
}
.thumbnail:disabled .imageContainer {
opacity: .42;
}
.thumbnail:disabled .selectedIcon {
color: var(--wds-color-fill-standard-tertiary, value(D80));
/* Since the token has an opacity applied to it, border gets seen through the icon. Therefore to replicate figma, a layer of white background is applied through linear gradients*/
background: linear-gradient(to right, var(--wds-color-fill-standard-primary-disabled, value(D50)) 0%, var(--wds-color-fill-standard-primary-disabled, value(D50)) 100%),
linear-gradient(to right, var(--wds-color-fill-standard-tertiary, #FFF) 0%, var(--wds-color-fill-standard-tertiary, #FFF) 100%);
}
.thumbnail:hasChildren {
padding: 0;
align-items: stretch;
}
.thumbnail:hasBackground,
.thumbnail:hasChildren {
padding: 0;
background-color: value(D80);
}
.customChild {
-st-states: disabled;
overflow: auto; /* is required to make thumbnail border be always on top of custom child */
border-radius: value(borderRadius);
}
.customChild:disabled {
opacity: 0.3;
}
.contentContainer {
-st-states: textPosition(enum(inside, outside));
min-height: 0;
min-width: 0;
max-width: 100%;
display: flex;
flex-direction: column;
}
.contentContainer:textPosition(outside) {
height: 100%;
width: 100%;
}
.thumbnailTextContent {
-st-states: textPosition(enum(inside, outside)), size(enum(tiny, small, medium));
width: 100%;
text-align: center;
display: flex;
flex-direction: column;
gap: var(--wds-space-100, value(spacing06));
}
.thumbnailTextContent:textPosition(outside) {
margin-top: var(--wds-space-100, 6px);
}
.thumbnailTextContent:textPosition(outside):size(tiny) {
gap: 0px;
}
.title,
.description,
.imageContainer {
word-break: break-word;
text-align: center;
}
.title:last-child,
.description:last-child,
.imageContainer:last-child {
padding: 0;
}
.bottomTitle {
-st-extends: Text;
-st-states: selected, disabled;
text-align: center;
padding-top: 6px;
}
.bottomTitle:skin(standard):selected {
color: value(THEME-COLOR-10);
}
.bottomTitle:skin(standard):disabled {
color: value(D10-30);
}
.imageContainer {
-st-states: textPosition(enum(outside, inside));
min-height: 0;
min-width: 0;
padding-bottom: 12px;
}
.imageContainer:textPosition(outside) {
line-height: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
.image {
height: 100%;
width: 100%;
object-fit: cover;
border-radius: value(borderRadius);
}
.backgroundImage {
-st-states: disabled;
width: 100%;
height: 100%;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
border-radius: value(borderRadius);
}
.backgroundImage:disabled {
opacity: 0.3;
}
.selectedIcon {
position: absolute;
top: -4px;
right: -4px;
background: var(--wds-color-fill-standard-primary, value(THEME-COLOR-10));
width: 18px;
height: 18px;
border-radius: 50%;
color: var(--wds-color-fill-standard-tertiary, value(D80));
z-index: 1;
display: flex;
align-items: center;
justify-content: center;
}
:global([dir="rtl"]) .selectedIcon {
left: -10px;
right: auto;
}
/* st-namespace-reference="../../../src/Thumbnail/Thumbnail.st.css" */