@qvant/qui-max
Version:
A Vue 3 Design system for Web.
281 lines (277 loc) • 6.88 kB
CSS
.q-upload-drop-zone {
--background-color: var(--color-tertiary-gray-light);
--border-color: rgb(var(--color-rgb-gray) / 16%);
--text-color: var(--color-primary-blue);
--box-shadow: var(--box-shadow-primary);
position: relative;
z-index: 10;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: var(--q-upload-size);
height: var(--q-upload-size);
overflow: hidden;
text-align: center;
cursor: pointer;
background-color: var(--background-color);
border-radius: 6px;
outline: none;
box-shadow: var(--box-shadow);
}
.q-upload-drop-zone:hover, .q-upload-drop-zone[data-focus-visible-added] {
--background-color: var(--color-tertiary-gray);
--box-shadow: var(--box-shadow-hover);
}
.q-upload-drop-zone::before {
position: absolute;
top: 8px;
right: 8px;
bottom: 8px;
left: 8px;
content: "";
border: 1px dashed var(--border-color);
}
.q-upload-drop-zone__icon {
font-size: 40px;
line-height: 1;
color: var(--text-color);
}
.q-upload-drop-zone__text {
margin-top: 8px;
font-size: 12px;
font-weight: var(--font-weight-bold);
line-height: 15px;
color: var(--text-color);
text-transform: uppercase;
}
.q-upload-drop-zone_is-dragover {
--border-color: var(--color-primary-blue);
--background-color: var(--color-tertiary-gray);
}
.q-upload-drop-zone_is-loading {
--background-color: var(--color-tertiary-gray-ultra-light);
--text-color: rgb(var(--color-rgb-gray) / 64%);
--box-shadow: var(--box-shadow-pressed);
}
.q-upload-drop-zone_is-loading:hover {
--background-color: var(--color-tertiary-gray-ultra-light);
--box-shadow: var(--box-shadow-pressed);
}
.q-upload-drop-zone_is-loading .q-upload-drop-zone__icon {
animation: rotating 2s linear infinite;
}
.q-upload-drop-zone_is-disabled {
--border-color: rgb(var(--color-rgb-gray) / 64%);
--text-color: rgb(var(--color-rgb-gray) / 64%);
--background-color: var(--color-tertiary-gray);
--box-shadow: var(--box-shadow-pressed);
cursor: not-allowed;
}
.q-upload-drop-zone_is-disabled:hover {
--box-shadow: var(--box-shadow-pressed);
}
.q-form-item_is-error .q-upload-drop-zone {
--border-color: var(--color-secondary-orange);
}
.q-upload-file-single {
--text-color: rgb(var(--color-rgb-gray) / 64%);
position: absolute;
right: 24px;
bottom: 24px;
left: 24px;
z-index: 15;
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px;
overflow: hidden;
background-color: var(--color-tertiary-gray);
border-radius: var(--border-radius-base);
box-shadow: var(--box-shadow-pressed);
}
.q-upload-file-single__icon {
width: 24px;
margin-right: 8px;
font-size: 24px;
color: var(--text-color);
}
.q-upload-file-single__name {
width: 136px;
margin-right: auto;
overflow: hidden;
font-size: 10px;
font-weight: var(--font-weight-base);
line-height: 12px;
color: var(--text-color);
text-align: left;
text-overflow: ellipsis;
white-space: nowrap;
}
.q-upload-file-single__btn {
width: 24px;
padding: 0;
margin-left: 8px;
font-size: 24px;
color: var(--color-primary-blue);
cursor: pointer;
background-color: transparent;
border: none;
outline: none;
}
.q-upload-file-single__btn:hover, .q-upload-file-single__btn.focus-visible {
color: var(--color-primary-black);
}
.q-upload-file-single__loader {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 2px;
background-color: rgb(var(--color-rgb-gray)/16%);
}
.q-upload-file-single__bar {
width: 0;
height: 100%;
background-color: var(--color-primary-blue);
transition: width 0.1s ease;
}
.q-upload-file-multiple {
--text-color: rgb(var(--color-rgb-gray) / 64%);
position: absolute;
right: 0;
bottom: 0;
z-index: 5;
display: flex;
flex-direction: column;
width: var(--q-upload-size);
height: var(--q-upload-size);
visibility: hidden;
background-color: var(--color-tertiary-gray-light);
border-radius: var(--border-radius-base);
box-shadow: var(--box-shadow-secondary);
opacity: 0;
transition: visibility var(--transition-spline-base) 0.5s, opacity var(--transition-spline-base) 0.25s;
}
.q-upload-file-multiple_shown {
visibility: visible;
opacity: 1;
transition: visibility var(--transition-spline-base) 0.5s, opacity var(--transition-spline-base) 0.25s 0.25s;
}
.q-upload-file-multiple__title {
display: flex;
align-items: center;
margin-top: 16px;
margin-bottom: 16px;
margin-left: 16px;
font-size: 12px;
font-weight: var(--font-weight-bold);
line-height: 24px;
color: var(--color-primary-black);
text-transform: uppercase;
letter-spacing: var(--letter-spacing-base);
}
.q-upload-file-multiple__clear-all {
margin-left: 8px;
}
.q-upload-file-multiple__inner {
width: 100%;
padding: 0 16px 16px;
}
.q-upload-file-multiple__line {
display: flex;
align-items: center;
justify-content: space-between;
}
.q-upload-file-multiple__line + .q-upload-file-multiple__line {
margin-top: 11px;
}
.q-upload-file-multiple__icon {
width: 24px;
margin-right: 8px;
font-size: 24px;
color: var(--text-color);
}
.q-upload-file-multiple__icon.q-icon-reverse {
animation: rotating 2s linear infinite;
}
.q-upload-file-multiple__name {
position: relative;
display: block;
width: 168px;
margin-right: auto;
overflow: hidden;
font-size: 14px;
font-weight: var(--font-weight-base);
line-height: 22px;
color: var(--text-color);
text-align: left;
text-overflow: ellipsis;
white-space: nowrap;
}
.q-upload-file-multiple__action {
width: 24px;
padding: 0;
margin-left: 8px;
font-size: 24px;
color: var(--color-primary-blue);
cursor: pointer;
background-color: transparent;
border: none;
outline: none;
}
.q-upload-file-multiple__action:hover, .q-upload-file-multiple__action.focus-visible {
color: var(--color-primary-black);
}
.q-upload-file-multiple__action.q-icon-lock {
color: var(--text-color);
}
.q-upload-file-multiple__loader {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 2px;
background-color: rgb(var(--color-rgb-gray)/16%);
}
.q-upload-file-multiple__bar {
width: 0;
height: 100%;
background-color: var(--color-primary-blue);
transition: width 0.1s ease;
}
.q-upload {
--q-upload-size: 264px;
position: relative;
display: inline-block;
}
.q-upload_multiple {
width: var(--q-upload-size);
height: var(--q-upload-size);
transition: width var(--transition-spline-base) 0.5s, height var(--transition-spline-base) 0.5s;
}
.q-upload_multiple_open-right {
width: 544px;
}
.q-upload_multiple_open-bottom {
height: 544px;
}
.q-upload__input {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: -1;
margin: 0;
outline: none;
opacity: 0;
}
@keyframes rotating {
0% {
transform: rotateZ(0deg);
}
100% {
transform: rotateZ(360deg);
}
}