@shopware-ag/meteor-component-library
Version:
The meteor component library is a Vue component library developed by Shopware. It is based on the [Meteor Design System](https://shopware.design/).
153 lines (150 loc) • 4.18 kB
CSS
.mt-modal[data-v-16210e70] {
height: auto;
position: fixed;
top: 50%;
left: 50%;
translate: -50% -50%;
z-index: 1000;
background-color: var(--color-elevation-surface-raised);
border-radius: var(--border-radius-card);
overflow: hidden;
width: min(var(--mt-modal-width), calc(100vw - 2rem));
border: 1px solid var(--color-border-secondary-default);
max-height: calc(100dvh - 2rem);
display: flex;
flex-direction: column;
}
.mt-modal--width-s[data-v-16210e70] {
--mt-modal-width: 27.5rem;
}
.mt-modal--width-m[data-v-16210e70] {
--mt-modal-width: 45rem;
}
.mt-modal--width-l[data-v-16210e70] {
--mt-modal-width: 64rem;
}
.mt-modal--width-xl[data-v-16210e70] {
--mt-modal-width: 90rem;
}
.mt-modal--width-full[data-v-16210e70] {
--mt-modal-width: 100%;
}
.modal-enter-active[data-v-16210e70] {
transition: opacity 400ms cubic-bezier(0.05, 0.7, 0.1, 1);
@media (prefers-reduced-motion: no-preference) {
transition:
opacity 400ms cubic-bezier(0.05, 0.7, 0.1, 1),
scale 400ms cubic-bezier(0.05, 0.7, 0.1, 1);
}
}
.modal-leave-active[data-v-16210e70] {
transition: opacity 200ms cubic-bezier(0.3, 0, 0.8, 0.15);
@media (prefers-reduced-motion: no-preference) {
transition:
opacity 200ms cubic-bezier(0.3, 0, 0.8, 0.15),
scale 200ms cubic-bezier(0.3, 0, 0.8, 0.15);
}
}
.modal-enter-from[data-v-16210e70],
.modal-leave-to[data-v-16210e70] {
opacity: 0;
@media (prefers-reduced-motion: no-preference) {
scale: 0.9;
}
}
.mt-modal__title[data-v-16210e70] {
margin-block-end: 0;
}
.mt-modal__subtitle[data-v-16210e70] {
font-size: var(--font-size-s);
font-weight: var(--font-weight-regular);
line-height: var(--line-height-md);
}
.mt-modal__content[data-v-16210e70] {
position: relative;
overflow-y: auto;
}
.mt-modal__content-inner[data-v-16210e70] {
padding: var(--scale-size-24);
}
.mt-modal__content-inner--no-padding[data-v-16210e70] {
padding: 0;
}
.mt-modal__scroll-shadow[data-v-16210e70] {
position: sticky;
left: 0;
right: 0;
height: var(--scale-size-4);
margin-top: -0.25rem;
filter: blur(3px);
background-color: var(--color-elevation-shadow-default);
}
.mt-modal__scroll-shadow--top[data-v-16210e70] {
top: 0;
}
.mt-modal__scroll-shadow--bottom[data-v-16210e70] {
bottom: 0;
}
.shadow-fade-enter-active[data-v-16210e70] {
transition: opacity 400ms cubic-bezier(0.05, 0.7, 0.1, 1);
@media (prefers-reduced-motion: no-preference) {
transition: opacity 400ms cubic-bezier(0.05, 0.7, 0.1, 1);
}
}
.shadow-fade-leave-active[data-v-16210e70] {
transition: opacity 200ms cubic-bezier(0.3, 0, 0.8, 0.15);
@media (prefers-reduced-motion: no-preference) {
transition: opacity 200ms cubic-bezier(0.3, 0, 0.8, 0.15);
}
}
.shadow-fade-enter-from[data-v-16210e70],
.shadow-fade-leave-to[data-v-16210e70] {
opacity: 0;
@media (prefers-reduced-motion: no-preference) {
scale: 0.9;
}
}
.mt-modal__footer[data-v-16210e70] {
padding: var(--scale-size-24);
border-top: 1px solid var(--color-border-secondary-default);
}
.mt-modal__header[data-v-16210e70] {
padding: var(--scale-size-24);
border-bottom: 1px solid var(--color-border-secondary-default);
display: flex;
flex-direction: row;
align-items: center;
gap: var(--scale-size-12);
}
.mt-modal__header-content[data-v-16210e70] {
display: flex;
flex-direction: column;
gap: var(--scale-size-2);
flex: 1;
min-width: 0; /* allow content to shrink within flex container */
}
.mt-modal__header-content-title[data-v-16210e70] {
display: flex;
flex-direction: row;
align-items: center;
column-gap: var(--scale-size-8);
}
.mt-modal__close-button {
&[data-v-16210e70] {
cursor: pointer;
color: var(--color-icon-primary-default);
border-radius: var(--border-radius-xs);
width: var(--scale-size-32);
height: var(--scale-size-32);
/* prevents hover styles from being applied to non-hoverable devices */
}
@media (hover: hover) {
&[data-v-16210e70]:hover {
background-color: var(--color-interaction-secondary-hover);
}
}
&[data-v-16210e70]:focus-visible {
outline: 2px solid var(--color-border-brand-default);
box-shadow: 0 0 4px 0 rgba(24, 158, 255, 0.3);
}
}